searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

第一届“域见杯”医检人工智能开发者大赛亚军技术方案分享

2023-04-27 08:06:14
20
0

赛题回顾

以宫颈癌筛查为主题,提供近1万张辅以病理医生专业标注的宫颈细胞学图片。选手利用这些图片及标注开发人工智能分类算法,判断图片中细胞的病变程度,最后根据分类的准确程度进行排名。 有以下几个比赛要点:

  1. 宫颈深部细胞学病变图像数据库中的7种细胞分为4个类别(NILM、ASC-US&LSIL、ASC-H&HSIL、SCC&AdC);
  2. 以严重程度最高的病变细胞的类别作为该图片的标签;
  3. 使用图片识别准确率(recognition accuracy)作为评价指标;
  4. 基于ModelArts提交模型,限制1小时内完成推理;
  5. 允许对数据进行额外标注(补充条款)。

注意到第5条补充条款,主办方给的是分类的数据,但是允许额外标注,比如标注分割或者检测,则标签的粒度会更细,可转换为分割+分类,或者是检测+分类问题,理论上准确率会更高,有部分选手采用此方案,限于本人的非医学背景,放弃该方案。

数据分析

数据初探

上图是官方给出的细胞类别,包括3大类的7种细胞:鳞状上皮内癌前病变细胞、癌症细胞和未见上皮内病变或恶性肿瘤的细胞; 根据病变程度合并相近的种类,最终得到4大类:NILM、ASC-US&LSIL、ASC-H&HSIL、SCC&AdC。

观察4个类别图片,容易得出以下简单结论:

  1. 细胞形态多样化,无法单纯依靠颜色进行区分;
  2. 非专业人士很难进行检测框标注,额外标注使用目标检测的方案不现实;
  3. 病变目标占比很小,不易区分。

数量分布

对训练数据进行统计

通过观察数据分布,可以得出以下结论:

  1. 类别分布不均衡,比例大致为5:9:4:1
  2. 癌变细胞SCC&AdC数量最少,只有435张
  3. 可能为长尾问题

尺寸分布

对于训练图片的大小,有以下结论:

  1. 数据集中存在多种分辨率图片,且分辨率较大;
  2. 数据集的图片宽高比集中,约为1.67。

数据集特点总结

  1. 存在多种分辨率的图片,图片比例几乎一致,宽:高=1.67;
  2. 癌变细胞SCC&AdC数量相对较少,可能存在长尾问题;
  3. 图片分辨率大,但是病变目标占比小,不易区分;
  4. 细胞形态比较多,训练集总数只有8千多张;
  5. 非专业人士无法进行额外标注。

方案设计

模型选择

问题1:什么样的模型精度高且速度快?

方案:从ImageNet的benchmark选取几个最优作为候选,实验后选择ConvNeX-T.

  1. 同颜色表示同家族模型,圆圈越大表示FLOPS越高,计算量越大;
  2. 同等计算量下,ConvNeXt精度优于Swin和ViT;
  3. 在比赛数据集上,相同输入大小和数据增强下,ConvNeXt的确优于Swin和ViT。

经验:兼顾速度与精度,ImageNet上的表现依旧值得参考!

问题2:更大的模型还是更大的输入?

方案:同等计算量下,更大的输入提升更多,选择600x960的输入+ConvNeXt-T模型。 

对于同一个模型,在不超时的情况下,输入越大越好!保持输入宽高比在1.67左右。

数据增强

问题3:如何通过数据增强提高泛化性?

方案:RandomGridShuffle、Random Horizontal Flip、 Random Vertical Flip

  1. 输入宽高比为1.6,近似于3:2,固选择水平方向平均切割3份,竖直方向平均切割2份,随机打乱后重组,概率为0.1;
  2. 水平翻转,概率为0.5;
  3. 垂直翻转,概率为0.5。

RandomGridShuffle概率不应过大,否则会生成大量不合理的样本,产生副作用!

尝试过的其它方案:

  1. Resize + RandomCrop,几乎无作用;
  2. Random Brightness,几乎无作用;
  3. ColorJitter,改变图像对比度,亮度,色彩等,分数下降较多。

可能原因:

  1. RandomCrop 对数据多样性增加较少;
  2. 该数据集的分类对颜色比较敏感,过度使用可能会产生不合理样本,导致学习错误特征。

损失函数

问题4:选用何种损失函数,是否加权解决长尾问题?

方案:使用交叉熵(Cross Entropy),不加权。

可能原因

  1. 本数据集的长尾问题并不是非常严重,总体比例为5:9:4:1,没有数量级的差距;
  2. 线下训练集的数据分布和线上测试集的数据分布不一致,导致加权参数不正确,没有起到作用。

