前言:

原文链接:基于CNN的目标检测发展过程       文章有大量修改,如有不适,请移步原文.

参考文章:图像的全局特征--用于目标检测

目标的检测和定位中一个很困难的问题是,如何从数以万计的候选窗口中挑选包含目标物的物体。只有候选窗口足够多,才能保证模型的 Recall。传统机器学习方法应用,使用全局特征+级联分类器的思路仍然被持续使用。常用的级联方法有haar/LBP特征+Adaboost决策树分类器级联检测 和HOG特征 + SVM分类器级联检测。

DPM方法为08年提出的一种可进行级联(2010)的图像目标检测方法,RBG阐述,“Deformable Part Models are Convolutional Neural Networks”(http://arxiv.org/abs/1409.5403),可以视为CNN检测方法的前驱。

目标检测的几个阶段:分类 、分类+定位 、多目标检测、语义分割

引言

图像的全局特征:HOG特征和DPM模型......

   孔涛在知乎上这样写到。

目前,基于CNN的目标检测框架主要有两种:

一种是 one-stage ,例如 YOLO、SSD 等,这一类方法速度很快,但识别精度没有 two-stage 的高,其中一个很重要的原因是,利用一个分类器很难既把负样本抑制掉,又把目标分类好。

另外一种目标检测框架是 two-stage ,以 Faster RCNN 为代表,这一类方法识别准确度和定位精度都很高,但存在着计算效率低,资源占用大的问题。

预训练模型-用于分类的CNN

大多数模型并非一开始就设计网络结构,使用数据进行训练网络结构,而使用ImageNet上训练好的CNN结构。R-CNN文献paper给我们证明了一个理论,如果你不进行fine-tuning,也就是你直接把Alexnet模型使用于工程,类似于HOG、SIFT一样做特征提取,说明使用ImageNet训练过的CNN结构已经在特征提取方面达到了HOG的效果。

文章这样说:不针对特定的任务。然后把提取的特征用于分类,结果发现p5的精度竟然跟f6、f7差不多,而且f6提取到的特征还比f7的精度略高;如果你进行fine-tuning了,那么f7、f6的提取到的特征最会训练的svm分类器的精度就会飙涨。

Two-Stage方法

Two-Stage方法为Region proposal和CNN分离的方法,把检测问题分解为原始的寻找框和目标分类两步问题。先后出现R-CNN、SPP-NET、Fast R-CNN、Faster R-CNN、R-FCN、Mask RCNN。

Two-Stage方法主要问题是从大量框选取候选框问题,使用的方法有:objectness [1],selective search [39],category-independent object proposals [14], constrained parametric min-cuts (CPMC) [5], multi-scale combinatorial grouping [3], and Cires¸an et al. [6], who detect mitotic cellsby applying a CNN to regularly-spaced square crops, which are a special case of region proposals.

While R-CNN is agnostic to the particular region proposal method, we useselective search to enable a controlled comparison with prior detection work (e.g., [39, 41]).。R-CNN使用了selective search方法,下图为一个评测。

参考文章:基于CNN的目标检测发展过程

参考文章:基于R-CNN的物体检测   看一下即可

R-CNN方法

2014年CVPR上的经典paper:《Rich feature hierarchies for Accurate Object Detection and Segmentation》,这篇文章的算法思想又被称之为:R-CNN(Regions with Convolutional Neural Network Features),是物体检测领域曾经获得state-of-art精度的经典文献。

这篇paper的思想,改变了物体检测的总思路,现在好多文献关于深度学习的物体检测的算法,基本上都是继承了这个思想,比如:《Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition》。

R-CNN的检测步骤:

分别在选框和CNN两个步骤进行了优化。

步骤一:预训练(或者下载)一个分类模型(比如AlexNet);
       步骤二:对该模型做fine-tuning: 将分类数从1000改为20;去掉最后一个全连接层(使用SVM分类);
       步骤三:1.特征提取
        • 提取图像的所有候选框(选择性搜索-selective search)
        • 对于每一个区域:修正区域大小以适合CNN的输入,做一次前向运算,将第五个池化层的输出(就是对候选框提取到的特征)存到硬盘

步骤四:2.训练一个SVM分类器(二分类)来判断这个候选框里物体的类别
             • 每个类别对应一个SVM,判断是不是属于这个类别,是就是positive,反之nagative

步骤五:3.使用回归器精细修正候选框位置:对于每一个类,训练一个线性回归模型去判定这个框是否框得完美。

R-CNN使用精细调整选定框的方法实现了较高的检测性能。mAP和IOU都达到了一个很高的标准。

使用的selective search方法,参考:"Selective search for object recognition." International journal of computer vision, 104(2) (2013): 154-171.此文必看:selective search方法。

这一步可以看做是对图像的过分割,都是过分割,本文SS方法的过人之处在于预先划分的区域什么大小的都有(满足目标多尺度的要求),而且对过分割的区域还有一个合并的过程(区域的层次聚类),最后剩下的都是那些最可能的候选区域,然后在这些已经过滤了一遍的区域上进行后续的识别等处理,这样的话,将会大大减小候选区域的数目,提供了算法的速度。参考超像素分割聚类过程。

举例一般合并规则:

优先合并以下四种区域:
- 颜色(颜色直方图)相近的
- 纹理(梯度直方图)相近的
- 合并后总面积小的
- 合并后,总面积在其BBOX中所占比例大的

第三条,保证合并操作的尺度较为均匀,避免一个大区域陆续“吃掉”其他小区域。

例:设有区域a-b-c-d-e-f-g-h。较好的合并方式是:ab-cd-ef-gh -> abcd-efgh -> abcdefgh。
不好的合并方法是:ab-c-d-e-f-g-h ->abcd-e-f-g-h ->abcdef-gh -> abcdefgh。

第四条,保证合并后形状规则。

例:左图适于合并,右图不适于合并。

上述四条规则只涉及区域的颜色直方图、纹理直方图、面积和位置。合并后的区域特征可以直接由子区域特征计算而来,速度较快

SPP Net

SPP:Spatial Pyramid Pooling(空间金字塔池化)

参考文章:SPP-Net:CNNs添加一尺度不变特征-神经元层

它的特点有两个:

1. 结合空间金字塔方法实现CNNs的对尺度输入的可变性;  2. 只对原图提取一次卷积特征。
        空间金字塔池化:一般CNN后接全连接层或者分类器,他们都需要固定的输入尺寸,因此不得不对输入数据进行crop或者warp,这些预处理会造成数据的丢失或几何的失真。SPP Net的第一个贡献就是将金字塔思想加入到CNN,实现了数据的多尺度输入。


        一次性卷积特征提取:在R-CNN中,每个候选框先resize到统一大小,然后分别作为CNN的输入,这样是很低效的。

所以SPP Net根据这个缺点做了优化:只对原图进行一次卷积得到整张图的feature map,然后找到每个候选框zaifeature map上的映射patch,将此patch作为每个候选框的卷积特征输入到SPP layer和之后的层。节省了大量的计算时间,比R-CNN有一百倍左右的提速。

RCNN的缺点:一、没有共享卷积运算;二、即使使用了selective search等预处理步骤来提取潜在的bounding box作为输入,但是RCNN仍会有严重的速度瓶颈,原因也很明显,就是计算机对所有region进行特征提取时会有重复计算,Fast-RCNN正是为了解决这个问题诞生的。

Fast R-CNN  和Faster R-CNN

R-CNN的进阶版Fast R-CNN就是在RCNN的基础上采纳了SPP Net方法,对RCNN作了改进,使得性能进一步提高。成功的让人们看到了Region Proposal+CNN这一框架实时检测的希望,原来多类检测真的可以在保证准确率的同时提升处理速度,也为后来的Faster-RCNN做下了铺垫。

Faster R-CNN的主要贡献是设计了提取候选区域的网络RPN,代替了费时的选择性搜索,使得检测速度大幅提高。加入一个提取边缘的神经网络,也就说找到候选框的工作也交给神经网络来做了。此外RPN网络和识别网络共享卷积层,加快数据forward速度。做这样的任务的神经网络叫做Region Proposal Network(RPN)。

具体做法:
  • 将RPN放在最后一个卷积层的后面;
  • RPN直接训练得到候选区域。怎么训练?

具体方案还要好好看看论文:Faster R-CNN Towards Real-Time Object Detection with Region Proposal Networks。

算法总结:

RCNN:
  1. 在图像中选择约1000-2000个候选框 (使用selective search);2. 每个候选框内图像块缩放至相同大小,并输入到CNN内进行特征提取 ;3. 对候选框中提取出的特征,使用分类器判别是否属于一个特定类 ;4. 对于属于某一特征的候选框,用回归器进一步调整其位置。

Fast RCNN:

       添加SPP层,
  1. 在图像中确定约1000-2000个候选框 (使用选择性搜索);2. 对整张图片输进CNN,得到feature map;3. 找到每个候选框在feature map上的映射patch,将此patch作为每个候选框的卷积特征输入到SPP layer和之后的层;4. 对候选框中提取出的特征,使用分类器判别是否属于一个特定类 ;5. 对于属于某一特征的候选框,用回归器进一步调整其位置。

Faster RCNN:
  1. 对整张图片输进CNN,得到feature map;2. 卷积特征输入到RPN,得到候选框的特征信息;3. 对候选框中提取出的特征,使用分类器判别是否属于一个特定类 ;4. 对于属于某一特征的候选框,用回归器进一步调整其位置。

值得注意的是,尽管RPN与fast rcnn 共享卷积层,但是在模型训练的过程中,需要反复训练RPN网络和fast rcnn 网络(两个网络的核心卷积层是共享的),不能有所偏颇,网络共享主要作用还是推进forward的速度。

CNN结构:用于检测的CNN结构进化-分离式方法相关推荐

  1. CNN结构:用于检测的CNN结构进化-一站式方法

    有兴趣查看原文:YOLO详解 人眼能够快速的检测和识别视野内的物体,基于Maar的视觉理论,视觉先识别出局部显著性的区块比如边缘和角点,然后综合这些信息完成整体描述,人眼逆向工程最相像的是DPM模型. ...

  2. CNN结构:用于检测的CNN结构进化-结合式方法

    原文链接:何恺明团队提出 Focal Loss,目标检测精度高达39.1AP,打破现有记录     呀 加入Facebook的何凯明继续优化检测CNN网络,arXiv 上发现了何恺明所在 FAIR 团 ...

  3. 石墨烯检测方法有哪些,都用于检测什么结构

    石墨烯检测方法有原子力显微镜(AFM).扫描隧道显微镜(STM).X射线衍射(XRD).X射线光电子能谱(XPS).拉曼光谱(Raman)等.它们都可以用于检测石墨烯的结构,如结构尺寸.层厚度.表面形 ...

  4. 结构损伤检测与智能诊断 陈长征_阜康危房检测价格

    房屋完损等级检测 检测项目检查房屋结构.装修和设备的完损状况,确定房屋完损等级. 适用范围房屋评估.房屋管理等需要确定房屋完损程度的房屋. 房屋安全性检测 检测项目检查房屋结构损坏状况,分析判断房屋安 ...

  5. OpenCV使用CNN进行目标检测

    OpenCV使用CNN进行目标检测 使用CNN进行目标检测 建造Building 物体检测 改变门槛 影像分类 使用CNN进行目标检测 建造Building 构建" dnn_objectec ...

  6. 清华开源ResRep:剪枝SOTA!用结构重参数化实现CNN无损压缩 | ICCV 2021

    分享一篇我去年突发奇想做的剪枝paper,已被ICCV-2021接受. 效果是相当SOTA的:ImageNet top1-acc为76.15%的标准ResNet-50(torchvision标准模型) ...

  7. AI:IPPR的模式生成-CNN模块学习/训练方式(基本结构)

    前言:         一个完备的模式识别系统,必然包含一个模式识别模型,此外还要附加一个评价模型,以及为了构建识别模型而构建的学习模型,并选择在学习模型中使用的学习方法.        表示(Rep ...

  8. 深度学习(主要是CNN)用于图片的分类和检测总结

     深度学习(主要是CNN)用于图片的分类和检测总结 2014-12-4阅读920 评论0 前言: 主要总结一下自己最近看文章和代码的心得. 1. CNN用于分类:具体的过程大家都知道,无非是卷积, ...

  9. 实战教程 | 车道线检测项目实战,霍夫变换 新方法 Spatial CNN

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 此文按照这样的逻辑进行撰写.分享机器学习.计算机视觉的基础知识,接着我们以一个实际的项目,带领大家自己 ...

最新文章

  1. 一个实验教会你配置IPv6地址
  2. mysql没法修改数据_MySQL学习笔记之数据的增、删、改实现方法
  3. 【工业控制】UV打印机喷头波形和墨水关系
  4. 【TEG第7年】这里有你和你的永不妥协
  5. java 将一个非空文件夹拷贝到另一个地方
  6. 如何用C++来计算大数字乘法
  7. python 一维数组所有元素是否大于_利用Python进行数据分析(5) NumPy基础: ndarray索引和切片...
  8. (96)FPGA PLL与MMCM区别?
  9. 选择要加载的插件有什么用_为什么/如何PPT形状圆角化,用好这个插件,画出更多神奇形状...
  10. QT界面大小自动变化
  11. 如何在其他类中使用application.properties的属性
  12. android 图片设置圆角
  13. Exchange2003 备份与还原
  14. redhat8安装mysql教程
  15. windows11iis如何安装?
  16. 整体资产评估需要资料清单
  17. c语言中如何输出字节数组,C语言中数组所占字节怎么算
  18. 不得不说的FUP P4K血型卡专用离心机
  19. 读取xls格式的文件
  20. 佰维存储通过注册:拟募资8亿 国家集成电路基金是二股东

热门文章

  1. 解决局域网共享好用脚本集
  2. ceph-deploy install时,远端节点在执行apt-get update命令时失败
  3. 蜗牛爱课- iOS中plist的创建,数据写入与读取
  4. 昨天日志 今天日志的获取方法
  5. Web前端 性能优化
  6. 002 前、中、后序遍历二叉树(递归迭代)
  7. Mysql大数据中表分区的应用
  8. 【TensorFlow官方文档】MNIST机器学习入门
  9. asyncio协程与并发
  10. MySQL针对Swap分区的运维注意点