赛题回顾
以宫颈癌筛查为主题,提供近1万张辅以病理医生专业标注的宫颈细胞学图片。选手利用这些图片及标注开发人工智能分类算法,判断图片中细胞的病变程度,最后根据分类的准确程度进行排名。 有以下几个比赛要点:
- 宫颈深部细胞学病变图像数据库中的7种细胞分为4个类别(NILM、ASC-US&LSIL、ASC-H&HSIL、SCC&AdC);
- 以严重程度最高的病变细胞的类别作为该图片的标签;
- 使用图片识别准确率(recognition accuracy)作为评价指标;
- 基于ModelArts提交模型,限制1小时内完成推理;
- 允许对数据进行额外标注(补充条款)。
注意到第5条补充条款,主办方给的是分类的数据,但是允许额外标注,比如标注分割或者检测,则标签的粒度会更细,可转换为分割+分类,或者是检测+分类问题,理论上准确率会更高,有部分选手采用此方案,限于本人的非医学背景,放弃该方案。
数据分析
数据初探
上图是官方给出的细胞类别,包括3大类的7种细胞:鳞状上皮内癌前病变细胞、癌症细胞和未见上皮内病变或恶性肿瘤的细胞; 根据病变程度合并相近的种类,最终得到4大类:NILM、ASC-US&LSIL、ASC-H&HSIL、SCC&AdC。
观察4个类别图片,容易得出以下简单结论:
- 细胞形态多样化,无法单纯依靠颜色进行区分;
- 非专业人士很难进行检测框标注,额外标注使用目标检测的方案不现实;
- 病变目标占比很小,不易区分。
数量分布
对训练数据进行统计
通过观察数据分布,可以得出以下结论:
- 类别分布不均衡,比例大致为5:9:4:1
- 癌变细胞SCC&AdC数量最少,只有435张
- 可能为长尾问题
尺寸分布
对于训练图片的大小,有以下结论:
- 数据集中存在多种分辨率图片,且分辨率较大;
- 数据集的图片宽高比集中,约为1.67。
数据集特点总结
- 存在多种分辨率的图片,图片比例几乎一致,宽:高=1.67;
- 癌变细胞SCC&AdC数量相对较少,可能存在长尾问题;
- 图片分辨率大,但是病变目标占比小,不易区分;
- 细胞形态比较多,训练集总数只有8千多张;
- 非专业人士无法进行额外标注。
方案设计
模型选择
问题1:什么样的模型精度高且速度快?
方案:从ImageNet的benchmark选取几个最优作为候选,实验后选择ConvNeX-T.
- 同颜色表示同家族模型,圆圈越大表示FLOPS越高,计算量越大;
- 同等计算量下,ConvNeXt精度优于Swin和ViT;
- 在比赛数据集上,相同输入大小和数据增强下,ConvNeXt的确优于Swin和ViT。
经验:兼顾速度与精度,ImageNet上的表现依旧值得参考!
问题2:更大的模型还是更大的输入?
方案:同等计算量下,更大的输入提升更多,选择600x960的输入+ConvNeXt-T模型。
对于同一个模型,在不超时的情况下,输入越大越好!保持输入宽高比在1.67左右。
数据增强
问题3:如何通过数据增强提高泛化性?
方案:RandomGridShuffle、Random Horizontal Flip、 Random Vertical Flip
- 输入宽高比为1.6,近似于3:2,固选择水平方向平均切割3份,竖直方向平均切割2份,随机打乱后重组,概率为0.1;
- 水平翻转,概率为0.5;
- 垂直翻转,概率为0.5。
RandomGridShuffle概率不应过大,否则会生成大量不合理的样本,产生副作用!
尝试过的其它方案:
- Resize + RandomCrop,几乎无作用;
- Random Brightness,几乎无作用;
- ColorJitter,改变图像对比度,亮度,色彩等,分数下降较多。
可能原因:
- RandomCrop 对数据多样性增加较少;
- 该数据集的分类对颜色比较敏感,过度使用可能会产生不合理样本,导致学习错误特征。
损失函数
问题4:选用何种损失函数,是否加权解决长尾问题?
方案:使用交叉熵(Cross Entropy),不加权。
可能原因
- 本数据集的长尾问题并不是非常严重,总体比例为5:9:4:1,没有数量级的差距;
- 线下训练集的数据分布和线上测试集的数据分布不一致,导致加权参数不正确,没有起到作用。
训练策略
问题5:如何训练保证模型快速收敛且具有更高的精度?
方案:经验参数+实验,训练方法很重要!
- LR:3e-4
- Warm up: exp for first 3 epochs
- 优化器:AdamW
- Batch size: 24
- Scheduler: ConsineAnnealing
- Epochs: 30
尝试过的其它策略:
- 原图分辨率较大,通过将大图分割成小块,分别输入网络学习
- 冻结部分模型参数,使用训练数据fine-tuning
- BatchMixup、BatchCutMix
- 标签平滑Label Smooth
训练框架
- 使用mmclassification进行训练;
- 数据预处理、数据增强、模型、损失函数、优化器等功能完备;
- 配置文件模块化,不用修改训练代码,专注优化策略。
线上推理
- 使用对象存储提交模型包推理,提供customize_service.py、model、config.json,流程简单,安装依赖较慢;
- 使用自定义Docker镜像方式,FastAPI封装http接口,提交自定义镜像,无需线上安装依赖,启动速度快。
经验总结
- 进行数据分析是一个良好开端,可以提取有用信息指导后续模型选择以及策略开发,做到有的放矢;
- 站在巨人的肩膀上工作,开源数据集上的基准测试对模型选择有很大的参考意义,可以节省时间,快速决策;
- 适合方为好,根据实际数据选择合适的数据增强,才能提高泛化性,一味堆砌只会失去方向,一次添加一种,大胆假设,小心求证;
- 多总结业内通用做法,可以少走弯路,同一模型,采取不同的优化方法差异较大,不合适的训练策略可能让你与好模型失之交臂。
展望
- 人工智能与生物医学学科交叉人才稀少,限制了人工智能技术在生物医学领域的应用,本次医检人工智能大赛吸引更多人工智能人才加入医疗领域,推动了医检乃至医疗行业向智慧医疗迈进;
- 金域医学深耕医检领域28年,拥有全国最多的专业病理医生团队,积累了千万级别的宫颈癌筛查数据,在业界有得天独厚的数据优势。希望下一届比赛可以共享更多数量、种类的标注数据,探索更加精准、场景更加广阔的行业应用;