赞
踩
识别图像中存在的内容,如下图,有人(person)、树(tree)、草地(grass)、天空(sky)
识别图像中存在的内容和检测其位置,如下图,以识别和检测人(person)为例
对图像中的每个像素打上类别标签,如下图,把图像分为人(红色)、树木(深绿)、草地(浅绿)、天空(蓝色)标签
目标检测和语义分割的结合,在图像中将目标检测出来(目标检测),然后对每个像素打上标签(语义分割)。对比上图、下图,如以人(person)为目标,语义分割不区分属于相同类别的不同实例(所有人都标为红色),实例分割区分同类的不同实例(使用不同颜色区分不同的人)
语义分割和实例分割的结合,即要对所有目标都检测出来,又要区分出同个类别中的不同实例。对比上图、下图,实例分割只对图像中的目标(如上图中的人)进行检测和按像素分割,区分不同实例(使用不同颜色),而全景分割是对图中的所有物体包括背景都要进行检测和分割,区分不同实例(使用不同颜色)
~~~~~~
现实中,越来越多的应用场景需要从影像中推理出相关的知识或语义(即由具体到抽象的过程)。作为计算机视觉的核心问题之一,图像分割对于场景理解的重要性日渐突出。目前,图像分割主要有三个研究方向,分别是语义分割、实例分割和全景分割,难度依次递进。如图1所示,(a)为原始图像,(b)为(a)的语义分割图像,©为(a)的实例分割图像,(d)为(a)的全景分割图像。
~~~~~~
我们希望输入图像,并对图像中每个像素做分类,对于每个像素,确定它属于猫、草地、天空或者背景亦或者其他分类,首先确定分类,就像做图像分类一样,不过现在不能简单地分一类给整个图像,希望能为每个像素产生一个分类类标,这就叫语义分割。
~~~~~~
语义分割并不区分同类目标,例如下图中的两头牛并排站立,解决这个问题的时候是为每个像素分类;而在之前的例子中,输出并不能区分结果,也就是说不会区分这两头牛。
~~~~~~
语义分割可能仅通过分类实现,这就是问题所在,可以用滑动窗口来实现语义分割,可以想象用输入图像将其打碎为许多小的、局部的图像块,如下:
~~~~~~
可以用这些小块做分类,但这只能在一定程度上起到作用,并不是完美的解决方案,并且这个方法的计算复杂度很高。另一个方法是全连接卷积网络,不仅是从图像中提取各个图像块并且分类,还可以把网络当成很多的卷积堆叠在一起。
~~~~~~
但是如果有比如64或128甚至256个卷积通道,这样运行卷积层在这样高的清晰度逐层训练,可想而知计算量很大会很耗内存;所以我们会在图像内做下采样,之后对特征做上采样,与其全部卷积基于整个图像的全维度,仅仅对一部分的卷积层做原清晰度处理,下采样用包括最大池化或跨卷积。
~~~~~~
讨论过了下采样,那么怎么进行上采样呢?
~~~~~~
其中一个方法是去池化,上采样做的是最近距离去池化或者钉床函数去池化:
接下来我们要讨论的问题是图像分类和定位,刚刚已经谈到过了图像分类,做的是给输入图像分类标签,但有时候也想知道更多关于图像的事,除了预测分类,也想知道图像中内容的定位问题。定位的情况是提前知道会有一个或几个物体是需要找的,但是预先知道要对这个图像做分类决策,只产生一个边界,这个边界告诉我们物体在图像中的哪里。预测图像中固定几个点的位置的想法可以应用到除分类与定位的其他问题上,比如姿态估计。
~~~~~~
如下图中,拿一张人像作为输入图片,想输出这个人的关节在图中的点位,这样一来就可以在网络中预测这个人的姿态:
~~~~~~
输入这张人像后,将输出14个关节点的参数,逐一给出14个关节点的x、y坐标,然后用回归损失(通常是L2损失)来评估这14个点的表现,运用反向传播方法再次训练这个网络。
~~~~~~
如果把图像分类和图像定位结合起来,那么这里有两类损失,一类是分类损失,一类是定位损失。
~~~~~~
下一个要讨论的是对象识别,可以说这在计算机视觉领域占据核心地位。
~~~~~~
对象识别主要研究是一开始有固定几个类别,比如猫、狗或其他种类,任务是根据输入的图像,每当在图像中出现其中一类对象时,围绕对象划定一个框并预测该对象从属的类别,因为不知道图像中有多少个对象,所以这个问题是很有挑战性的。
~~~~~~
如果把对象识别等同于回归问题考虑会非常棘手,尝试用滑动窗口的方法,类似于图像分割中的将图像划分为小块一样,也可以将其应用到对象识别中去;将图像切分为小块,然后输入到神经网络中,之后网络会对输入的图块进行分类决策。
~~~~~~
问题在于如何选择图块,因为图像里的对象数量是不定的,并且它们可能在任何位置,拥有任意尺寸,以任意比例出现,如果想用蛮力,滑动窗口法可能需要测试成千上万次才能处理这个问题,同时计算的复杂度也会很高。
~~~~~~
所以相应的会用一种叫做候选区域选择即R-CNN的方法,它更多采用了类似于信号处理、图像处理等方法来建立候选清单,所以对给定的输入图像,候选区域网络在对象周围会给出上千个框,这时就可以进行定位,也就是寻找图像的边界,划定闭合的限定框,区域选择网络会在输入图像中寻找点状的候选区域,也就是对象可能出现的区域。
~~~~~~
不同于分类网络在图像的各个位置和范围内进行搜索,首先采取候选区域网络找到物体可能存在的备选区域,再应用卷积神经网络对这些备选区域进行分类,这样做比穷尽所有可能位置的位置和范围要来的更容易一些。
~~~~~~
这种算法的问题在于:一、仍然需要过多的算力;二、模型是固定的,我们并不学习参数;三、特征会被存储到硬盘中,不仅耗费存储空间,也花费时间。
为了改进它,我们有了Fast R-CNN:
~~~~~~
首先我们根据CNN来获得图片的特征,然后根据算法(如选择性搜索)选取备选区域,再将这些区域使用ROI(Reign Of Interest,兴趣区域)池化层来得到统一大小的图片,再把它们统统塞进全连接层进行分类,分类后再计算分类损失及框选损失以及其合起来的损失。
~~~~~~
ROI池化层应用了类似SPP的思想:将图片切分为m*n的方块后进行最大池化。
~~~~~~
然而Fast R-CNN并不完美,其缺点在于使用固定算法来获取备选区域效率太低,我们希望能让神经网络来做这件事。
于是就有了faster-RNN
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。