跳转至

第6章 如何构建用于影像应用的人工智能算法(How to Build Artificial Intelligence Algorithms for Imaging Applications)

作者

  • Lewis Hahn, MD(通讯作者)— Division of Cardiothoracic Imaging, Department of Radiology, UC San Diego School of Medicine. 胸心血管放射学 + AI 临床应用。
  • Evan Masutani, CPhil — Department of Bioengineering, UC San Diego. 工程学背景。
  • Kyle Hasenstab, PhD — Department of Mathematics and Statistics, San Diego State University. 统计学背景。

本章是 Part I 的"AI 算法工程实践"——Ch 1-5 讲了历史、概念、数据准备、基础设施,本章把它们落到"具体怎么写代码、选架构、调超参"的层面。读者应有 Ch 1-5 基础,并准备 PyTorch/TensorFlow 实践经验。

内容概述

本章给出构建影像 AI 算法的 5 步法:① 确定任务类型(分类 / 定位 / 分割 / 重建 / 后处理)→ ② 选择算法(CNN 基础组件 + 任务专属架构)→ ③ 选择损失函数 → ④ 设置训练参数(学习率、优化器、batch size、增强)→ ⑤ 训练 + 超参数调优 + 高级技巧(集成、级联、多任务、空间变换网络)。核心论点:(1) CNN 是当前几乎所有胸心血管影像 AI 的标准架构——卷积 + 池化 + 全连接 + 跳跃连接的组合可应对几乎所有任务;(2) 没有"最好"的架构——只有"对任务和数据集合适"的架构。LeNet/AlexNet/ResNet/DenseNet/U-Net/YOLO/Faster R-CNN/Mask R-CNN 各有适用场景;(3) 超参数调优比想象的重要——学习率、batch size、增强策略对最终性能的影响常超过模型选择本身;(4) 预训练 + 迁移学习是数据有限时的关键——ImageNet 预训练的特征对医学影像仍有价值(即使颜色通道不同);(5) 高级技巧(集成、级联、多任务、STN)可显著提升性能但有计算与数据代价。本章是 Ch 11(临床工作流)、Ch 14-21(各种任务的具体实现)的工程基础。

核心方程与概念

0. 几个核心数学

  • ReLU 激活函数\(f(x) = \max(0, x)\)当前 CNN 的默认激活
  • 二元交叉熵(BCE): $\(L_{\text{BCE}}(y, p) = -y \log p - (1 - y) \log(1 - p)\)$
  • 多类交叉熵(CCE)\(N\) 类,真值 one-hot \(c_k\)): $\(L_{\text{CCE}} = -\sum_{k=1}^{N} c_k \log p_k\)$
  • L2 损失(MSE): $\(L_{\text{MSE}} = \frac{1}{N} \sum_{k=1}^{N} (y_k - \hat{y}_k)^2\)$
  • L1 损失(MAE): $\(L_{\text{MAE}} = \frac{1}{N} \sum_{k=1}^{N} |y_k - \hat{y}_k|\)$
  • Dice 损失(分割): $\(L_{\text{Dice}} = 1 - \frac{2\,|A \cap B| + \varepsilon}{|A| + |B|}\)$ (\(\varepsilon\) 为防止除零的小常数)
  • SSIM(结构相似性)(重建任务): $\(\mathrm{SSIM}(x, y) = \frac{(2\mu_x\mu_y + C_1)(2\sigma_{xy} + C_2)}{(\mu_x^2 + \mu_y^2 + C_1)(\sigma_x^2 + \sigma_y^2 + C_2)}\)$ \(C_1, C_2\) 由动态范围决定。SSIM 比 MSE 更接近人眼对图像质量的感知。
  • 通用近似定理:一个足够宽的单隐层神经网络可以以任意精度近似任何连续函数——这是 DL 的理论根基。

