1、目标检测基本概念

1.1 什么是目标检测

目标检测(Object Dectection)的任务是找出图像中所有感兴趣的目标(物体),确定他们的类别和位置。

1.2 目标检测要解决的核心问题

除图像分类外,目标检测要解决的核心问题是:
1.目标可能出现在图像的任何位置。
2.目标有各种不同的大小。
3.目标可能有各种不同的形状。

1.3 目标检测算法分类

  • Two stage目标检测算法
    先进行区域生成(region proposal,RP)(一个可能包含待检测物体的预选框),再通过卷积神经网络进行样本分类。
    任务:特征提取->生成RP->分类/定位回归。
    常见Two stage目标检测算法有:R-CNN、SPP-Net、Fast R-CNN和R-FCN等。
  • One stage 目标检测算法
    不用RP,直接在网络中提取特征来预测物体分类和位置。
    任务:特征提取->分类/定位回归。
    常见的one stage目标检测算法有:OverFeat、YOLOv1、YOLOv3、SSD和RetinaNet等。

1.4 应用领域

  • 人脸检测
  • 行人检测
  • 车辆检测
  • 道路检测
  • 障碍物检测
  • 等等

2、Two stage 目标检测算法

2.1 R-CNN

2.1.1 R-CNN 创新点

  • 使⽤CNN(ConvNet)对 region proposals 计算 feature vectors。从经验驱动特征(SIFT、HOG)到数据驱动特征(CNN feature map),提⾼特征对样本的表⽰能⼒。
  • 采⽤⼤样本下(ILSVRC)有监督预训练和⼩样本(PASCAL)微调(fine-tuning)的⽅法解决⼩样本难以训练甚⾄过拟合等问题。

注:ILSVRC其实就是众所周知的ImageNet的挑战赛,数据量极⼤;PASCAL数据集(包含⽬标检测和图像分割等),相对较⼩。

2.1.2 R-CNN 介绍

R-CNN作为R-CNN系列的第⼀代算法,其实没有过多的使⽤“深度学习”思想,⽽是将“深度学习”和传统的“计算机视觉”的知识相结合。⽐如R-CNN pipeline中的第⼆步和第四步其实就属于传统的“计算机视觉”技术。使⽤selective search提取region proposals,使⽤SVM实现分类。

  1. 预训练模型。选择一个预训练模型(pre-trained)神经网络(如AlexNet、VGG)。

  2. 重新训练全连接层使用需要检测的目标重新训练(re-train)最后全连接层(connected layer)。

  3. 提取prosals并计算CNN特征。利用选择性搜索(Slective Search)算法提取所有prosals(大约2000幅images),调整(resize/warp)它们固定大小,以满足CNN输入,然后将feature map保存到本地磁盘。

  4. 训练SVM。利用feature map训练SVM来对目标和背景进行分类(每个类一个二进制SVM)。

  5. 边界框回归(Bounding boxes Regression)。训练将输出一些校正因子的线性回归分类器。

2.1.3 R-CNN实验结果

R-CNN在VOC 2007测试集上mAP达到58.5%,打败当时所有的⽬标检测算法。

2.2 Fast R-CNN

2.2.1 Fast R-CNN有哪些创新点?

  1. 只对整幅图像进行一次特征提取。
  2. RoI pooling层替换最后⼀层的max pooling层,同时引⼊建议框数据,提取相应建议框特征。
  3. Fast R-CNN⽹络末尾采⽤并⾏的不同的全连接层,可同时输出分类结果和窗⼝回归结果, 实现了end-to-end的多任务训练【建议框提取除外】,也不需要额外的特征存储空间【RCNN中的特征需要保持到本地,来供SVMBounding-box regression进⾏训练】。
  4. 采⽤SVD对Fast R-CNN⽹络末尾并⾏的全连接层进⾏分解,减少计算复杂度,加快检测速度。

2.2.2 Fast R-CNN 介绍

Fast R-CNN是基于R-CNN和SPPnets进⾏的改进。SPPnets,其创新点在于计算整幅图像的the shared feature map,然后根据object proposal在shared feature map上映射到对应的feature vector(就是不⽤重复计算feature map了)。当然,SPPnets也有缺点:和R-CNN⼀样,训练是多阶段(multiple-stage pipeline)的,速度还是不够"快",特征还要保存到本地磁盘中。

将候选区域直接应⽤于特征图,并使⽤RoI池化将其转化为固定⼤⼩的特征图块。以下是Fast R-CNN的流程图

2.2.3 RoI Pooling 层详解

