tensorflow - 使用编码器-解码器 CNN 进行语义分割

标签 tensorflow deep-learning keras

对滥用技术术语表示歉意。
我正在通过 CNN 进行语义分割项目;尝试实现编码器-解码器类型的架构,因此输出与输入的大小相同。

你是如何设计标签的?
应该应用什么损失函数?特别是在类严重不平衡的情况下(但类之间的比例因图像而异)。

该问题涉及两个类(感兴趣的对象和背景)。我正在使用带有 tensorflow 后端的 Keras。

到目前为止,我正在设计与输入图像具有相同尺寸的预期输出,并应用像素标记。模型的最后一层具有 softmax 激活(对于 2 个类)或 sigmoid 激活(以表示像素属于对象类的概率)。我无法为这样的任务设计合适的目标函数,类型如下:

函数(y_pred,y_true),

与 Keras 一致。

请尝试具体说明所涉及的张量的维度(模型的输入/输出)。任何想法和建议都非常感谢。谢谢 !

最佳答案

实际上,当您使用 TensorFlow 时后端你可以简单地应用一个预定义的 Keras以下列方式实现目标:

output = Convolution2D(number_of_classes, # 1 for binary case
                       filter_height,
                       filter_width,
                       activation = "softmax")(input_to_output) # or "sigmoid" for binary
... 
model.compile(loss = "categorical_crossentropy", ...) # or "binary_crossentropy" for binary

然后输入一个单热编码的特征图或形状矩阵 (image_height, image_width)使用整数编码类(请记住,在这种情况下,您应该使用 sparse_categorical_crossentropy 作为损失)。

为了处理类(class)不平衡(我猜这是因为背景类(class)),我强烈建议您仔细阅读此 Stack Overflow question 的答案。 .

关于tensorflow - 使用编码器-解码器 CNN 进行语义分割,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42093632/

相关文章:

tensorflow - Word2Vec 应该训练多少个 epoch?推荐的训练数据集是什么?

deep-learning - 优化器的 state_dict 中保存了什么? "state","param_groups"代表什么?

tensorflow - 如果 Keras 和 TF 中的 shape 方法对批量大小返回 None,如何获取批量大小?

python - 如何使用 AutoKeras 获得可重复的结果

python - 如何在 Keras 中强制不同层的权重相等?

node.js - 如何使用 Node.js 将转换后的预训练 keras 模型加载到 Tensorflow.js?

python - 调试 tensorflow 单元测试

python - TensorFlow:组合两个图后从两个检查点恢复变量

python - 如何根据条件表达式删除一定数量的行?

python - 不同形状箭头上的 CNN 箭头图像分类器