训练策略

问题5:如何训练保证模型快速收敛且具有更高的精度?

方案:经验参数+实验,训练方法很重要!

  1. LR:3e-4
  2. Warm up: exp for first 3 epochs
  3. 优化器:AdamW
  4. Batch size: 24
  5. Scheduler: ConsineAnnealing
  6. Epochs: 30

尝试过的其它策略:

  1. 原图分辨率较大,通过将大图分割成小块,分别输入网络学习
  2. 冻结部分模型参数,使用训练数据fine-tuning
  3. BatchMixup、BatchCutMix
  4. 标签平滑Label Smooth

训练框架

  1. 使用mmclassification进行训练;
  2. 数据预处理、数据增强、模型、损失函数、优化器等功能完备;
  3. 配置文件模块化,不用修改训练代码,专注优化策略。

线上推理

  1. 使用对象存储提交模型包推理,提供customize_service.py、model、config.json,流程简单,安装依赖较慢;
  2. 使用自定义Docker镜像方式,FastAPI封装http接口,提交自定义镜像,无需线上安装依赖,启动速度快。

经验总结

  1. 进行数据分析是一个良好开端,可以提取有用信息指导后续模型选择以及策略开发,做到有的放矢;
  2. 站在巨人的肩膀上工作,开源数据集上的基准测试对模型选择有很大的参考意义,可以节省时间,快速决策;
  3. 适合方为好,根据实际数据选择合适的数据增强,才能提高泛化性,一味堆砌只会失去方向,一次添加一种,大胆假设,小心求证;
  4. 多总结业内通用做法,可以少走弯路,同一模型,采取不同的优化方法差异较大,不合适的训练策略可能让你与好模型失之交臂。

展望

  1. 人工智能与生物医学学科交叉人才稀少,限制了人工智能技术在生物医学领域的应用,本次医检人工智能大赛吸引更多人工智能人才加入医疗领域,推动了医检乃至医疗行业向智慧医疗迈进;
  2. 金域医学深耕医检领域28年,拥有全国最多的专业病理医生团队,积累了千万级别的宫颈癌筛查数据,在业界有得天独厚的数据优势。希望下一届比赛可以共享更多数量、种类的标注数据,探索更加精准、场景更加广阔的行业应用;

 

0条评论
0 / 1000
周****伟
5文章数
0粉丝数
周****伟
5 文章 | 0 粉丝
原创

第一届“域见杯”医检人工智能开发者大赛亚军技术方案分享

2023-04-27 08:06:14
20
0

赛题回顾

以宫颈癌筛查为主题,提供近1万张辅以病理医生专业标注的宫颈细胞学图片。选手利用这些图片及标注开发人工智能分类算法,判断图片中细胞的病变程度,最后根据分类的准确程度进行排名。 有以下几个比赛要点:

  1. 宫颈深部细胞学病变图像数据库中的7种细胞分为4个类别(NILM、ASC-US&LSIL、ASC-H&HSIL、SCC&AdC);
  2. 以严重程度最高的病变细胞的类别作为该图片的标签;
  3. 使用图片识别准确率(recognition accuracy)作为评价指标;
  4. 基于ModelArts提交模型,限制1小时内完成推理;
  5. 允许对数据进行额外标注(补充条款)。

注意到第5条补充条款,主办方给的是分类的数据,但是允许额外标注,比如标注分割或者检测,则标签的粒度会更细,可转换为分割+分类,或者是检测+分类问题,理论上准确率会更高,有部分选手采用此方案,限于本人的非医学背景,放弃该方案。

数据分析

数据初探

上图是官方给出的细胞类别,包括3大类的7种细胞:鳞状上皮内癌前病变细胞、癌症细胞和未见上皮内病变或恶性肿瘤的细胞; 根据病变程度合并相近的种类,最终得到4大类:NILM、ASC-US&LSIL、ASC-H&HSIL、SCC&AdC。

观察4个类别图片,容易得出以下简单结论:

  1. 细胞形态多样化,无法单纯依靠颜色进行区分;
  2. 非专业人士很难进行检测框标注,额外标注使用目标检测的方案不现实;
  3. 病变目标占比很小,不易区分。

数量分布

对训练数据进行统计

通过观察数据分布,可以得出以下结论:

  1. 类别分布不均衡,比例大致为5:9:4:1
  2. 癌变细胞SCC&AdC数量最少,只有435张
  3. 可能为长尾问题

尺寸分布

对于训练图片的大小,有以下结论:

  1. 数据集中存在多种分辨率图片,且分辨率较大;
  2. 数据集的图片宽高比集中,约为1.67。

