4. æ—¢å˜ AI モデルã¸ã®æ–°ã—ã„オブジェクトã®ã‚¯ãƒ©ã‚¹ã®è¿½åŠ
TAO Toolkit ã§ã¯ã€å¸ç¿’済ã¿ã®ãƒ¢ãƒ‡ãƒ«ã‚’é©å¿œã•ã›ã¦æ–°ã—ã„カスタムクラスを容易ã«è¿½åŠ ã§ãã¾ã™ã€‚4.1 課題
公開ã•ã‚Œã¦ã„るモデルを利用ã—ã¦é–‹ç™ºã‚’始ã‚ã‚‹ã¨ã€ã‚¢ãƒ—リケーションã«é©ã—ãŸã‚‚ã®ã¨ã¯ç•°ãªã‚‹ã‚¯ãƒ©ã‚¹ãŒå«ã¾ã‚Œã¦ã„ã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚モデルをカスタマイズã™ã‚‹å ´åˆã€ãƒ¢ãƒ‡ãƒ«ã®ã‚¢ãƒ¼ã‚テクãƒãƒ£ã‚’ãã¡ã‚“ã¨ç†è§£ã—ã¦ã„ãªã‘ã‚Œã°ã€ã‚¯ãƒ©ã‚¹ã‚’è¿½åŠ ã¾ãŸã¯å‰Šé™¤ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。必è¦ãªå¤‰æ›´ã‚’è¡Œã†ãŸã‚ã«ã¯ã€ä½•åƒè¡Œã‚‚ã®ã‚³ãƒ¼ãƒ‰ã‚’調ã¹ãªã‘ã‚Œã°ãªã‚‰ãšã€ãƒ¢ãƒ‡ãƒ«ã®ãƒ†ãƒ³ãƒ—レートã€ãƒ‡ãƒ¼ã‚¿ãƒãƒ¼ãƒ€ãƒ¼ã€æ失関數を変更ã™ã‚‹ã“ã¨ã«ãªã‚Šã¾ã™ã€‚æ–°ã—ã„ã‚¯ãƒ©ã‚¹ã‚’è¿½åŠ ã™ã‚‹ã€ã¾ãŸã¯æ—¢å˜ã®ãƒ¢ãƒ‡ãƒ«ã‹ã‚‰ã„ãã¤ã‹ã®ã‚¯ãƒ©ã‚¹ã‚’削除ã™ã‚‹ã“ã¨ã¯ã€è»¢ç§»å¸ç¿’ã«ä¼´ã†ä½œæ¥ã® 1 ã¤ã§ã™ã€‚
例ã¨ã—ã¦ã€äººç‰©ã‚’検出ã™ã‚‹æ—¢å˜ã®ãƒ¢ãƒ‡ãƒ«ã«ãƒ˜ãƒ«ãƒ¡ãƒƒãƒˆã®ã‚¯ãƒ©ã‚¹ã‚’è¿½åŠ ã™ã‚‹å ´åˆã‚’考ãˆã¦ã¿ã¾ã™ã€‚タスクã¯ã€äººç‰©ã¨ãƒ˜ãƒ«ãƒ¡ãƒƒãƒˆã®ä¸¡æ–¹ã‚’検出ã™ã‚‹ã“ã¨ã§ã™ã€‚ã“ã®æ–°è¦ã®ãƒ¢ãƒ‡ãƒ«ã‚’トレーニングã—ã¦ãƒ˜ãƒ«ãƒ¡ãƒƒãƒˆã®ã‚¯ãƒ©ã‚¹ã‚’è¿½åŠ ã™ã‚‹å ´åˆã€äººç‰©ã¨ãƒ˜ãƒ«ãƒ¡ãƒƒãƒˆã®ä¸¡æ–¹ãŒå«ã¾ã‚Œã‚‹ã€é©åˆ‡ã«ã‚¢ãƒŽãƒ†ãƒ¼ã‚·ãƒ§ãƒ³ã•ã‚ŒãŸãƒ‡ãƒ¼ã‚¿ã‚»ãƒƒãƒˆã‚’用æ„ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ヘルメットã®ãƒ‡ãƒ¼ã‚¿ã ã‘を用æ„ã—ã€äººç‰©ã®ãƒ‡ãƒ¼ã‚¿ãŒãªã„ã¨ã€ãƒ¢ãƒ‡ãƒ«ã¯ãƒ˜ãƒ«ãƒ¡ãƒƒãƒˆã«å¯¾ã—ã¦ã¯é«˜ã„パフォーマンスを発æ®ã™ã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã™ãŒã€äººç‰©ã«å¯¾ã™ã‚‹ãƒ‘フォーマンスã¯ä½Žä¸‹ã—ã¾ã™ã€‚ãã®ãŸã‚ã€ãƒ‡ãƒ¼ã‚¿ã‚»ãƒƒãƒˆã«ã¯ä¸¡æ–¹ã®ã‚¯ãƒ©ã‚¹ãŒå«ã¾ã‚Œã¦ã„ã‚‹ã“ã¨ãŒéžå¸¸ã«é‡è¦ã§ã™ã€‚一般的ã«ã€æ–°ã—ã„ã‚¯ãƒ©ã‚¹ã‚’è¿½åŠ ã™ã‚‹è»¢ç§»å¸ç¿’ã§ã¯ã€æ—¢å˜ã®ã‚¯ãƒ©ã‚¹ã¨æ–°ã—ã„クラスを網羅ã—ãŸä»£è¡¨çš„ãªãƒ‡ãƒ¼ã‚¿ãŒå¿…è¦ã«ãªã‚Šã¾ã™ã€‚
4.2 解決ç–
NVIDIA ã®å¸ç¿’済ã¿ãƒ¢ãƒ‡ãƒ«ã¯ã€ä¸€èˆ¬çš„ãªã‚ªãƒ–ジェクトã«å¯¾ã—ã¦ã‚らã‹ã˜ã‚トレーニングã•ã‚Œã¦ã„ã‚‹ãŸã‚ã€æŽ¨æ¸¬ã¨ãƒ©ãƒ™ãƒ«ç”Ÿæˆã«åˆ©ç”¨ã§ãã¾ã™ã€‚ãã®ãŸã‚ã€ä½œæ¥ã™ã‚‹å¿…è¦ã®ã‚るタスクã¯ã€ã‚¢ãƒ—リケーションã«å¿…è¦ãªã‚«ã‚¹ã‚¿ãƒ クラスã¸ã®ãƒ©ãƒ™ãƒ«ä»˜ã‘ã®ã¿ã«ãªã‚Šã¾ã™ã€‚ãã—ã¦ã€ãƒ¢ãƒ‡ãƒ«ã‚’データセット全體ã§ãƒˆãƒ¬ãƒ¼ãƒ‹ãƒ³ã‚°ã™ã‚Œã°ã€å…ƒã®æ©Ÿèƒ½ã‚’ç¶æŒã—ã¤ã¤ã€ã‚«ã‚¹ã‚¿ãƒ クラスã«ã‚‚対応ã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚
å‰è¿°ã®äººç‰©ã¨ãƒ˜ãƒ«ãƒ¡ãƒƒãƒˆã®ä¾‹ã§è¨€ãˆã°ã€ãƒ˜ãƒ«ãƒ¡ãƒƒãƒˆã®ãƒ©ãƒ™ãƒ«ä»˜ãデータセットã—ã‹ãªãã¦ã‚‚ã€NVIDIA ã® PeopleNet モデルã®æŽ¨è«–を利用ã™ã‚‹ã“ã¨ã§ã€äººç‰©ã¨é¡”ã®ã‚¢ãƒŽãƒ†ãƒ¼ã‚·ãƒ§ãƒ³ãŒå¯èƒ½ã§ã™ã€‚NVIDIA ã® PeopleNet モデルã¯ã€æ•¸ç™¾è¬æžšã®é¡”や人物ã®ç•«åƒã§ãƒˆãƒ¬ãƒ¼ãƒ‹ãƒ³ã‚°ã•ã‚Œã¦ã„ã‚‹ãŸã‚ã€ã“れらã®ã‚¯ãƒ©ã‚¹ã‚’ゼãƒã‹ã‚‰å¸ç¿’ã™ã‚‹å¿…è¦ã¯ã‚ã‚Šã¾ã›ã‚“。ã¾ãšã€PeopleNet ã§æŽ¨è«–ã‚’è¡Œã„ã€äººç‰©ã¨é¡”ã®ãƒ©ãƒ™ãƒ«ã‚’作æˆã—ã¦ã‹ã‚‰ã€æŽ¨è«–ã•ã‚ŒãŸãƒ©ãƒ™ãƒ«ã‚’ヘルメット クラスã®ãƒ©ãƒ™ãƒ«ã¨çµ±åˆã—ã¾ã™ã€‚
注: PeopleNet を使用ã—ã¦ã€äººç‰©ã‚„é¡”ã®ã‚¯ãƒ©ã‚¹ã®ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ トゥルースを生æˆã™ã‚‹å ´åˆã¯ã€ã“れらã®ã‚¯ãƒ©ã‚¹ã®å½é™½æ€§ã‚„å½é™°æ€§ã«ã”注æ„ãã ã•ã„。手動ã§ã®ã‚¯ãƒªãƒ¼ãƒ³ã‚¢ãƒƒãƒ—ãŒå¿…è¦ã«ãªã‚‹å ´åˆãŒã‚ã‚Šã¾ã™ã€‚
PeopleNet モデルã¯äººç‰©ã‚„顔を既ã«é«˜ã„精度ã§æ¤œå‡ºã§ãã‚‹ãŸã‚ã€ãƒ˜ãƒ«ãƒ¡ãƒƒãƒˆ クラスをトレーニングã™ã‚‹ã ã‘ã§æ¸ˆã¿ã¾ã™ã€‚ãã‚Œã«ã¯ã€ãƒˆãƒ¬ãƒ¼ãƒ‹ãƒ³ã‚°ã®ä»•æ§˜ã®ä¸ã§ã€ã‚¯ãƒ©ã‚¹ã®é‡ã¿ä»˜ã‘をヘルメットã«å¯¾ã—ã¦ã¯é‡ãã€äººç‰©ã‚„é¡”ã«å¯¾ã—ã¦ã¯è»½ãã—ã¾ã™ã€‚ã“ã‚Œã«ã‚ˆã‚Šã€äººç‰©ã‚„顔を検出ã™ã‚‹ãƒ¢ãƒ‡ãƒ«ã®æ€§èƒ½ã‚’ç¶æŒã—ãªãŒã‚‰ã€æ–°ã—ã„クラスã«ã¤ã„ã¦ç²¾åº¦ã®é«˜ã„トレーニングãŒå¯èƒ½ã«ãªã‚Šã¾ã™ã€‚
4.3 çµè«–
ã“ã®ã‚¿ã‚¹ã‚¯ã§ã¯ã€ã‚ªãƒ¼ãƒ—ン ソース3 ã®ãƒ˜ãƒ«ãƒ¡ãƒƒãƒˆæ¤œå‡ºç”¨ãƒ‡ãƒ¼ã‚¿ã‚»ãƒƒãƒˆ (トレーニング用㫠611 æžšã®ç•«åƒã€æ¤œè¨¼ç”¨ã« 152 æžšã®ç•«åƒ) を使用ã—ã¾ã—ãŸã€‚トレーニングã§ã¯ã€æ–°ã—ã„ヘルメットã®ã‚¯ãƒ©ã‚¹ã« 0.8ã€äººç‰©ã‚„é¡”ã®ã‚¯ãƒ©ã‚¹ã« 0.1 ã®é‡ã¿ä»˜ã‘ã‚’è¨å®šã—ã¾ã—ãŸã€‚ã“ã‚Œã¯ã€æ–°ã—ã„ヘルメットã®ã‚¯ãƒ©ã‚¹ã«æ¯”é‡ã‚’ç½®ã„ã¦ãƒ¢ãƒ‡ãƒ«ã‚’トレーニングã™ã‚‹ãŸã‚ã§ã™ã€‚PeopleNet モデルを人物ã€ãƒ˜ãƒ«ãƒ¡ãƒƒãƒˆã€é¡”ã®ãƒ‡ãƒ¼ã‚¿ã‚»ãƒƒãƒˆã§ãƒˆãƒ¬ãƒ¼ãƒ‹ãƒ³ã‚°ã—ãŸçµæžœã€100 エãƒãƒƒã‚¯ä»¥å…§ã§ãƒ˜ãƒ«ãƒ¡ãƒƒãƒˆ クラス㮠AP ㌠80% ã«é”ã—ã¾ã—ãŸã€‚


