DeepEdge: A Multi-Scale Bifurcated Deep Network for Top-Down Contour Detection
この論文は、Contour DetectionにCNNを使った論文です。
Contour Detectionは物体の輪郭を抽出するというものです。
従来はContour Detectionはlow levelなtaskで、object detectionのようなhigher levelなtaskに使われるものと考えられていました。しかし、もしObjectの位置がわかればContourの推定は簡単になります。
この論文ではこの考えを元に、従来のlow levelのcontourからobjectを検出するというプロセスを逆にしてobject detectionの結果を手がかりにContourを推定するということをコンセプトにしています。具体的には、Object Detection用のCNNの中間Layerの値を入力にContour Detectionを行います。
Architecture
・Edge候補選択にCannyを使用
・CNNを使用してFeature抽出
使用したCNNはKrizhevskyらのNetworkです。論文ではこれをKNetと呼んでいます。KNetは、5 convolutional layerと3 fully connected layerから構成されます。Parameter数は、60 million。
・KNetの入力サイズに合わせるためにPatchをResize
・KNetの最初の5 convolutional layerだけ使用
理由としては、その後段のFully Connected Layerは位置の情報がなくなってしまうためContour Detectionの用途には向かないためです。
・各Layerから切り出してくるサイズは、first layerから、7x7, 5x5, 3x3, 3x3, 3x3のサイズ
・各Layerから取り出したFeatureをmax pooling, average pooling, center poolingで各Filter毎に3つの値にする
・得られてFeatureを2つのNetwork branchに入れて学習する
1. Contourかどうか推定するbranch
2. Contourとした人の割合を推定するbranch
BSDS500データ・セットは、ひとつの画像に対して複数の人が正解データとなるContourをannotationしている。正解データをつける人によってContourかどうかの判断が大きく異なるため、Contourとした人の割合を推定する
・Hidden Layerの数は、1024と512
・Multi Scale対応として、異なるサイズのPatch(64x64, 128x128, 196x196, Full size)を切り出し、KNetのInputサイズ(227x227)にResizeしてFeatureを抽出する。
Training
・DatasetはBSDS500
・Training Data数 80,000 (Positive 40,000, Negative 40,000)
・Learning rate 0.1
・Dropout 0.5
・Batch Size 100
・Epoch 50
・最初の25epochは、OriginalのTraining Dataを使用して各branch別々に学習
・残りの25epochは、各branchでfalse negative(誤検出)だったSampleとNegative SampleからRandomに選んだSampleを使ってOriginalのTraining Dataを拡張して学習する
Experiment
Comparison with Other Methods
性能は最新手法と同等かそれ以上
Low Recallの時にPrecisionが1になっている。(誤検出が無い)
Single Scale versus Multiple Scales
Single ScaleとMulti Scaleの比較
Multi Scaleにしたほうが性能がよくなっている
Advantages of Higher-Level Features
・各Layerだけの結果と全体を使った時の比較
・CNNのHigher LevelのFeatureを使ったほうがいいかのチェックするために行った
・各Layerの結果では4th layerの性能が一番良い
・全部使うと更に良くなっている
Pooling Scheme
・各Poolingの性能比較
・Centerがそこそこ性能がよい。全部使ったほうが更に良くなっている
Bifurcation and Training Objective
・2つのBranchの性能比較
・Classification(Contourかどうか推定)はF-Scoreが高い
・Regression(Contourとする人の割合の推定)は、APが高い
・2つ使うと性能がよくなっている
Qualitative Results
・検出結果の主観評価
・Raw DeepEdgeはそのままの値
・Thresholded DeepEdgeは、0.5でしきい値処理した結果
Computational Cost
・約5分
・各Featureを抽出するためにKNetを、60K回(15K回/scale)実行しないと行けない
・改善方法としては、4回(1回/scale)でFeatureを抽出してInterpolationするという方法がある
最後に
5分は長い。Featureを拡大するという方法も書いてあるが物体検出ではいいが、位置精度が要求されるContour Detectionではどうか少し疑問が残る。