2016-07-22 14 views
0

Ich entwickle ein CNN, um die Segmentierung von biomedizinischen Bildern zu tun.Verwenden Sie Bilder als Etiketten in CNN mit Caffe

Als Eingabe habe ich 572x572x3 Bilder und meine Etiketten sind die Bilder mit der Grundwahrheit.

Dies ist meine Datenschicht:

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 }} 

Das Problem ist, am Ende meiner Ausgabe ist kleiner als das Etikettenbild und die euklidische Verlust Schicht kann nicht funktionieren. Hier sind meine letzten Schichten:

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 }} 

ich diesen Fehler haben:

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. 

Ich habe versucht, eine Umformungsschicht zu verwenden, aber ich kann nicht genau die gleiche Größe erhalten ..

Hat jemand eine Idee, wie man dieses Problem löst?

Antwort

2

Höchstwahrscheinlich ist die Größenabweichung aufgrund der Faltungsschichten. Wenn Sie keine Füllung in den Faltungsschichten festlegen, gehen die Grenzen verloren.

Zum Beispiel gibt ein 32x32-Eingang zu einem 3x3-Kernel eine 30x30-Ausgabe.

Um das Problem zu lösen, können Sie entweder Padding in allen Faltungslayern verwenden oder Ihre Labelbilder auf die Größe der Ausgabe zuschneiden.

Wenn die Größe nicht übereinstimmt, weil Sie einige Pooling-Layer verwendet haben (die das Bild räumlich reduzieren) und in den späteren Layern nicht skaliert wurden, müssen Sie die Größe der Label-Images entsprechend ändern Ausgabe.

Hinweis: Reshape-Layer passt die Größe des Bildes nicht an. Es wird verwendet, um die Daten "umzuformen". Die Gesamtmenge der Werte bleibt nach einer Umformungsschicht gleich.

+0

Ok, danke. Ich werde versuchen, meine Etiketten zu beschneiden. –