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 V3 Fast R-CNN、Faster R-CNN
G-CNN HyperNet、MS-CNN、PVANet
R-SSD、DSSD、DSOD、FSSD MR-CNN、FPN、CRAFT
RON CoupleNet、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-RCNN 0.705
YOLO V3 0.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算法凭借其更快的前向传播速度,使其应用可能会更加广泛。

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

  1. 目标检测——Faster R-CNN论文阅读

    论文阅读--Faster R-CNN:Towards Real-Time Object Detection with Region Proposal Networks 文章目录 论文阅读--Faste ...

  2. 目标检测Faster RCNN 批量标记数据集,生成xml,csv以及record文件

    目标检测Faster RCNN 批量标记数据集,生成xml,csv以及record文件 0.将png图片转换为jpg import os from PIL import Image# dirname_ ...

  3. [目标检测] Faster R-CNN 深入理解 改进方法汇总

    Faster R-CNN 从2015年底至今已经有接近两年了,但依旧还是Object Detection领域的主流框架之一,虽然推出了后续 R-FCN,Mask R-CNN 等改进框架,但基本结构变化 ...

  4. 重温目标检测--Faster R-CNN

    Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks NIPS2015 https://gith ...

  5. 目标检测--Faster R-CNN

    Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks NIPS 2015 Matlab code ...

  6. 目标检测 Faster R-CNN运行及实时性DEMO测试

    faster-rcnn:Fast Region-based Convolutional Neural Networks基于区域的卷积神经网络 http://blog.csdn.net/column/d ...

  7. 深度学习和目标检测系列教程 7-300:先进的目标检测Faster R-CNN架构

    @Author:Runsen Faster R-CNN 由于Fast R-CNN 过程中仍然存在一个瓶颈,即ROI Projection.众所周知,检测对象的第一步是在对象周围生成一组潜在的边界框.在 ...

  8. 图像目标检测算法总结(从 R-CNN 到 YOLO v3)

    作者丨江户川柯壮@知乎 来源丨图像目标检测算法总结(从R-CNN到YOLO v3) - 知乎 基于CNN 的目标检测是通过CNN 作为特征提取器,并对得到的图像的带有位置属性的特征进行判断,从而产出一 ...

  9. 带你深入AI(4)- 目标检测领域:R-CNN,faster R-CNN,yolo,SSD, yoloV2

    带你深入AI(4)- 目标检测领域:R-CNN,faster R-CNN,yolo,SSD, yoloV2 2018年04月15日 11:09:29 阅读数:103 1 引言 深度学习目前已经应用到了 ...

最新文章

  1. 程序员修炼之道:从小工到专家阅读笔记01
  2. 关于hibernate的实体类中有集合类型转化成JSON的工具类 - 怀念今天的专栏 - 博客频道...
  3. AUC、Precision、Recall、F-measure、Accuracy
  4. (三)html5的结构
  5. c++虚函数的前奏--函数指针与回调
  6. php说明代码怎么写,代码怎么写 - 起步 - PHP基础 - KK的小故事
  7. 手工画图和计算机画图的内在联系,浅谈计算机绘图有关的论文(2)
  8. 查找类似图片关键字查找图片
  9. Killer Names( 容斥定理,快速幂 )
  10. hive整合HBase:HBase table xsg:test05 doesn't exist while the table is declared as an external table
  11. ISO软件质量度量模型
  12. python基础-列表
  13. android波浪动画简书,Android贝塞尔曲线————波浪效果(大波浪)
  14. 分辨率自动调节html,网页根据分辨率自适应
  15. 2020年,多源域适应(域迁移) MDA最新方法总结综述
  16. 真是一个艰难的决定----拒腾讯
  17. 银行本、异地,本、跨行存取款手续费大全
  18. 用c语言如何在数字前自动补0
  19. python和vba操作excel_对比VBA学Python操作Excel
  20. 1334:【例2-3】围圈报数

热门文章

  1. 【指示器】自定义ViewPager指示器,和你见过的不太一样。
  2. 微信公众平台SDK.net版本(weixinSDK.net)
  3. PC机上的COM1口和COM2口
  4. EROFS 和 方舟 辩证的看 —— 方舟
  5. windows下vscode安装kubernetes环境并打开阿里云CSK
  6. Hexo添加字数统计和阅读统计
  7. sparksql insertinto 源码解析
  8. mysql 查询成绩排名_mysql 学生成绩查询排名
  9. 你真的理解函数式编程吗?
  10. 网络综合布线系统的概述