目标检测比赛入门


目标检测入门

比赛规则分析

评测指标

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

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

模型限制

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

运行时间限制

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

数据分析

主要分析数据集中类别,有无长尾分布,bbox的分布,包括面积,长宽,长宽比等,这里可以考虑使用https://github.com/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模块
  5. 当一个新联尺度后者一个模型难以协调时:
    • 多尺度训练
    • 专家模型

数据的特殊数性质

  • 津南数字制造,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无关的参数
  • 在实验时,尽量控制变量


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM