数据预处理

分析数据集中标注框的性质
主要是分析bbox的area和高宽比的分布,根据area和aspect_ratio来设置anchor generator的参数。
另外,当aspect ratio(纵横比)分布比较分散时,可以考虑使用Deform conv(可形变卷积)

分析类别均衡问题

统计数据集中各类别实例的比例,如果类别分布不均衡(最多和最少差别几倍以上),可以考虑使用detectron2中的RepeatFactorTrainingSampler。

训练集和验证集的分割

在一般的比赛中,都会限制每天结果的提交次数,因此使用网站上的测评来验证参数性能并不可取,同时也容易过拟合。因此需要从训练集中分割出来一部分作为测试集。
通常可以采用0.2的比例进行分割。当训练集中类别极度不平衡时,还要考虑到不平衡类别的分割,也可以在将不平衡类别扩充之后再分割。

数据增强

数据增强极为重要,网络结构训练方法基本都是确定了的,好的数据并不是人人都能获得,而且从原始数据中分析并提取高质量的数据也不是人人都能办到的。
数据增强的内容很多,具体可以分为像素变换和几何变换,前者不会影响bbox坐标,后者会涉及bbox的变换。
具体的数据增强方法还是要根据数据集的特性来看,例如图像有无旋转,有无运动模糊,flip操作是否合理等。
在数据增强方面,mmdetection 做的比detectron2要好一些,可以使用albu库,具体可以到github上看。下面推荐一些数据增强方法:

flip,分为左右和上下,具体哪种看数据情况,常用的是左右;
resize, 多尺度,很有必要,无论是one-stage还是two-stage,无论是anchor-free还是anchor-based
distort, 像素级变换,一般都要加,主要调整图像颜色,色调,饱和度等
blur,blur有很多种,高斯,中值,运动等,这里推荐使用mmdetection+ablu,可以以一定概率施加blur,很方便。具体使用结合数据集;
Expand, SSD中采用的数据增强方法,将图像缩小后其余地方补0,增加对小目标的适应性
MinIoURandomCrop, SSD中采用的随机裁剪方法,可以参考知乎文章
另外还有albu中一些数据增强方法。
有两种数据增强方法不得不提,就是mix-up和填鸭式。
所谓mix-up就是两张图按照一定的比例混合在一起,图中所含目标标签也以比例重新赋值,mixup的实现我还没有找到,以后再补充吧。
所谓填鸭式,就是将一些目标扣出来,放到没有目标的图上去,增加图像的鲁棒性,抠出来的目标可以使误检的(FN)或者漏检的,具体可以参考实现
模型结构
目标检测bbox的表现中,cascade rcnn应该是表现最好的,可以以r50+fpn作为backbone为baseline,如果对速度有格外的要求,可以考虑使用ssd+fpn
也可以考虑使用yolov3+GIoU

backbone

一个强的backbone一般都会带来mAP的提升,但是在考虑速度的情况下,还是要谨慎使用过大的backbone。。

fpn

目前我只是使用过fpn,是不是其他的fpn会带来提升我也没试过。

bn,gn, syncbn

batchnorm的方式,推荐都试一下,一般来说syncbn会比较好,但是如果模型太大,batch_size比较小,最好还是frozen_bn,即从预训练模型中加载,并不更新bn参数。

模型训练

预训练模型

预训练模型十分重要,可以使训练迅速收敛,减少训练时间,给调参留下更多机会。
最好的方法是使用整个网络在一个大数据集上训练得到的模型,如果条件不允许,也要尽量使用backbone的预训练模型,或者backbone+FPN的模型。

迭代次数

采用在pascal voc和coco上论文中通用设置,可以先跑一个1x_schedule看看效果,一个1x表示12个epoch,在选择模型baseline时,可以每个epoch完在分割的val上看下效果。
进一步可以使用3x_schedule,在每两个epoch看下val上的表现。

学习率

关于学习率,一般论文中都拆用StepLrSchedule,可以考虑使用CosineLrSchedule或者CosineAnnelingLrSchedule。
注意在目标检测的训练过程中,一般都是要加上warming up的。

损失函数

损失函数方面也有很多技巧了,但是有些可能并不work,还是要看实验调参。

分类

对于不均衡问题,常用的损失函数有Focal loss,CHM。这里的类别不均衡是指的是在训练网络时,由于anchor密集采样造成的正负样本不均衡,而不是数据预处理中的类别不均衡。Focal loss是一个调参的过程,使用在两步法的检测器中正负样本不均衡问题由RPN网络解决,所以Focal loss在两步法的检测器中的性能还要看实验,CHM也是同理。

对于OHEM,在两步法中或许有效,但也是要看实验,个人感觉要比Focal loss要强一点。

回归

bbox的回归,最基础的就是编码+smooth_l1了,虽然有提出一些IoULoss,GIoUloss,对yolo提升很大,但是对于基于密集采样的fastx rcnn方法不一定work,所以并不推荐在cascade rcnn中使用。

