You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何改进U-Net分割OCT图像时含噪声的预测结果?

U-Net OCT分割降噪优化方案

当前20组小样本训练下出现散点噪声,是小样本分割场景的典型问题,按落地优先级可采取以下可直接复现的优化措施:

零成本快速修复(无需新增标注)

  • 替换损失函数:弃用纯binary_crossentropy。OCT分割的目标层区域占整图比例通常低于10%,纯BCE会被占绝大多数的背景像素主导,模型倾向于误判低置信度背景为前景。直接替换为BCE+Dice组合损失,同时兼顾像素级分类准确率和分割区域重合度,对类别不均衡场景适配性极强,替换代码如下:
# 定义组合损失
def bce_dice_loss(y_true, y_pred):
    bce_loss = tf.keras.losses.binary_crossentropy(y_true, y_pred)
    smooth = 1e-6
    y_true_flat = tf.keras.backend.flatten(y_true)
    y_pred_flat = tf.keras.backend.flatten(y_pred)
    intersection = tf.keras.backend.sum(y_true_flat * y_pred_flat)
    dice_coef = (2. * intersection + smooth) / (tf.keras.backend.sum(y_true_flat) + tf.keras.backend.sum(y_pred_flat) + smooth)
    return 0.5 * bce_loss + 0.5 * (1 - dice_coef)

# 模型编译时替换损失,同时增加IoU作为核心评估指标
model.compile(
    optimizer=tf.keras.optimizers.Adam(learning_rate=1e-4),
    loss=bce_dice_loss,
    metrics=[
        'accuracy',
        tf.keras.metrics.MeanIoU(num_classes=2, name='miou')
    ]
)
  • 调整推理逻辑:sigmoid输出的概率图不要默认用0.5作为二值化阈值,从现有训练集划5张当验证集,遍历0.3-0.9的阈值区间,选验证集上MiOU最高的阈值(医学薄结构分割通常在0.6-0.7区间),可直接滤除大部分低置信度散点。
  • 添加轻量后处理:二值化后用3x3卷积核做形态学开运算(先腐蚀后膨胀),再过滤所有面积小于阈值的孤立连通域、仅保留和主目标连通的区域,这一步在小样本场景下可消除90%以上的离散噪声点,且不会破坏主目标结构。
  • 修正训练正则策略:当前模型底层Dropout设为0.3,20组小样本下过高的Dropout会导致特征学习不稳定,将所有卷积层的Dropout比例统一调整为0.1;训练时添加早停回调,监控验证集MiOU指标,patience设为5,自动恢复验证集最优权重,避免过拟合。

现有数据挖掘优化(无需专家新标注)

  • 做适配OCT场景的数据增强:OCT图像为规则分层结构,禁止使用大角度旋转、垂直翻转、随机裁剪这类破坏层语义的增强,仅使用以下同步作用于图像和掩码的增强操作,将训练集规模扩充8-10倍:
    • 水平翻转
    • ±10%范围内的亮度/对比度随机扰动
    • ±5%图像高度范围内的垂直平移
  • 添加测试时增强(TTA):推理时对同一张测试图分别做原图、水平翻转、轻微亮度调整三次预测,将三次预测的概率图取平均后再做二值化,可进一步降低随机预测噪声。

后续扩量后的优化方向

等专家标注数据量达到100组以上后,可进一步做两点优化:

  • 将编码器替换为ImageNet预训练的ResNet18/ResNet34做迁移学习,大幅提升特征提取稳定性和泛化性
  • 在现有损失基础上添加边界损失,优化目标区域边缘分割精度,减少边缘毛刺

内容的提问来源于stack exchange,提问作者DumboTheMighty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 11:48:16