因为Fast R-CNN使⽤全连接层,所以应⽤RoI Pooling将不同⼤⼩的ROI转换为固定⼤⼩。
RoI Pooling 是Pooling层的⼀种,⽽且是针对RoI的Pooling,其特点是输⼊特征图尺⼨不固定,但是输出特征图尺⼨固定(如7x7)

  • 什么是RoI呢?
    RoI是Region of Interest的简写,⼀般是指图像上的区域框,但这⾥指的是由Selective Search提取的候选框。
  1. 提取候选框
    往往经过RPN后输出的不⽌⼀个矩形框,所以这⾥我们是对多个RoI进⾏Pooling。
  2. RoI Pooling的输入
    输⼊有两部分组成:

    1. 特征图(feature map):指的是上⾯所⽰的特征图,在Fast RCNN中,它位于RoI Pooling
      之前,在Faster RCNN中,它是与RPN共享那个特征图,通常我们常常称之
      为“share_conv”;
    2. RoIs,其表⽰所有RoI的N*5的矩阵。其中N表⽰RoI的数量,第⼀列表⽰图像index,其余四
      列表⽰其余的左上⾓和右下⾓坐标。

在Fast RCNN中,指的是Selective Search的输出;在Faster RCNN中指的是RPN的输出,⼀堆矩形候选框,形状为1x5x1x1(4个坐标+索引index),其中值得注意的是:坐标的参考系不是针对feature map这张图的,⽽是针对原图的(神经⽹络最开始的输⼊)。其实关于ROI的坐标理解⼀直很混乱,到底是根据谁的坐标来。其实很好理解,我们已知原图的⼤⼩和由Selective Search算法提取的候选框坐标,那么根据"映射关系"可以得出特征图(featurwe map)的⼤⼩和候选框在feature map上的映射坐标。⾄于如何计算,其实就是⽐值问题,下⾯会介绍。所以这⾥把ROI理解为原图上各个候选框(region proposals),也是可以的。

2.2.4 RoI 的具体操作

  1. 根据输入image,将ROI映射到feature map 对应位置
    注:映射规则比较简单,就是把各个坐标除以“输入图片与feature map的大小的比值”,得到了feature map上的box坐标。
    2.将映射后的区域划分为相同大小的sections(sections数量与输出的维度相同)
    3.对每个sections进行max pooling操作。

这样我们就可以从不同大小的方框得到固定大小的相应的feature maps。值得⼀提的是,输出的feature maps的大小不取决于ROI和卷积feature maps大小。RoI Pooling 最大的好处就在于极大地提高了处理速度。

2.2.5 ROI Pooling的输出

输出是batch个vector,其中batch的值等于ROI的个数,vector的大小为channelwh;ROI Pooling的过程就是将一个个大小不同的box矩形框,都映射成大小固定(w*h)的矩形框。
ROI Pooling 示例

2.3 Faster R-CNN

2.3.1 Faster R-CNN有哪些创新点?

Fast R-CNN依赖于外部候选区域⽅法,如选择性搜索。但这些算法在CPU上运⾏且速度很慢。在测试中,Fast R-CNN需要2.3秒来进⾏预测,其中2秒⽤于⽣成2000个ROI。Faster R-CNN采用与Fast R-CNN相同的设计,只是它⽤内部深层⽹络代替了候选区域⽅法。新的候选区域⽹络(RPN)在⽣成ROI时效率更⾼,并且以每幅图像10毫秒的速度运行。

候选区域⽹络(RPN)将第⼀个卷积网络的输出特征图作为输⼊。它在特征图上滑动⼀个3×3的卷积核,以使用卷积⽹络(如下所示的ZF网络)构建与类别⽆关的候选区域。其他深度⽹络(如VGG或ResNet)可⽤于更全⾯的特征提取,但这需要以速度为代价。ZF网络最后会输出256个值,它们将馈送到两个独立的全连接层,以预测边界框和两个objectness分数,这两个objectness分数度量了边界框是否包含⽬标。我们其实可以使⽤回归器计算单个objectness分数,但为简洁起⻅,Faster R-CNN使⽤只有两个类别的分类器:即带有⽬标的类别和不带有⽬标的类别。

