晏世武 罗金良 严庆

摘要:目标检测在视频监控、无人驾驶系统、机械自动化等领域起着重要作用。在如今大数据的背景下,为进一步提高Yolov3在不同数据集下的性能,本文以KITTI数据集为基础,利用重新調整anchor数值和增加尺度融合的方法改进Yolov3,并通过增加数据的方法平衡类别,进一步提高Yolov3性能。实验结果表明,改进的Yolov3较原始的框架,其mAP提高了近5.31%,从侧面说明改进的Yolov3具有较高的实用价值。

关键词:目标检测;深度学习;尺度融合;平衡类别;mAP

0 引言

目标检测能够对图像或视频中的物体进行准确分类和定位,在监控、无人驾驶、机械自动化等领域中起着至关重要的作用。早前的目标检测是通过人工提取特征的方法,使用DPM模型,并在图像上进行窗口滑动的方法进行目标的定位。这种方法十分耗时且精度不高。随着信息时代的快速发展,如今的数据量成几何式地增长,再使用人工提取特征的方式是十分不明智的。自2012年Alexnet在ILSVRC(Large Visual Recognition Challenge)比赛中大放光彩以来,学者们不断地使用卷积神经网络(Convolution Neural Network,CNN)设计新的目标检测框架,并出现了Faster RCNN、SSD、Yolov3等高性能的目标检测框架,并且在实践中展现出强大性能。

在如今较为主流目标检测框架中,Yolov3在检测速度和精度的平衡性方面表现较好,人们不断在各种领域使用Yolov3实现目标检测功能。然而原始的Yolov3架构并不能在各种数据集下均表现出色。对于小目标物体会出现定位不准确的和漏检的情况。本文针对Yolov3的问题,设计以下改进方法:

(1)针对目标定位不准确的问题,对于不同的数据集,重新调整anchor的数值:

(2)针对小目标难检和漏检的情况,增加一个尺度融合:

(3)通过增加较少类别的物体数的方式平衡类别来优化Yolov3.

1Yolov3及其改进方式

1.1 Yolov3框架

Yolov3是目标检测算法之一,是基于回归的方式进行特征提取,通过端到端的过程训练网络。最终在多尺度融合的特征层中回归出目标的类别与位置。端到端的训练方式使得分类与定位过程为一体。其两者共同的损失函数参与反向传播计算,在节约特征提取时间的同时又提升了精度,满足了目标检测的实时陸需求。Yolov3目标检测框架如图1所示。

图1中提取曾为Darknet-53的网络结构。该结构以256x256图片作为输入,大量使用1×1和3×3的卷积层进行堆砌,并使用残差网络(如图2所示)将浅层信息传递到深层,可在增加网络深度的同时不引起梯度爆炸等问题,图1中最左边的数字即代表所重复的残差网络模块的个数:Yolov3结构在检测方面采用的是多尺度检测策略,使用32x32、16x16、8x8三个不同尺寸的特征图进行检测输出。原图进行尺寸映射到检测特征层的每个点上,且每个点有3个预测框。因此在三个特征层检测上共有4032个预测框。该预测数极大满足了检测多类物体的需要。最终使用logistic回归,对每个预测框进行目标性评分,根据目标性评分来选择满足需求的目标框,并对这些目标框进行预测。

1.2 anchors的设置

在Yolov3目标检测框架中anchor十分重要,它是由当前数据集通过kmeans聚类算法统计出来的,合适的anchor值能够降低网络架构的损失值,加快收敛。在原始的Yolov3网络层中,用于检测物体的特征层为32x32、16x16、8x8大小的特征提取层,这些特征层可以映射到原始图像,即原始图像被切分为对应特征层的网格大小(grid cell)。如果真实框(ground truth)中某个物体的中心坐标落在gridcell里,就由该grid cell预测该物体,并且每个Cddcell预测3个边界框,其边界框的大小由anchor值决定,然后对预测的边界框与真实框的交互比(IOU)来选出超过IOU值的边界框去进行检测,为进一步减少不必要的检测次数,使用设置目标置信度的方法,当预测框的置信度小于该设定值就不再去检测该框。

本文训练使用的KITTI数据集,而原始Yolov3中的anchor值是使用COCO数据集得到的。因此,为提升本文物体的定位精度,重新使用kmeans算法去统计是十分必要的,且由于KITTI数据集的图片较大。本文将Yolov3的初始图片大小设为608×608,其对应特征层的大小也相应的会改变。COCO数据集和KITHI的anchor值分别见表1、表2.

1.3 多尺度检测

Yolov3目标检测框架中使用了多尺度检测,即上文所提到的19x19、38×38、76×76三个特征层同时检测图像或视频中的物体,且根据anchor中的值预先画出预测边界框。这种方式对中大型物体具有很好的检测效果,但是对于小物体存在难检或漏检的情况。本文针对KITTI数据集,增加一个特征尺度以提升检测精度。三尺度与四尺度检测模型如图3、4所示,由于增加了一个特征尺度,则anchor值也需要重新调整,见表3.

1.4 平衡数据类别

本文训练的数据集为KITTI。它是由德国卡尔斯鲁厄理工学院和丰田美国技术研究院联合创办,是目前国际上最大的自动驾驶场景下的计算机视觉算法评测数据集。标注了九个类别的物体,分别为Car、Van、Truck、Pedestrian、Person sitting、CyClist、Tram、Misc、DontCare。由于车辆的数据集较多而其它的数据较小,有结合CNN需要大量数据集的特点。本文对KITTI数据集中类别进行合并,合并策略如下:

