人工智能如何“看懂世界”


深度学习是机器学习的一个重要分支,是人工智能重要实现方法之一。机器学习在近四十年来发生了巨大的变化:从20世纪80年代符号学习的盛行到九十年代统计学习一统天下,再到近年来深度学习的出现。对比机器学习的发展历程,深度学习只是机器学习中一个新兴的课题。由于计算能力的发展和大数据的支持,深度学习取得了突破性的进展,被广泛应用于图像语音、视频和自然语言等各个领域。

人工智能通过图像来看懂事物,理解世界。其中一个重要的技术环节就是图像的多目标检测。本文将对多目标检测的方法进行简单介绍,本文内容全部内容均摘自书籍“《深度学习入门与实践》龙飞王永兴著清华出版社”第四章。书中有更全面的讲解和全部的验证代码。

 

人工智能如何“看懂世界”


4.35Faster R-CNN目标检测结果

(图片摘自《深度学习入门与实践》龙飞王永兴著清华出版社)

目前目标检测方向性能较好的技术有FasterR-CNN、YOLO和SSD等。Faster R-CNN是R-CNN和FastR-CNN的改进版,可以说R-CNN、Fast R-CNN和Faster R-CNN是同一系列的算法,而YOLO和SSD与Faster R-CNN相比在精度和检测时间上各有所长。

Fast R-CNN在R-CNN的基础上性能确实提升不少,但是对于整个算法来说,寻找推荐区域已经成为一个瓶颈。Fast R-CNN和R-CNN都依赖于区域推荐算法来寻找推荐区域,使得整个目标检测算法被分割成了两个串行的阶段,从而降低了效率。

有鉴于此,Faster R-CNN用深度神经网络取代区域推荐算法来产生推荐区域,而这个神经网络正是FastR-CNN用于特征提取的深度卷积网络。该网络加上两个额外的卷积层即为产生推荐区域的神经网络,被称为RPN(RegionProposal Network)。

人工智能如何“看懂世界”

4.32 Faster R-CNN算法实现架构

(图片摘自《深度学习入门与实践》龙飞王永兴著清华出版社)

虽然Faster R-CNN已经将R-CNN这一系列算法的性能推到了极致,但其基本思路依然是先预测推荐区域,再判断类别,精修位置。与R-CNN相比,Faster R-CNN的速度已然提高了不少。但是囿于R-CNN的这种框架,Faster R-CNN的准确率虽然已经非常可观,速度却依然不能尽如人意。

有鉴于此,Girshick再次出手,提出了You Only Look Once算法,并起了个很娱乐化的名字YOLO。YOLO使用单个神经网络直接从整张图片的卷积特征中预测边框和分类,将目标检测问题重构为单一的回归问题,这样就可以省去R-CNN系列算法各构件单独训练的时间,从而达到很高的检测效率。整个检测过程就好像人类扫一眼图片就能把图中所有的物体都识别出来一样,所以称为“你只看一眼”(You Only Look Once)算法。

人工智能如何“看懂世界”人工智能如何“看懂世界”

4.36YOLO算法原理

(图片摘自《深度学习入门与实践》龙飞王永兴著清华出版社)

如前所述,YOLO打破了R-CNN系列算法先寻找推荐区域,再判断类别的架构,采用单个神经网络来预测边框位置并判明类别。这样做与采用VGG的Faster R-CNN相比,检测精度虽然有所下降,但是检测速率大幅度提升。SSD借鉴了YOLO的一些思想,不仅使得检测精度与使用VGG的Faster R-CNN相当,速度比YOLO还有所提升。

SSD依然使用单个神经网络来预测边框的位置并判断类别。与YOLO不同的是,SSD利用了神经网络中不同层的特征图来预测边框和类别,这样可以利用不同尺度的特征图,在更广的范围上检测物体。具体做法为:使用VGG截去分类层作为基础网络,并在基础网络之后添加额外的若干卷积层。这些卷积层的尺寸递减,以允许不同尺度范围的预测。同YOLO类似,SSD在特征图的每个网格上分配一系列固定大小的边框,称为默认边框(default box),如图4.37中虚线框所示(《深度学习入门与实践》书中第四章)。不同层特征图的尺寸不同,如8×8或4×4。对于每一个默认边框,需要预测其边框形状及坐标,还有其归属于每个类的置信度。

人工智能如何“看懂世界” 

如图4.37SSD架构图

(图片摘自《深度学习入门与实践》龙飞王永兴著清华出版社)

SSD算法在精度上超过了YOLO,在检测速度上也优于YOLO, 通过实验SSD算法模型准确的检测出上图人物和车辆的位置,边框的位置非常准确,并以很高的置信度映射了标签。同样的测试图片用前面的Faster R-CNN算法检测的运行时间为1134.771秒,而使用SSD算法只需要3.18秒。以上所有数据均节选自书籍“《深度学习入门与实践》龙飞王永兴著清华出版社”。除此之外,此书中还有更多关于图像分类和图像识别的样例讲解和代码分析,以及阿尔法围棋(AlphaGo)的基本原理、深度学习常用算法的总结等重要知识,