python - U-net 低对比度测试图像,预测输出为灰框

标签 python tensorflow keras conv-neural-network image-segmentation

我正在运行来自 https://github.com/zhixuhao/unet 的 unet但是当我运行 unet 时,预测的图像都是灰色的。我收到一条错误消息,说我的测试数据的图像对比度低,有人解决或解决了这个问题吗?

我正在用 50 张超声图像进行训练,增强后得到大约 2000/3000,在 5 个时期,每个时期 300 步,批次大小为 2。

提前谢谢了
海伦娜

最佳答案

After you made sure that your data pipeline is correct. There are a few things to consider here, I hope one of the bellow mentioned helps:



1.选择合适的损失函数
二元交叉熵可能会引导您的网络朝着针对所有标签进行优化的方向发展,现在如果您的图像中的标签数量不平衡,它可能会使您的网络只返回白色、灰色或黑色图像预测。尝试使用骰子系数损失

2. 更改 testGenerator 中的行
一个似乎是 data.py 中的问题的东西和 testGenerator方法是以下行:
img = img / 255

将其更改为:
img /=255. 

3.降低学习率
如果您的学习率太高,您可能会收敛于不充分的最优解,这也往往仅针对灰色、黑色或白色预测进行优化。
尝试使用大约 Adam(lr = 3e-5) 的学习率并训练足够数量的时期,您应该打印骰子损失而不是准确性来检查您的收敛性。

4.最后一组卷积不要使用激活函数
对于最后一组卷积,即 128-> 64 -> 64 -> 1,不应使用激活函数!激活函数导致值消失!

5. 您的保存方法可能存在“错误”确保在保存之前将图像缩放到 0 到 255 之间的值。 Skimage 通常会通过低对比度图像警告来警告您。
from skimage import img_as_uint

io.imsave(os.path.join(save_path,"%d_predict.tif"%(i)),img_as_uint(img))

6. 您的保存格式可能存在“错误”确保以正确的格式保存图像。我经历过保存为 .png 只给出黑色或灰色图像,而 .tif 就像一个魅力。

7. 你可能只是训练不够 通常,当您的网络没有按照您的意愿运行并中止训练时,您会吓坏了。机会是,额外的训练时期正是它所需要的。

关于python - U-net 低对比度测试图像,预测输出为灰框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52946110/

相关文章:

c++ - 如何将动态和静态二维数组作为空指针传递?

python - 如何在运行编译模型时更改 keras 中层的尺寸?

python - keras中的精度计算不匹配

python - 为类 Markdown 语言实现解析器

python - 使用 PIL 从文件夹加载所有图像

python - 将目录中的图像作为 Tensorflow 数据集加载

python - 在 tensorflow 中使用一维 CNN 对可变长度的时间序列进行分类

python - LSTM出现ValueError : Shapes (5, 2, 3) and (5, 3) are incompatible

python - 来自不同数据帧的一张图中的两个条形图(一个公共(public)列)

Python - 加载了多少个默认模块