我从 https://github.com/zhixuhao/unet 运行unet,但是当我运行unet时,预测的图像都是灰色的。我收到一个错误,说我的测试数据的低对比度图像,有人已经或解决了这个问题吗?
我正在训练 50 张超声图像,增强后得到大约 2000/3000,在 5 个时期,每个时期 300 步,批量大小为 2。
提前非常感谢 海伦娜
确保数据管道正确之后。这里有几件事需要考虑,我希望提到的一个风箱有所帮助:
1.选择正确的损失函数二进制交叉熵可能会引导您的网络朝着优化所有标签的方向发展,现在,如果您的图像中的标签数量不平衡,它可能会使您的网络只返回白色、灰色或黑色图像预测。尝试使用骰子系数损失
2. 更改测试生成器中的行data.py
和testGenerator
方法中似乎有问题的事情是以下行:
img = img / 255
将其更改为:
img /=255.
3. 降低学习率 如果你的学习率太高,你可能会收敛到不足的最优,这也倾向于只针对灰色、黑色或白色预测进行优化。 尝试在Adam(lr = 3e-5)
左右的学习率并训练足够数量的 epoch,您应该打印骰子损失而不是准确性来检查收敛性。
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.您可能只是经常训练不足,当您的网络没有按照您希望的方式运行时,您会吓坏并中止培训。机会是,额外的训练时期正是它所需要的。