【问题标题】:U-net low contrast test images, predict output is grey boxU-net 低对比度测试图像,预测输出为灰色框
【发布时间】:2019-03-27 12:26:09
【问题描述】:

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

我正在使用 50 张超声图像进行训练,增强后得到大约 2000/3000,在 5 个 epoch 上,每个 epoch 有 300 步,batch size 为 2。

非常感谢提前 海伦娜

【问题讨论】:

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


    【解决方案1】:

    确保您的数据管道正确无误后。这里有几件事需要考虑,我希望下面提到的其中一项对您有所帮助:

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

    2。更改 testGenerator 中的行 data.pytestGenerator 方法中似乎存在问题的事情是以下行:

    img = img / 255
    

    改成:

    img /=255. 
    

    3.降低学习率 如果您的学习率太高,您可能会收敛到不充分的最优值,这也倾向于仅针对灰色、黑色或白色预测进行优化。 尝试使用 Adam(lr = 3e-5) 左右的学习率并训练足够数量的 epoch,您应该打印 dice loss 而不是准确度来检查您的收敛性。

    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.您可能只是训练不足,当您的网络没有按照您的意愿运行时,您会吓坏并中止训练。机会是,额外的训练时期正是它所需要的。

    【讨论】:

    • 非常感谢,我终于搞定了,但这些都是很好的澄清点,非常感谢
    • 你最后是怎么让它工作的?我也会对您的解决方案感兴趣。
    • 我更改了 epoch 数和每个 epoch 的步数,我将 epoch 数增加到 2000 左右,并将每个 epoch 的步数减少为(数据项数/批量大小),如在另一个站点上读取的那样。我还发现了要使用的新数据,因此将我的数据池增加到 100 张图像,这极大地改善了我的结果。我还将原始网络减少到 4 层而不是 5 层。但是,它现在也适用于 5 层。我现在正在使用 UCL/KCL 的 niftynet 进行医学成像分析,并将更改学习率以获得更好的结果。
    • 感谢您的帮助,我将研究更改最后一组卷积的损失函数和激活函数!
    猜你喜欢
    • 2019-11-30
    • 2020-12-16
    • 1970-01-01
    • 2018-12-10
    • 2020-11-18
    • 1970-01-01
    • 2015-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多