1. CNN 基础组件

  • 节点 / 神经元:计算 \(f(\sum_i w_i x_i + b)\)\(f\) 为激活(ReLU 最常用)。
  • 卷积层:多个卷积核(filter/kernels,3×3×1 或 3×3×3)滑过输入,输出激活图(activation map / feature map)关键性质:权值共享(一个核在不同位置用同一组参数)→ 远少于全连接层的参数量。
  • 池化层(Max / Average Pooling):取局部最大值或平均值,降低特征图尺寸,保留最强响应。Max pooling 几乎总是优于 average pooling。
  • 全连接层:每个输入连接到每个输出,参数密集——通常只在分类头/输出层使用。
  • 转置卷积(Transposed Convolution):上采样层,等价于"补零 + 普通卷积"。在分割/重建中常用。
  • Dropout:训练时随机关闭部分神经元(概率 \(p\))→ 强制冗余,抑制过拟合。
  • Batch Normalization:在卷积层之间归一化输入 → 缓解梯度消失/爆炸,加速收敛。

2. 5 类影像任务(图 6.1)

  • 分类(Classification):图像 → 类标签(如"含/不含肺结节"、"有/无肺水肿")。降维:2D/3D 图像 → 1D 类概率向量。LeNet-5、AlexNet、VGG、GoogLeNet、ResNet、DenseNet、SENet 是经典架构。
  • 定位(Localization):图像 → 边界框(bounding box)。回归任务。代表:R-CNN / Fast R-CNN / Faster R-CNN(两阶段,先 region proposal 再分类)、YOLO(单阶段,速度快)。
  • 分割(Segmentation):图像 → 逐像素/体素分类。全卷积网络(FCN, Long 2015) 是奠基;U-Net(Ronneberger 2015) 是医学影像的标配——对称的 encoder-decoder + 跳跃连接(counter vanishing gradient)。Mask R-CNN 加分支同时做检测和分割。
  • 重建(Reconstruction):原始数据(k-space、sinogram)→ 图像。ADMM-CSNet(Yang 2020)把 ADMM 算法展开为深度网络,应用于压缩感知 MRI。
  • 后处理(Postprocessing):图像 → 增强/去噪/超分辨率。常用 U-Net + 残差连接(Chen 2017 低剂量 CT 去噪;Jin 2017 通用 inverse problem 求解器;Masutani 心肌 MRI 超分辨率)。

3. 损失函数选择

  • 分类:CCE(多类)/ BCE(二分类)。
  • 定位:分类损失 + 回归损失(Faster R-CNN 用 CCE + smooth L1)。
  • 分割:BCE 或 Dice 损失(处理类别不平衡);可组合 Dice + BCE。
  • 重建:MSE / L1 / SSIM 组合。
  • 可微性是底线——backprop 需要损失对参数可微。

4. 训练关键参数

  • 学习率 \(\eta\):太小收敛慢、可能局部最优;太大不稳定发散。跨数量级扫描(如 \(10^{-1}, 10^{-2}, \ldots, 10^{-5}\))是经验法则。
  • 优化器:SGD(基础)、AdaGrad、RMSProp、Adam(当前默认)。
  • Batch size:受 GPU 内存限制;越大越好(更稳定),但有内存上限。
  • 数据增强:亮度/对比度、模糊、翻转、平移、旋转、剪切、裁剪、缩放。旋转的肺结节仍是肺结节——增强是免费的正则化。

5. 超参数调优

  • 网格搜索(Grid Search):所有组合都试。对小搜索空间合适,搜索空间大时不可行
  • 随机搜索(Randomized Search):从范围随机采样,比网格搜索在大搜索空间更高效(Bergstra 2012 经典结论)。
  • 贝叶斯优化(Bayesian Optimization):用 surrogate model(如 Gaussian Process)建模 loss vs. 超参数,acquisition function 选下一组超参数。代表实现:Scikit-Optimize、Optuna、Hyperopt。
  • 推荐顺序:先随机搜索→找到大致范围→再贝叶斯优化。

6. 高级技巧

  • 集成网络(Ensemble):同时训练多个网络,投票/平均输出。代价:训练时间和算力翻倍。例:Bahrami 2019 STEMI-NET = VGG19 + BiLSTM 集成用于心肌反转时间选择,准确率 92.1%(单一 VGG 83.9%)。
  • 级联网络(Cascaded):把复杂任务拆成多阶段——网络 A 检测候选 → 裁剪 → 网络 B 分类。例:肺结节检测(先定位,再分类)、心脏 MRI 平面自动定位(Blansit 2019 拆成 3 个子网络)。
  • 多任务网络(Multitask):一个网络同时做多个相关任务 → 共享特征,互相提升。
  • 空间变换网络(STN, de Vos 2019):可学习仿射/可变形配准 → 让模型对患者位置/扫描方向鲁棒。
  • 统一建议:架构复杂度受算力数据量限制;过度复杂化反而性能下降。

