为了提高模型在小物体上的性能,我们建议使用以下技术:

  • 提高图像捕获分辨率

  • 提高模型的输入分辨率

  • 平铺图像

  • 通过扩充生成更多数据

  • 自动学习模型锚

  • 过滤掉多余的类

为什么小目标问题很难?

小物体问题困扰着全世界的物体检测模型,查看最新模型YOLOv3、EfficientDet和YOLOv4的COCO评估结果:

查看 AP_S、AP_M、AP_L 以获取最先进的模型。

例如,在 EfficientDet 中,小物体的 AP 仅为 12%,而大物体的 AP 为 51%,这几乎是五倍的差距!

那么为什么检测小物体这么难呢?

这一切都取决于模型,目标检测模型通过聚合卷积层中的像素来形成特征。

PP-YOLO中目标检测的特征聚合

并且在网络的末端,基于损失函数进行预测,该损失函数基于预测和地面真实情况之间的差异对像素进行汇总。

YOLO中的损失函数

如果地面真值框不大,则在进行训练时信号会很小。此外,小物体最有可能存在数据标记错误,因此它们的标识可能会被省略,从经验和理论上来说,小物体是难的。

提高图像捕获分辨率

非常小的物体在边界框中可能只包含几个像素——这意味着提高图像的分辨率以增加检测器可以从该小框中形成的特征的丰富度非常重要。因此,如果可能,我们建议尽可能捕获高分辨率的图像。

提高模型的输入分辨率

一旦我们拥有更高分辨率的图像,我们就可以扩大模型的输入分辨率。警告:这将导致大型模型需要更长的训练时间,并且在开始部署时推断速度会更慢。我们可能需要运行实验,来找出速度与性能之间的正确权衡。

在我们关于培训YOLOv4的教程中,我们可以通过更改配置文件中的图像大小来轻松调整输入分辨率。

[net]
batch=64
subdivisions=36
width={YOUR RESOLUTION WIDTH HERE}
height={YOUR RESOLUTION HEIGHT HERE}
channels=3
momentum=0.949
decay=0.0005
angle=0
saturation = 1.5
exposure = 1.5
hue = .1
learning_rate=0.001
burn_in=1000
max_batches=6000
policy=steps
steps=4800.0,5400.0
scales=.1,.1

在我们的教程中,小伙伴们还可以通过更改“训练”命令中的“图像大小”参数,轻松调整输入分辨率,该教程介绍了如何训练YOLOv5:

!python train.py --img {YOUR RESOLUTON SIZE HERE} --batch 16 --epochs 10 --data '../data.yaml' --cfg ./models/custom_yolov5s.yaml --weights '' --name yolov5s_results  --cache

注意:只有在达到训练数据的最大分辨率时,才能看到改进的结果。

平铺图像

检测小图像的另一种很好的策略是将图像平铺作为预处理步骤。平铺可以有效地将检测器放大到小物体上,但允许我们保持所需的小输入分辨率,以便能够进行快速推理。

平铺图像作为 Roboflow 中的预处理步骤

如果在训练期间使用平铺,请务必记住,我们还需要在推理时平铺图像。

通过扩充生成更多数据

数据扩充会从我们的基本数据集生成新图像,这对于防止模型过度拟合训练集非常有用。

一些特别有用的小物体检测增强包括随机裁剪、随机旋转和镶嵌增强。

自动学习模型锚

锚定框是模型学习预测的原型边界框,也就是说,锚框可以预先设置,有时对于我们的训练数据来说不是最理想的。自定义调整这些参数以适合我们即将完成的任务是很好的,YOLOv5 模型架构会根据我们的自定义数据自动为我们执行此操作,我们所要做的就是开始训练。

Analyzing anchors... anchors/target = 4.66, Best Possible Recall (BPR) = 0.9675. Attempting to generate improved anchors, please wait... WARNING: Extremely small objects found. 35 of 1664 labels are < 3 pixels in width or height. Running kmeans for 9 anchors on 1664 points... thr=0.25: 0.9477 best possible recall, 4.95 anchors past thr n=9, img_size=416, metric_all=0.317/0.665-mean/best, past_thr=0.465-mean: 18,24,  65,37,  35,68,  46,135,  152,54,  99,109,  66,218,  220,128,  169,228 Evolving anchors with Genetic Algorithm: fitness = 0.6825: 100%|██████████| 1000/1000 [00:00<00:00, 1081.71it/s] thr=0.25: 0.9627 best possible recall, 5.32 anchors past thr n=9, img_size=416, metric_all=0.338/0.688-mean/best, past_thr=0.476-mean: 13,20,  41,32,  26,55,  46,72,  122,57,  86,102,  58,152,  161,120,  165,20

过滤掉多余的类

类管理是提高数据集质量的一项重要技术,如果我们的一个类与另一个类明显重叠,则应从数据集中过滤该类。也许,我们认为数据集中的小对象不值得检测,因此我们可能想要将其取出。通过Roboflow Pro中的高级数据集进行状况检查,我们可以快速识别所有这些问题。

可以通过Roboflow 的本体管理工具来实现类遗漏和类重命名。

结论

正确检测小物体确实是一个挑战。在这篇文章中,我们讨论了一些改进小物体检测器的策略,即:

  • 提高图像捕获分辨率

  • 提高模型的输入分辨率

  • 平铺图像

  • 通过扩充生成更多数据

  • 自动学习模型锚

  • 过滤掉多余的类

