图像分割的关键技术:一站式caffe工程实践连载(5)

知识引入
本次主要和大家分享的是图像分割中的关键技术,首先对任务分析,一般在正式开始图像任务之前,我们会对任务的整个的技术方案进行一个评估,评估之后我们会选择比较简单比较稳妥的方案,也就是精简我们的任务。我们的任务是一个图像分割的任务,图像分割任务与图像分类任务不同,图像分类任务,它的输入是图片,输出是一个level,也就是一个数。而图像分割任务不同,它的输出也是一张图片,这个图片与输入的图片大小相等,所以我们不仅需要卷积,我们还需要反卷积,卷积的过程就是不断降低图像的分辨率,抽象知识,而在反卷积过程中,我们就要不断的提升分辨率,来恢复图像的细节。反卷积是图像分割任务的基础结构,我们会在后面进行详述。
残差连接
残差连接现在是图像任务中的一个非常非常重要的一个技术。它主要有两个方面的作用。首先它可以有效地缓解深层神经网络中的梯度消散问题。其次,可以融合细节,融合底层和高层的支持。这一点是提升图像分割任务的一个非常关键的技术。可以说残差连接是提升图像分割任务的利器。我们首先看一些人脸,这些人脸是在开放环境下的人脸,如下图所示:
caffe图像识别
我们可以看到这些人脸的背景都非常的复杂,有些是纯色,有些包含其他的干扰,有些包含非常非常杂乱的颜色。假如我们直接在这样的一张输入图上做我们的图像分割,也就是嘴唇分割的任务的话,它会受到背景的严重干扰,所以我们需要进一步简化任务,具体来说就是这样:首先我们利用人类检测算法检测到人脸,然后利用关键点检测算法定位到我们嘴唇的区域。我们将嘴唇的区域截取出来之后,我们在这样的一个输入图像上训练我们的图像风格的网络。这样一来,他的背景干扰就基本上没有了,整个任务也被大大的精简,算法的鲁棒性也会提升很多。如图所示:
caffe图像技术
第二步,反卷积。可以看作是卷积的逆过程。我们先看看卷积,下方的蓝色是输入,上方的绿色是输出。我们输入的是4×4,输出的是2×2。可以看到输出的每一个像素,它都是由输入的3×3的一个区域来决定,如图所示:
caffe
我们再看看反卷积,下方2×2的蓝色是输入,上方4×4的绿色是输出。我们可以看到反卷积将分辨率提升了一倍,输入的每一个像素都会对输出的其中一个区域的像素产生作用。如图所示:
caffe
下面是Caffe中卷积和反卷积输入输出的一个尺寸的计算。

卷积输出结果,假设用变量 x 表示,则:
x= (input + 2 * pad - kernel_size) / stride + 1;

反卷积输出结果,假设用变量 y 表示,则:
y = (input - 1) * stride + kernel_size - 2 * pad;

总结一下,我们可以简单的认为卷积的操作,就是像一个大的分率降为一个小的分辨率。而反卷积的操作正好相反,就是将小的分辨率波动的上采样,转化为大的分辨率。
网络-Segnet
下面我们看一个比较经典的反卷积的图像分割网络-Segnet,如下图所示:
caffe
它最早被用于自动驾驶。我们可以看到整个的网络呈对称的结构,左边这一块是卷积,右边这一块是反卷积。反卷积跟卷积,基本上是处于完全定向的一个结构。在卷积的过程中,我们不断降低我们的feature map的尺寸,在反卷积的过程中,我们不断地提升我们图像分辨率,同时对于相同分辨率的featuremap,他们之间还有一个skip连接,在后面章节中会详细的介绍。下面我们说说我们的残差连接,也就是skip connection,再说我们的残差连接之前,我们先说深层神经网络中的一个比较经典的问题,也就是梯度消散。
梯度消散
也就是说在网络进行反向传播的过程中,梯度最终变得非常小,直到为零。梯度消散来源于链式法则。我们假设有这样的一个任务,如图所示:
caffe
我们的输入是X,我们的输出是cost,f,g,k,都可以都可以看作是一些非线性的变化。比如说f是卷积操作,g是激活层,K是最后的分类器,cost就是我们最终的一个损失函数。当我们要求我们的损失函数对于F的导数的时候,就要通过链式法则来进行求取。具体来说就是这样。我们可以看到它包含了好几个部分的相乘,如下图所示:
caffe
假如这几个相乘的部分,其中有数值非常小的,那么在多次连乘之后,梯度可能就变得非常非常小。尤其对于上百层上千层的深度神经网络,不用穿多少层,它的梯度就几乎可以忽略不计。当梯度消散之后,误差就无法传播到浅层的神经网络,就无法进行正确的学习。这个时候残差连接就横空出世了,这是残差连接的一个基本的结构。对于非残差连接它的竖式X输出是FX,对于残差连接,他就是在X这个通道上,直接拉了一条支路,加上输出的FX,也就是说,这个时候我们的输出变成了f(x)+x,如图所示:
caffe
它有什么好处呢?我们直接给大家举一个例子(蜂口小程序看视频)
caffe
除了以上可以有效的缓解梯度消散的问题之外,残差连接还可以融合底层和高层的信息。同样我们看一个非常经典的网络,这个网络是全卷积网络,也是第一个真正意义上的比较有用的一个图像分割网络。如图所示:
caffe
我们可以看到,它的卷积卷积层包含了若干的卷积层,conv1,pool1, conv2,pool2,这样的一个连接,在做反卷积也就是恢复图像分辨率的过程中,他会不断的进行相进行上采样。在上采样的过程中,我们可以看到它将pool4跟两倍的conv7,这两个featuremap进行的融合,它将pool3跟两倍的pool4,以及四倍的conv7的featuremap,这三个featuremap进行融合,这样的融合有什么作用呢?我们可以看到在网络不断的往下传的过程中,从pool3到pool4,pool4的感受也越来越大,在反卷积的过程中也是如此。我们将pool4跟两倍的conv7的感受也进行融合,这样的话就实现了局部和全局的感受也一个个融合。这样的一个融合带来好处就是我们将底层的信息跟高层的信息进行融合,在网络比较浅层的时候,比如从conv1到conv2到conv3,它就是一个从底层信息到高层信息的一个抽象,越到后面越是如此。 我们在做反卷积操作的时候,我们将底层的信息也融合进来,这样可以大大提升图像的分割任务,尤其是对边缘部分,可以大大的提升图像风格任务的baselines。以上就是图像分割任务中的一些关键的技术的分享。

完整内容及视频解读,请关注蜂口小程序~
参与内测免费获取蜂口所有内容,请申请内测(1*8*8*1*1*2*1*7*5*9*5),更多优惠福利,欢迎大家多多参与,尽情挑刺,凡是好的建议,我们都会虚心采纳哒~

猜你喜欢

转载自blog.csdn.net/qq_43019117/article/details/82624894
今日推荐