2016-07-22 6 views
0

私は、生物医学的画像のセグメンテーションを行うためにCNNを開発しています。CaffeのCNNで画像をラベルとして使用

入力として私は572x572x3の画像を持ち、私のラベルは地面の真実の画像です。

これは私のデータ層である:

layer {top: 'image' name: 'loadMydata_image' type: 'HDF5Data' hdf5_data_param { source: '/home/alexandra/Documents/my-u-net/my_data.txt' batch_size: 1} include: { phase: TRAIN }} 

layer {top: 'anno' name: 'loadMydata_anno' type: "HDF5Data" hdf5_data_param { source: '/home/alexandra/Documents/my-u-net/my_data.txt' batch_size: 1} include: { phase: TRAIN }} 

問題は私の出力は、ラベル画像と動作しないことができユークリッド損失層よりも小さい終わり、です。ここ は私の最後の層である:

layer { name: 'label_reshape' type: 'Reshape' bottom: 'anno' top: 'anno_reshaped' reshape_param { shape : {dim:0 dim:-1 dim:0 dim:0} }} 

layer { bottom: 'score' bottom: 'anno_reshaped' top: 'loss' name: 'loss_tune' type: "EuclideanLoss" include: { phase: TRAIN }} 

私はこのエラーを持っている:

F0722 10:43:42.478071 10809 euclidean_loss_layer.cpp:12] Check failed: bottom[0]->count(1) == bottom[1]->count(1) (980000 vs. 981552) Inputs must have the same dimension. 

私はリシェイプ層を使用しようとしましたが、私は正確に同じサイズを取得することはできません。..

誰もが持っていますどのようにこの問題を解決するアイデア?

答えて

2

おそらくサイズの不一致は、畳み込みレイヤによるものです。畳み込みレイヤーにパディングを設定しないと、境界線が失われます。

例えば、3x3カーネルへの32x32入力は30x30出力を与えます。

これを解決するには、すべての畳み込みレイヤーでパディングを使用するか、出力のサイズに合わせてラベルイメージをトリミングします。

また、いくつかのプールレイヤー(画像を空間的に縮小する)を使用し、後のレイヤーでアップスケールしなかったためにサイズの不一致が発生した場合は、ラベルイメージのサイズを出力。

注:画像のサイズを変更しても、画像のサイズは変更されません。これは、データを「再形成」するために使用されます。リシェイプレイヤーの後も、値の合計は同じままです。

+0

ありがとう、ありがとうございます。私は自分のラベルを切り抜こうとします。 –

関連する問題