往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载机器学习的数学基础专辑黄海广老师《机器学习课程》视频课

本站qq群851320808,加入微信群请扫码:

【深度学习】解决物体检测中的小目标问题相关推荐

  1. 解决物体检测中的小目标问题

    为了提高模型在小物体上的性能,我们建议使用以下技术: 提高图像捕获分辨率 提高模型的输入分辨率 平铺图像 通过扩充生成更多数据 自动学习模型锚 过滤掉多余的类 1. 提高图像捕获分辨率 非常小的物体在 ...

  2. 物体识别_深度学习在物体识别中的应用探讨:以ImageNet和人脸识别为例

    ImageNet图像分类 深度学习在物体识别中最重要的进展体现在ImageNet ILSVRC挑战中的图像分类任务.传统计算机视觉方法在此测试集上最低的错误率是26.172%.2012年,欣顿的研究小 ...

  3. 深度学习在目标视觉检测中的应用进展与展望

    作者:张慧,王坤峰,王飞跃 来源:王飞跃科学网博客 摘要:目标视觉检测是计算机视觉领域的一个重要问题,在视频监控.自主驾驶.人机交互等方面具有重要的研究意义和应用价值.近年来,深度学习在图像分类研究中 ...

  4. 手把手教你用深度学习做物体检测(二):数据标注

      "本篇文章将开始我们训练自己的物体检测模型之旅的第一步-- 数据标注."   上篇文章介绍了如何基于训练好的模型检测图片和视频中的物体,若你也想先感受一下物体检测,可以看看上篇 ...

  5. 手把手教你用深度学习做物体检测(四):模型使用

    上一篇<手把手教你用深度学习做物体检测(三):模型训练>中介绍了如何使用yolov3训练我们自己的物体检测模型,本篇文章将重点介绍如何使用我们训练好的模型来检测图片或视频中的物体.   如 ...

  6. 手把手教你用深度学习做物体检测(三):模型训练

    本篇文章旨在快速试验使用yolov3算法训练出自己的物体检测模型,所以会重过程而轻原理,当然,原理是非常重要的,只是原理会安排在后续文章中专门进行介绍.所以如果本文中有些地方你有原理方面的疑惑,也没关 ...

  7. 解决目标检测中的小目标问题

    <解决目标检测中的小目标问题>   目标检测的前身是滑窗 + 图像分类,如果想要对图像进行鲁棒的分类,首先特征要能够覆盖整幅图像,而且编码的前景信息要比噪声背景信息更加显著.这对于小目标来 ...

  8. 深度学习在人脸检测中的应用 | CSDN 博文精选

    作者 | 梁志成.刘鹏.陈方杰 责编 | 唐小引 转载自CSDN(ID:csdnnews) 在目标检测领域,可以划分为人脸检测与通用目标检测,往往人脸这方面会有专门的算法(包括人脸检测.人脸识别.人脸 ...

  9. 人机交互系统(4.1)——深度学习在人脸检测中的应用

    1 人脸检测 在目标检测领域可以划分为了人脸检测与通用目标检测,往往人脸这方面会有专门的算法(包括人脸检测.人脸识别.人脸其他属性的识别等等),并且和通用目标检测(识别)会有一定的差别,着主要来源于人 ...

最新文章

  1. 六十六、丑数系列,丑的颠覆我的思想
  2. android 申请usb权限,USB 权限申请流程
  3. ajax该什么时候用
  4. 主机与设备之间文件拷贝的几种方式
  5. 微投抖的1080_1080P不到三千元 微投价格战竟如此激烈
  6. React全家桶构建一款Web音乐App实战(五):歌曲状态管理及播放功能实现
  7. python解析json文件三种_Python解析json文件相关知识学习
  8. 利用excel和word批量制作标签
  9. c 实现走迷宫流程图_迷宫求解(有流程图).doc
  10. 服务器加根网线用不用修改路由器,Tenda腾达路由器ads拨号上网设置教程
  11. mysql异地容灾备份开启log_bin
  12. Linux永久删除文件恢复
  13. kubernetes endpoint 代码阅读
  14. 计算机网络自顶向下方法第四章笔记
  15. 视频消重伪原创版 怎么修改视频的MD5值
  16. 甘肃省甘南藏族自治州谷歌卫星地图下载
  17. python 股票分析库_GitHub - reference-project/stock-1: stock,股票系统。使用python进行开发。...
  18. 哈理工OJ 1630 网线 【建图+Prime算法】
  19. 在GeoServer中使用Udig配置的地图样式
  20. esc的作用计算机,电脑键盘上的Esc是什么意思

热门文章

  1. laravel controller
  2. hdu 5066 小球碰撞(物理题)
  3. adb install 和adb uninstall
  4. 关于npm和yarn 安装vue脚手架
  5. 【python练习题】程序15
  6. C/S端开发问题汇总
  7. DropDownList的常用属性和事件
  8. python多元线性回归模型案例_Python 实战多元线性回归模型,附带原理+代码
  9. 秒后面的单位是什么_比光年还大的长度单位,你知道几个?
  10. 机器人学习--AMCL导航包自己修改源码编译和调用方法