【深度学习】U-Net系列(零):前置知识——深度学习与图像分割基础
本文介绍了深度学习图像分割的基础知识,重点为理解U-Net架构做准备。主要内容包括: 图像分割任务分类(语义/实例/全景分割) CNN核心组件(卷积、池化、激活函数) 编码器-解码器结构原理 上采样方法与损失函数 训练流程及评估指标 这些知识是理解U-Net创新点(如跳跃连接、端到端像素预测)的重要基础,特别适合医学图像等需要精确边界的分割任务。
【深度学习】U-Net系列(零):前置知识——深度学习与图像分割基础
🔖 系列导航:[前置知识] → [U-Net架构详解] → [网络结构深度剖析] → [医学图像应用] → [完整实战项目] → [FAQ与调优] → [变体与改进]
📌 关键词:卷积神经网络、图像分割、语义分割、特征提取、深度学习基础
1. 前言
在学习 U-Net 之前,需要掌握一些深度学习和图像处理的基础知识。本文将为零基础读者梳理必备的前置知识,帮助你更好地理解后续内容。
2. 什么是图像分割
2.1 图像分割的定义
图像分割是将图像划分为多个有意义区域的过程,每个像素被赋予一个类别标签。
2.2 分割任务类型
| 任务类型 | 描述 | 输出 |
|---|---|---|
| 语义分割 | 每个像素分配类别 | 类别掩码 |
| 实例分割 | 区分同类不同个体 | 实例掩码 |
| 全景分割 | 语义 + 实例结合 | 统一掩码 |
2.3 U-Net 解决的问题
U-Net 主要用于语义分割,特别是:
- 医学图像中的器官/病灶分割
- 细胞/组织边界识别
- 任何需要像素级精确定位的任务
3. 卷积神经网络基础
3.1 卷积操作
卷积是 CNN 的核心操作,用于提取图像局部特征。
卷积计算公式:
( I ∗ K ) ( i , j ) = ∑ m ∑ n I ( i + m , j + n ) ⋅ K ( m , n ) (I * K)(i, j) = \sum_{m}\sum_{n} I(i+m, j+n) \cdot K(m, n) (I∗K)(i,j)=m∑n∑I(i+m,j+n)⋅K(m,n)
其中:
- I I I 为输入图像
- K K K 为卷积核(滤波器)
- ( i , j ) (i, j) (i,j) 为输出位置
输出尺寸计算:
H o u t = ⌊ H i n + 2 p − k s ⌋ + 1 H_{out} = \left\lfloor \frac{H_{in} + 2p - k}{s} \right\rfloor + 1 Hout=⌊sHin+2p−k⌋+1
| 参数 | 含义 | 常见值 |
|---|---|---|
| k k k | 卷积核大小 | 3, 5, 7 |
| s s s | 步长 (stride) | 1, 2 |
| p p p | 填充 (padding) | 0, 1, ‘same’ |
3.2 池化操作
池化用于降低特征图尺寸,增大感受野。
最大池化:
y i j = max ( m , n ) ∈ R i j x m n y_{ij} = \max_{(m,n) \in R_{ij}} x_{mn} yij=(m,n)∈Rijmaxxmn
平均池化:
y i j = 1 ∣ R i j ∣ ∑ ( m , n ) ∈ R i j x m n y_{ij} = \frac{1}{|R_{ij}|} \sum_{(m,n) \in R_{ij}} x_{mn} yij=∣Rij∣1(m,n)∈Rij∑xmn
3.3 激活函数
激活函数引入非线性,使网络能学习复杂模式。
ReLU(最常用):
ReLU ( x ) = max ( 0 , x ) \text{ReLU}(x) = \max(0, x) ReLU(x)=max(0,x)
Sigmoid:
σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+e−x1
Softmax(多分类输出):
softmax ( x i ) = e x i ∑ j e x j \text{softmax}(x_i) = \frac{e^{x_i}}{\sum_{j} e^{x_j}} softmax(xi)=∑jexjexi
3.4 批归一化(Batch Normalization)
BatchNorm 加速训练、稳定梯度:
x ^ i = x i − μ B σ B 2 + ϵ \hat{x}_i = \frac{x_i - \mu_B}{\sqrt{\sigma_B^2 + \epsilon}} x^i=σB2+ϵxi−μB
y i = γ x ^ i + β y_i = \gamma \hat{x}_i + \beta yi=γx^i+β
其中 μ B \mu_B μB、 σ B 2 \sigma_B^2 σB2 为批次均值和方差, γ \gamma γ、 β \beta β 为可学习参数。
4. 编码器-解码器结构
4.1 核心思想
4.2 编码器的作用
| 功能 | 实现方式 | 效果 |
|---|---|---|
| 特征提取 | 卷积层 | 学习图像模式 |
| 下采样 | 池化/stride=2 | 扩大感受野 |
| 语义抽象 | 深层网络 | 高级语义特征 |
4.3 解码器的作用
| 功能 | 实现方式 | 效果 |
|---|---|---|
| 上采样 | 转置卷积/插值 | 恢复空间分辨率 |
| 特征融合 | 跳跃连接 | 结合多尺度信息 |
| 像素预测 | 1×1卷积 | 输出分割图 |
5. 上采样方法
5.1 常见上采样方式
5.2 转置卷积
转置卷积(反卷积)是可学习的上采样:
H o u t = ( H i n − 1 ) × s − 2 p + k H_{out} = (H_{in} - 1) \times s - 2p + k Hout=(Hin−1)×s−2p+k
5.3 双线性插值
双线性插值根据相邻像素计算新值:
f ( x , y ) = ∑ i = 0 1 ∑ j = 0 1 f ( x i , y j ) ⋅ ( 1 − ∣ x − x i ∣ ) ( 1 − ∣ y − y j ∣ ) f(x, y) = \sum_{i=0}^{1}\sum_{j=0}^{1} f(x_i, y_j) \cdot (1-|x-x_i|)(1-|y-y_j|) f(x,y)=i=0∑1j=0∑1f(xi,yj)⋅(1−∣x−xi∣)(1−∣y−yj∣)
6. 损失函数基础
6.1 分类 vs 分割的损失
| 任务 | 损失函数 | 特点 |
|---|---|---|
| 图像分类 | 交叉熵 | 整图一个损失值 |
| 图像分割 | 像素级交叉熵 | 每像素计算后求和 |
6.2 交叉熵损失
二分类(Binary Cross Entropy):
L B C E = − 1 N ∑ i = 1 N [ y i log ( p i ) + ( 1 − y i ) log ( 1 − p i ) ] \mathcal{L}_{BCE} = -\frac{1}{N}\sum_{i=1}^{N}\left[y_i \log(p_i) + (1-y_i)\log(1-p_i)\right] LBCE=−N1i=1∑N[yilog(pi)+(1−yi)log(1−pi)]
多分类(Cross Entropy):
L C E = − 1 N ∑ i = 1 N ∑ c = 1 C y i c log ( p i c ) \mathcal{L}_{CE} = -\frac{1}{N}\sum_{i=1}^{N}\sum_{c=1}^{C} y_{ic} \log(p_{ic}) LCE=−N1i=1∑Nc=1∑Cyiclog(pic)
6.3 Dice 系数
Dice 衡量预测与真实的重叠度:
Dice = 2 ∣ P ∩ G ∣ ∣ P ∣ + ∣ G ∣ \text{Dice} = \frac{2|P \cap G|}{|P| + |G|} Dice=∣P∣+∣G∣2∣P∩G∣
取值范围 [ 0 , 1 ] [0, 1] [0,1],1 表示完全重叠。
7. 深度学习训练基础
7.1 训练流程
7.2 梯度下降
参数更新公式:
θ t + 1 = θ t − η ⋅ ∇ θ L \theta_{t+1} = \theta_t - \eta \cdot \nabla_\theta \mathcal{L} θt+1=θt−η⋅∇θL
其中:
- θ \theta θ 为模型参数
- η \eta η 为学习率
- ∇ θ L \nabla_\theta \mathcal{L} ∇θL 为损失对参数的梯度
7.3 常用优化器
| 优化器 | 特点 | 适用场景 |
|---|---|---|
| SGD | 基础,需调学习率 | 大规模训练 |
| Adam | 自适应学习率 | 通用首选 |
| AdamW | Adam + 权重衰减 | 防止过拟合 |
Adam 更新规则:
m t = β 1 m t − 1 + ( 1 − β 1 ) g t m_t = \beta_1 m_{t-1} + (1-\beta_1)g_t mt=β1mt−1+(1−β1)gt
v t = β 2 v t − 1 + ( 1 − β 2 ) g t 2 v_t = \beta_2 v_{t-1} + (1-\beta_2)g_t^2 vt=β2vt−1+(1−β2)gt2
θ t + 1 = θ t − η ⋅ m ^ t v ^ t + ϵ \theta_{t+1} = \theta_t - \eta \cdot \frac{\hat{m}_t}{\sqrt{\hat{v}_t} + \epsilon} θt+1=θt−η⋅v^t+ϵm^t
8. 评估指标
8.1 分割常用指标
| 指标 | 公式 | 含义 |
|---|---|---|
| Accuracy | T P + T N T P + T N + F P + F N \frac{TP+TN}{TP+TN+FP+FN} TP+TN+FP+FNTP+TN | 整体准确率 |
| Precision | T P T P + F P \frac{TP}{TP+FP} TP+FPTP | 预测正例的准确性 |
| Recall | T P T P + F N \frac{TP}{TP+FN} TP+FNTP | 真实正例的召回率 |
| IoU | T P T P + F P + F N \frac{TP}{TP+FP+FN} TP+FP+FNTP | 交并比 |
| Dice | 2 T P 2 T P + F P + F N \frac{2TP}{2TP+FP+FN} 2TP+FP+FN2TP | F1分数 |
8.2 混淆矩阵
9. 为什么需要 U-Net
9.1 早期方法的局限
| 方法 | 问题 |
|---|---|
| 滑窗分类 | 效率低,重复计算 |
| FCN | 分辨率低,边界模糊 |
| 普通CNN | 无法输出像素级预测 |
9.2 U-Net 的创新
10. 总结与下一步
10.1 本文要点回顾
| 概念 | 核心内容 |
|---|---|
| 图像分割 | 像素级分类任务 |
| 卷积操作 | 局部特征提取 |
| 编码-解码 | 下采样提取特征 + 上采样恢复分辨率 |
| 损失函数 | 交叉熵、Dice |
| 评估指标 | IoU、Dice 系数 |
10.2 学习路线图
更多推荐
所有评论(0)