(1)Car、Van、Truck、Tram合为一类,记为Vehicle;

yolov3为什么对大目标检测不好_基于改进Yolov3的目标检测的研究相关推荐

  1. 动物行为检测计算机视觉_基于红外热成像和计算机视觉的动物行为研究系统便是其中一例...

    工业领域的某些技术手段因其成熟的体系和强大的适应能力,常常被引入到科研领域.引入后往往能给学者莫大的惊喜,给他们的课题带来惊人的突破.本文介绍的基于红外热成像和计算机视觉的动物行为研究系统便是其中一例 ...

  2. 3d max用不同目标做关键帧_基于光流的视频目标检测系列文章解读

    作者:平凡的外卖小哥 全文5747字,预计阅读时间15分钟 1 简介 目前针对于图片的目标检测的方法大致分为两类: faster R-CNN/R-FCN一类: 此类方法在进行bbox回归和分类之前,必 ...

  3. 目标检测算法综述 | 基于候选区域的目标检测器 | CV | 机器视觉

    目标检测算法综述 | 基于候选区域的目标检测器 | CV | 机器视觉 滑动窗口检测器 自从 AlexNet 获得 ILSVRC 2012 挑战赛冠军后,用 CNN 进行分类成为主流.一种用于目标检测 ...

  4. 计算机软件模型改进,基于改进Kano模型的服务优化研究_樊根耀.docx 计算机软件及应用...

    第34卷第5期重庆理工大学学报(自然科学)2020年5月Vol. 34 No. 5Journal of Chongqing University of Technology (Natural Scie ...

  5. yolov3为什么对大目标检测不好_从YOLOv1到YOLOv3,目标检测的进化之路

    引言:如今基于深度学习的目标检测已经逐渐成为自动驾驶,视频监控,机械加工,智能机器人等领域的核心技术,而现存的大多数精度高的目标检测算法,速度较慢,无法适应工业界对于目标检测实时性的需求,这时YOLO ...

  6. yolov3为什么对大目标检测不好_【目标检测简史】进击的YOLOv3,目标检测网络的巅峰之作...

    YOLOv3的前世今生 2013年,R-CNN横空出世,目标检测DL世代大幕拉开. 各路豪杰快速迭代,陆续有了SPP,fast,faster版本,至R-FCN,速度与精度齐飞,区域推荐类网络大放异彩. ...

  7. 病虫害模型算法_基于深度学习的目标检测算法综述

    sigai 基于深度学习的目标检测算法综述 导言 目标检测的任务是找出图像中所有感兴趣的目标(物体),确定它们的位置和大小,是机器视觉领域的核心问题之一.由于各类物体有不同的外观,形状,姿态,加上成像 ...

  8. python成绩统计及格学平成_基于深度学习的目标检测算法综述

    导言目标检测的任务是找出图像中所有感兴趣的目标(物体),确定它们的位置和大小,是机器视觉领域的核心问题之一.由于各类物体有不同的外观,形状,姿态,加上成像时光照,遮挡等因素的干扰,目标检测一直是机器视 ...

  9. 肺结节目标检测_基于改进Faster R-CNN的肺结节检测

    基于改进 Faster R-CNN 的肺结节检测 肺癌在我国乃至全球范围内 , 都是发病率及死亡率最高的恶性肿瘤.其早期 的表现形式是直径不超过 30mm 的肺内圆形或不规则形结节. 肺癌的早期诊断与 ...

最新文章

  1. html支持1080p,1080p完美支持
  2. 安装View Agent失败: The system must be rebooted before installation can continue
  3. cas服务器支持接口,3、用CAS接口对接
  4. 硬盘突然提示没有初始化_分享一下固态硬盘不认盘的修复方法
  5. opencv乱码java_opencv 放置文字 中文乱码处理 putText
  6. AutoML大提速,谷歌开源自动化寻找最优ML模型新平台Model Search
  7. 云效DevOps实践-代码评审
  8. netty系列之:从零到壹,搭建一个SOCKS代理服务器
  9. python 读取excel表数据获取坐标_python读取并定位excel数据坐标系详解
  10. PHP数组的排序函数
  11. ado.net 格式 1201
  12. 引入springboot的两种方式以及springboot容器的引入
  13. html中meta的设置
  14. Python安装时0x80070642问题解决
  15. Python常用数据库封装方法
  16. pyhon中安装win32com模块
  17. 昂达平板不能开机刷机_昂达平板电脑刷机教程
  18. Python数据可视化——坐标轴基础
  19. 2021 年最漂亮的 Linux 发行版
  20. 逻辑回归实现鸢尾花分类

热门文章

  1. C++实现删除字符串中所有重复出现的字符
  2. CAMB输出保留小数位数问题
  3. @InsertProvider 实现批量插入数据
  4. dayjs 源码解析(一)(api)
  5. 区域医疗卫生信息化建设将成投资重点
  6. Centos6.5搭建java开发环境
  7. 打开某网站无法访问出现空白页可能的原因
  8. 2月第4周中国五大顶级域名总量减1.8万 美国增10.8万
  9. 过滤当前主机的IPV4地址
  10. 基于corosync+pacemaker实现主从高可用集群