目录
2.1 二分类交叉熵(Binary Cross Entropy Loss)
2.2 多分类交叉熵(Categorical Cross Entropy)
U-Net 是一种专为语义分割设计的卷积神经网络结构,能在少量标注数据下实现高精度的像素级预测。
1.网络结构
U-Net 的结构像一个 “U” 字,分为两部分:
部分 |
名称 |
作用 |
左侧 |
编码器(下采样) |
提取图像的高层特征(逐步降低空间分辨率) |
右侧 |
解码器(上采样) |
恢复空间信息、逐步重建像素级输出 |
横向连接 |
skip connection |
编码器浅层特征直接传给解码器,对应相同分辨率,提升定位能力 |
编码器模块(下采样):
- 每层包含:Conv → ReLU → Conv → ReLU → MaxPooling
- 通道数逐层翻倍
解码器模块(上采样):
- 每层包含:Up-conv (反卷积) → concat(来自 encoder 的跳跃连接)→ Conv → ReLU → Conv → ReLU
2.Loss计算
2.1 二分类交叉熵(Binary Cross Entropy Loss)
适用于前景 / 背景(2类),模型最后一层输出一个通道(每个像素为前景概率),GT 为 0 或 1:
其中:
x:预测的 logit(未经过 sigmoid)
y:GT 标签(0 或 1)
σ(x):sigmoid 激活输出概率
2.2 多分类交叉熵(Categorical Cross Entropy)
适用于多类(如背景 + N 个对象类型),最后一层输出 C
个通道(每通道一个类别概率),GT 为 0~C-1 的整数。
其中:
x:预测的 logit(未经过 softmax)
y:GT 标签,值为类别索引
自动使用
softmax
+log
合并为log_softmax
(更稳定)
2.3 论文中的loss计算
论文中的loss计算是加权像素级的多分类交叉熵损失函数。
:图像中所有像素位置
:第
个像素的真实类别标签 lable
:第
个像素预测为类别
的概率
:每个像素的权重(用于解决类不平衡和靠近边界的像素加强)
对每个像素,根据其真实类别,从模型输出中取对应类别的概率
,取对数并乘以权重
。
U-Net 为了解决 细胞边界不清晰 + 类不平衡 的问题,使用了一个特殊的权重:
其中:
:用于平衡前景与背景类别频率(类似 class weight)
:控制边界权重的最大值,实验中取 10
:表示像素点
到最近两个目标的边界的距离(例如两个细胞)
σ:控制边界范围的宽度,实验中约为 5 像素
3.论文细节
3.1 输入输出尺寸
| 输入图像 | 原始论文用的是 572×572 |
| 输出图像 | 中心裁剪后为 388×388 |
| 原因 | 论文使用的是无 padding 的卷积,导致边缘丢失,需裁剪中心区域 |
| 现代实现 | 大多采用 same padding,输入输出大小一致,计算方便 |
3.2 训练细节
项目 |
说明 |
Loss 函数 |
加权交叉熵(权重图 w(x) 考虑边界和类平衡) |
权重图计算 |
使用两个细胞边界的距离 + 类平衡项 |
优化器 |
SGD with momentum=0.99 |
数据增强 |
强烈依赖 elastic deformation(弹性形变)+ 平移、旋转、灰度扰动 |
dropout |
放在最底层(编码器最深处)增强鲁棒性 |
3.3 输出与目标(适用于分割)
- 输出 Tensor:形状 [N, C, H, W],C 为类别数(2 表示前景和背景)
- 目标 GT:形状 [N, H, W],每个像素是类别编号(整数)
- Loss 计算:常用 nn.CrossEntropyLoss(内部会 softmax + log + NLL)
4. U-Net 的变体与应用场景
名称 |
特点 |
U-Net++ |
多级跳跃连接、密集跳连,更强特征融合 |
Attention U-Net |
引入注意力模块,自动选择重要区域 |
3D U-Net |
用于 3D 医学图像(MRI、CT) |
ResUNet |
替换 Conv 块为 ResNet 块,更深更稳 |
- 医学图像分割(肿瘤、细胞、器官等)
- 卫星图像分割(建筑物、水体)
- 道路/车道线分割
- 农业图像分析(植物、病斑检测)