2016-04-26 5 views
3

NYU深度v2データセットを使用して単一の画像から深さを推定できるCNNを実装する予定です。このチュートリアルでは、Caffeの分類問題を扱うCNNを実装するのは簡単だということがわかりました。私はCaffeが多次元的な地面の真理(例えば奥行き画像)と回帰(深さの推定)を含むタスクに適しているかどうかが不思議です。Caffeの多次元ラベルデータ

私が達成したいのは、奥行き画像を推定することができるCNNを訓練するための奥行き画像として奥行き画像を使用することです。ラベルを単一チャンネルの画像データとして読み込む必要があります。

私は、私は2つのトップ層、グラウンドトゥルースとしての奥行きデータの入力用とその他を定義する必要があることを理解し、私の問題https://groups.google.com/d/msg/caffe-users/JXmZrz4cCMU/mBTU1__ohg4J

に関連しているShelhamerことで、この答えを見つけることができます。次に、損失層(EucledianLossなど)を使用して損失を計算することができます。私は以下のモデルを追加しました。

このモデルは意図したとおりに動作しますか?もしそうでなければ、Caffeでそれを行う他の方法はありますか?

layer { 
    name: "data" 
    type: "ImageData" 
    top: "data" 
    image_data_param { 
    source: "input_set.txt" 
    batch_size: 50 
    } 
} 

layer { 
    name: "label" 
    type: "ImageData" 
    top: "label" 
    image_data_param { 
    source: "depth_set.txt" 
    batch_size: 50 
    } 
    is_color: false 
} 

layer { 
name: "loss" 
type: "EuclideanLoss" 
bottom: "some_output_layer_name" 
bottom: "label" 
top: "loss" 
} 
+0

あなたの結果は達成されましたか?私は同じことを試みてきました。しかし私は自分の問題を解決するネットワークを作り出すことができませんでした。 – thigi

答えて

1

明らかに私の上記のモデルは正しい方法で始めることができましたが、いくつかの問題があります。イメージとしてラベルがある場合は、ImageData層をcaffeで使用できます。 ImageDataは2つの最上位層を有し、第1は実際の画像データであり、第2はその「ラベル」である(これは単純な分類問題に使用される)。ソースファイルでは、ラベルデータへのパスを提供し、任意の "ラベル"を入れて無視するだけです。 ignored1およびignored2は、これらの無視されたラベルに対応します。

layer { 
    name: "data" 
    type: "ImageData" 
    top: "data" 
    top: "ignored1" 
    image_data_param { 
    source: "path/to/data/data.txt" 
    batch_size: 32 
    new_height: 228 
    new_width: 304 
    } 
} 

# Label data 
layer { 
    name: "depth" 
    type: "ImageData" 
    top: "depth" 
    top: "ignored2" 
    image_data_param { 
    is_color: false 
    source: "path/to/data/labels.txt" 
    batch_size: 32 
    new_height: 55 
    new_width: 74 
    } 
} 

data.txtをサンプル:

/path/to/your/data/1.png 0 
/path/to/your/data/2.png 0 
/path/to/your/data/3.png 0 
... 

labels.txtサンプル:

/path/to/your/labels/1.png 0 
/path/to/your/labels/2.png 0 
/path/to/your/labels/3.png 0 
... 

また、あなたのイメージとラベルデータを読み取るために、独自のPythonの層を書くことができます。 NYUDv2のデータを読むにはexample layerがあります。

3

はい、上記のモデルは、動作するように動作するはずです。 some_output_layer_nameブロブのサイズがlabelブロブのサイズと同じであることを確認してください。