7. 预训练 vs 从头训练

  • 预训练 + 迁移学习:在大型数据集(如 ImageNet 120 万张 1000 类)上预训练的网络,迁移到医学任务。
  • 关键洞察:CNN 前几层学的是通用底层特征(边缘、纹理、颜色梯度),对任何视觉任务都有价值。即使 ImageNet 是彩色自然图像,预训练权重对 CT/MRI 的灰度医学图像仍有帮助
  • 首选策略:从相关医学任务的预训练模型开始 → 优于从 ImageNet 通用预训练 → 但当无相关模型时,ImageNet 预训练仍是稳妥起点。

8. 数据准备与切分的"陷阱"

  • 同一患者不同切片不能跨训练/测试——否则数据泄露导致性能虚高。
  • 训练数据量下限:简单任务几百例,复杂任务几千例,罕见病分割需要外部数据增强。
  • 标签成本:心脏腔室分割需要精细手动标注 vs 心脏疾病二分类可能从临床笔记直接提取(成本差几个数量级)。

9. 软件栈与硬件

  • PyTorch(Facebook/Fair)→ 动态计算图,研究首选。
  • TensorFlow + Keras(Google)→ 静态图,部署生态完整,TPU 支持
  • Caffe → 早期医学影像 AI 主流,已被 Caffe2 → PyTorch 取代
  • Keras → 高级 API,适合新手。TensorFlow 2 已整合。
  • MONAI(Medical Open Network for AI)→ 医学影像专用 PyTorch 扩展(专门的数据增强、损失、3D 处理)——本章未明确推荐,但实际是 2022 年医学影像 DL 的事实标准
  • 硬件:2D CNN 浅层 CPU 可行;3D CNN(如 3D U-Net)需要 ≥11 GB GPU(NVIDIA GTX 1080 Ti 起,A100/V100 理想)。
  • 云 vs 本地:短期/小规模 → 云(AWS/GCP/Azure)成本更低;长期/大规模 → 自建工作站或数据中心。云有网络风险和成本不确定性

关键结论

  • CNN 是医学影像 AI 的事实标准——5 类任务(分类/定位/分割/重建/后处理)都有成熟的 CNN 架构对应。
  • "架构选择"是工程问题,不是研究问题——选择 AlexNet/ResNet/U-Net 之一几乎总是比"发明新架构"更稳健。
  • 损失函数 + 数据增强 + 超参数对最终性能的影响通常超过架构选择。同一 U-Net 配不同 Dice loss 性能可差 5-10%。
  • 学习率是单一最重要的超参数——跨数量级扫描是必须做的。
  • 数据准备是真正的"半边天"——同一个患者的不同切片混到训练/测试集 = 数据泄露 = 性能虚高。
  • 预训练 + 迁移学习显著降低数据需求——在 100-1000 例的小数据集上是关键技巧。
  • 集成 / 级联 / 多任务 / STN 是性能上限提升的"进阶武器",但代价是工程复杂度 + 算力。
  • PyTorch 与 TensorFlow 平分秋色——研究偏向 PyTorch,部署偏向 TensorFlow。MONAI 是 2022 年医学影像 PyTorch 用户的必装
  • 硬件是工程现实——没有 11 GB GPU 做 3D U-Net 几乎不现实;这是项目预算的关键。
  • 从 ImageNet 预训练到医学任务——前几层学到的"通用特征"跨域有效——这解释了为何小数据医学影像项目也能成功。

