计算机视觉相关综述整理
计算机视觉与图像识别综述:这是一篇偏科普的通俗型综述,了解相关历史和发展进程,对一些技术有初步的认识。
卷积神经网络综述:作者回顾了从1998年开始,近18年来深度神经网络的架构发展情况。
综述:计算机视觉中RNN应用于目标识别 :论文介绍
目标检测(Object Detection)
任务:目标检测是将定位和识别合二为一,既要检测出物体在图像中的位置,还需要识别出物体的类别。最终需要同时检测和分类多个目标。目标检测是在图像上定位和分类数量可变的对象的问题。与分类问题相比,目标检测的输出数量是可变的,因为对于每幅图来说,检测到的目标数目可能是不同的。
算法评估:准确性和实时性是衡量算法效果的标准。
-
概念:
MAP(mean average precision):每一个类别都可以根据recall和precision绘制一条曲线,那么AP就是该曲线下的面积,而mAP是多个类别AP的平均值,这个值介于0到1之间,且越大越好。这个指标是目标检测算法最为重要的一个。
IOU:交并比——Intersection-over-Union,IoU。目标检测中使用的一个概念,是产生的候选框(candidate bound)与原标记框(ground truth bound)的交叠率,即它们的交集与并集的比值。最理想情况是完全重叠,即比值为1。
IOU=(A∩B)/(A∪B)
NMS(非极大值抑制):目标检测算法一般会给出目标很多的粗略结果,对一个目标成百上千的粗略结果都进行调整肯定是不可行的。那么我们就需要对这些粗略结果先进行一个大体的挑选。挑选出其中最具代表性的结果。再对这些挑选后的结果进行调整,这样可以加快算法效率。消除多余的框,找到最佳的bbox。
边界框回归(Bounding-box regression ):将IOU较小的错误检测框进行调整,使得经过微调后的窗口跟Ground Truth 更接近 。
-
深度学习的方法:
- two-stage detector:以R-CNN为代表;首先找到可能存在物体的候选框,然后对候选框进行类别预测和边界调整,检测准确度高但检测速度慢。
算法:R-CNN、Fast R-CNN、Faster R-CNN、R-FCN等。
- one-stage detector:以YOLO为代表;是以回归的方式直接预测固定数量的候选框,检测准确度较低但检测速度快,能实时检测。
算法:YOLO、YOLOv2、SSD等。
-
基准数据集
-
主要问题:
- 目标的可变数量问题
训练机器学习模型时,通常需要将数据表示成固定大小的向量。由于事先不知道图像中目标的数量,所以我们不知道正确的输出数量。正因为如此,我们需要一些后续处理,这也增加了模型的复杂度。
这种输出数量不定的问题已经使用基于滑动窗口的方法得到了解决,在图片的不同位置得到滑窗的固定大小特征。在得到所有的预测值之后,一些滑窗被丢弃,一些被合并,从而得到最终输出。
- 大小
另一个大挑战是目标的大小不一致问题。当进行简单分类时,我们希望能对占图像比例最大的目标进行分类。另一方面,想要找到的目标可能只有几个像素大小(或只占原始图像的很小一部分)。传统方法使用不同大小的滑动窗口解决了这一问题,这种方法虽然简单但是效率很低。
- 模型
第三个挑战是同时解决两个问题。我们如何将定位和分类这两种不同类型的问题最理想地结合进一个单一模型。
-
算法发展:
传统的滑动窗口的框架:
(1).滑动窗口
- (2).提取特征(SIFT,HOG,LBP)
(3).分类器(SVM)
基于深度学习的目标检测:
- Robust Real-Time Face Detection
2001 年 Paul Viola 和 Michael Jones 在论文《Robust Real-Time Face Detection》中提出的 Viola Jones 框架 。该方法快速并且相对简单,它能做到实时检测,运算量很小。傻瓜相机中的人脸检测算法。。它的工作原理是使用 Haar 特征产生多种(可能有数千个)简单的二进制分类器。这些分类器由级联的多尺度滑动窗口进行评估,并且在出现消极分类情况的早期及时丢弃错误分类。
另一个类似的经典方法是采用 梯度方向直方图 (Histogram of Oriented Gradients,HOG)作为特征,以及支持向量机(SVM)作为分类器。它仍然依赖多尺度滑动窗口,尽管它的效果比 Viola Jones 要好很多,但是速度也慢很多。
Paul A. Viola, Michael J. Jones: Robust Real-Time Face Detection. ICCV 2001
算法创新点:
创新点 作用 积分图 加速haar特征计算的巧妙点子。一劳永逸,去掉特征计算中的冗余。 AdaBoost人脸检测器 特征选择+分类器融合。对adaboost的思想进行合理改造,一个haar特征对应一个弱分类器,弱特征组合成强特征,弱分类器组合成强分类器。 级联结构 由粗到精的检测策略,加速的同时又能保证精度。先在前期用快速算法把大量非人脸去掉,平衡后期慢速的更精细分类开销。 借鉴之处
- cascade的思想。许多检测问题,负类会在样本中占绝大多数比重,可以先在保证正类检测率近100%的情况下,去掉大量负类。再通过更精细的算法继续精准分类。
- 想想算法中有没有冗余计算之处,并加以优化。
- AdaBoost的生命力长青。参考迁移学习中的TrAdaBoost。
- 某些情况下,特征就代表分类器,不需要分得太清。
梯度类型的特征就是牛逼!参考SIFT,HOG,LBP。
深度学习的方法
OverFeat:第一个使用深度学习进行目标检测并取得很大进展的方法是纽约大学在 2013 年提出的 Overfeat ,他们提出了一个使用卷积神经网络(CNN)的多尺度滑动窗口算法。
-
R-CNN:在 Overfeat 提出不久,来自加州大学伯克利分校的 Ross Girshick 等人发表了 基于卷积神经网络特征的区域方法 (Regions with CNN features,R-CNN),它在目标检测比赛上相比其他方法取得了 50%的性能提升。他们提出了一个三阶段的方法:
- 使用区域候选算法提取包含可能目标的区域(最流行的 选择性搜索算法 )
- 使用 CNN 在每个区域上提取特征。
- 使用 支持向量机 对区域进行分类。
虽然该方法取得了很好的结果,但是训练阶段有很多问题。要训练网络,首先要生成训练数据集的候选区域,然后对每一个区域使用 CNN 提取特征(对于 Pascal 2012 训练数据集来说,通常需要生成大于 200GB 的中间文件),最后训练 SVM 分类器。
-
Fast R-CNN:一年以后,Ross Girshick(微软亚洲研究院)发表了 Fast R-CNN ,这个方法迅速演化成一个纯深度学习的方法。与 R-CNN 相似,它也使用选择性搜索来生成候选区域,但与 R-CNN 不同的是,Fast R-CNN 在整张图上使用 CNN 来提取特征,然后在特征图上使用区域兴趣池化(Region of Interest,ROI),并且最后用前馈神经网络来进行分类和回归。这个方法不仅快,而且由于RoI池化层和全连接层的存在,该模型可以进行端到端的求导,并且训练也更容易。最大的不足是该模型仍旧依赖选择性搜索(或者其他的区域候选算法),这也成为了模型推理阶段的一个瓶颈。
-
YOLO:OLO 提出了一个简单的卷积神经网络方法,它取得了很好的结果,并且速度也非常快,第一次实现了实时的目标检测。先前提出的算法都是将检测问题转化为分类解决,而它将检测回归到回归方法,提高实时性能。
-
Faster R-CNN:Faster R-CNN 增加了一个所谓的“区域候选网络(Regio Proosal Network,RPN)”,试图摆脱搜索选择算法,从而让模型实现完全端到端的训练。简单地说,它的作用是根据“属于目标”的分数来输出可能目标。RoI 池化层和全连接层使用这些目标进行分类。
-
SSD 和 R-FCN:
《单帧检测器》 (Single Shot Detector,SSD),它在 YOLO 的基础上进行改良,通过使用多尺度的卷积特征图以达到更好的结果和速度。YOLO S×S的网格就是一个比较启发式的策略,难以检测小目标,借鉴了Faster R-CNN中的Anchor机制,使用了多尺度特征金字塔。
《基于区域的全卷积网络》 (Region-based Fully Convolutional Networks,R-FCN),它使用了 Faster RCNN 的架构,但是只含有卷积网络。
-
发展趋势:
(a)检测精度
如何提高检测精度的指标mAP?代表性的工作是ResNet、ION和HyperNet(b)识别效率:如何提高检测速度?
YOLO:这个工作在识别效率方面的优势很明显,可以做到每秒钟45帧图像,处理视频是完全没有问题的
- (c)定位精度
如何产生更准确的bounding box? 如何逐步提高评价参数IOU?(Pascal VOC中,这个值为0.5)
LocNet:抛弃boundingbox回归,利用概率模型。- 从单纯的一律追求检测精度,到想方法加快检测结果,到最后追求更加准确的结果。侧面反映了目标检测研究的不断进步。
-
参考
人脸识别(Face Recognition/Face Detect)
任务:目标检测的一种狭义类型。关键在于是否拥有尖端的核心算法,并使识别结果具有实用化的识别率和识别速度。
-
方法:人脸图像中包含的模式特征十分丰富,如直方图特征、颜色特征、模板特征、结构特征及Haar特征等。人脸检测就是把这其中有用的信息挑出来,并利用这些特征实现人脸检测。
-
难题:
- 环境光照发生变化时,识别效果会急剧下降。解决光照问题的方案有三维图像人脸识别,和热成像人脸识别。但这两种技术还远不成熟,识别效果不尽人意。
- 相似性、易变性:人脸作为生物特征的特点所带来的的困难。
-
数据库:A Neural Network Face Recognition Assignment(神经网络人脸识别数据)、orl人脸数据库、麻省理工学院生物和计算学习中心人脸识别数据库、埃塞克斯大学计算机与电子工程学院人脸识别数据等。
LFW数据集(Labeled Faces in the Wild)是目前用得最多的人脸图像数据库。该数据集下的六种评测标准:
一,Unsupervised;
二,Image-restricted with no outside data;
三,Unrestricted with no outside data;
四,Image-restricted with label-free outside data;
五,Unrestricted with label-free outside data;
六,Unrestricted with labeled outside data。目前,人工在该数据集上的准确率在0.9427~0.9920。在该数据集的第六种评价标准下(无限制,可以使用外部标注的数据),许多方法已经赶上(超过)人工识别精度,比如face++,DeepID3,FaceNet等。
近两年的结果。本文综述的方法包括:
1,face++(0.9950 );
2,DeepFace(0.9735 );
3, FR+FCN(0.9645 );
4,DeepID(0.9745 );
5,FaceNet(0.9963 );
6,baidu的方法(0.9977 );
7, pose+shape+expression augmentation(0.9807);
8,CNN-3DMM estimation(0.9235 ,准确率没那么高,但是值得参考)。
随着深度学习的发展,在LFW上的结果也不断更新,如上表所示。到现阶段(在LFW都是0.99+),LFW已经不能很好的体现人脸识别算法的能力,首先是LFW测试集本身量级太少,就6000对,0.1个百分点对应也就是6对图像;其次测试集为名人数据,有可能出现在训练数据中(爬虫处理等),例如中科院整理的训练数据集就有三个人和测试集一样;
目前人脸识别比较权威的测试集是MS-Celeb-1M和megaface,在此上刷出成绩确实体现了算法能力。
-
常用算法:
基于人脸特征点的识别算法(Feature-based recognition algorithms)。
基于整幅人脸图像的识别算法(Appearance-based recognition algorithms)。
基于模板的识别算法(Template-based recognition algorithms)。
利用神经网络进行识别的算法(Recognition algorithms using neural network)。
完整综述文章:基于深度学习的人脸识别技术综述