我正在运行来自 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/