E資格学習 深層学習 Day4 ⑥ 物体検知とセグメンテーション

物体検知

要点まとめ
  • 画像分類(Classification):写っている画像の正解ラベルを出力する
  • 物体検知(Object Detection):バウンディングボックス により、大枠の領域で何がどの辺りに写っているかを出力する。
  • セグメンテーション(意味領域と個体領域):ピクセル単位でラベル付けし、何がどこに写っているのか輪郭まで出力する。同じ種別のモノをまとめて認識する方法(Semantic Segmentation)と、同じ種別のモノでも個体単位(Instance Segmentation)で識別するかによって難易度も変わる。
代表的なデータセット

いずれもコンペで使用されている。学習したいタスクによってデータセットを選択する

評価指標について
  • 一般的なクラス分類の評価指標では「混同行列」が使われる。この時、Confidence Threshold値を設定し、閾値を変えると、各データのクラス予測が0なのか1なのかが変わるが、サンプル数そのものの数量は変わらない。
  • 一方、物体検知ではバウンディングボックス を予測するが、Confidence Threshold値を変えてしまうと、Confidenceの閾値以上のバウンディングボックスだけが評価対象のサンプルとして認識されるので、Thresholdが変化すると、そもそもの混同行列に入ってくる母数が変わってくる特長がある
  • 物体位置の予測精度の評価には、IoUが使われる。IoU(Intersection over Union):Area of Overlap / Area of Union
  • 物体検知でのPrecisionとRecallの考え方は、ConfidenceとIoUの2つに対して閾値を設ける。例えば、Conf >0.5, IoU>0.5 とすると、TP = Conf>0.5, IoU>0.5、FP = Conf>0.5, IoU<0.5 となる。(Conf<0.5のデータはそもそも選ばれない。)すでにTPと検出済みとなっているバウンディングボックスと同じ予測をしているものはFPとして分類される。
  • 物体検知では、上記で記載したようにConf閾値(β)を変化することで、PrecisionとRecallが変化することがわかった。そこで、クラスを固定した上で、βを徐々に変化した時にPrecisionとRecallがどのように変化したのかを曲線で描いた下面積をAPとして評価する。複数のクラスがある場合は、クラス毎のAPを算出して平均したものをmAP(mean Average Precision)という。 mAP =1/c \sum AP_i
  • Conf閾値(β)を変化させていったときのAPではなく、IoUの閾値を変化させた場合のAPを計算したものを、 mAP_{coco}と言われ、MS COCOで導入された評価軸。よりIoUの精度を厳しく見られている。
  • 検出精度だけでなく、検出速度(Frame Per Second)もモデルの評価に使われる。
物体検知のモデル

<2段階検出器>

  • R-CNN:
  • Fast R-CNN:
  • Faster R-CNN:

<1段階検出器>

  • SSD (Single Shot Detector):デフォルトボックスを用意し、変形しながらオブジェクトの周囲の大きさに最適化する。VGG16(conv層+全結合層で16層)の構造を継承しているが、全結合層×2がConv層に変更されている。
  • YOLO(You Look Only Once)
  • デフォルトボックスを修正しながら特徴マップからどのように出力される際は、クラス数分のconf値はもちろん、4つのオフセット項(Δx, Δy, Δw, Δh)が出力サイズとなる。k個のデフォルトボックスを用意するのでk(#class + 4)となる。
  • バウンディングボックス を多数用意することにより生ずる弊害もある。1つのクラスに対して冗長的にBBが重なってしまう問題。→Non-Maximum Suppresiion:Conf値の一番大きいものだけを採用することで解決。

非背景と背景のBBのバランスが不均衡になる→非背景の比を1:3に制限する。

セマンテックセグメンテーション

要点まとめ
  • ピクセル単位での輪郭検出をしたい。が、畳み込みネットワークではプーリング によって解像度が落ちてしまうのが難点。ではプーリング しなくてよいのでは?というとそうでもなく、特徴量の受容野の獲得のためには必要。
  • そこで、畳み込みしたものをUp-Samplingによって解像度をあげる仕組みが用いられる。(3×3→5×5)逆畳み込みとも言われるが、逆演算をしているわけではない。別名:転置畳み込み(Deconvolution/ Transposed Convolution)
  • Unpoolingという方法により、Pooling時の位置情報を維持する仕組みもある。

f:id:rakurakura:20220106125647g:plain

代表的なセグメンテーションのモデル
  • FCN:全てConv層のネットワークで構成されている。
  • U-Net:Encoder部分とDecoder部分の角層間でSkip-connectionによる接続構造が見られる。この形がU字になっているのでU-Netという名前になった。
  • (その他、Segnet等)