目录

  • 目标检测入门
  • 比赛规则分析
  • 评测指标
  • 模型限制
  • 运行时间限制
  • 数据分析
  • 图像大小分布
  • bboxes大小和长宽比例分布
  • bboxes类别分布不均衡,长尾分布
  • 感受野 vs anchor & 训练尺度
  • 数据的特殊数性质
  • 数据分析总结
  • 目标检测算法选择
  • 整体算法
  • 模型预训练
  • 多模型集成
  • 调参技巧

目标检测入门

比赛规则分析

评测指标

  • mAP, pascal voc, 和 coco,mmdetection有两者格式的eval,详细的也可以参考https:///rafaelpadilla/Object-Detection-Metrics
  • acc+mAP
  • F1-score

这里要注意,mAP时,提交的confidence thresh是一般来说是越低越好,尽管在视觉上会显得杂乱无章。

模型限制

  • maxDets的限制,即每张图的最多检测量
  • 模型体积,模型保存fp16的模式

运行时间限制

  • 硬性规定
  • 得分加权,即评测指标排名与运行时间排名的综合
  • 时间分数占比

数据分析

主要分析数据集中类别,有无长尾分布,bbox的分布,包括面积,长宽,长宽比等,这里可以考虑使用https:///joydeepmedhi/Anchor-Boxes-with-KMeans
在统计bbox的分布时,要主要设定图像的大小,比如说最小边缩放至800等,这里的尺寸就应该是图像输入到模型的尺寸,仅做一次可能找不到合适的缩放尺寸,可以考虑多做几次。
在anchor的设计中,应该考虑模型anchor的感受野,训练尺度和bbox分布的一个权衡。
还有考虑数据domain的分布,例如数据集中同时存在有无雨雾的场景。

图像大小分布

  • 超大图像(医疗,遥感),需要合理的crop
  • 数据集内图像大小差异比较大,需要合理的padding和crop,这里要注意,数据集内超大图像中的bbox也是不是超大的,如果也是,就可以直接缩放到一定尺度,不需要其他操作
  • 结合自身设备设定尺度上限

bboxes大小和长宽比例分布

  • bboxes影响anchor scale的设计
  • bboxes 长宽比例影响anchor ratio的设计,
  • 类内和类间大小的分布,影响整体算法的设计,例如多尺度以及专家模型
    选定输入尺寸之后,将bboxes长宽画在出来,Anchor-Boxes-with-KMeans中有。然后决定anchor scale, anchor ratio,最后根据模型感受野选择backbone的选取。
    如果anchor ratios分布很不集中,可以考虑使用deform conv。

bboxes类别分布不均衡,长尾分布

  • 对很少的类进行上采样,或对很多的类进行下采样
  • 训练动态加权采样,对每幅图片的采样设置一个权重,detectron2中的RepeatFactorTrainingSampler
  • 对稀少数据训练专家模型

感受野 vs anchor & 训练尺度

  1. 首先根据机器显存大小和backbone大小选择合理的训练尺度
  2. 基于resize后的bboxes大小进行分析,包括bboxes的大小、长宽比和面积,类别等
  3. 设置anchor scale和ratio尽量解决目标分布,以加快收敛
  4. 模型感受野要尽量大于bboxes的长边:
  • 缩小训练图像尺度
  • 增加训练尺度,选择更深的backbone
  • 最后的卷积层选用空洞卷积
  • 引入DCN模块
  1. 当一个新联尺度后者一个模型难以协调时:
  • 多尺度训练
  • 专家模型

数据的特殊数性质

  • 津南数字制造,X光,抠图+贴图
  • 虚拟仿真环境下自动驾驶交通标志识别,使用粗检测+精检测应对目标数量及其稀少的检测任务,使用hrnet作为backbone应对iou要求及其高的检测。
  • 布匹瑕疵:存在ratio极端的情况,存在贯穿全图的情况。可以使用通道拼接,做差输入等

数据分析总结

  • 模型感受野 vs anchor vs gt分布
  • 数据增强方式
  • 针对数据特殊性质的特殊处理
  • 验证集划分(通过验证集对每一类进行指标分析)
  • 训练采样的方式
  • 在线加权采样,按照类别数量比例/类别丰富程度等进行加权
  • OHEM
  • 正常数据的使用
  • 拼接, 抠图+粘贴
  • 对于背景数据与含有目标数据有对应关系的:做差/通道拼接

目标检测算法选择

整体算法

推荐使用two-stage

  • backbone
  • ResNet
  • ResNext
  • SENet
  • EfficientNet
  • HRNet
  • DCN
  • FPN
  • FPN
  • PANET
  • NAS-fpn
  • Bifpb
  • Head
  • cascade
  • double head
  • post-prcessing
  • nms
  • soft-nms
  • 基于最大score的后验二分类,(减少假阳误检),假设一个图片中所有检测都不超过th,认为都是误检,可用于瑕疵检测
  • 基于类间关系的后处理,有些类别不会共存
  • 基于目标大小以位置先验的分布,比如目标ratio,和位置等

模型预训练

好的预训练是成功的一般。

  • ImageNet, coco, openimage object356
  • 目标检测推荐使用coco。
  • 使用DCN时尽量使用预训练模型

多模型集成

  • 直接nms
  • score加权集成
  • bboxes voting
  • 专家单类替代

调参技巧

  • 一定要明白每个参数的含义
  • 在一个小的backbone上调试与backbone无关的参数
  • 在实验时,尽量控制变量