2.2 深度学习在视觉上的应用
计算机视觉中比较成功的深度学习的应用,包括人脸识别、图片问答问题、物体检测问题、物体跟踪。
2.2.1 人脸识别
这里说人脸识别中的人脸比对,即得到一张人脸,与数据库里的人脸进行比对;或同时给两张人脸,判断是不是同一个人。
这方面比较超前的是汤晓鸥教授,他们提出的DeepID算法在LWF上做得比较好。他们也是用卷积神经网络,在做比对时,两张人脸分别提取了不同位置特征,然后进行互相比对,得到最后的比对结果。最新的DeepID-3算法,在LWF达到了99.53%的准确度,与肉眼识别结果相差无几。
2.2.2 图片问答问题
这是2014年左右兴起的课题,即给张图片同时问出问题,然后让计算机回答。图片问答问题效果图如图2-8所示,有一个办公室靠海的图片,然后问“What is behind the table?(桌子后面有什么?)”,神经网络输出应该是“chairs window(椅子和窗户)”。
图2-8 图片问答问题效果图
这一应用引入了LSTM网络,这是一个专门设计出来具有一定记忆能力的神经单元。特点是,会把某一个时刻的输出作为下一个时刻的输入。可以认为它比较适合语言等,有时间序列关系的场景。因为我们在读一篇文章和句子的时候,对句子后面的理解是基于前面对词语的记忆。
图像问答问题是基于卷积神经网络和LSTM单元的结合,来实现图像问答的。LSTM网络输出就应该是想要的答案,而输入的就是上一个时刻的输入,以及图像的特征,即问句的每个词语。
2.2.3 物体检测问题
1.Region CNN
深度学习在物体检测方面也取得了非常好的成果。2014年的Region CNN算法,基本思想是首先用一个非深度的方法,在图像中提取可能是物体的图像块,然后深度学习算法根据这些图像块,判断属性和一个具体物体的位置,如图2-9所示。
图2-9 CNN分类
为什么要用非深度的方法先提取可能的图像块?因为在进行物体检测的时候,如果用户用扫描窗的方法进行物体检测,则要考虑扫描窗大小的不一样,长宽比和位置的不一样,如果每一个图像块都要过一遍深度网络,那么这种时间是用户无法接受的。
所以用了一个折中的方法,叫Selective Search。先把完全不可能是物体的图像块去除,只剩2000左右的图像块放到深度网络里面判断。取得的成绩AP是58.5,比以往几乎翻了一倍。有一点不尽如人意的是,Region CNN的速度非常慢,需要10~45s处理一张图片。
2.Faster R-CNN
Faster R-CNN是一个超级加速版R-CNN方法。它的速度达到了每秒七帧,即一秒钟可以处理七张图片。技巧在于不是用图像块来判断是物体还是背景的,而是把整张图片一起扔进深度网络里,让深度网络自行判断哪里有物体,物体的方块在哪里,种类是什么。经过深度网络运算的次数从原来的2000次降到一次,速度大大提高了。
Faster R-CNN提出了让深度学习自己生成可能的图像块,再用同样深度网络来判断图像块是否是背景?同时进行分类,还要把边界和估计出来。
Faster R-CNN可以做到又快又好,在VOC2007上检测AP达到73.2,速度也提高了200~300倍。
3.YOLO
Facebook提出来的YOLO网络,也是进行物体检测的,最快达到每秒钟155帧,达到了完全实时。它让一整张图像进入到神经网络,让神经网络自己判断这物体可能在哪里,可能是什么。但它缩减了图像块的个数,从原来Faster R-CNN的2000多个缩减到了98个,YOLO结构图如图2-10所示。
图2-10 YOLO结构图
同时取消了Faster R-CNN里面的RPN结构,代替Selective Search结构。YOLO里面没有RPN这一步,而是直接预测物体的种类和位置。
YOLO的代价就是精度下降,在每秒155帧时精度只有52.7,每秒45帧时的精度是63.4。
4.SSD
在arXiv上出现的最新算法称为Single Shot MultiBox Detector,即SSD。SSD结构图如图2-11所示。
图2-11 SSD结构图
SSD是YOLO的超级改进版,吸取了YOLO的精度下降的教训,同时保留速度快的特点。它能达到每秒58帧,精度有72.1。速度超过Faster R-CNN速度的8倍,但达到类似的精度。
2.2.4 物体跟踪
物体跟踪就是在视频里面第一帧时锁定感兴趣的物体,让计算机跟着走,不管怎么旋转晃动,甚至躲在树丛后面也要跟踪。