YOLOとは?
モデルの由来でもあるYou Look Only Once、1stageのObject Detectionを提案したのがYoloとなる。
これまではRCNNなどの2stageが主流であった。
1stageにすると初期のBounding Box(Anchor)を定義するから、offsetのみを推定すれば良くなる。そうすると推定の複雑さが減り、さらに計算コストも下がるという事で提案された。
YOLO(V1)
RCNNでは2000個のBonding Boxを推定していたがYOLOではSxSxB(7x7x2=96)個のBounding Boxのみを推定すれば良くなった。
パイプライン
- 画像サイズを448x448(任意の値)に変換する
- CNNを用いてDetection
- 出てきたoutputは同じ物体をいくつも検出してる事があるので、Non-maximum suppression(IOUが一定値以上の場合Confidence Scoreが一番高い物のみを出力)を行う
出力の定義
1. 入力画像をSxS(7x7)のグリッドに分割する
2. それぞれのグリッド毎にB個のBounding Box(位置やサイズ)とC個のクラスの確率(それぞれ0~1)
3. 出力は下記の式のようになる
S ->Grid Size(7)
B ->Bounding Boxの数(2)
C ->分類するClassの数(20)
5 ->x,y,w,h,confidence
YOLOV2
アンカーボックス
YOLO(V1)では各グリッド毎に物体の位置を直接求めていたのに対して、Anchor Boxのオフセットを学習する事で、問題が簡素化され学習しやすくなった
小さい物体の検出
YOLOV1では小さい物体の検出が困難という課題があった。7*7のグリッドサイズを13*13にした所小さな物体の検出がしやすくなった
Batch Normalizationの追加
Batch Normalizationにより学習の安定化
Multi-Scale Trainingで物体サイズへの多様化
YOLOV1ではサイズの物体があると物体の検出が困難であった。入力画像のサイズをランダムに変えて学習する事によって、様々なサイズの物体を学習する事が出来、精度が向上
YOLOV3
Bounding Boxにobjectness Scoreの追加
それぞれのBounding Boxにobjectness Scoreが推定されるようになった。
そうする事によって推定されたBounding BoxがGround Truthにoverlapせずにassignされなかった場合にobjectness scoreがlossとしてobjectness scoreを下げる事が出来る。FP(False Positive)が減る
Class Predictionのsoftmaxの除去
YoloV2ではSoftMaxを使い物体の確率を出していた。
この方法で人間と男性の確率は0.45:0.55みたいになる。
しかし男性は人間でもあるため、0.9:0.87みたいな結果が欲しい。
FPN(Feature Pyramid Networks)構造の導入
FPNを使う事でGlobalとLocalの情報を得る事が出来る。
複数解像度の物体検出
52x52,26x26,13x13のそれぞれの解像度で物体を推定する事でNetworkの安定化する。
結論
・過去のupdateを見ると色々と実験されて今の状態があるだなと感じた
参考文献
You Only Look Once:Unified, Real-Time Object Detection
https://pjreddie.com/media/files/papers/yolo.pdf
YOLO9000:Better, Faster, Stronger
https://arxiv.org/pdf/1612.08242.pdf
YOLOv3: An Incremental Improvement
https://arxiv.org/abs/1804.02767