TensorFlow 中的 FCN 缺少作物层

FCN in TensorFlow missing crop layer

我目前正在尝试实施 FCN for semantic segmentation in TensorFlow as it was previously done in Caffe here

不幸的是,我正在为以下三件事而苦苦挣扎:

1) 如何将 "Deconvolution" 层从 Caffe 映射到 TensorFlow?正确吗tf.nn.conv2d_transpose

2) 如何将 "Crop" 层从 Caffe 映射到 TensorFlow?不幸的是,我在 TensorFlow 中看不到任何替代方案。 TensorFlow 中是否有对应的方法?

3)CaffeSoftmaxWithLoss是否对应TensorFlowsoftmax_cross_entropy_with_logits?

提前感谢您的任何建议、提示和帮助。

编辑 2016 年 5 月 9 日:

1) 发现tf.nn.conv2_transpose确实对应反卷积层

2) 裁剪层现在看来真的是个问题。我发现确实存在 tf.image.resize_image_with_crop_or_pad,但这似乎无法用于此目的,因为它不能用于动态创建的张量,也不能用于在 [=12= 之后需要使用的 4D 张量]层。

更多信息可能在:https://github.com/tensorflow/tensorflow/issues/2049

编辑 2016 年 5 月 17 日:

我听从了@24hours 的建议并在 tensorflow 中构建了 FCN,尽管我无法让它训练任意大小的数据。

2)确实不需要裁剪层

3) 我最后使用了 tf.nn.sparse_softmax_cross_entropy_with_logits,它对我有用。

感谢@24hours 的建议,我找到了所有 3 个问题的答案。不幸的是,tensorflow 中任意大小的 FCN 比 caffe 中的要复杂一些,但希望我也能尽快解决这个问题。

1) tf.nn.conv2d_transpose可以用

2)不需要裁剪层,可以用tf.nn.conv2d_transpose层的output_size代替。

3) 最后我用了tf.nn.sparse_softmax_cross_entropy_with_logits

我找到了在 tensorflow 中通过实现裁剪层解决任意大小图像的方法。现在,当只传递单个图像时,它可以用于您想要的任何大小的图像。有关我的解决方案的更多信息,请参见: