セミナーに行ってきましたので、備忘録…
今日、ハンズオンセミナーに行ってきました。
内容はYOLOモデルの実装、です。
googleから出てるgoogle colaboratoryというGPU環境も12時間以内なら使えるというとても便利なものを使って、
体験してきました。
既にYOLOモデルを使って、色々自分で作っているので、すでに知っている部分も多かったのですが、
YOLOの歴史や各モデルの違い、マックスプーリングやバウンディングボックスの定義など、
かなりわかりやすく説明頂きました!(全く理論とか度外視でひたすら実装に専念してきたので、こういう機会はありがたいw)
以下、今日のサマリーを記載します。
物体検出の特徴
・画像の中の物体の一を推定、その物体が何か?を分類する
・ネットワーク自体は回帰と分類を同時に推測して、BoundingBoxの位置、それからラベルを同時に表示する
・一つの画像に複数の物体があっても検知する
それぞれのYOLOの特徴
物体検出にはおおよそ2つの指標がある
①mAP :ざっくりいうと精度のこと
②FPS : ざっくりいうと処理速度のこと
YOLOv1
・448×448画像を畳み込み層で縮小(downsample)し、サイズ7×7のセルで推論
→つまりサイズがそれぞれ7×7のセルで推論するため、やたらと粗い
なので、小さい物体の検出には不向きであった…
• アンカーボックスがなく、直でバウンディングボックスを推論していた
→テンプレートがない状態でいきなり手紙書くイメージ(間違いが多くなる可能性が高)
最後のテンソルの出力は7×7×30のテンソル。
しかし、問題は初めのボックス(B1)と次に来るボックス(B2)のクラス分類が同じ均等の値になってしまうということ(自転車?車?の吟味ができない)
ゆえに精度は低いものであったが発表当時は人気が高かった。
YOLOv2(とても処理速度が速い)
・416×416画像を縮小(downsample)し、サイズ13×13のセルで推論
→つまりセルの数が多くなった(細かくなった)ことにより、比較的細かく画像を見れるように
・しかも、アンカーボックスの考えを取り入れる(SSDの手法を取り入れる)
→一つのセルに対してアンカーボックス(画像分類の際のテンプレート枠)が5個も追加された。
・各セルの中でアンカーボックスを設定して、差分を推論していく(個々のセルは犬っぽい?次は車かな?など。)
・各セルのアンカーボックス数はB=5で、最大のボックス数は845個(13×13×5)
・最終的にバウンディングボックスのラベルに一番信用度の高い(正解の確率が高い)もののみを表示させる
まずは416×416の画像が入っていく。
↓
MaxPooling(208×208)
↓
MaxPooling(104×104)
↓
MaxPooling(52×52)
↓
MaxPooling(26×26)
↓
MaxPooling(13×13)
→13×13のセルに縮小されていく。
更に、今回は各5個のバウンディングボックスに対して、
なんとそれぞれのクラス分類を行ってくれるため、複数の検知ができ、その中で一番数値が高いもののみ表示させる
YOLOv3
v2に比べて、少し処理速度は落ちるものの、v2はセルが13×13であったため、少し精度が上がってこなかった。
そんな中で生まれたのがv3でした。
処理速度はv2ほど早くはないが、下記の理由で精度が向上しました。
・416×416画像を畳み込み層で縮小(downsample)し、サイズ13×13のセルを作
成。続いて、26×26、52×52のサイズに拡大(upsample) し、3層のセルで推論
以前のモデルではセルのサイズは13×13の単体であったが、より細かくセルの設定ができ、画像を細分できるようになった(より細かな識別ができるように)
・13×13のセル + 26×26のセル + 52×52のセルの 3層のセルで推論してくれる
・それぞれ一つ一つのセルに対して、バウンディングボックスが3つずつ作成される
初めの大きいセルで大きな物体検出→第2層で中くらいの物体を検出(26×26セル)→最後に、一番小さな物体を検出(52×52セル)
v2同様にそれぞれのセルで物体の推論を行い、
一番確率の高かったものについてのみ表示を行う。
まとめ
•YOLOv1(粗い)
• サイズ7×7のセルで推論し、1セルで2個のボックスで98個
• 小さい物体が苦手
•YOLOv2(速い)
• サイズ13×13のセルで推論し、1セルで5個のボックスで845個
• 小さい物体の短所を克服し、YOLOの中で最速を誇る
•YOLOv3(きめ細かい)
• サイズ13×13、26×26、52×52のセルで推論し、1セルで3個のボックス
• 精度が大幅に向上し、YOLOの中で精度と速度のバランスが最も良い