3
2

More than 5 years have passed since last update.

[Survey]DeepEdge: A Multi-Scale Bifurcated Deep Network for Top-Down Contour Detection

Posted at

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

範囲を選択_177.png

・Edge候補選択にCannyを使用
・CNNを使用してFeature抽出
使用したCNNはKrizhevskyらのNetworkです。論文ではこれをKNetと呼んでいます。KNetは、5 convolutional layer3 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の数は、1024512
・Multi Scale対応として、異なるサイズのPatch(64x64, 128x128, 196x196, Full size)を切り出し、KNetのInputサイズ(227x227)にResizeしてFeatureを抽出する。
範囲を選択_179.png

下記はKNetの各Layerの反応
範囲を選択_178.png

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になっている。(誤検出が無い)

範囲を選択_180.png

範囲を選択_185.png

Single Scale versus Multiple Scales

Single ScaleとMulti Scaleの比較
Multi Scaleにしたほうが性能がよくなっている
範囲を選択_181.png

Advantages of Higher-Level Features

・各Layerだけの結果と全体を使った時の比較
・CNNのHigher LevelのFeatureを使ったほうがいいかのチェックするために行った
・各Layerの結果では4th layerの性能が一番良い
・全部使うと更に良くなっている

範囲を選択_182.png

Pooling Scheme

・各Poolingの性能比較
・Centerがそこそこ性能がよい。全部使ったほうが更に良くなっている

範囲を選択_183.png

Bifurcation and Training Objective

・2つのBranchの性能比較
・Classification(Contourかどうか推定)はF-Scoreが高い
・Regression(Contourとする人の割合の推定)は、APが高い
・2つ使うと性能がよくなっている

範囲を選択_184.png

Qualitative Results

・検出結果の主観評価
・Raw DeepEdgeはそのままの値
・Thresholded DeepEdgeは、0.5でしきい値処理した結果

範囲を選択_186.png

Computational Cost

約5分
・各Featureを抽出するためにKNetを、60K回(15K回/scale)実行しないと行けない
・改善方法としては、4回(1回/scale)でFeatureを抽出してInterpolationするという方法がある

最後に

5分は長い。Featureを拡大するという方法も書いてあるが物体検出ではいいが、位置精度が要求されるContour Detectionではどうか少し疑問が残る。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2