所谓计算机视觉,即compute vision,就是通过用计算机来模拟人的视觉工作原理,来获取和完成一系列图像信息处理的机器。计算机视觉属于机器学习在视觉领域的应用,是一个多学科交叉的研究领域,涉及数学,物理,生物,计算机工程等多个学科,由此也可以想象到计算机视觉的研究范围非常广,也是图像,语音,自然语言处理领域中从业人数最多的。
图像分类
1.1 基本概念
图像分类是计算机视觉中最基础的一个任务,也是几乎所有的基准模型进行比较的任务,从最开始比较简单的10分类的灰度图像手写数字识别mnist,到后来更大一点的10分类的cifar10和100分类的cifar100,到后来的imagenet,图像分类任务伴随着数据库的增长,一步一步提升到了今天的水平。
现在在imagenet这样的超过1000万图像,2万类的数据集中,计算机的图像分类水准已经超过了人类。
图像分类,顾名思义,就是一个模式分类问题,它的目标是将不同的图像,划分到不同的类别,实现最小的分类误差。
总体来说,对于二分类的问题,图像分类可以分为跨物种语义级图像分类,子类细粒度图像分类,以及实例级图像分类三大类别。
传统机器学习方法:
通过各种经典的特征算子+经典分类器组合学习,比如HoG+SVM。
深度学习方法:
各种分类网络,最为大家熟知的就是ImageNet竞赛了。
2012年Alexnet诞生,意味着GPU训练时代的来临。
Alexnet是第一个真正意义上的深度网络,与LeNet5的5层相比,它的层数增加了3 层,网络的参数量也大大增加,输入也从32变成了224。
2014年VGG诞生,它共包含参数约为550M。全部使用3*3*的卷积核*和2*2的最大池化核,简化了卷积神经网络的结构。VGG很好的展示了如何在先前网络架构的基础上通过增加网络层数和深度来提高网络的性能,网络虽然简单,但是却异常的有效,在今天VGG仍然被很多的任务选为基准模型。
同一年GoogleNet诞生,也被成为Inception Model,它的核心是Inception Module。一个经典的inception 结构,包括有四个成分,1*1卷积,3*3 卷积, 5*5 卷积,3*3 最大池化,最后对运算结果进行通道上组合,可以得到图像更好的表征。自此,深度学习模型的分类准确率已经达到了人类的水平(5%~10%)。
2015年,ResNet被提出。ResNet以 3.57%的错误率表现超过了人类的识别水平,并以152层的网络架构创造了新的模型记录。由于resnet采用了跨层连接的方式,它成功的缓解了深层神经网络中的梯度消散问题,为上千层的网络训练提供了可能。
2016年ResNeXt诞生,101层的ResNeXt可以达到ResNet152 的精确度,却在复杂度上只有后者的一半,核心思想为分组卷积。即首先将输入通道进行分组,经过若干并行分支的非线性变换,最后合并。
在resnet基础上,密集连接的densenet将前馈过程中将每一层与其他的层都连接起来。对于每一层网络来说,前面所有网络的特征图都被作为输入,同时其特征图也都被其他网络层作为输入所利用。
2017年,也是imagenet图像分类比赛的最后一年,senet获得了冠军。这个结构,仅仅使用了“特征重标定”的策略来对特征进行处理,也就是通过学习获取每个特征通道的重要程度,根据重要性去抑制或者提升相应的特征。
1.2 方向特点
图像分类的比赛基本落幕,也接近算法的极限。但是在实际的应用中却面临着比比赛中更加复杂,比如样本不均衡,分类界面模糊,未知类别等。如果想了解更多,请查看往期文章。
【技术综述】你真的了解图像分类吗?
目标检测
2.1 基本概念
分类任务给出的是整张图片的内容描述,而目标检测任务则关注图片中特定的目标。
检测任务包含两个子任务,其一是这一目标的类别信息和概率,它是一个分类任务。其二是目标的具体位置信息,这是一个定位任务。
与计算机视觉领域里大部分的算法一样,目标检测也经历了从传统的人工设计特征和浅层分类器的思路(以),到大数据时代使用深度神经网络进行特征学习的思路。
在传统方法时代,很多的任务不是一次性解决,而是需要多个步骤的。而深度学习时代,很多的任务都是采用End-To-End的方案,即输入一张图,输出最终想要的结果,算法细节和学习过程全部丢给了神经网络,这一点在物体检测这个领域,体现得尤为明显。
不管是清晰地分步骤处理,还是深度学习的end-to-end的方法,目标检测算法一定会有3个模块。第一个是检测窗口的选择,第二个是图像特征的提取,第三个是分类器的设计。
2.2 方法分类
传统机器学习方法:
以保罗·维奥拉和迈克尔·琼斯于2001年提出的维奥拉-琼斯目标检测框架为代表,这是第一篇基于Haar+Adaboost的检测方法,也是首次把检测做到实时的框架,此方法在opencv中被实现为cvHaarDetectObjects(),是opencv中最为人熟知的目标检测方法。速度非常快,检测召回率相对如今的算法较低。
深度学习方法:
仍然要解决区域选择、提取特征、分类回归三个问题。但是在演变过程中,却发展出了multi-stage和one-stage的方法。其中multi-stage方法,是分步骤完成上面的任务,甚至可能需要单独训练各个网络。而one-stage则是一步到位。
RCNN的框架是multi-stage方法的典型代表。它使用了Selective search先生成候选区域再检测,候选窗口的数量被控制在了2000个左右。选择了这些图像框之后,就可以将对应的框进行resize操作,然后送入CNN中进行训练。由于CNN非常强大的非线性表征能力,可以对每一个区域进行很好的特征表达,CNN最后的输出,使用多个分类器进行分类判断。该方法将PASCAL VOC上的检测率从 35.1% 提升到了53.7%,其意义与Alexnet在2012年取得分类任务的大突破是相当的,对目标检测领域影响深远。
随后Fast R-CNN提出RoIPooling从整图对应的卷积特征图选取区域特征,解决了重复提取特征的问题。Faster R-CNN则提出Region Proposal, anchors把一张图片划分成n*n个区域,每个区域给出9个不同ratio和scale的proposal,解决了重复提取候选proposal的问题。RCNN系列在工业届应用非常广泛,因此从事目标检测的同学必须掌握。
除了multi-stage方法,还有one-stage方法。以YOLO为代表的方法,没有显式的候选框提取过程。它首先将图片resize到固定尺寸,将输入图片划分成一个7x7的网格,每个网格预测2个边框,对每一个网络进行分类和定位。YOLO方法也经过了许多版本的发展,从YOLO v2到YOLO v3。YOLO的做法是速度快,但是会有许多漏检,尤其是小的目标。所以SSD就在 YOLO的基础上添加了Faster R-CNN的Anchor 概念,并融合不同卷积层的特征做出预测。虽然YOLO和SSD系列的方法没有了region proposal的提取,速度更快,但是必定会损失信息和精度。
2.3 方向特点
目标检测方向有一些固有的难题,比如小脸,遮挡,大姿态。
而在方法上,多尺度与级联网络的设计,难样本的挖掘,多任务loss等都是比较大的研究小方向,咱们也写过一些文章,感兴趣的朋友可以去翻。
图像分割
3.1 基础概念
图像分割属于图像处理领域最高层次的图像理解范畴。所谓图像分割就是把图像分割成具有相似的颜色或纹理特性的若干子区域,并使它们对应不同的物体或物体的不同部分的技术。这些子区域,组成图像的完备子集,又相互之间不重叠。
在图像处理中,研究者往往只对图像中的某些区域感兴趣,在此基础上才有可能对目标进行更深层次的处理与分析,包括对象的数学模型表示、几何形状参数提取、统计特征提取、目标识别等。
传统方法:
图像分割问题最早来自于一些文本的分割,医学图像分割。在文本图像分割中,我们需要切割出字符,常见的问题包括指纹识别,车牌识别;由于这一类问题比较简单,因为基于阈值和聚类的方法被经常使用。
基于阈值和聚类的方法虽然简单,但因此也经常失效。以graphcut为代表的方法,是传统图像分割里面鲁棒性最好的方法。Graphcut的基本思路,就是建立一张图,其中以图像像素或者超像素作为图像顶点,然后移除一些边,使得各个子图不相连从而实现分割。图割方法优化的目标是找到一个切割,使得移除边的和权重最小。
深度学习方法:
全卷积神经网络(Fully connected Network)是第一个将卷积神经网络正式用于图像分割问题的网络。
一个用于分类任务的深度神经网络通过卷积来不断抽象学习,实现分辨率的降低,最后从一个较小的featuremap或者最后的特征向量,这个featuremap通常为5*5或者7*7等大小。而图像分割任务需要恢复与原尺度大小一样的图片,所以,需要从这个featuremap恢复原始图片尺寸,这是一个上采样的过程。由于这个过程与反卷积是正好对应的逆操作,所以我们通常称其为反卷积。
实际上并没有反卷积这样的操作,在现在的深度学习框架中,反卷积通常有几种实现方式,一个是双线性插值为代表的插值法,一个是转置卷积。
3.2 方向特点
在基于深度学习的图像分割中,有一些比较关键的技术,包括反卷积的使用,多尺度特征融合,crf等后处理方法。
多尺度与上下文信息:
多尺度的信息融合可以从特征图,还可以直接采用多尺度的输入图像,不过这两者本质上没有太多的差异。使用金字塔的池化方案可实现不同尺度的感受野,它能够起到将局部区域上下文信息与全局上下文信息结合的效果。对于图像分割任务,全局上下文信息通常是与整体轮廓相关的信息,而局部上下文信息则是图像的细节纹理,要想对多尺度的目标很好的完成分割,这两部分信息都是必须的。
CRF:
由于经典的cnn是局部的方法,即感受野是局部而不是整个图像。另一方面,cnn具有空间变换不变性,这也降低了分割的边缘定位精度。针对cnn的这两个缺陷,crf可以进行很好的弥补。crf是一种非局部的方法,它可以融合context信息,Deeplab系列就使用了cnn加上全连接的crf的方式。
另一方面,前面我们说的图像分割,是属于硬分割,即每一个像素都以绝对的概率属于某一类,最终概率最大的那一类,就是我们所要的类别。但是,这样的分割会带来一些问题,就是边缘不够细腻,当后期要进行融合时,边缘过渡不自然。此时,就需要用到image matting技术。





































苏公安网备 32011402010933号