ziky90 - 6 months ago 295

Python Question

I am currently trying to implement FCN for semantic segmentation in TensorFlow as it was previously done in Caffe here.

Unfortunately I'm struggling with following 3 things:

1) How to map "Deconvolution" layer from Caffe to TensorFlow? Is it correctly

`tf.nn.conv2d_transpose`

2) How to map "Crop" layer from Caffe to TensorFlow? Unfortunately I can't see any alternative in TensorFlow. Is there equivalent for this in TensorFlow?

3) Does Caffe

`SoftmaxWithLoss`

Thank you in advance for any advices, hints and help.

1) I have found out that

`tf.nn.conv2_transpose`

2) Crop layer for now seems to be really a problem. I have found out that there actually exists

`tf.image.resize_image_with_crop_or_pad`

`tf.nn.conv2_transpose`

Some more information might be on: https://github.com/tensorflow/tensorflow/issues/2049

I have followed @24hours advice and build FCN in tensorflow, though I was not able to make it train on data of the arbitrary size.

2) Crop layer is really not needed.

3) I have used

`tf.nn.sparse_softmax_cross_entropy_with_logits`

Answer

Thanks to the advice from @24hours I have found answer to all the 3 questions. Unfortunately FCN of arbitrary size in tensorflow is a bit more complicated than in caffe, but hopefully I'll solve that soon as well.

1) `tf.nn.conv2d_transpose`

can be used.

2) Crop layer is not needed, `output_size`

of the `tf.nn.conv2d_transpose`

layer can be used instead.

3) At the end I have used `tf.nn.sparse_softmax_cross_entropy_with_logits`