数据集特点总结

  1. 存在多种分辨率的图片,图片比例几乎一致,宽:高=1.67;
  2. 癌变细胞SCC&AdC数量相对较少,可能存在长尾问题;
  3. 图片分辨率大,但是病变目标占比小,不易区分;
  4. 细胞形态比较多,训练集总数只有8千多张;
  5. 非专业人士无法进行额外标注。

方案设计

模型选择

问题1:什么样的模型精度高且速度快?

方案:从ImageNet的benchmark选取几个最优作为候选,实验后选择ConvNeX-T.

  1. 同颜色表示同家族模型,圆圈越大表示FLOPS越高,计算量越大;
  2. 同等计算量下,ConvNeXt精度优于Swin和ViT;
  3. 在比赛数据集上,相同输入大小和数据增强下,ConvNeXt的确优于Swin和ViT。

经验:兼顾速度与精度,ImageNet上的表现依旧值得参考!

问题2:更大的模型还是更大的输入?

方案:同等计算量下,更大的输入提升更多,选择600x960的输入+ConvNeXt-T模型。 

对于同一个模型,在不超时的情况下,输入越大越好!保持输入宽高比在1.67左右。

数据增强

问题3:如何通过数据增强提高泛化性?

方案:RandomGridShuffle、Random Horizontal Flip、 Random Vertical Flip

  1. 输入宽高比为1.6,近似于3:2,固选择水平方向平均切割3份,竖直方向平均切割2份,随机打乱后重组,概率为0.1;
  2. 水平翻转,概率为0.5;
  3. 垂直翻转,概率为0.5。

RandomGridShuffle概率不应过大,否则会生成大量不合理的样本,产生副作用!

尝试过的其它方案:

  1. Resize + RandomCrop,几乎无作用;
  2. Random Brightness,几乎无作用;
  3. ColorJitter,改变图像对比度,亮度,色彩等,分数下降较多。

可能原因:

  1. RandomCrop 对数据多样性增加较少;
  2. 该数据集的分类对颜色比较敏感,过度使用可能会产生不合理样本,导致学习错误特征。

损失函数

问题4:选用何种损失函数,是否加权解决长尾问题?

方案:使用交叉熵(Cross Entropy),不加权。

可能原因

  1. 本数据集的长尾问题并不是非常严重,总体比例为5:9:4:1,没有数量级的差距;
  2. 线下训练集的数据分布和线上测试集的数据分布不一致,导致加权参数不正确,没有起到作用。

训练策略

问题5:如何训练保证模型快速收敛且具有更高的精度?

方案:经验参数+实验,训练方法很重要!

  1. LR:3e-4
  2. Warm up: exp for first 3 epochs
  3. 优化器:AdamW
  4. Batch size: 24
  5. Scheduler: ConsineAnnealing
  6. Epochs: 30

尝试过的其它策略:

  1. 原图分辨率较大,通过将大图分割成小块,分别输入网络学习
  2. 冻结部分模型参数,使用训练数据fine-tuning
  3. BatchMixup、BatchCutMix
  4. 标签平滑Label Smooth

训练框架

  1. 使用mmclassification进行训练;
  2. 数据预处理、数据增强、模型、损失函数、优化器等功能完备;
  3. 配置文件模块化,不用修改训练代码,专注优化策略。

线上推理

  1. 使用对象存储提交模型包推理,提供customize_service.py、model、config.json,流程简单,安装依赖较慢;
  2. 使用自定义Docker镜像方式,FastAPI封装http接口,提交自定义镜像,无需线上安装依赖,启动速度快。

经验总结

  1. 进行数据分析是一个良好开端,可以提取有用信息指导后续模型选择以及策略开发,做到有的放矢;
  2. 站在巨人的肩膀上工作,开源数据集上的基准测试对模型选择有很大的参考意义,可以节省时间,快速决策;
  3. 适合方为好,根据实际数据选择合适的数据增强,才能提高泛化性,一味堆砌只会失去方向,一次添加一种,大胆假设,小心求证;
  4. 多总结业内通用做法,可以少走弯路,同一模型,采取不同的优化方法差异较大,不合适的训练策略可能让你与好模型失之交臂。

展望

  1. 人工智能与生物医学学科交叉人才稀少,限制了人工智能技术在生物医学领域的应用,本次医检人工智能大赛吸引更多人工智能人才加入医疗领域,推动了医检乃至医疗行业向智慧医疗迈进;
  2. 金域医学深耕医检领域28年,拥有全国最多的专业病理医生团队,积累了千万级别的宫颈癌筛查数据,在业界有得天独厚的数据优势。希望下一届比赛可以共享更多数量、种类的标注数据,探索更加精准、场景更加广阔的行业应用;

 

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
1