対象
Faaster-RCNN,SSD,Yoloなど物体検出手法についてある程度把握している方.
VGG16,VGG19,Resnet,MobileNetなどをSSDに組み込むときの参考が欲しい方.
自作のニューラルネットを作成している方.
1.VGG16とは
オックスフォード大学のVisualGeometoryGroup(VGG)が開発した16層のレイヤーからなるニューラルネットワークであり,他の多くの物体検出手法ではいまだにVGG16がよく使われている.
筆者がなぜVGG16と書いているかというと,SSDにはそのほかのフレームワークによって精度と速度のトレードオフではあるが,目的に合わせて活用することができるからである.(実際の実装に関する情報はとても少ないのだが・・・)
2.VGG16-SSD
この図は見飽きたという方もいるだろうが,YoloとSSDの比較である.
どちらも畳み込み層とプーリング層からなるネットワークである.今回はYoloについては触れないこととする.
だいたいどれも同じで,FC層を取っ払ってDetection層を追加している.
カーネルサイズは1,3の組み合わせが主流である.
3. SSDv2AveragePoolling版を試した.
筆者の環境
Keras v2.1.6, Tensorflow v1.6.0 GPU GTX1080
4.考察
一般的にObjectDetectionに関してFaster-RCNN,Yolo,SSDのどれも小さい物体の検出は苦手としており,苦労している方も多いであろう.
そんな方には以下の記事がおすすめです.
https://qiita.com/tanakataiki/items/36e71e7d2f5705bd98bb
5.終わりに
この記事を見た方はDeeeeeepLearningに興味をお持ちでしょう!
上手くいったカスタムネットワークのプルリクお待ちしています!
https://github.com/tanakataiki/ssd_kerasV2
参考
https://qiita.com/God_KonaBanana/items/2cf829172087d2423f58
https://arxiv.org/pdf/1409.1556.pdf
http://aidiary.hatenablog.com/entry/20170104/1483535144
https://www.kunihikokaneko.com/dblab/keras/snowmasaya.html