目录

(1) RCNN与SPP的比较

(2) RCNN → Fast RCNN → Faster RCNN

(3) YOLO与RCNN类方法比较

(4) YOLO与SSD的比较

(5) YOLO v1 → YOLO v2 → YOLO v3

(6) FPN、RetinaNet、Mask R-CNN、YOLOv3

FPN(2017_CVPR)

RetinaNet(2017_ICCV)

Mask R-CNN(2017_ICCV)

YOLOv3


(1) RCNN与SPP的比较

  • SPP-net提出了SPP层(空间金字塔池化层,Spatial Pyramid Pooling),使得输入的候选框可大可小,解决了R-CNN区域候选时crop/warp(裁剪和放缩)带来的偏差问题

    • 卷积网络对尺寸并没有要求,固定尺寸的要求完全来源于全连接层部分,借助空间金字塔池化的方法来衔接两者(卷积层和全连接层)

    • 如:3种池化视图,分别是{4∗4,2∗2,1∗1},最后不管候选框大小如何,输出的特征数都一样

  • 但其他方面依然和R-CNN一样,因而依然存在不少问题,这就有了后面的Fast R-CNN

(2) RCNN → Fast RCNN → Faster RCNN

  • RCNN:区域候选(选择性搜索)、特征提取(卷积网络)、分类(SVM)、位置精修(回归方法)

位置回归:学习目标框相对于真实框的平移参数和缩放参数

(1) 先得到候选区域,再对每个候选区域提取特征 (与传统方法相比,用选择性搜索而非滑动窗的穷举法)

缺点:重复计算(几千个候选区域存在重叠)、训练的空间和时间代价很高、慢

    • 1. 训练分多个阶段

    • 2. 每个proposal都要计算convNet特征,并保存在硬盘上。

  • Fast R-CNN:区域候选(选择性搜索)、特征提取+分类+位置精修(神经网络)

    • 先得到整幅特征图,在对候选区域进行处理,减少重复计算 (候选区域仍由之前的方法得到,故速度还是很慢)

    • 把多个任务的损失函数写到一起,分类与位置精修同时执行(用统一的全连接层),节省了时间,并与特征提取一起融合到一个网络里面,无需像RCNN那样中间存储特征供后续SVM使用,节省空间

    • 用到了SPP的思想(ROI pooling层),无需像R-CNN那样对ROI区域放缩,可以一定程度上提升准确率

  • Faster R-CNN:区域候选+特征提取+分类+位置精修(神经网络)

    • 提出了RPN(区域候选网络),代替选择性搜索生成候选区域,将四个步骤融合到一个网络里面

      • 这里生成的候选区域即滑动窗口的卷积实现,虽然候选区域算一种穷举,但是是并行生成的,而非传统方法中的串行进行,且共享了特征提取时的很多计算,故速度还是有很大提升。通过共享卷积,RPN在测试时的速度约为10ms,相比于selective search的秒级简直可以忽略不计。

      • RPN的作用:RPN在卷积层后增加滑动窗口操作以及两个卷积层完成区域候选功能,第一个卷积层将特征图每个滑窗位置编码成一个特征向量,第二个卷积层对应每个滑窗位置输出k个区域得分和k个回归后的区域候选,并对得分区域进行非极大值抑制后输出得分Top-N【文中为300】区域,告诉检测网络应该注意哪些区域

    • 提出了anchor box的概念,有参考,学习更准确

      • 一个滑动窗对应多个anchor box(原文用了三种尺度,三种比例,共9个anchor box),表示每个滑动窗对应多个候选区域,由RPN网络用非极大值抑制筛选出概率较大的候选区域后再输入给后续的网络进行分类和回归。(这里的滑动窗是特征图上的滑动窗,对应原图中是有跨度的大滑动窗,与感受野有关)

  • Mask R-CNN:加入语义分割的任务,融入到一个框架,信息变多后,性能得到了提升(多任务学习的作用)

(3) YOLO与RCNN类方法比较

YOLO利用了分治法的思想,并把目标检测(object detection)问题处理成一个回归问题,用一个卷积神经网络结构就可以从输入图像直接预测bounding box和类别概率。

yolo与faster R-CNN的对比:

  • faster R-CNN先提取出候选区域(对候选区域进行一遍筛选之后在送入到下一步进行继续判断),在对每个候选区域进行分类和位置回归(分两步),速度较慢,而yolo用一个统一的网络就可以从输入图像直接预测类别和位置,一步到位,速度较快,不过准确率上,yolo略低

  • yolo基于图像的全局信息进行预测,与基于滑动窗或者区域候选的检测算法相比,yolo对背景的误检率会比较小

  • yolo中的anchor box是用k均值聚类学习得到,而faster R-CNN为人工选择得到,相比之下,yolo的anchor box更好

(4) YOLO与SSD的比较

