做目标检测,这一篇就够了!2019全面目标检测指南
作者:媒体转发 时间:2019-08-01 16:50

大数据文摘出品
编译:张睿毅、宁静
计算机视觉是一门研究如何对数字图像或视频进行高层语义理解的交叉学科,它赋予机器“看”的智能,需要实现人的大脑中(主要是视觉皮层区)的视觉能力。
想象一下,如果我们想为盲人设计一款导盲产品,盲人过马路时系统摄像机拍到了如下的图像,那么需要完成那些视觉任务呢?

图像分类:为图片中出现的物体目标分类出其所属类别的标签,如画面中的人、楼房、街道、车辆数目等;
目标检测:将图片或者视频中感兴趣的目标提取出来,对于导盲系统来说,各类的车辆、行人、交通标识、红绿灯都是需要关注的对象;
图像语义分割:将视野中的车辆和道路勾勒出来是必要的,这需要图像语义分割技术做为支撑,勾勒出图像物体中的前景物体的轮廓;
场景文字识别:道路名、绿灯倒计时秒数、商店名称等,这些文字对于导盲功能的实现也是至关重要的。
以上已经囊括了计算机视觉(CV)领域的四大任务,在CV领域主要有八项任务,其他四大任务包括:图像生成、人体关键点检测、视频分类、度量学习等。
目标检测作为CV的一大任务之一,其对于图片的理解也发挥着重要的作用,在本文中,我们将介绍目标检测的基础知识,并回顾一些最常用的算法和一些全新的方法。(注:每个小节展示的论文图片,均在节末给出了具体的链接)
目标检测如何运作
目标检测定位图像中物体的位置,并在该物体周围绘制边界框,这通常涉及两个过程,分类物体类型,然后在该对象周围绘制一个框。现在让我们回顾一下用于目标检测的一些常见模型架构:
R-CNN
Fast R-CNN
Faster R-CNN
Mask R-CNN
SSD (Single Shot MultiBox Defender)
YOLO (You Only Look Once)
1. R-CNN
该技术结合了两种主要方法:将高容量卷积神经网络应用于自下而上的候选区域,以便对物体进行局部化和分割,并监督辅助任务的预训练。接下来是特定领域的微调,从而产生高性能提升。论文的作者将算法命名为R-CNN(具有CNN特征的区域),因为它将候选区域与卷积神经网络相结合。

模型接收图像并提取约2000个自下而上的候选区域,然后,它使用大型CNN计算每个候选区域的特征,此后,它使用特定类的线性支持向量机(SVM)对每个区域进行分类,该模型在PASCAL VOC 2010上实现了53.7%的平均精度。
模型中的物体检测系统有三个模块:第一个负责生成与类别无关的候选区域,这些候选区域定义了模型检测器可用的候选检测器集;第二个模块是一个大型卷积神经网络,负责从每个区域提取固定长度的特征向量;第三个模块由一类支持向量机组成。

模型内部使用选择性搜索来生成区域类别,选择性搜索根据颜色、纹理、形状和大小对相似的区域进行分组。对于特征提取,该模型通过在每个候选区域上应用Caffe CNN(卷积神经网络)得到4096维特征向量,227×227 的RGB图像,通过五个卷积层和两个全连接层前向传播来计算特征,节末链接中的论文解释的模型相对于PASCAL VOC 2012的先前结果实现了30%的改进。
R-CNN的一些缺点是:
训练是一个多阶段的任务,调整物体区域的卷积神经网络,使SVM(支持向量机)适应ConvNet(卷积网络)功能,最后学习边界框回归;
训练在空间和时间上都很昂贵,因为VGG16是占用大量空间的深层网络;
目标检测很慢,因为它为每个候选区域都要执行ConvNet前向传播。
相关论文和参考内容链接:
https://arxiv.org/abs/1311.2524?source=post_page
?source=post_page
https://heartbeat.fritz.ai/a-beginners-guide-to-convolutional-neural-networks-cnn-cf26c5ee17ed?source=post_page
2. Fast R-CNN
下图中展示的论文提出了一种基于快速区域的卷积网络方法(Fast R-CNN)进行目标检测,它在Caffe(使用Python和C ++)中实现,该模型在PASCAL VOC 2012上实现了66%的平均精度,而R-CNN则为62%。

与R-CNN相比,Fast R-CNN具有更高的平均精度,单阶段训练,更新所有网络层的训练,以及特征缓存不需要磁盘存储。