挑战和开放性问题

  • 3D CNN 的内存墙——一个 3D U-Net 训练一个 256³ patch 就需要 11 GB GPU 显存;训练完整 CT 体积(512³)需要分布式训练。
  • 过拟合与数据稀缺——小数据集(<500 例)即使有强增强也容易过拟合;自监督预训练(SimCLR, MoCo, MAE)正在缓解但仍未成为标准做法。
  • 黑箱可解释性的工程化——Grad-CAM 等热图是"伪可解释"——更严谨的 attribution 方法(Integrated Gradients, SHAP)工程复杂度高。
  • "新架构" vs "调优旧架构"的边际收益——经验上调优 ResNet50 + 强增强 > 换 Swin Transformer。但 Swin 在多中心、多模态数据上开始反超。
  • 超参数优化的算力消耗——贝叶斯优化本身可能消耗模型训练的 10-50%。预算紧张的小团队只能用粗网格。
  • 预训练模型的领域迁移——ImageNet(自然图像)→ CT/MR 灰度医学图像 → 跨域 gap 仍有;自监督预训练 + 大量未标注医学图像是新兴方向(Ch 8 会涉及)。
  • 数据增强的"破坏性"——某些增强(如垂直翻转)会破坏解剖意义(左右心不会上下颠倒)。领域知识决定哪些增强可用。
  • 多任务学习的负迁移——任务相关性弱时,多任务学习可能反而降低主任务性能。任务关系建模(如 GradNorm)仍未成熟。
  • 集成网络的部署成本——训练 N 个网络容易,部署 N 个网络困难(延迟、内存、版本管理)。
  • "AI 模型市场"的版本兼容——医院买了一个 vendor 的模型,3 年后 vendor 升级新版本 → 性能可能变化 → 临床后果如何归因?监管挑战巨大。

个人反思与批判性分析

本章作为"AI 算法工程实践"非常实用、可操作,但与 Ch 2 一样仍有当代实践的滞后问题:

优势: - 5 步法清晰:任务类型 → 架构 → 损失 → 训练参数 → 调优/高级技巧。 - 损失函数表(BCE, CCE, MSE, MAE, Dice, SSIM)——任务到损失函数的映射明确。 - 数据准备的"陷阱"专门一节(§6.5),强调"同一患者切片不能跨 train/test"——是常见错误的好提醒。 - 软件栈对比(PyTorch vs TensorFlow vs Keras)实用、给具体推荐。 - 高级技巧(集成、级联、多任务、STN)从单点改进到系统级提升——给读者进阶方向。 - 引用充分(40 篇),从经典 LeNet 1998 到 2020 临床应用。

批判与补足: 1. 缺 2020 年后的核心架构——Vision Transformer (ViT, 2020)、Swin Transformer (2021)、Segment Anything (2023)、DINOv2 (2023) 完全没提。2022 年以后医学影像 AI 论文中 Transformer 占比快速上升——本章停留在 2018 前的"CNN 一统天下"叙事。 2. MONAI 完全没提——这是 2022 年医学影像 PyTorch 用户必备库(专门优化 3D 处理、医学数据 IO、领域特定的损失和增强)。不提是显著的实践脱节。 3. 缺自监督预训练的现代实践——SimCLR (2020), MoCo (2020), MAE (2021), DINO (2021) 在医学影像上的应用(如 Chen 2019 的 Models Genesis, Azizi 2021 的 Contrastive 自监督)——对无标注数据极有价值。 4. 缺"基础模型"(Foundation Model)思路——2022 年后 Med-PaLM, RadFM, BiomedCLIP 等医学多模态基础模型正在改变游戏规则。本章的"从 ImageNet 预训练"叙述是2020 年前的实践。 5. "学习率扫描"的指导不够细——只说"跨数量级扫描",但没给具体调度策略(cosine decay, step decay, warmup, OneCycle)。现代实践几乎都是 SGD/Adam + cosine decay 组合。 6. "集成网络"的工程权衡讲得偏少——只说"训练时间翻倍",但没说推理延迟翻倍——这在临床实时场景(<1 秒响应)是不可接受的。 7. Dice 损失在类别极不平衡时(罕见病)的表现——Dice 在"小目标"分割上比 BCE 优秀,但梯度的方差大,需要更长训练或更小学习率。本章未提。 8. 缺"模型压缩"(model compression)——量化(8-bit, 4-bit)、剪枝(pruning)、知识蒸馏(knowledge distillation)——这些是把 100MB 模型压缩到 5MB 的关键技术,对临床部署至关重要。 9. 缺"模型不确定性估计"——MC Dropout、Deep Ensemble、Bayesian NN——对临床 AI 的"知道何时不知道"是关键。预测错误比正确更有价值。 10. "GPU 至少 11 GB"的建议在 2022 年偏保守——3D U-Net / 3D Transformer 推荐 24 GB(A5000/A100);预算紧张的初创公司可考虑 NVIDIA L4(24 GB, 70W TDP)。

