OpenCV 3.3から使えるDNNモジュールを使って物体検出
OpenCV と MobileNet を使って物体検出を行った
Object Detection with OpenCV dnn modules and MobileNetSSD on Jupyter Notebook
Introduction
物体検出を Deep Leaning と OpenCV を用いて行う
OpenCV 3.3 からdnn
モジュールが正式にリリースされた
The main news is that we promoted DNN module from opencv_contrib to the main repository, improved and accelerated it a lot. An external BLAS implementation is not needed anymore. For GPU there is experimental DNN acceleration using Halide (http://halide-lang.org_). The detailed information about the module can be found in our wiki: Deep Learning in OpenCV.
_https://opencv.org/opencv-3-3.html
今回はその dnn モジュールを使って物体検出を行う
この記事は主にpyimagesearch の記事を参考に行いました。詳細な解説がありがたいです Deep Leaning を基にした物体検出で有名な手法は以下の 3 つである
- Faster R-CNN : 2015
- YOLO : 2015
- SSDs : 2015
物体検出を行う際の DNN のアーキテクチャでは主に VGG か ResNet が用いられる。しかし欠点としてこれらのアーキテクチャは非常に大きく 200–500MB のサイズになってしまう
物体検出において速度、精度、メモリの3つのバランスを考慮する場合、どのアーキテクチャを選ぶべきかを Google が論文としてまとめている
[1611.10012] Speed/accuracy trade-offs for modern convolutional object detectors
一行でまとめると、基本的に速度と精度はトレードオフであり、最速は SSDs MobileNet, 最高精度は Faster R-CNN w/Inception Resnet at stride 8
今回は省メモリかつ速度が早い SSDs MobileNet を用いて物体検出を行った
Demo on JupyterNotebook
Code
Study
- Print デバッグをやめて、logging module に切り替えた。出力が綺麗になっていい感じ
- OpenCV だけで DNN を使えるのは結構便利(学習済モデルとかは必須)
Future Work
- YOLO v2 も C++のサンプルがあるので、Python でも動くようにしたい
- Web App に組み込めるくらい速そうなので、やってみましょう
関連しているかもしれない記事
📮 📧 🐏: 記事への感想のおたよりをおまちしてます。 お気軽にお送りください。 メールアドレス入力があればメールで返信させていただきます。 もちろんお返事を希望せずに単なる感想だけでも大歓迎です。
このサイトの更新情報をRSSで配信しています。 お好きなフィードリーダーで購読してみてください。
このウェブサイトの運営や著者の活動を支援していただける方を募集しています。 もしよろしければ、Buy Me a Coffee からサポート(投げ銭)していただけると、著者の活動のモチベーションに繋がります✨
Amazonでほしいものリストも公開しているので、こちらからもサポートしていただけると励みになります。