YOLO9000(v2)を理解したい
YOLO9000(v2)の論文を読みました。
大体は理解できたのですが、いくつかわからない点があったので質問させていただきます。
全結合層以外(畳み込み層)で普遍性定理は成り立つのか?
オリジナルのYOLO(v1)では、特徴マップから出力までの過程で全結合層を二層使って、出力(SS(B*5+C))を得ていました。
これは普遍性定理より実現できていることだと思っていました。
しかし、YOLO9000(v2)では全結合層をなくして畳み込み層とプーリング層で出力(SSB*(5+C))を得ています。
ここで、疑問に思ったのが、抽出した特徴マップから畳み込み層とプーリング層で欲しい出力を得られるのか?ということです。
確かに、畳み込み層とプーリング層で欲しい出力形式(次元数と形)に変形することは可能であることは理解できますが、今回はSSB*(5+C)の形式でかつそれぞれ意味があります。
(グリットの縦幅)(グリッドの横幅)(BBの数)*((x,y,w,h,objectness)+クラス数分の確率)
ただ、形式を変えるだけではなく、何らかの関数によって意味合いを持った結果を出力できているはずです。
その関数を畳み込み層とプーリング層だけで実現できるのかがわからず、調べても出てきませんでした。
multi-scale training (yolov2)
YOLO9000(v2)では、様々な解像度で学習することで学習します。
32の倍数{320、352、...、608}で学習するために、論文中ではネットワークをリサイズすると書いてありますが、具体的にどのようにリサイズしているのかわかりません。
However, since our model only uses convolutional and pooling layers it can be resized on the fly. We want YOLOv2 to be robust to running on images of different sizes so we train this into the model. Instead of fixing the input image size we change the network every few iterations. Every 10 batches our network randomly chooses a new image dimension size. Since our model downsamples by a factor of 32, we pull from the following multiples of 32: {320, 352, ..., 608}. Thus the smallest option is 320 × 320 and the largest is 608 × 608. We resize the network to that dimension and continue training.
全結合層を使っていないので入力サイズは自由に変えられると思いますが、出力サイズは変化するはずです。
それらしい質問はあったが少し違う内容だったりして、まだ理解できていません。
パディングやストライドで調節しているのでしょうか?
追記(2020/11/23)
もしかして別に出力のサイズは統一されなくてもいいのか?って思い始めた。
→だとしたら、論文の太字の部分(We resize the network...)はどう解釈すればいいんだろう?
##最後に
自分なりに調べてはみましたが、答えにたどり着かずにいます。
調べる量が足りなかったり、常識的なことを質問してしまっているかもしれませんが、わかる方がいましたら教えていただけるとありがたいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/27 07:32