TensorFlow 2.xã«å¯¾å¿ãã¾ãã
ããObject Detection APIãã®TensorFlow 2.x対å¿ã«ä¼´ãããObject Detection ToolsããTensorFlow 2.xã«å¯¾å¿ãã¾ããã詳細ã¯ä»¥ä¸ã®Qiitaè¨äºåç §ãã ããã
TensorFlowã®ãObject Detection APIããåããã©é£ãã
ããã£ã¼ãã©ã¼ãã³ã°ã«ããç©ä½æ¤åºãè²ã 試ãã¦ãã¾ãã
ãä¸è¨ã®è¨äºã§ã¯ãSSDã¨ããææ³ã ãã試ãã¦ã¿ãã®ã§ããããã®ä»ã®è²ã ãªææ³ï¼Faster RNNçï¼ããã©ã¡ã¼ã¿ãå¤ãã¦æ¯è¼ãã¦ã¿ãããªãã¾ããã
ããããªã¨ãã«ä¾¿å©ãªã®ãGoogleãããæä¾ãã¦ãããObject Detection APIãã§ãã
ãå®é¨çãªã½ããã®ä½ç½®ä»ãã§ã¯ããã®ã§ãããå¦ç¿ããæ¨è«ã¾ã§å¯è½ãªã½ãããæã£ã¦ãã¾ãããconfigãã¡ã¤ã«ãç¨ãã¦SSDãã¯ããã¨ããå¤ãã®ææ³ãããã¤ãã¼ãã©ã¡ã¼ã¿ã®å¤æ´ã試ããã¨ãå¯è½ã§ããå ãã¦ãObject Detection APIãã§ä½¿ç¨å¯è½ãªãå¦ç¿æ¸ã¿ã®ã¢ãã«ããModel Zooï¼å¦ç¿ã¢ãã«ã®åç©åï¼ãã§æ°å¤ãå ¬éããã¦ããã®ãå¬ããã§ãããã¨ã¦ãç´ æ´ãããã©ã¤ãã©ãªã§ãã
ã䏿¹ãå®éã«ä½¿ã£ã¦ã¿ã¦ãObject Detection APIãã«ã¯ãç§ã®ãããªã½ããããã¾ã徿ãããªã人éã«ã¯ã以ä¸ã®ãããªåé¡ããããªã¨æãã¾ããã
- å¦ç¿ã®ããã®æå¸«ãã¼ã¿ã®ãã¡ã¤ã«å¤æï¼tfrecordå½¢å¼ã¸ã®å¤æãã©ãã«ãã¡ã¤ã«ã®å¤æï¼ãæè»½ã«ã§ããªã
- å¦ç¿ã®ããã®ãã¡ã¤ã«æ§æã®æ§ç¯ããconfigãã¡ã¤ã«ã®ä¿®æ£ããããã«ããééãããã
- å¦ç¿ããã½ããã¨æ¨è«ï¼ç©ä½æ¤åºï¼ããã½ãããåé¢ãã¦ããªããããæè»½ã«è©¦ãã®ã大å¤ï¼ãªãã¸ããªã巨大ï¼
- ã¢ãã¤ã«ããã¤ã¹ï¼AndroidãRaspberry PiãJetson Nanoçï¼ã§åããããã«ã¯ãããã¤ã¹ã«å¿ããã¢ãã«ã®å¤æãå¿ è¦ã ãé£ãã
ãããã§ä¸è¨ã®åé¡ã解決ãã¹ãããObject Detection APIããæè»½ã«ä½¿ãããã¼ã«ãObject Detection Toolsãï¼ã¾ãã¾ã®ååï¼ãä½ã£ã¦ã¿ã¾ãããã¨ããããä½ããããå¾ãªãã£ãã¨ããã®ãæ£ç´ãªã¨ããã§ãâ¦
ãç¹å¾´ã¯ä»¥ä¸ã§ãã
- æè»½ã«ãã¼ã¿å¤æã§ããã¹ã¯ãªãããç¨æ
- å¦ç¿ã½ããã¨æ¨è«ã½ãããåé¢ãã巨大ãªãObject Detection APIãã使ããæè»½ã«æ¨è«ï¼ç©ä½æ¤åºï¼ã試ããã¹ã¯ãªãããç¨æ
- å¦ç¿ãï¼æ¯è¼çï¼æ¥½ã«ãªããããªãã¡ã¤ã«æ§æã¨ãç·¨éæ¸ã¿ã®configãã¡ã¤ã«ã®ä¾ãç¨æ
- ã¢ãã¤ã«ããã¤ã¹ã¸ã®ã¢ãã«å¤æã®ã¹ã¯ãªãããç¨æï¼ç¾ç¶Jetson Nanoåãã®ã¿ï¼
ããããªããã¢ãã¯ãªã½ããã«éè¦ãããã®ãåããã¾ããããã¨ããããå ¬éãã¦ã¿ã¾ãããããä»ã«ãã£ã¨ä¾¿å©ãªæ¹æ³ããããçã®æ å ±ããã°æãã¦ä¸ãããããããããç®çã§ãã
ããã¼ã«ä½æãã¦ãããæµ·å¤ã®ããã°ã§ã»ã¨ãã©åããããªã³ã³ã»ããã§ãã¼ã«ä½ã£ã¦ãã人ã¯ã¿ã¤ããã®ã§ãã¿ããªåããã¨ã§æ©ãã§ãããããªæ°ã¯ãã¦ãã¾ãâ¦ãObject Detection APIãã¯å¤ãã®äººé¡ã«ã¨ã£ã¦æ©ãããã®ããããã¾ããã
ãObject Detection Toolsãã使ã£ãç©ä½æ¤åº
ãããããããObject Detection Toolsãã®ä½¿ãæ¹ã®ãã¥ã¼ããªã¢ã«ã¨ããåã®èªåã®ã¡ã¢ã§ããåä½ç°å¢ã¯Mac OS/Linuxãæ³å®ãã¦ãã¾ããWindowsã§ãåãã¨æãã¾ããæªç¢ºèªã§ããçå±ä¸ã¯Pythonç°å¢ããæ§ç¯ããã°åãã¯ãã§ãã®ã§ã誰ããã£ã¬ã³ã¸ãã¦çµææãã¦ããããã¨å¬ããã§ãã
ããã£ã¼ãã©ã¼ãã³ã°ã«ããç©ä½æ¤åºã¯ã以ä¸ã®å³ã®ããã«ä¸ã®å¦ç¿ã¨ä¸ã®æ¨è«ï¼ç©ä½æ¤åºï¼ã®ãããª2ã¤ã®ã¹ãããã«åããã¾ãã
ãä»åã¯ãæå§ãã«å¦ç¿ã¯è¡ããæ¢ã«å¦ç¿æ¸ã¿ã®ã¢ãã«ãç¨ãã¦ãæ¨è«ï¼ä¸ã®å³ã®èµ¤æ é¨åï¼ã®ã¿ã宿½ãã¾ãããObject Detection Toolsãã¯ããObject Detection APIãããæ¨è«é¨åãåé¢ãã¦ããã®ã§ã巨大ãªãObject Detection APIããå«ãTensorFlowã®ãªãã¸ããªããã¦ã³ãã¼ãç¡ãã§OKã§ãã
Pythonç°å¢æ§ç¯
ãPyenv + Anacondaã使ã£ã¦ã»ããã¢ãããã¦ããã¾ãã以ä¸è¨äºãåèã«Pyenvã¨Anacondaã®ã¤ã³ã¹ãã¼ã«ããã¦ããã¦ä¸ããã
ããã¨ã¯ã以ä¸ã³ãã³ããå®è¡ãã¦ç©ä½æ¤åºï¼Object Detectionï¼ç¨ã®ç°å¢ãç¨æãã¾ãã
$ pyenv global anaconda3-4.4.0 $ conda create -n od anaconda $ pyenv global anaconda3-4.4.0/envs/od $ pip install tensorflow==1.13.1 $ pip install opencv-python
ãéè¦ãªã®ã¯ãTensorFlowã¨OpenCVã§ããã
ç©ä½æ¤åºã®ãã¹ã
ããObject Detection Toolsãã®ãªãã¸ããªããã¼ã ãã£ã¬ã¯ããªã«ã¯ãã¼ã³ãã¾ããå¦ç¿ãããå ´åã¯å·¨å¤§ãªãObject Detection APIããªãã¸ããªãå¿ è¦ã§ãããæ¨è«ã ãã§ããã°ã以ä¸ã§ãObject Detection Toolsãã ããã¦ã³ãã¼ãããã°OKã§ãã
$ cd && git clone https://github.com/karaage0703/object_detection_tools
ãæ¬æ¥ã ã¨ãã¢ãã«ããã¼ã¿ãå ã«å¦ç¿ããå¿ è¦ãããã¾ãããä»åã¯å¦ç¿æ¸ã¿ã®ã¢ãã«ã使ç¨ãã¾ãã
ãTensorFlowã§ä½¿ç¨ã§ããå¦ç¿ã¢ãã«ã®ãªã³ã¯å ä¸è¦§ã¯ãModel Zooãï¼ã¢ãã«ã®åç©åï¼ã¨å¼ã°ããObject Detection APIãã®ãªãã¸ããªå ã®ä»¥ä¸ã«ããã¾ããTensorFlow 1.xç¨ã¨TensorFlow 2.xç¨ã®ãModel Zooããããã¾ããä»åã¯ãTensorFlow 1.xç¨ã®ãã®ãç´¹ä»ãã¾ããTensorFlow 2.xç¨ã®ã¢ãã«ã試ãããå ´åã¯ãæ¬è¨äºåé ã®TensorFlow 2.x対å¿ã«ãããªã³ã¯å è¨äºãåç §ãã ããã
models/tf1_detection_zoo.md at master · tensorflow/models · GitHub
models/tf2_detection_zoo.md at master · tensorflow/models · GitHub
ããModel Zooãã®è¡¨ã®æ§è½ã¨é度ããè¯ããããªå¦ç¿æ¸ã¿ã¢ãã«ãé¸ã³ã¾ããä»åã¯ssd_inception_v2_coco_2018ã使ã£ã¦ã¿ã¾ãããObject Detection Toolsãã«ã¯ããã¦ã³ãã¼ãã®ã¹ã¯ãªããã使ãã¾ããã以ä¸2è¡ã§ssd_inception_v2_coco_2018ã®ã©ãã«coco-labels-paper.txt
ã¨ã¢ãã«frozen_inference_graph.pb
ããã¦ã³ãã¼ããã¦ããã¾ããä½ããã¦ãããæ°ã«ãªã人ã¯ãã¹ã¯ãªããã確èªãã¦ã¿ã¦ãã ããã
$ cd ~/object_detection_tools/models
$ ./get_ssd_inception_v2_coco_model.sh
ãç©ä½æ¤åºã®ãã¹ãããã¾ããPCã«ã«ã¡ã©ãã¤ãã¦ããå ´åï¼Mac Book/iMacçï¼ã¯ã以ä¸ã®ã³ãã³ããå®è¡ãã¦ä¸ãããããã«ã¡ã©ããªããã°ãé©å½ãªWebã«ã¡ã©ã使ã£ã¦ã大ä¸å¤«ã§ãã
$ cd ~/object_detection_tools $ python scripts/object_detection.py -l='models/coco-labels-paper.txt' -m='models/ssd_inception_v2_coco_2018_01_28/frozen_inference_graph.pb'
ãä¸è¨ã®ããã°ã©ã ã¯-l
ã®ãªãã·ã§ã³ã§ã©ãã«ã-m
ã®ãªãã·ã§ã³ã§ä½¿ç¨ããã¢ãã«ãæå®ãã¦ãã¾ããå®è¡ããã¨ã«ã¡ã©ãèµ·åãã¦ããªã¢ã«ã¿ã¤ã ã«ç©ä½æ¤åºã®çµæã表示ãããã¨æãã¾ãï¼é度ã¯PCã«ä¾åãã¾ãï¼ã
ãããPCããªãç°å¢ã§ãããã以ä¸ã³ãã³ãã§ããªã¼ç´ æããã¦ã³ãã¼ããã¾ããããããªã¼ç´ æã¯ãæåããã°ãå¤ãã¸ç ç©¶æãã®ãã³ã¹ã¿ããã®æ®ãä¸ããã§ãï¼ãã¤ããä¸è©±ã«ãªã£ã¦ãã¾ãã
$ wget https://raw.githubusercontent.com/karaage0703/ssd_keras/master/free_data/lonestartx_free.mp4
ãåç»ã®å ´åã®ã³ãã³ãã¯ä»¥ä¸ã§ãã
$ python scripts/object_detection.py -l='models/coco-labels-paper.txt' -m='models/ssd_inception_v2_coco_2018_01_28/frozen_inference_graph.pb' -d='video' -i='./lonestartx_free.mp4'
ã-d
ãªãã·ã§ã³ã§video
ãæå®ãã¦ã-i
ãªãã·ã§ã³ã§ãã¡ã¤ã«åãæå®ã§ãã¾ãã以ä¸ã®ãããªãã°ãæ åã表示ããããOKã§ãã
ããã°ãæ å
ããã¾ãæ©è½ã¨ãã¦ãã¦ã£ã³ãã¦ä¸ã§m
ãM
ãæ¼ãã¨æ¤åºããç©ä½ãã¢ã¶ã¤ã¯ã«ãªãã¾ããå
ã«æ»ãããã¨ãã¯b
ãB
ãæãã¦ä¸ããã以å使ããããã£ã¼ãã¢ã¶ã¤ã¯ãæ©è½ã§ãããå¦ç¿ãããã®ãä½ã§ããªã¢ã«ã¿ã¤ã ã§ã¢ã¶ã¤ã¯ããããã®ã§ãæã»ã¯ã·ã¼æ¥çã§ã®å©ç¨ãæå¾
ããã¾ããããã£ã¼ãã¢ã¶ã¤ã¯ãã«é¢ãã¦ã¯ã以ä¸è¨äºåç
§ä¸ããã
ãå·¦ä¸ã®æ°åã¯ãç©ä½æ¤åºã«ãããæéã§ããMac Book Pro(2012 Core i7)ã§0.2ç§ä»¥ä¸ã§ããä¸ã ã®é度ã§ããã
ãæ¬¡ã«ã¢ãã«ã夿´ãã¦ã¿ã¾ããããmobilenetã¨ãã軽ãå¦ç¿ã¢ãã«ã使ç¨ãã¦ã¿ã¾ãã以ä¸4è¡ã§ãã¦ã³ãã¼ããã¦å¦ç¿ã¢ãã«ã®ãã¹ãã¾ã§ãã§ãã¾ãã-m
ãªãã·ã§ã³ã§æå®ããã¢ãã«ãã¡ã¤ã«ã夿´ããã¦ããã®ãåããã¾ããã
$ cd ~/object_detection_tools/models $ ./get_ssd_mobilenet_v1_coco_model.sh $ cd ~/object_detection_tools $ python scripts/object_detection.py -l='models/coco-labels-paper.txt' -m='models/ssd_mobilenet_v1_coco_2018_01_28/frozen_inference_graph.pb' -d='video' --filename='./lonestartx_free.mp4'
ãå®è¡çµæã¯ãç§ã®ç°å¢ã ã¨0.1ç§ä»¥ä¸ã¨ãæ¤åºæéãååè¿ãã«ãªãã¾ããã
ãã¤ããç»å
ã¢ãã¤ã«ããã¤ã¹ï¼Raspberry Pi / Jetson Nanoï¼ã§ã®ç©ä½æ¤åº
ãã¢ãã¤ã«ããã¤ã¹ã§ãåãè¦é ã§ç©ä½æ¤åºã¯å¯è½ãªã¯ãâ¦ã§ãããåºæ¬çã«ãã®ã¾ã¾ã§ã¯éãã¦ä½¿ãç©ã«ãªãã¾ããããªã®ã§ãããããã®ã¢ãã¤ã«ããã¤ã¹ã«å¿ãã¦ãã¢ãã«ã®æé©åããã¦ããå¿ è¦ãããã¾ãï¼Object Detection APIã®Quantization使ãã°å ¨é¨OKãªã®ãã¨æã£ã¦ãã¾ããããå°ãªãã¨ãèªåã®ç°å¢ã§ã¯å ¨ç¶ãã¾ãããã¾ããã§ããâ¦ï¼ã
ãããã¢ãã¯ã«ãªã£ã¦ããã®ã¨ãã¾ã Jetson Nanoã§ããæåãã¦ããªãã®ã§ãQiitaã«ããããåå¥ã«è¨äºãæ¸ãããããããªã³ã¯ãè²¼ã£ã¦ããã¾ãã
ããã®ããã«PCã¨ã¢ãã¤ã«ããã¤ã¹ã¨åãã½ããã§å¦ç¿ãæ¨è«ãã§ããã®ã¯å¬ããã§ãããå½ããåã®ããã§ãããå®ã¯Intel Movidiusã¨ãã£ãå°ç¨åºæ¿ããã¢ãã«ã®è»½éåãªã©ãããå¿ è¦ããã£ãããã¦å¤§å¤ã§ããã
Windowsã§ã®åããæ¹
ãWindowsã§ã®åããæ¹ãã@kodomosanãããQiitaã«è¨äºæç¨¿ãã¦ãã ããã¾ããããªãã¨ãè¨äºæç¨¿æç¹ã§å°å¦å å¹´çï¼æ«æãããã§ãã
ã¾ã¨ã
ãTensorFlowã®ç©ä½æ¤åºç¨ã©ã¤ãã©ãªãObject Detection APIããæè»½ã«ä½¿ããã½ãããObject Detection Toolsããä½ã£ã¦ããã®ä½¿ãæ¹ãç°¡åã«ç´¹ä»ãã¦ã¿ã¾ããããObject Detection APIããèªåã«ã¯é£ããããªããªã大å¤ã§ããããå°ãã ãTensorFlowã¨ä»²è¯ããªããããªã¨ããæ°ããã¾ãï¼TensorFlow 2.0ã«ãªãã¨ã©ããªãã®ãã¨ãã話ã¯ä¸æ¦å¿ãã¾ãï¼ã
ãèªåãã¼ã¿ã®å¦ç¿ã«é¢ãã¦ã¯ã以ä¸è¨äºãåç §ä¸ããã
ãã¾ããç°å¢æ§ç¯ãç°¡æã«ããDockerã¤ã¡ã¼ã¸ãç¨æãã¦ãã¾ããDockerã¤ã¡ã¼ã¸ã¯karaage0703/object_detection_tools
ãããã¦ã³ãã¼ãã§ãã¾ãã
åèãªã³ã¯
TensorFlow 2 Object Detection API tutorial — TensorFlow 2 Object Detection API tutorial documentation
models/tf1.md at master · tensorflow/models · GitHub
Object Detection APIで簡単に物体検知を行ってみる(トレーニングまで) - Qiita
Jupyter Notebook in Jetson Nano
今更ですが、VATICによる動画の自動追尾アノテーションを使用してTFRecord形式への変換まで実施してみました[Docker編] - Qiita
Edge TPU Accelaratorの動作を少しでも高速化したかったのでMobileNetv2-SSD/MobileNetv1-SSD+MS-COCOをPascal VOCで転移学習して.tfliteを生成した_Docker編_その2 - Qiita
Edge TPU Accelaratorの動作を少しでも高速化したかったのでMS-COCOをPascal VOCで転移学習して.tfliteを生成した_GoogleColaboratory[GPU]編_その3 - Qiita
NVIDIA Jetson Nano 開発者キットで TF-TRT を利用した物体検出を試す - Qiita
TensorFlowのsess.run()が遅かった - Qiita
How to Automate Surveillance Easily with Deep Learning | by Bharath Raj | NanoNets | Medium
How to easily Detect Objects with Deep Learning on Raspberry Pi | by Sarthak Jain | NanoNets | Medium
Build a DIY security camera with neural compute stick (part 1) | by Chengwei Zhang | Coinmonks | Medium
é¢é£è¨äº
夿´å±¥æ´
- 2020/10/17 Windowsã§ã®åããæ¹ã«é¢ãã¦ãªã³ã¯è¿½è¨
- 2020/07/12 TensorFlow 2.x対å¿ã«é¢ãã¦è¿½è¨ã誤è¨ããªã³ã¯åãè¨æ£