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

Hel*_*ams 3 python image-segmentation conv-neural-network keras tensorflow

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

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

提前非常感谢海伦娜

mrk*_*mrk 5

确保您的数据管道正确之后。这里需要考虑一些事情,我希望以下提到的其中一项有所帮助:

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

2.更改 testGenerator 中的行 似乎是一个问题data.pytestGenerator方法是以下行:

img = img / 255
Run Code Online (Sandbox Code Playgroud)

将其更改为:

img /=255. 
Run Code Online (Sandbox Code Playgroud)

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))
Run Code Online (Sandbox Code Playgroud)

6. 您的保存格式可能有一个“错误”,请确保您以正确的格式保存图像。我的经验是,另存为 .png 只能提供黑色或灰色图像,而 .tif 则很有魅力。

7. 您可能只是训练得不够频繁,当您的网络没有按照您希望的方式运行时,您会感到惊慌并中止训练。很可能,额外的训练周期正是它所需要的。