SSD( Single Shot MultiBox Detector)对YOLOv1的改进

  • 融合了不同卷积层的特征,从而实现多尺度目标检测,故小目标检测效果更好

  • 引入了Faster RCNN中anchor box的概念,有参考,学习到的目标框更加准确,且一个栅格可以识别多个物体。

  • //去掉了YOLOv1后面的全连接层,减少了大量参数,提高了速度?(可以接入任意尺寸的输入图像吗?)

性能比较

  • 无论在小物体检测,还是在速度,准确率上,SSD都优于YOLOv1

  • 但是对于YOLOv2,两者准确率比较接近,而且YOLOv2速度更快(主要是SSD是基于VGG16的网络模型,运算量相对较大)

(5) YOLO v1 → YOLO v2 → YOLO v3

YOLOv2借鉴SSD的思路对YOLOv1进行了一系列改进,更像是SSD的升级版

  • 引入了anchor box的概念,有参考,学习到的目标框更加准确,且一个栅格可以识别多个物体。还对其进行了改进

    • 对anchor box的选取采用k均值聚类,而非像Faster RCNN里人工选择

    • 目标框定位方法的改进,对于定位坐标,Fasster RCNN 学习的是相对于anchor box的偏移参数,由于没有限制,中心点可以是图像的任意点,而YOLO v2学习的是相对于某个栅格的偏移参数,中心点的学习由一个sigmid函数限制在该栅格内,能更快收敛,稳定性更好。

  • 细粒度特征(fine grain features)

    • 简单添加一个 pass through layer,把浅层特征图连接到深层特征图

      • (类似resnet中的做法(resnet中应该是叠加,但是这里是通道串联),而SSD是直接将不同卷积层得到的特征图输出到末尾)

  • 换为全卷积网络

    • 可以适应不同尺寸的输入

  • 多尺度训练(Multi-Scale Training)

    • 训练时随机选择新的输入图像尺寸,使得网络可以适应多种不同尺度的输入

  • Batch Norm

    • 可以使网络快速收敛,且有正则化效果,去掉了dropout

YOLO9000( YOLO9000: Better, Faster, Stronger)

YOLO9000是在YOLOv2的基础上得到的,相比于YOLO v2,YOLO9000 具有更强大(Stronger)的检测功能,可以检测出更多的类别

  • joint classification and detection(联合训练分类和检测)

    • 采用这种联合训练,YOLO9000从COCO检测数据集中学习如何在图片中寻找物体,从ImageNet数据集中学习更广泛的物体分类。 使该系统可以识别超过9000种物品

  • Dataset combination with WordTree

    • 使用WordTree把多个数据集(coco和imagenet)整合在一起

YOLOv3

不仅速度快,而且准确率高,检测小物体的能力也得到了很大提升

  • 多尺度预测 (借鉴了FPN的思路)

    • 通过加入不同卷积层的特征,进行多尺度检测,采用FPN的做法,不仅利用不同特征图分别检测,还将不同尺度的特征图进行融合再检测。

    • 每种尺度预测3个box, anchor的设计方式仍然使用聚类,得到9个聚类中心,将其按照大小均分给3中尺度.

    • 尺度1: 在基础网络之后添加一些卷积层再输出box信息.

    • 尺度2: 从尺度1中的倒数第二层的卷积层上采样(x2)再与最后一个16x16大小的特征图相加,再次通过多个卷积后输出box信息.相比尺度1变大两倍.

    • 尺度3: 与尺度2类似,使用了32x32大小的特征图.

  • 更好的基础分类网络(类ResNet)和分类器

    • 仿ResNet, 与ResNet-101或ResNet-152准确率接近,但速度更快,新网络结构Darknet-53(比以前的网络层数更深,YOLOv2为Darknet-19)

(6) FPN、RetinaNet、Mask R-CNN、YOLOv3

FPN(2017_CVPR)

  • 对不同分辨率的特征图,除了侧向的连接,还加入了自上而下的连接(对比,SSD是融合了几层直接做预测)

  • (除了对不同尺度的特征图分别进行预测外,还融合不同尺度的特征图进行预测)

RetinaNet(2017_ICCV)

性能超过了FPN

提出了一阶段算法准确率不够好的原因为:

(1)数量极度不平衡的正负样本(前景和背景样本)比例(2)分类难度差异的问题:gradient被easy example 支配(说loss被支配可能更直接一点)的问题

  • 一般性的损失函数 Focal Loss (FL)

    • 在loss中增加难分类样本的权重,增加了最后的准确率,解决分类问题中类别数量不平衡(如果把anchor box当做样本,前景样本很少,背景样本很多,加α)、分类难度差异(不同类别样本分类难度不一样,如果简单样样本很多,loss虽小,但是由于量多可能会被支配,加(1-p)^γ)的一个 loss

  • 单阶段的目标检测模型 RetinaNet

    • 网络结构用的FPN