å¸ç¿’済ã¿ã®ãƒ¢ãƒ‡ãƒ«ã‚’使用ã—ã€è‡ªå‰ã®ãƒ‡ãƒ¼ã‚¿ã‚»ãƒƒãƒˆã§æŽ¨è«–ã‚’è¡Œã£ãŸå¾Œã€å…ƒã®ã‚¯ãƒ©ã‚¹ã«åŠ ãˆã¦ã‚«ã‚¹ã‚¿ãƒ クラスã«ã‚‚対応ã™ã‚‹ã‚ˆã†ã«å†ãƒˆãƒ¬ãƒ¼ãƒ‹ãƒ³ã‚°ã™ã‚‹ã¨ã„ã†ç™ºæƒ³ã®å¤§æž ã¯ã€PeopleNet ã«é™ã‚‰ãšå¿œç”¨ã§ãã€TAO ã®å¸ç¿’済ã¿ãƒ¢ãƒ‡ãƒ«ã™ã¹ã¦ã«ã“ã®æ‰‹æ³•ãŒä½¿ãˆã¾ã™ã€‚ãŸã ã—ã€æ³¨æ„點ãŒã‚ã‚Šã¾ã™ã€‚AI モデルを使用ã—ã¦ã‚¢ãƒŽãƒ†ãƒ¼ã‚·ãƒ§ãƒ³ã‚’è¡Œã†ã¨ã€å½é™½æ€§ã‚„å½é™°æ€§ãŒç™ºç”Ÿã—ã¦æ‰‹å‹•ã§ã®ã‚¯ãƒªãƒ¼ãƒ³ã‚¢ãƒƒãƒ—ãŒå¿…è¦ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚
ã“ã®ã‚¿ã‚¹ã‚¯ã¯ã€Kaggle ã®ãƒ˜ãƒ«ãƒ¡ãƒƒãƒˆæ¤œå‡ºç”¨ãƒ‡ãƒ¼ã‚¿ã‚»ãƒƒãƒˆã‚’用ã„ã¦å®Ÿè¡Œã—ã¾ã—ãŸã€‚ガイド付ãã®å®Œå…¨ãªã‚¿ã‚¹ã‚¯å®Ÿæ–½æ‰‹é †ã¯ã€TAO タスク GitHub リãƒã‚¸ãƒˆãƒªã§å…¥æ‰‹ã§ãã¾ã™ã€‚
3 https://www.kaggle.com/andrewmvd/helmet-detection