IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 目标检测中的小目标问题 -> 正文阅读

[人工智能]目标检测中的小目标问题

机器学习越来越多地进入我们的日常生活。虽然所有的现代检测模型都非常擅长于检测相对较大的物体,如人、汽车和树木,但另一方面,小物体仍然给它们带来一些麻烦。对于一个模型来说,从房间的另一边看到手机或从100米远的地方看到红绿灯是非常困难的。所以今天我们将讨论为什么大多数流行的目标检测模型都不擅长检测小物体,我们如何提高它们的性能,以及其他已知的解决这个问题的方法。
请添加图片描述
为了提高你的模型在小对象上的性能,我们推荐以下技术:

  • FocalLoss
  • 增加图像捕捉分辨率
  • 增加模型的输入分辨率
  • 分块你的图像
  • 通过数据增强生成更多数据
  • 自动学习模型锚框
  • 过滤掉无关类

为什么小物体问题很难?

现代的目标检测算法都是基于卷积神经网络的。这是一种非常强大的方法,因为它可以创建一些低层次的图像抽象,如线、圈,然后“迭代地组合“到我们想要检测的对象中,但这也是为什么它们难以检测小对象的原因。
在这里插入图片描述
上面你可以看到一个通用图像分类神经网络的例子。我们最感兴趣的是隐藏层部分。如你所见,这个网络有一系列卷积的组合,然后是池化层。许多物体检测网络,如YOLO, SSD-Inception和Faster R-CNN也使用这些,而且数量相当多。将图像的分辨率从600×600降低到30×30。由于这个事实,他们在第一层提取的小对象特征(一开始就很少)“消失”在网络中间的某个地方,从来没有真正到达检测和分类步骤。

小目标问题困扰着世界范围内的目标检测模型。检查YOLOv3, EfficientDet和YOLOv4的COCO评估结果:
请添加图片描述
查看最好模型的 A P S , A P M , A P L AP_S, AP_M, AP_L APS?,APM?,APL?可以发现,小物体是很难被检测正确!例如,在EfficientDet中,小目标的mAP仅为12%,而大目标的AP为51%。这几乎是五倍的差异!

使用FocalLoss

如果你有很多类要检测,一个最简单的方法来提高检测小物体和很难检测的类是在训练神经网络的过程中使用FocalLoss。Focal Loss 就是一个解决分类问题中类别不平衡、分类难度差异的一个 loss。在论文本身提供的图表中很容易看到:
在这里插入图片描述

增加图像捕捉分辨率

非常小的物体可能只包含边界框内的几个像素,提高图像的分辨率可以增加检测器从这个小框形成更丰富的特征。
因此,我们建议尽可能地捕捉高分辨率的图像。

增加模型的输入分辨率

一旦你有了更高分辨率的图像,你就可以放大模型的输入分辨率。警告:这将导致一个大型模型需要更长的时间来训练,并且在开始部署时推理会更慢。您可能必须进行一些试验,以找出速度与性能之间的正确权衡。

[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

在我们的教程中,你也可以通过改变training命令中的图像大小参数,轻松地缩放你的输入分辨率:

# 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

分块你的图像

另一个检测小图像的策略是将图像分块最为预处理步骤。分块策略有效地将检测器放大小对象,但允许您保持所需的小输入分辨率,以便能够运行快速推断。下面举一个例子:
在这里插入图片描述
虽然模型的FPS大幅下降,但它在检测方面给模型带来了非常好的准确性提升。如果您在训练期间使用了分块策略,那么要记住,您还需要在推理时使用分块策略。

通过增强生成更多数据

数据增强从基本数据集生成新的图像。这对于防止模型在训练集上过拟合非常有用。
一些特别有用的增强小目标检测方法包括随机裁剪,随机旋转和马赛克( mosaic)增强。

自动学习模型锚框

锚框是典型的边界框,你的模型可以据此进行预测。也就是说,锚框可以预先设置,有时对您的训练数据不是最优的。YOLOv5模型体系结构会根据您的自定义数据自动生成锚框。你要做的就是开始训练。

过滤掉无关类

类别管理是提高数据集质量的一项重要技术。如果有一个类与另一个类明显重叠,则应该从数据集中过滤这个类。也许,您认为数据集中的小对象不值得检测,所以您可能想要将其剔除掉。

总结

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

  • FocalLoss
  • 增加图像捕捉分辨率
  • 增加模型的输入分辨率
  • 分块你的图像
  • 通过数据增强生成更多数据
  • 自动学习模型锚框
  • 过滤掉无关类

参考目录

https://blog.roboflow.com/detect-small-objects/

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-09-04 17:31:26  更:2021-09-04 17:34:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 16:37:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码