computer vision
procedure:
1 | graph LR |
object detection:
传统目标检测方法
Selective Search
Deformable Part Model
One - stage:
单一网络模型,同时进行物体位置和类别分类
直接在输入图像上生成候选目标框,并利用分类器进行分类
采用单阶段一次完成的方式,因此速度较快,计算成本较低
Bads: 在小目标的定位和检测上,由于候选框过于密集,容易产生较高的误检率
主要代表算法:YOLO (you only look once),SSD (single shot multibox dectector),RetinaNetTwo - stage:
含两个独立网络模型:生成候选目标框的区域建议网络(region proposal network, RPN)和对这些框进行分类和边界框回归的网络
先利用RPN生成候选框,然后再对这些框进行分类和定位
精度更高,减少误检率,在大目标和复杂场景中,能够更好的检测性能
Bads: 需要两个阶段的计算,因此速度较慢,计算成本更高
主要代表算法:faster R-CNN (region convolutional neural network), mask R-CNN
R-CNN的发展:
Two-stage detection 的代表
- stage I: R-CNN。Ross Grishick 2013 首次将深度神经网络应用到目标检测。
先使用selective search算法提取2000个候选框,然后通过卷积网络对候选框进行串行的特征提取,再根据提取的特征使用SVM对候选框进行分类预测,最后使用回归方法对区域框进行修正。
bads:- selective search 每个region费时2s;
- 串行提取特征;
- 三个模块(CNN特征提取、SVM分类和边框修正)分别训练的,存储空间需求大
- stage II: fast R-CNN。 Ross Grishick 2015
直接使用一个神经网络对整个图像进行特征提取,就省去了串行提取特征的时间;接着使用一个RoI Pooling Layer在全图的特征图上摘取每一个RoI对应的特征,再通过FC进行分类和包围框的修正
Bads: selective search 仍存在 - stage III: faster R-CNN。 Shaoqing Ren 2015
将selective search算法替换成为RPN(Region Proposal Network),使用RPN网络进行region的选取,将2s的时间降低到10ms
bads: 速度比selective search快很多,但精度相对不及 - stage IV: mask R-CNN。 Kaiming He 2017
在Faster R-CNN的结构基础上加上了Mask预测分支,并且改良了ROI Pooling,提出了ROI Align。实现了目标分类、目标检测、像素级分割
bads:分类框与预测掩膜共享评价函数,有的时候会对分割结果有所干扰 - stage V: mask scoring R-CNN。 Zhaojin Huang 2019
Mask R-CNN评价函数只对目标检测的候选框进行打分,而不是分割模板,所以黄同学增加了对模板进行打分的MaskIoU Head
bads:整个网络有些庞大,一方面需要ResNet当作主干网络,另一方面需要其它各种Head共同承担各种任务 - stage VI: cascade R-CNN。 Zhaowei Cai 2019
变 two-stage为multi-stage, 对每一阶段采取递增的IoU进行训练,减少mismatch的情况
SPP-net
Kaiming He 2014 首先提出空间金字塔池化,解决了R-CNN中每一个region proposal都要过一次CNN的缺点,直接对整张图片过一次CNN提取特征,然后在CNN的feature map上进行候选区域框定和特征向量化。这一方法被吸收到fast R-CNN上。
Yolo 的发展
one-stage detection的开山之作。之前的物体检测方法均是基于先产生候选区再检测的方法,虽然有相对较高的检测准确率,但运行速度较慢。YOLO创造性的将物体检测任务直接当作回归问题(regression problem)来处理,将候选区和检测两个阶段合二为一。只需一眼就能知道每张图像中有哪些物体以及物体的位置。
- Stage I:YOLO Joseph Redmon 2015
首先,将整个图像分成S × S 的小格子(cell),对于每个格子,分别预测B 个bbox,以及C 个类别的条件概率(注意是条件概率,即已经确定有目标的情况下,该目标属于哪个类别的概率,因此不需要对每个bbox 分别预测类别,每个格子只预测一个概率向量即可)。每个bbox 都有5 个变量,分别是四个描述位置坐标的值,以及一个objectness,即是否有目标(相当于RPN 网络里的那个前景/背景预测)。这样一来,每个格子需要输出5B+C 维度的向量,因此,CNN 最终的输出的tensor 的形态为S × S × (5B + C)
Bads: 网格稀疏,每个cell的bbox也只有2个;对于小物体检测不灵敏,定位准确性差 - stage II:YOLOv2(YOLO9000) Joseph Redmon 2016
采用Darknet-19而非vgg-16做backbone,利用层级结构的标签WordTree,从而使得YOLOv2能够识别9000+类别物体。 - stage III:YOLOv3 Joseph Redmon 2018
在Darknet-19基础上引入了残差块,加深网络至53个卷积层,取名Darknet-53。采用FPN网络,对最后3层特征图分别进行独立预测,用k-means聚类9种anchor box然后均匀分配给3种特征层。同时采用单类别的binary logistic来分类,代替全类别的softmax,有利于处理目标重叠的情况。
SSD
RetinaNet
Useful links:
图像目标检测算法总结(从R-CNN到YOLO v3) - 知乎 (zhihu.com)
最全综述 | 图像目标检测 - 知乎 (zhihu.com)
negative sampling:负采样,永远的神! (360doc.com)
遥感图像目标检测(含遥感数据链接):(11 封私信 / 80 条消息) 研一,遥感图像目标检测,一直感觉云里雾里,代码能力也很差,这个该怎么入门,大佬们有什么推荐的网课吗? - 知乎 (zhihu.com)
遥感应用软件:ENVI,ARCGIS,MapInfo
ResNet: deep residual neural network (He 2015: [1512.03385] Deep Residual Learning for Image Recognition (arxiv.org))
RetinaNet: an efficient object detection network based on ResNet (Lin 2017: Focal Loss for Dense Object Detection | IEEE Conference Publication | IEEE Xplore)