目标检测:Faster-RCNN与YOLO V3模型的对比分析

1 目标检测的背景

作为机器视觉领域的核心问题之一,目标检测的任务是找出图像中所有的目标(物体),并确定它们的位置和大小。由于各类物体有不同的外观,形状,姿态,加上成像时光照,遮挡等因素的干扰,目标检测一直是机器视觉领域最具有挑战性的问题。因此,从本质上来说,目标检测包含两个主要任务:物体图像的识别和物体在图像中的定位。目前,目标检测主要应用于行人检测、车辆检测、人脸识别、医疗图像检测等。
目标检测的核心问题可以总结为三点:1)图像中物体类别的区分;2)目标在图像中位置的确定;3)目标大小形状变化的考虑。按照算法是否需要中间产生候选区域(region proposals),目前的目标检测算法可以大致分为两类,即two-stage与one-stage;之前还有multi-stage系列的算法,不过由于速度和准确度上的差距,已经很少被使用。
two-stage检测算法将检测问题划分为两个阶段,首先产生候选区域,然后对位置精修后进行候选区域分类。two-stage检测算法识别错误率低,漏识别率也较低,但速度较慢,不能满足实时检测场景,比如视频目标检测中。
one-stage检测算法不需要产生候选区域阶段,直接产生物体的类别概率和位置坐标值,经过单次检测即可直接得到最终的检测结果,因此有着更快的检测速度,但是一般识别精度和准确度上比two-stage的算法要差一些。
按照上述对于算法的分类,主流的two-stage与one-stage目标检测算法如表所示。

One-stage算法Two-stage算法
YOLO V1、YOLO V2、YOLO V3Fast R-CNN、Faster R-CNN
G-CNNHyperNet、MS-CNN、PVANet
R-SSD、DSSD、DSOD、FSSDMR-CNN、FPN、CRAFT
RONCoupleNet、Mask R-CNN
OHEM、Soft-NMS

2 所用Faster-RCNN与YOLO V3模型结构

针对上述两个系列two-stage与one-stage算法,分别选取其代表性的目标检测算法Faster-RCNN与YOLO V3,下面分别对两个算法的原理进行一个简单的介绍,并会介绍一下实际采用的Faster-RCNN与YOLO V3的一些结构和特点。
Faster-RCNN是two-stage检测算法的重要组成,其后续的很多改进目标检测算法也保留了Faster-RCNN的一些特点。网络结构如图,与标准的Faster-RCNN模型一样,也包括4个大的组成部分,分别是用于提取图像特征的VGG16卷积层、生成候选区域的RPN网络层、收集feature maps和proposals的Roi 池化层以及最后用于图像分类和计算bounding box回归的分类层。
在这里插入图片描述
YOLO V3是第三代的YOLO目标检测算法,是对于前两代YOLO算法的革新。针对YOLO V1与V2的对于小目标物体检测识别率低的问题,YOLO V3以牺牲小部分的运行时间为代价,换来了检测准确率很大的提升。在YOLO V3中主要采用了三个改进:1)使用多级预测解决颗粒度粗,对小目标无力的问题。YOLO V3具有3个detection,分别是1个下采样的、feature map为13 * 13的,还有2个上采样的eltwise sum,feature map为26*26,52*52的。2)使用了logistic loss函数作为新的损失函数,使得YOLO V3可以对重叠区域进行分类和框选。3)网络结构进行了加深,使用简化的residual block 取代了原来 1×1 和 3×3的blockblock,并将原来的darknet-19变成了darknet-53。本次也是采用了这样的模型结构。

3 设置与结果

围绕Faster-RCNN和YOLO V3两个数据集展开,都使用VOC数据集对两种模型进行训练,并比较其在测试集上的表现程度,其中Faster-RCNN使用的VGG16模型权重进行的初始化,YOLO V3使用的darknet53模型权重进行初始化。由于计算资源有限(MX150 显卡),无法对于VOC数据集进行充分的训练,训练不完全的模型也无法代表其模型真实能力,因此使用已经训练好的模型对其在VOC2007测试集上的表现进行评估,结果如表所示。

目标检测模型mAP
Faster-RCNN0.705
YOLO V30.858

从mAP值角度,Faster-RCNN在VOC测试集上的表现不如YOLO V3。为了更好地探索和研究两种算法对于目标检测任务的效果,本次针对实际的一些图片,对于这两种模型的目标检测效果进行直观比较,两种模型的检测结果如图所示,其中左边代表示Faster-RCNN结果,右边代表YOLO V3结果。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4 代码

由于两个模型都是源于多年前的论文,pytorch架构没有将其进行集成,因此需要从头开始自己搭建和调试,所以代码比较庞大,放到了github上:
YOLO V3
Faster-RCNN
源码在windows10 + python3.7的环境下可以运行,默认是GPU pytorch,但是需要下载一些第三方库,可以直接运行。

5 总结

总的来说,本次实验获得了以下两点结论:
1)YOLO V3算法相比于V1 与V2确实有了很大的改进,尤其是在小物体检测以及重叠物体检测方面,具有了很大的突破,但是其泛化能力可能会过强。
2)One-stage算法由其算法结构决定了其准确率一般会低于two-stage算法,但是一般这两者之间的准确率差距不会太大,而YOLO等one-stage算法凭借其更快的前向传播速度,使其应用可能会更加广泛。

  • 19
    点赞
  • 131
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
YOLO(You Only Look Once)是一种实时目标检测算法,它能够在一张图像中同时检测出多个目标,并给出目标的类别、位置和置信度等信息。与其他目标检测算法相比,YOLO具有以下优势: 1. 速度快:YOLO算法只需要一次前向传播即可完成整张图像的检测,因此速度很快,能够实时处理视频流数据。在CPU上运行时,YOLO v3的速度可以达到30 FPS,而在GPU上运行时,速度更可达到100 FPS以上。 2. 精度高:YOLO算法采用了全局损失函数,能够在不同尺度的特征图上进行检测,从而提高了检测的精度。此外,YOLO算法还采用了交叉损失函数,能够同时预测目标的类别和位置,进一步提高了检测的精度。 3. 目标检测效果好:YOLO算法在目标检测方面表现优异,能够检测出各种大小、形状和旋转角度的目标,并且在复杂背景下也具有较好的检测效果。 4. 网络结构简单:YOLO算法的网络结构简单,只有一个卷积神经网络,易于实现和优化。 相比之下,其他目标检测算法存在以下不足: 1. 速度慢:传统的目标检测算法,如RCNN、Fast RCNNFaster RCNN等,需要多次前向传播和后向传播,导致速度较慢,无法实时处理视频流数据。 2. 精度低:传统的目标检测算法在处理小目标和密集目标时精度较低,难以检测出物体的边界和轮廓。 3. 训练过程复杂:传统的目标检测算法需要多个模型和多个步骤来完成目标检测,训练过程复杂,难以优化和实现。 总之,相比其他目标检测算法,YOLO算法具有速度快、精度高、目标检测效果好和网络结构简单等优点,因此在实际应用中具有广泛的应用前景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值