物体検出のそれぞれの特徴について
物体検出はとても難しい。
それぞれの特徴について、
今一度整理します。
VGG16モデルについて
VGGはConv層とマックスプーリング層で構成されている代表的なネットワーク。
構成としては、
5ブロックの構成で
それぞれ3×3のConv層とマックスプーリングの5層で構成されている。
チャネル数にも注目が必要。
ざっくりと、深い層ほど、特徴量を512にするので、とても分類に強くなる。
結構転移学習させる対象とされることが多い。
Conv層で特徴マップの縦×横のサイズは変更せずに、チャネル数だけを変える(=パディングは1)
つまり、出力データのサイズは変わらない。
そして、マックスプーリングを通過したら、縦×横が半分になる。
その半分になった分、チャネル数で保管していく。
最終的には、7×7×512の特徴マップに。(特徴量が大きくなる)
物体検出の紹介
FasterR-CNN
CNNとFasterR-CNNのまさかのCNN2段構えの構造。
2つもCNNを構えているから、とても精度が良い。
ベースはVGG16を持っていて、一つ目のCNNは14×14の特徴マップでアンカーボックスを作成。一つ目のCNNでは、物体がどこに映っているのか?を検出し推論。
学習自体は2個目のCNNで何が移っているか、分類と回帰を行って、物体を検出する。
こんな複雑なネットワークのため、
精度はいいが、遅い。
YOLOv1
初めて、1ステージで完結できるモデルができた。
つまり、CNNを2個のせたりしなくてよいモデルに。
→速度が一気に向上。
特徴としては、
まず448×448×3の画像を入力していく。そして、ストライドを2にするので、
どんどん、特徴マップは小さくなっていくが特徴量を倍増させる。
ただし、アンカーボックス(デフォルトボックス)という概念を取り入れていなかったため、直にバウンディングボックスをあてがった。
その結果、精度がいまいちに。
アンカーボックスはその物体があるかも、の指標になる。
SSD
ベースはVGG16のモデルであるが、追加のネットワークによって、合計6層の特徴マップを使用。
今回はこのモデルを使ってセミナーでは物体検出を行うので、
ちょっと具体的に記載する。
VGG
写真サイズ(300×300×3)
Conv(3,3,512) 写真サイズ(38×38×512) セルが38×38だからもう少し細かくないとなぁ…(小さな物体検出)
↓
Conv(3,3,512)
↓
Pooling
↓
Conv(3,3,1024) 写真サイズ(19×19×1024)
↓
Conv(3,3,1024)
↓
Pooling
↓(ここからExtraレイヤー)
Conv(3,3,512) 写真サイズ(10×10×512)
↓
Conv(3,3,512)
↓
Conv(3,3,512)
↓
Pooling
↓
Conv(3,3,256) 写真サイズ(5×5×256)
↓
Conv(3,3,256)
↓
Conv(3,3,256)
↓
Pooling
↓
Conv(3,3,256) 写真サイズ(3×3×256)
↓
Conv(3,3,256)
↓
Conv(3,3,256)
↓
Pooling
↓
Conv(3,3,256) 写真サイズ(1×1×256) セルが1×1の大きな物体の検出
↓
Conv(3,3,256)
↓
Conv(3,3,256)
アンカーボックス(デフォルトボックス)を取り入れる。
それによって、バウンディングボックスが
セルサイズ×セルサイズ×6とか4とかで合計8732個のバウンディングボックスの生成に成功。
これにより、
精度もよくなったし、速度もいい感じに。(ちょっと小さめの物体検出には弱いけど)
FPN
224×224の画像から、ボトム安比で特徴マップを縮小していく。
そして、更にトップダウンで特徴マップを拡大していく。
これは畳み込みではなくって、単純に画像の解像度を小さくしたり大きくしたりする。
オリジナル(入力の際に入ってきた画像データ)をそのまま拡張したりするから位置が変わってくる。
そのため、横の矢印で、位置を補強してあげていく。
Yolov3
なんと、全部で106層のネットワークからなり、86層以降で特徴マップを拡大していく。(小さな物体検出を行っていく)
まずは416×416×3チャネルの画像を畳み込みで13×13のセルに落とし込む。(大きな物体検出)
そこから26×26の少し細かい中くらいの物体検出を行った。
ちなみに1つのセルに対して、アンカーボックス(デフォルトボックス)は3つ。
でも、52×52のセルにアンカーボックスが3つずつ入るので、できるバウンディングボックスは
最後の層だけで8112個とかなり細かくまで見ていけるようになった。
まじで細かい。
それぞれ、いい感じの物体検出のモデルで
本当に尊敬する。
今回はSSDを使うができたら、
YOLOV3を使ってみたい気もする。