Mask R-CNN(2017_ICCV)

  • 加入语义分割任务,多任务学习,检测效果更加好

YOLOv3

基于深度学习的目标检测算法对比分析(RCNN、SPP、YOLO、SSD、FPN、RetinaNet)相关推荐

  1. 基于深度学习的目标检测算法综述(从R-CNN到Mask R-CNN)

    深度学习目标检测模型全面综述:Faster R-CNN.R-FCN和SSD 从RCNN到SSD,这应该是最全的一份目标检测算法盘点 基于深度学习的目标检测算法综述(一) 基于深度学习的目标检测算法综述 ...

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

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

  3. 综述 | 基于深度学习的目标检测算法

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:计算机视觉life 导读:目标检测(Object Det ...

  4. 基于深度学习的目标检测算法综述(一)

    基于深度学习的目标检测算法综述(一) 基于深度学习的目标检测算法综述(二) 基于深度学习的目标检测算法综述(三) 本文内容原创,作者:美图云视觉技术部 检测团队,转载请注明出处 目标检测(Object ...

  5. 基于深度学习的目标检测算法综述(二)

    转自:https://zhuanlan.zhihu.com/p/40020809 基于深度学习的目标检测算法综述(一) 基于深度学习的目标检测算法综述(二) 基于深度学习的目标检测算法综述(三) 本文 ...

  6. 学习笔记之——基于深度学习的目标检测算法

    国庆假期闲来无事~又正好打算入门基于深度学习的视觉检测领域,就利用这个时间来写一份学习的博文~本博文主要是本人的学习笔记与调研报告(不涉及商业用途),博文的部分来自我团队的几位成员的调研报告(由于隐私 ...

  7. 基于深度学习的目标检测算法思维导图

    在计算机视觉领域,目标检测一直是一种处于非常火热 的状态,尤其是卷积神经网络CNN出现后,出现了各种基于CNN的目标检测算法,在此根据所看到或者所了解的论文进行个人汇总,以思维导图的模式进行记录整理, ...

  8. 基于深度学习的目标检测综述(单阶段、多阶段、FPN变体、旋转目标检测等)

    随着深度学习的发展,基于深度学习的目标检测方法因其优异的性能已经得到广泛的使用.目前经典的目标检测方法主要包括单阶段(YOLO.SSD.RetinaNet,还有基于关键点的检测方法等)和多阶段方法(F ...

  9. AI综述专栏 | 基于深度学习的目标检测算法综述

    https://www.toutiao.com/a6685618909275488780/ 2019-04-30 17:35:53 关注微信公众号:人工智能前沿讲习, 重磅干货,第一时间送达 AI综述 ...

最新文章

  1. iOS单个应用程序的最大可用内存是多少?
  2. 团队如何实施敏捷开发以及Scrum电子看板工具
  3. net start mysql启动mysql,提示发生系统错误 5 拒绝访问 解决方法
  4. linux ls什么意思,linux – 你如何确定bash ls的颜色是什么意思?
  5. 拟合一条曲线_数据预测与曲线拟合
  6. 面试珍藏:最常见的200多道Java面试题(2019年最新版)
  7. Spring学习总结3——配置datasource三种方式
  8. Google 也要“勒紧腰带”过日子了!
  9. thinkphp源码分析(三)—自动加载篇(Loader的分析)
  10. 计算机关闭提示音,即将发布:如何关闭Apple计算机启动提示音
  11. Angr安装与使用之使用篇(十一)
  12. 电脑必备必装的软件工具神器,强烈推荐
  13. H5利用JS调用摄像头实现拍照效果
  14. 乘法鉴相器的matlab仿真,Matlab中基于dq变换的锁相环仿真研究
  15. Lizard工具的使用
  16. foo java_Java的类型参数通配符到底意味着什么? Foo和Foo ?之间的真正区别是什么?...
  17. 程序员的四个等级:菜鸟、普通、大牛、大神
  18. 注解-Annotation
  19. 自定义绘制treeview,重绘treeview
  20. 阿里云短信发送回执错误码

热门文章

  1. 跟着做react项目(至P44)
  2. 树莓派Android Things物联网开发:GitHub案例程序汇总
  3. ue编辑C语言灰色,UltraEdit如何实行列模式编辑
  4. 东北大学和西南大学计算机,东北大学、东南大学、中南大学、西南大学、西北大学,哪个最好?...
  5. 人脸识别评价参数之FAR和FRR
  6. c语言指针near,near指针和far指针
  7. ✨英语学习|如何高效做英语阅读笔记
  8. IPV6大型网络配置实战
  9. 家乡主题网页设计代码 旅游主题网页设计 html静态网页设计制作 dw静态网页成品模板素材网页 web前端网页设计与制作 div静态网页设计
  10. 从商业到商文旅的时代大融合