谈论图像识别时在谈论什么?

「图像识别」是人每天自然而然会做的事情,比如早上起来洗脸刷牙,我们可以很轻松的判断出浴室柜上哪个是牙膏、哪个是洗手液,看起来很直接,人类却经过了数亿年才获得如此强大的大脑,对于各种物体才有了如此精准的视觉理解力。计算机没有办法像人一样「看」到整个场景,它只能一步步来,一张图片对它而言是一张3维的大矩阵,包含很多像素点,每个像素点又有红绿蓝3个颜色通道的值,每个值在0-255之间,它需要根据这些信息来判断这是什么。

其实人也是拿看到的景象与头脑中的模式去匹配,比如最近家里买了一些按压瓶子的牙膏,样子真的很像洗手液瓶子,我有时用的时候就会去确认一下。

以下问题都属于「计算机视觉」范畴。

图像分类

图像分类是根据不同物体在图像中反映的不同特征,把不同类别的目标区分开来,所以如何提取图像的特征至关重要。

世界各地经常会举办多种多样的图像分类比赛,PASCAL VOC是2005年发起的一个视觉挑战赛,而ILSVRC大规模视觉识别竞赛从2010年开始,ImageNet是ILSVRC的数据集,约有1400万张图像,拥有超过20000个图像标签,由斯坦福大学计算机视觉实验室维护。

图像分类领域大量的研究成果都是建立在PASCAL VOC、ImageNet等公开的数据集上,很多图像分类算法通常在这些数据集上进行测试和比较。

在2012年之前的传统图像分类方法可以用底层特征抽取、特征编码、分类器设计三步完成,但通常完整建立图像识别模型一般包括底层特征学习、特征编码、空间约束、分类器设计、模型融合等几个阶段。

底层特征提取,通常从图像中按照固定步长、尺度提取大量局部特征描述。常用的局部特征包括SIFT(Scale-Invariant Feature Transform, 尺度不变特征转换)、HOG(Histogram of Oriented Gradient, 方向梯度直方图)、LBP(Local Bianray Pattern, 局部二值模式)等,一般采用多种特征描述,防止丢失过多的有用信息。

特征编码,底层特征中包含了大量冗余与噪声,为了提高特征表达的鲁棒性,需要使用一种特征变换算法对底层特征进行编码,称作特征编码。常用的特征编码包括向量量化编码、稀疏编码、局部线性约束编码、Fisher向量编码等。

空间特征约束,特征编码之后一般会经过空间特征约束,也称作特征汇聚。特征汇聚是指在一个空间范围内,对每一维特征取最大值或者平均值。金字塔特征匹配是一种常用的特征聚会方法,这种方法提出将图像均匀分块,在分块内做特征汇聚。

通过分类器分类,经过前面步骤之后一张图像可以用一个固定维度的向量进行描述,接下来就是经过分类器对图像进行分类。通常使用的分类器包括SVM(Support Vector Machine, 支持向量机)、随机森林等。而使用核方法的SVM是最为广泛的分类器,在传统图像分类任务上性能很好。这种方法在PASCAL VOC竞赛中的图像分类算法中被广泛使用。NEC实验室在ILSVRC2010中采用SIFT和LBP特征,两个非线性编码器以及SVM分类器获得图像分类的冠军。

2012年Alex Krizhevsky突破性的提出AlexNet的网络结构,借助深度学习的算法,将图像特征的提取、筛选和分类三个模块集成于一体,设计5层卷积层加3层全连接层的深度卷积神经网络结构,逐层对图像信息进行不同方向的挖掘提取,譬如浅层卷积通常获取的是图像边缘等通用特征,深层卷积获取的一般是特定数据集的特定分布特征。AlexNet以15.4%的创纪录低失误率夺得2012年ILSVRC的年度冠军,值得一提的是当年亚军得主的错误率为26.2%。AlexNet超越传统机器学习的完美一役被公认为是深度学习领域里程碑式的历史事件,一举吹响了深度学习在计算机领域爆炸发展的号角。

图像中的物体检测

图像分类任务的实现可以让我们粗略的知道图像中包含了什么类型的物体,但并不知道物体在图像中哪一个位置,也不知道物体的具体信息,在一些具体的应用场景比如车牌识别、交通违章检测、人脸识别、运动捕捉,单纯的图像分类就不能完全满足我们的需求了。

图像中的目标检测涉及识别各种子图像并且围绕每个识别的子图像在周围绘制一个边界框,这个问题与分类相比稍微复杂一点,必须对图像进行更多的操作和处理。

一个典型的案例是利用HOG(Histogram of Gradient)特征来生成各种物体相应的“滤波器”,HOG滤波器能完整的记录物体的边缘和轮廓信息,利用这一滤波器过滤不同图片的不同位置,当输出响应值幅度超过一定阈值,就认为滤波器和图片中的物体匹配程度较高,从而完成了物体的检测。

四年后参与物体检测工作的Ross B. Girishick已经成长为AI行业内独当一面的神级人物,他继承了深度学习先驱的意志,在2014年CVPR会议上发表题为Rich Feature Hirarchies for Accurate Object Detection and Semantic Segmentation的文章。RCNN,一时无两,天下皆知。

RCNN的核心思想在于将一个物体检测任务转化为分类任务,RCNN的输入为一系列利用selective search算法从图像中抽取的图像块,我们称之为region proposal。

经过warping处理,region proposals被标准化到相同的尺寸大小,输入到预先训练好并精细调参的卷积神经网络中,提取CNN 特征。得到了每一个proposal的CNN特征后,针对每一个物体类别,训练一个二分类器,判断该proposal是否属于该物体类别。2015年,为了缩短提取每一个proposal的CNN特征的时间,Girishick借鉴了Spatial Pooling Pyramid Network(SPPnet)中的pooling技术,首先利用一整幅图像提取CNN特征图谱,再在这张特征图谱上截取不同的位置的proposal,从而得到不同尺寸的feature proposals,最后将这些feature proposals通过SPPnet标准化到相同的尺寸,进行分类。这种改进,解决了RCNN中每一个proposal都需要进行CNN特征抽取的弊端,一次性在整图上完成特征提取,极大的缩短了模型的运行时间,因而被称作「Fast R-CNN」,同名文章发表于ICCV 2015会议。

2015年,Girishick大神持续发力,定义RPN(region-proposal-network)层,取代传统的region proposal截取算法,将region proposal的截取嵌入深度神经网络中,进一步提高了fast R-CNN的模型效率,因而被称作「Faster R-CNN」,在NIPS2015上Girishick发表了题为「Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks」的关键文章。

图像分割

图像分割的目标是对图像中的不同对象进行分类,并确定对象边界。它使用了一种叫做Mask R-CNN的技术,实际上就是前面看到的R-CNN技术上的几个卷积层。

还有一个概念——光学字符识别

OCR(Optical character recognition)光学字符识别,是对扫描文档、文本或场景文字照片等进行处理,获取其中的字符的操作。OCR广泛应用于银行卡号识别、身份证识别、快递单号识别、扫描文档字符识别、验证码识别、文本电子化等场景。OCR是一个多学科交叉领域,涉及到计算机视觉、机器学习、神经网络等方面的知识。

最近试用了一下「Tesseract」,1985年惠普开发的一个专利软件,2005以后交由Google维护,识别的效果不错。目前在想,对于一张复杂点的图片,如何找到特定信息呢?比如先找到「小明」这个用户名,再识别小明右边的得分。

参考来源:图鸭Tucodec、PaddlePaddle

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180128G0LGXY00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励