2020天池 “数字人体”视觉挑战赛_VNNI赛道_冠军_方案分享


比赛主页: 数字人体”视觉挑战赛——宫颈癌风险智能诊断

相关代码:github

0. 团队信息

1. 赛题分析

1.1 任务

  • 对异常鳞状上皮细胞进行定位,属于单类别目标检测任务
  • 在支持Intel VNNI的框架上进行量化推理

1.2 指标

  • 性能scroe :mAP
  • 时间score : QPS = slide数量 / inference总时间(总时间包括数据预处理、模型推理、后处理时间等)
  • 最终score = 性能score + 时间score(两个指标分别计算,取第一名作为Gold standard,score=1.0, 其余的成绩与第一名的差距的百分比作为score的累加值,依次计算。如第一名0.3张/s,第二名0.1张/s,则第一名score=1.0,第二名score=1.667)。

1.3 数据

  • 训练数据: 宫颈癌细胞学图片800张,其中阳性数据500张(包含1212个ROI),阴性数据300张;
  • 测试数据:200张ROI区域图片(分辨率在几千到上万)

1.4 难点

  • 速度与精度平衡
  • 训练样本较少,目标背景复杂
  • 细胞成像颜色多样性(染色剂种类、配比、染色时间等因素影响)

2. 整体方案

基于RetinaNet[1]的目标检测算法,在 pytorch 框架上进行模型训练,在 Openvino 上完成量化推理,流程图如下,包括以下四个步骤:模型训练、格式转换、模型量化、模型推理。

image-20200716132422151

2.1 模型训练

2.1.1 数据增强

  • OnlineCropResize : 以 RoI 中目标为中心,“在线”随机裁剪1600x1600框,然后Resize成800x800,降低计算量;

    image-20200716150507858
  • RandomFlip:随机翻转;

  • RandomShift:将目标框裁剪下来,随机贴到图像中的其它位置,使模型学到更多的背景信息,裁剪后的区域使用cv2.inpaint进行填补;

    image-20200716134827290
  • ReplaceBackground + StainNorm:

    • 将阳性数据中目标裁剪下来,随机贴到阴性样本上(阴性样本中背景信息有利于假阳抑制);

    • 裁剪的目标框可能与随机抽取的阴性图像颜色差异较大,为减少“突兀”,通过染色剂归一化算法将裁减目标调色至阴性背景风格;

image-20200716134836730

2.1.2 模型结构

为了提升推理速度,我们对 RetinaNet 各个模块重新设计。

  • Backbone :

    • 采用轻量化的 (ImageNet pretained) MobileNetV2 [2] ;
    • 实验中,MobileNetV2性能与ResNet-50相当,ResNet-34、ResNet-18等精度下降;
    • 使用本次检测数据,训练分类网络作为初始化参数效果不如ImageNet;
  • 减少 FPN 以及 Head 通道数:

    • FPN-256 —> FPN-128
    • Head-256 —> Head-64
    • 实现网络各部分计算量平衡
  • 模型各部分理论计算量 (GFLOPS) 及占比分析

Model structureBackboneFPNHeadTotal加速比
R50-FPN256-Head25652.55 (35.11%)10.87 (7.26%)86.27 (57.64%)149.66-
MbV2-FPN128-Head644.07 (34.73%)2.37 (20.22%)5.28 (45.05%)11.72≈12x

2.1.3 训练策略

  • 超参数:
优化器SGD
学习率**采用余弦下降方式,初始学习率为 1e-2 ,终止学习率为 1e-5 **
Batch size8
预训练模型ImageNet,训练时不固定BN
Epoch数量100

2.2 模型量化

2.2.1 量化算法

  • OpenVINO Calibration Tool [3] : 量化过程包括以下4个步骤;

image-20200716151247863

  • 量化层选择:

    • OpenVINO支持自动进行量化层选择,将准确率损失较大的层切换回fp32,但在实验中我们发现对我们模型并不是很work;
    • 实验中,我们不采用OpenVINO量化层选择,而是基于经验,FPN部分参数对量化比较敏感,对MbV2-FPN1287-Head64,FPN部分卷积层不量化,其余卷基层全部量化;
    Δ map@0.5时间(ms)
    量化全部卷积层-1.7143.58
    不量化FPN部分卷积层-0.3351.57
  • 校验数据:实验中增加校验数据并没有带来性能的提升,最终以300张训练图片作为校验数据;

    校验图片数量Δ map@0.5
    300-1.71
    1200-2.13

2.3 模型推理

推理流程包括:图片读取、预处理、前向执行、后处理等步骤。

2.3.1 图片读取

实验中IO读取占据了相当大的一部分时间消耗,采取了两个优化策略:

  • 采用读取速度更快的GDAL库[3];
  • 多个子进程同时读取,存放到共享队列中;
图片读取库时间(s)
OpenCV (OpenVINO版本)174
GDAL99

2.3.2 预处理

预处理主要包括以下步骤:

  • 采用无交叠滑窗策略;
  • 丢弃边界像素;
  • 将裁减 1600x1600 区域缩放成 800x800;

image-20200716155442389

2.3.3 前向执行