常见经典目标检测算法相关推荐

  1. 基于深度学习的目标检测算法:SSD——常见的目标检测算法

    from:https://blog.csdn.net/u013989576/article/details/73439202 问题引入: 目前,常见的目标检测算法,如Faster R-CNN,存在着速 ...

  2. 《基于海思35xx nnie引擎进行经典目标检测算法模型推理》视频课程介绍

    前言 沉寂两个月,终于将新的视频课程<<基于海思35xx nnie引擎进行经典目标检测算法模型推理>>(其链接为https://edu.csdn.net/course/deta ...

  3. 经典目标检测算法:RCNN、Fast RCNN、 Faster RCNN 基本思想和网络结构介绍

    目录 一.目标检测的基本介绍 1.1 什么是目标检测? 1.2 目标检测算法的分类 二.RCNN 2.1 RCNN简介 2.2 RCNN算法流程 2.3 RCNN流程图 2.4 RCNN框架 2.5 ...

  4. 2018目标检测最新算法+经典目标检测算法

    干货 CVPR2018的目标检测总结(论文+开源代码)https://blog.csdn.net/wfei101/article/details/80861681 目标检测算法集合(论文+开源代码)h ...

  5. 详解经典旋转目标检测算法RoI Transformer

    一.引言 1.旋转目标检测检测 旋转目标检测检测就是将具有旋转方向的目标检测出来,也就是需要检测目标的中心点.长宽.角度.在俯视图的目标检测中比较常见,如遥感图像目标检测.航拍图像目标检测等.(见下图 ...

  6. keras faster物体检测_全网 | 深度学习目标检测算法(精选12篇)

    太多的公众号每天的文章是否让你眼花缭乱?刷了好多文章,发现大都是转来转去?今天我在全网公众号里为大家精选主题为深度学习目标检测算法的文章12篇,其中包括综述,R-CNN,SPP-Net,Fast R- ...

  7. 目标检测算法实战综述

    目录 一.目标检测问题定义 二.目标检测问题方法 三.常见传统目标检测算法 3.1 Viola-Jones (人脸检测) 3.2 HOG+SVM (行人检测.Opencv实现) 3.3 DPM (物体 ...

  8. 目标检测算法实现(八)——YOLOV5学习笔记

    非常感谢江大白大佬的研究与分享 附链接 深入浅出Yolo系列之Yolov5核心基础知识完整讲解 目录 1.网络结构图+v5性能对比 2.v5的改进和优势 2.1 输入端 2.1.1 Mosaic数据增 ...

  9. 目标检测算法之常见评价指标的详细计算方法及代码解析

    前言 之前简单介绍过目标检测算法的一些评价标准,地址为目标检测算法之评价标准和常见数据集盘点.然而这篇文章仅仅只是从概念性的角度来阐述了常见的评价标准如Acc,Precision,Recall,AP等 ...

最新文章

  1. 伍六七带你学算法 入门篇 ——最大子序和
  2. ACM MM'21 | 超轻量8.5M!更高效的RGB-D显著性检测模型DFM-Net
  3. C# 操作Cookie类
  4. 积神经网络的参数优化方法——调整网络结构是关键!!!你只需不停增加层,直到测试误差不再减少....
  5. Python3.8 新特性:仅位置参数
  6. cocos2d-lua-win
  7. 宜搭功能更新:子表全面升级,高级流程可以批量审批
  8. java 马士兵 io 代码分析_学习笔记-马士兵java- (IO初步)流
  9. 金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)-(一千零一拾一元整)输出。...
  10. 技术研究院003---六种方式,教你在SpringBoot初始化时搞点事情!
  11. SQL SERVER占用CPU过高排查和优化
  12. Python import其他文件夹的文件
  13. python词云图_Python快速生成词云图,这是最详细的教程,没有之一!
  14. HTML5 通过Vedio标签实现视频循环播放
  15. grpc-go源码剖析七十四之什么情况下服务器端通知客户端,双方关闭链接?(goAway帧处理逻辑)
  16. 点击唤起电话功能和企业微信聊天窗口事件(H5)
  17. “水氢车”真跑起来了!但现场出现尴尬一幕……又一个“水变油”骗局?
  18. Robomongo与MongoDB的故事
  19. 微信小程序刷新(重载)当前页面的方法,超简单~
  20. 巨噬细胞膜包裹载HCPT-PLGA纳米粒(HCPT-MCNP)|生物膜包载去氧氟尿苷

热门文章

  1. 2018世界一线城市排名
  2. 编程数学(A-1)-(B-1)-一个数的负次方怎么算
  3. python考试怎么过_面试问题整理之python测试
  4. 怎么关闭计算机用户账户控制面板,win7系统用户账户控制设置|win7关闭/取消用户账户控制的方法-系统城...
  5. y4m格式和yuv、bmp格式互转
  6. 毕竟西湖六月中,风光不与四时同。接天莲叶无穷碧,映日荷花别样红
  7. Unity旋转到指定角度和旋转到指定向量的问题,Z轴方向向量为V1,Y轴方向向量为V2
  8. CUDA总结:共享内存
  9. 【算法百题之十八】18年网易面试题,小易买水果
  10. 【elasticsearch】search type 含义与使用