ディープラーニングについてディープにラーニング。

思いっきり、自分が学んだことのアウトプットしていきますが、何分初心者。もし何かアドバイス等頂けましたら幸いです!

セミナーに行ってきましたので、備忘録…

今日、ハンズオンセミナーに行ってきました。
内容はYOLOモデルの実装、です。
googleから出てるgoogle colaboratoryというGPU環境も12時間以内なら使えるというとても便利なものを使って、
体験してきました。

既にYOLOモデルを使って、色々自分で作っているので、すでに知っている部分も多かったのですが、
YOLOの歴史や各モデルの違い、マックスプーリングやバウンディングボックスの定義など、
かなりわかりやすく説明頂きました!(全く理論とか度外視でひたすら実装に専念してきたので、こういう機会はありがたいw)

以下、今日のサマリーを記載します。

物体検出の特徴

・画像の中の物体の一を推定、その物体が何か?を分類する

・ネットワーク自体は回帰と分類を同時に推測して、BoundingBoxの位置、それからラベルを同時に表示する

・一つの画像に複数の物体があっても検知する

それぞれのYOLOの特徴

物体検出にはおおよそ2つの指標がある

①mAP :ざっくりいうと精度のこと
FPS : ざっくりいうと処理速度のこと

YOLOv1

448×448画像を畳み込み層で縮小(downsample)し、サイズ7×7のセルで推論
 →つまりサイズがそれぞれ7×7のセルで推論するため、やたらと粗い
  なので、小さい物体の検出には不向きであった…

• アンカーボックスがなく、直でバウンディングボックスを推論していた
 →テンプレートがない状態でいきなり手紙書くイメージ(間違いが多くなる可能性が高)

f:id:kawam0t0:20191208161409p:plain

最後のテンソルの出力は7×7×30のテンソル
しかし、問題は初めのボックス(B1)と次に来るボックス(B2)のクラス分類が同じ均等の値になってしまうということ(自転車?車?の吟味ができない)

ゆえに精度は低いものであったが発表当時は人気が高かった。

YOLOv2(とても処理速度が速い)

416×416画像を縮小(downsample)し、サイズ13×13のセルで推論
 →つまりセルの数が多くなった(細かくなった)ことにより、比較的細かく画像を見れるように

・しかも、アンカーボックスの考えを取り入れる(SSDの手法を取り入れる)
 →一つのセルに対してアンカーボックス(画像分類の際のテンプレート枠)が5個も追加された。

・各セルの中でアンカーボックスを設定して、差分を推論していく(個々のセルは犬っぽい?次は車かな?など。)

・各セルのアンカーボックス数はB=5で、最大のボックス数は845個(13×13×5)

・最終的にバウンディングボックスのラベルに一番信用度の高い(正解の確率が高い)もののみを表示させる



f:id:kawam0t0:20191208162350p:plain

まずは416×416の画像が入っていく。

MaxPooling(208×208)

MaxPooling(104×104)

MaxPooling(52×52)

MaxPooling(26×26)

MaxPooling(13×13)
→13×13のセルに縮小されていく。


f:id:kawam0t0:20191208163046p:plain


更に、今回は各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つずつ作成される

 f:id:kawam0t0:20191208163956p:plain


初めの大きいセルで大きな物体検出→第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の中で精度と速度のバランスが最も良い