1.はじめに
・上の記事でYOLO v1の仕組みについて簡単に理解しました。
・今回は次のバージョンであるYOLO v2に加えられた改良点を簡単にまとめてみたいと思います。
2.YOLO v2の変化
・YOLOの論文発表から約一年後、2016年にYOLO v2の論文が発表されました。
2.1.YOLOからYOLO v2への具体的な改良点
物体検出は「精度」と「速さ」の二つの面から改良されます。
3.具体的な改良点(物体検出の「精度」について)
・図の左の10個の改良点を順番に試していき、mAPの値を上げています。
・最終的にYOLO v2の精度は10個中9個の改善を加えています。
◎mAPって何?
モデルの精度を評価する数字
・mAPの値が高いほど、物体検出の精度が「高い」を意味します。
3.1.バッチノーマライゼーション(Batch Normalization)
YOLOでは、、、
CNNにバッチノーマライゼーション(バッチの正規化)という処理を使っていませんでした。
YOLO v2では、、、
CNNにバッチノーマライゼーションの処理を使うことによって、「検出制度」は良くなり、「学習速度」は早くな理ました。
3.1.1.バッチノーマライゼーションって何?
複雑なネットワークでも「安定的に」「より速く」学習できるようにする処理のこと
・ネットワークが深くて複雑だとその分、多くの計算をしなければならなくなります。
・その多くの計算を簡単にする(正規化する)ことで、学習の「安定性」と「速さ」を改善します。
3.2.高解像度分類器(High Resolution Classifier)
YOLOでは、、、
事前学習をするとき224×224サイズ(低解像度)の画像を使って、その後、入力画像の448×448サイズ(高解像度)の画像に対応させていました。
YOLO v2では、、、
事前学習をするとき448×448サイズ(高解像度)の画像を使ったことによって、大きなサイズ(高解像度)の画像でもより良い結果が得られるようにしました。
3.3.アンカーボックスの導入(Convolutional With Anchor Boxes)
YOLOでは、、、
各小さな正方形ごとに、何の手法もなくただひたすら頑張って「正解の枠(バウンディングボックス)」を予測していました。
YOLO v2では、、、
各小さな正方形ごとにアンカーボックスの手法を使うことで、効率的に正解の枠を予測できるようにしました。
3.3.1.アンカーボックスって何?
k個の枠を使ってどれが一番正解の枠に近いかを予測する手法
・アンカーを中心として、「枠の数(k)」「大きさ」「縦横比」を決めます。
・正解の枠と最も近いものを選びます。
しかし、アンカーボックスの手法には「2つ」問題があり、使われませんでした。
この問題を解決する策として「3.4.ディメンションクラスター」と「3.5.位置を直接予測する」という手法が使われました。
3.4.ディメンションクラスター(Dimension Clusters)
3.4.1.ディメンションクラスターって何?
最適なアンカーボックスの数を決める手法
アンカーボックスの一つ目の問題点は「枠の数」「大きさ」「縦横比」は人間が設定していることでした。
k平均法(k-means)という方法を使って、最適なアンカーボックスの「枠の数」と「大きさ」と「縦横比」を自動で決めれるようにしました。(ディメンションクラスター)
・論文では、自動的に決めた結果、枠の数=5が最適と書かれています。
3.5.位置を直接(Direct location prediction)
アンカーボックスのもう一つの問題点は中心座標(x,y)を予測することが難しいことでした。
YOLOで行った方法と同じように、ディメンションクラスターで決めたk個の枠を「小さな正方形ごとに当てはめる」ことで、中心座標(x,y)を予測することができるようになりました。
・全の小さな正方形ごとに5つの枠を当てはめていき、正解の枠と近いものを検出します。
・中心座標の他にもボックスの「w:横幅」「h:高さ」「F:信頼度」と合わせて5つの要素を持ちます。
3.6.細かい特徴も検出できる(Fine-Grained Features)
YOLOでは、、、
小さい物体の検出がうまくいきませんでした。
YOLO v2では、、、
リオーガナイゼーション(Reorganization)という独自の手法を使い、入力画像がサイズの大きい画像(高解像度)でもサイズの小さい画像(低解像度)でも対応できるようになりました。
3.6.1.リオーガナイゼーションって何?
「サイズの大きい画像(高解像度)」でも「サイズの小さい画像(低解像度)」でもちゃんと物体を検出することができるようにする手法
3.7.マルチスケールのトレーニング(Multi-Scale Training)
YOLOでは、、、
入力画像は448×448のサイズでしか学習出来ませんでした。
YOLO v2では、、、
上の3.6.1.リオーガナイゼーション(Reorganization)という独自の手法を導入したことで、入力画像が320×320のサイズの画像から608×608のサイズの画像(32の倍数)でも学習できるようになりました。
4.改良点(物体検出の「速度」について)
・モデルの基本構造を変化させることで、検出速度を速くします。
4.1.モデルの構造の変更
YOLOでは、、、
GoogLeNetという構造のモデルを少しアレンジしたものを使っていました。
YOLO v2では、、、
Darknet-19というオリジナルの構造を作って使いました。
「より速く」学習ができる「モデルの構造」を作ったよ
ということです。
YOLOシリーズ各バージョンの簡単な違いについてのまとめ