我目前正在尝试在TensorFlow中实现FCN for semantic segmentation,就像之前在Caffe here中所做的那样 .
不幸的是,我正在努力完成以下三件事:
1)如何将"Deconvolution"层从Caffe映射到TensorFlow?这是正确的 tf.nn.conv2d_transpose
?
2)如何将“Crop”图层从Caffe映射到TensorFlow?不幸的是,我在TensorFlow中看不到任何替代方案 . 在TensorFlow中有相同的效果吗?
3)Caffe SoftmaxWithLoss
对应于TensorFlow softmax_cross_entropy_with_logits吗?
提前感谢您提供任何建议,提示和帮助 .
EDIT 9th May 2016:
1)我发现 tf.nn.conv2_transpose
确实对应于反卷积层 .
2)目前作物层似乎确实是一个问题 . 我发现实际上存在tf.image.resize_image_with_crop_or_pad,但这似乎不可能用于此目的,因为它不能用于动态创建的张量,也不能用于 tf.nn.conv2_transpose
层之后需要使用的4D张量 .
可能会提供更多信息:https://github.com/tensorflow/tensorflow/issues/2049
EDIT 17th May 2016:
我已经关注@ 24hours建议并在tensorflow中构建FCN,尽管我无法对任意大小的数据进行训练 .
2)真的不需要裁剪层 .
3)我最后使用了 tf.nn.sparse_softmax_cross_entropy_with_logits
,它对我有用 .
2 回答
感谢@ 24hours的建议,我找到了所有3个问题的答案 . 不幸的是,张量流中任意大小的FCN都比caffe复杂一点,但希望我能很快解决这个问题 .
1)
tf.nn.conv2d_transpose
可以使用 .2)不需要裁剪层,可以使用
tf.nn.conv2d_transpose
层的output_size
代替 .3)最后我使用了
tf.nn.sparse_softmax_cross_entropy_with_logits
通过实现裁剪层,我找到了在tensorflow中解决任意大小图像的方法 . 现在只需传递单个图像,就可以使用任何尺寸的图像 . 有关我的解决方案的更多信息,请访问:https://stackoverflow.com/a/45632285/3134418