推理

TTA

多尺度测试还是最有效的。。。

soft_nms

soft_nms一般都能涨分。。。

confidence_th

采用coco和pascal voc的评测方法,一般都会将confidence_th设的比较低,0.001左右,相当于把pr曲线往后拉长了,mAP自然会长

目标检测比赛提高mAP的方法相关推荐

  1. 百度飞桨开源Open Images Dataset V5目标检测比赛最好单模型MSF-DET

    目标检测是计算机视觉领域中的核心任务.Open Images Dataset V5(OIDV5)是目前规模最大的目标检测公开数据集[1].基于飞桨(PaddlePaddle)的PaddleDetect ...

  2. 目标检测中的知识蒸馏方法

    目标检测中的知识蒸馏方法 知识蒸馏 (Knowledge Distillation KD) 是模型压缩(轻量化)的一种有效的解决方案,这种方法可以使轻量级的学生模型获得繁琐的教师模型中的知识.知识蒸馏 ...

  3. 目标检测中的性能提升方法综述

    文章目录 一.多尺度检测 1.什么是多尺度检测? 2.降低下采样率与空洞卷积 3.多尺度训练 4.优化Anchor尺寸训练 5.深层与浅层特征融合 6.SNIP,尺度归一化 7.TridentNet, ...

  4. map平均准确率_第五篇 目标检测评价标准—MAP

    MAP(Mean Average Precision) 网上关于map的帖子,博客,回答有很多,但是描述很不清楚,有的甚至有很多错误,非常难以理解,最近研究了一下map,这里记录总结一下 这里的AP指 ...

  5. 睿智的目标检测20——利用mAP计算目标检测精确度

    睿智的目标检测20--利用mAP计算目标检测精确度 学习前言 GITHUB代码下载 知识储备 1.IOU的概念 2.TP TN FP FN的概念 3.precision(精确度)和recall(召回率 ...

  6. 目标检测中的mAP是什么含义?

    目标检测中的mAP是什么含义? 1.mAP定义及相关概念 mAP: mean Average Precision, 即各类别AP的平均值 AP: PR曲线下面积,后文会详细讲解 PR曲线: Preci ...

  7. 一文总结旋转目标检测全面综述:论文方法与代码

    参考一文总结旋转目标检测全面综述:论文方法与代码 - 云+社区 - 腾讯云 首先放上DOTA数据集官网(http://captain.whu.edu.cn/DOTAweb/index.html),官网 ...

  8. 理解目标检测当中的mAP

    我们在评价一个目标检测算法的"好坏"程度的时候,往往采用的是pascal voc 2012的评价标准mAP. 网上一些资料博客参差不齐,缺乏直观易懂的正确说明.希望这篇博文能够给大 ...

  9. 目标检测比赛之YOLOV4方法

    1 前言 1.1实训背景 随着生产生活对电力能源的需求量不断增加,我国对电力生产产生了更高的需求,受多方面因素的影响,我国电力生产事故的发生频率处于较高水平,对城市的安全生产造成了威胁,因此,必须要将 ...

最新文章

  1. 转:纯CSS实现“鼠标移过显示层”效果
  2. 页面编码和被请求的资源编码如果不一致如何处理
  3. bootstrap-响应式导航条
  4. centos 删除crontab_centos7 定时任务crontab命令详解
  5. halcon write_ocr_trainf 将训练字符存储到文件中
  6. 函数调用过程简单分析
  7. PostgreSQL 12 正式发布
  8. 剑指offer之机器人的运动轨迹
  9. LeetCode_125_Python_验证回文串
  10. [ECCV2020]Beyond 3DMM Space: Towards Fine-grained 3D Face Reconstruction
  11. qqxml图片代码_QQxml卡片代码合集超大图、清明上河图、官方认证推荐等
  12. 百度任玉刚写的对学习Android的理解
  13. Hive常用命令之MSCK REPAIR TABLE命令概述
  14. scrapy手工识别验证码登录超星泛雅
  15. 随机森林 OOB理解
  16. 内存报错:Cannot allocate memory
  17. Python统计英文、中文、数字、空格等字符数
  18. 江西理工大学计算机网络基础试卷,无线网络技术作业(江西理工大学期末复习)...
  19. 计算机图形学当前研究热点和发展方向,微软亚洲研究院网络图形组深入解释了图形学的现状、发展和未来...
  20. 新媒体运营胡耀文教程:创作爆款短视频的“编剧思维”

热门文章

  1. (application)javaweb中application的用法
  2. JMSMQ系列之JMS的请求和回应
  3. 半透明遮罩效果 DIV
  4. 软件汉化:ASCII quot;Registered Userquot;
  5. 定时开机-开机自动运行程序-定时关机(windows 下)
  6. 随机数生成器RandomNumberGenerator
  7. 韩信点兵的问题求解方法
  8. mysql usleep_date、sleep和usleep命令
  9. CCW 下填Modbus Mapping简单方法
  10. 7.3_minibatch-sgd