采用 OpenVINO 的异步模式[4] :

  • 发起执行请求后,控制权交还给主程序,分摊数据读取和后处理的时间;

  • 执行完成后,通过回调函数通知主程序;

  • 可以发起多个infer request同时执行;

    image-20200716155711570

2.3.4 代码框架 & 流程图

  • 子进程负责图片的读取、裁剪、缩放、拼batch等数据处理相关的操作,处理完的数据存放到共享队列中;
  • 主进程从共享队列读取数据,负责模型推理、后处理操作;

image-20200716155812719

image-20200716155931111

3. 实验结果

  • 性能:网络结构改进 & 数据增强
模型训练数据Online cropRandom flipReplace BGDrop border**Random Shift **Crop sizemap@0.5 (%)
R50-FPN256-Head25690%80027.49
R50-FPN256-Head25690%80028.24
R50-FPN256-Head25690%80028.87
R50-FPN256-Head25690%80029.49
R50-FPN256-Head25690%80029.63
MbV2-FPN256-Head25690%80028.37
MbV2-FPN256-Head12890%128029.14
MbV2-FPN128-Head128100%128032.22
MbV2-FPN128-Head64100%160033.54
  • 时间:Batch size & infer request & subProcess (io) & Drop border
    • 由网络结构从MbV2-FPN256-Head128调整为计算量更小的MbV2-FPN128-Head64,但推理时间不变(均为120s)可知,推理时间平静下来不在模型推理,而是 io。
模型Batch sizeInfer requestsubProcessDrop borderCrop size时间(s)
R50-FPN256-Head2561---800830
R50-FPN256-Head256113--800356
R50-FPN256-Head256813--800303
R50-FPN256-Head256813-800260
MbV2-FPN256-Head128813-1280120
MbV2-FPN128-Head64813-1280120
MbV2-FPN128-Head648138160035
MbV2-FPN128-Head6411115160024

4. 总结 & 展望

4.1 总结

  • 轻量化网络结构设计;
  • RandomShift、ReplaceBackground + StainNorm 等针对医疗数据场景样本较少的数据增强方法;
  • 采用异步模式进行推理;
  • 多进程、GDAL库等加速IO;

4.2 展望

  1. IO与推理的时间大约各占一半,更优化的IO库,更小的模型都能进一步提升性能;
  2. 推理时采用更大的裁剪区域或者整图,预计能进一步提升速度和精度;
  3. 采用量化损失更小的 Backbone(Intel工程师建议,目前 OpenVINO 针对 ResNet 优化较好,量化损失较低);

比赛结果:

team_idmAPtime(s)Norm_timeNorm_mAPscorerank
LLLLC35.99341121
《我的便携式游戏女友》34.921961.831.032.862
named31.282081.841.132.973
AI-LIGHT28.171441.761.222.984
xywh32.184431.921.113.035
Drcubic27.732091.841.233.076
deep-thinker32.4111481.971.103.077
HUST_WNLO_AI29.3410011.961.183.158

注:由于天池测评api时间也被计入,所有队伍实际时间都增加了10s。

5. Reference

[1] Lin T Y, Goyal P, Girshick R, et al. Focal loss for dense object detection[C], CVPR, 2017: 2980-2988.

[2] Sandler M, Howard A, Zhu M, et al. Mobilenetv2: Inverted residuals and linear bottlenecks[C], CVPR, 2018: 4510-4520.

[3] https://gdal.org/

[4]https://docs.openvinotoolkit.org/2019_R3.1/_inference_engine_tools_benchmark_tool_README.html

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
2023年Mathorcup大数据挑战赛赛道A将是一场激动人心的竞赛。本次比赛旨在鼓励参赛者运用大数据技术解决实际问题,并推动数据科学在各行各业的应用。以下是我对这个比赛赛道的一些见解: 首先,比赛赛道A将关注某个特定领域的大数据分析,可能是金融、医疗、物流等等。参赛者需要运用数据挖掘、机器学习等技术,对相关数据集进行分析和建模,以解决特定领域内的难题。 其次,参赛者需要具备良好的数据分析能力和工程实践经验。他们可能需要处理大规模的数据集,进行数据清洗、特征提取和模型构建等工作。同时,他们还需要选取合适的算法和模型,并通过实验和优化来提高模型的准确性和效率。 此外,比赛要求参赛者具备良好的团队合作和沟通能力。因为在实际项目中,数据科学家往往需要与数据工程师、业务团队等进行紧密合作,共同解决问题。因此,团队之间的协作和交流能力将成为获胜的关键因素之一。 最后,本次比赛的评分标准很可能是多样化的。除了数据分析的准确性和效果外,评审团可能还会考虑参赛者的创新性、算法设计的合理性、代码的规范性等。因此,参赛者需要在综合能力上有所准备,不仅要关注具体问题的解决,还要注重整体方案的优化和优化思路的创新。 总而言之,2023年的Mathorcup大数据挑战赛赛道A将是一场对数据科学者们来说难得的机会。通过这次比赛,参赛者将不仅可以提升自己的数据分析技能,还可以结识更多的行业专家和同行,并为实际问题的解决贡献自己的力量。希望这场比赛能够激发更多人对大数据挖掘和应用的热情,推动科技的进步和社会的发展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值