给作者的问题: - Vision Transformer(ViT / Swin)在医学影像中实际是否优于 CNN?经验上小型数据集上 CNN 更稳,大型数据集上 ViT 更好——你的阈值在哪里? - 自监督预训练(SimCLR, MAE)在医学影像上真的有效吗?ImageNet 上 SSL 的成功能否直接迁移到小数据医学影像? - 你的工程经验:集成 N=3 网络的边际性能提升是多少?值得 3x 训练时间吗? - 模型可解释性在临床落地中是真正关键还是形式要求?如果 FDA 不强制,你还会做可解释性吗? - 持续学习(continual learning)模型在医院环境中实际能工作吗?模型漂移(model drift) 多频繁需要重新训练?

值得复现的实践: - 用 PyTorch 在小型胸部 X 线数据集(如 CheXpert 子集)上实现 ResNet50 分类,对比 BCE vs Focal Loss 的效果。 - 用 MONAI 训练一个 3D U-Net 做心脏 MR 左心室分割,对比 DiceCE、DiceFocal、Tversky 三种损失。 - 实现 Grid Search vs Random Search vs Bayesian Optimization 的超参数搜索,对比收敛速度。 - 用 Grad-CAM 可视化 ResNet 的注意力区域,验证"网络是否学到有意义的特征"。 - 用 8-bit 量化(PyTorch FX quantization)压缩训练好的 ResNet50,测量推理延迟和准确率变化。

重要参考文献

[X1] LeCun Y, Bottou L, Bengio Y, Haffner P. Gradient-based learning applied to document recognition. Proc IEEE. 1998;86(11):2278–324. DOI: 10.1109/5.726791. [X2] Krizhevsky A, Sutskever I, Hinton GE. ImageNet classification with deep convolutional neural networks. NeurIPS. 2012;25:1097–105. [X3] He K, Zhang X, Ren S, Sun J. Deep residual learning for image recognition. CVPR. 2016:770–8. DOI: 10.1109/CVPR.2016.90. [X4] Ronneberger O, Fischer P, Brox T. U-Net: convolutional networks for biomedical image segmentation. MICCAI. 2015. p. 234–41. DOI: 10.1007/978-3-319-24574-4_28. [X5] Long J, Shelhamer E, Darrell T. Fully convolutional networks for semantic segmentation. CVPR. 2015. DOI: 10.1109/CVPR.2015.7298965. [X6] Shelhamer E, Long J, Darrell T. Fully convolutional networks for semantic segmentation. IEEE TPAMI. 2017;39(4):640–51. DOI: 10.1109/TPAMI.2016.2572683. [X7] Redmon J, Divvala S, Girshick R, Farhadi A. You only look once: unified, real-time object detection. CVPR. 2016:779–88. DOI: 10.1109/CVPR.2016.91. [X8] Ren S, He K, Girshick R, Sun J. Faster R-CNN: towards real-time object detection with region proposal networks. NeurIPS. 2015;28:91–9. [X9] He K, Gkioxari G, Dollár P, Girshick R. Mask R-CNN. ICCV. 2017:2980–8. DOI: 10.1109/ICCV.2017.322. [X10] Chen H, Zhang Y, Kalra MK, et al. Low-dose CT with a residual encoder-decoder convolutional neural network. IEEE TMI. 2017;36(12):2524–35. DOI: 10.1109/TMI.2017.2715284. [X11] de Vos BD, Berendsen FF, Viergever MA, Sokooti H, Staring M, Išgum I. A deep learning framework for unsupervised affine and deformable image registration. Med Image Anal. 2019;52:128–43. DOI: 10.1016/j.media.2018.11.010. [X12] Tang Y-X, Tang Y-B, Peng Y, et al. Automated abnormality classification of chest radiographs using deep convolutional neural networks. NPJ Digit Med. 2020;3(1):1–8. DOI: 10.1038/s41746-020-0273-z.