这篇文章是用来解决显著性检测问题的,只不过他用来训练模型的数据集是Light Field Images,即4D的数据集,在了解4D数据集之前,我们先来了解一下3D的数据集,我们平用来训练模型的图片都是2D图片,而3D多出来的一个维度指的就是像素的深度,之前2D估计包含像素的亮度和颜色,像素的深度是通过像素的聚焦程度体现出来的,如图一中的(b)、(c)、(d)这些图片,这些图片中的某些区域聚焦清晰,表示其深度较浅,某些区域为散焦区域,像素模糊,代表深度较深,(a)为所有像素都清晰的图片,称之为all-focus images,相对应于all-focus image的(b)、(c)、(d)各自有不同深度信息的图片堆叠成一个focal stack。4D数据集便是既有all-focus images,又有相对应的focal stack,4D Saliency Detection便是利用4D数据集作为训练输入的显著性检测模型,目的是将focal stack中的深度信息融入到所提取的特征中,更加有利于显著物体的检测。


2d 3d 深度学习 deep learning 3d 图像_卷积

图一

 

       之前就有的工作就表明,将图片的深度信息当作先验信息加入到显著性检测模型中会起到较大的作用,这由我们人眼观测物体的经验可以解释,我们对离我们距离不同的物体的关注程度是不一样的,所以深度信息也可以作为一种十分有用的特征来进行显著物体的检测。作者也通过集体的实例展示了应用深度信息进行检测的优势,如图二所示,没有利用深度信息的模型如(c)和(d)的预测结果背景中会有很多噪声,但是应用了深度信息后背景噪声会很容易被过滤掉,因为在focal stack中显著物体清晰而背景模糊的切片的特征可以有效地被提取并加以利用。


2d 3d 深度学习 deep learning 3d 图像_卷积_02

图二

 

        但是目前利用光场(也就是4D images)进行显著物体检测的方法仍然是利用手工提取特征进行检测,CNN网络的发展成果并没有有效应用在这个领域中,这是因为可以用来进行训练的4D数据集太少了,缺少大量数据集的支撑,CNN的优越性也展现不出来,所以本篇论文的第一个工作便是提供了一个可供训练CNN网络的4D数据集,包含1000个训练图片集和465张测试图片,每个图片集包含一张all-focus图片,该图片的ground truth,以及相对应的focal stack。作者还给出了该数据集的统计特征,表明该数据集中的图片中的显著物体不是很容易就能检测到的,利用该数据集训练的模型会具有较好的性能。相关的统计特征有:1、显著性目标占全图的比例,在[0.05,0.8]区间内,并且大多数目标占全图的比例不超过40%;2、focal stack中包含3D图片的数量在2到13之间,大多数focal stack中包含超过5张的3D图像,这说明包含的深度信息较为丰富;3、前背景区域的颜色平均对比度为0.30,小的颜色对比度不会使模型通过提取颜色对比度信息而进行检测,而是通过更加抽象的语义信息进行检测,更有利于模型的性能的提高;4、为了避免模型通过图像的中心先验线索轻易地检测到图中地显著物体,作者还统计了数据集中显著物体的中心位置分布,发现它们并没有集中在图像的中心区域。

        有了可以用来训练的数据集后,作者所面对的问题便是如何搭建网络模型有效地提取focal stack的深度信息并和all-focus的信息融合进行显著物体的检测,这便是本篇论文的第二个工作,如图三所示,作者提出了有两个stream的网络,一个stream用来提取focal stack的特征,另一个用来提取all-focus的特征。在focal stack stream中作者提出了recurrent attention机制来对foacl stack中的切片的高层语义特征进行了有效的筛选和表征,因为作者注意到focal stack中的每张深度图像对于最终的预测结果的贡献程度是不一样的,贡献程度最好的便是那些显著物体处于聚焦区域而背景处于模糊区域的切片,利用recurrent attention机制可以将这些贡献程度好的切片的特征提取出来。另外作者还采用了对抗样本训练增强了模型的性能。这些将通过模型总体结构、融合机制和对抗样本训练来详细叙述。


2d 3d 深度学习 deep learning 3d 图像_2d 3d 深度学习_03

图三

 

 

       一、网络总体结构

        网络的总体结构如图三所示,总体网络分为两个stream,上面的stream的输入为focal stack中的切片,是独立地将slice分别送入到网络中而不是concat后一起送入到网络中,下面的stream是将all-focus还有生成的对抗样本分别送入到网络中。选取GG19的前五个blocks分别作为两个stream的特征提取网络,最后要处理的特征是通过将conv3、conv4和conv5提取的特征加起来,具体的做法先将conv3、conv4和conv5输出的feature map都用64个1x1的卷积卷积到64通道的,再用双线性插值法将conv5和conv4的feature map上采样到和conv3一样大小的,再将这三个feature map加起来做后续的处理。在focal stacks stream中,蓝色、黄色和绿色的那一系列64维的feature map是每个切片处理后的feature map(注意它们之间有省略号,并不代表对相加后的feature map进行后续的卷积处理),后面作者提出了循环注意机制对这些切片各自生成的64维的feature map进行融合处理,融合后得到一个64通道的feature map,最后预测时将它卷继成两个通道再放大到原始图像的大小计算一次loss。在all-focus stream中,相加后的feature map直接卷积到2维再上采样计算loss。最后两个stream的prediction map再相加再进行最后的loss的计算,虽然图中的图标是c,也就是concatenation的意思,操作后通道数没变而且根据上下文的意思,图应该是画错了。

 

       二、融合机制

               focal stack中的切片数量很多,按照本文的网络框架,要将它们各自所提去到的特征进行融合,得到最终的深度信息再         和all-focus stream中的结果结合去预测最终的结果,所以所采取的融合机制就显得十分重要,作者介绍了之前有人提出过           的四种融合机制,分析了它们的优缺点,自己又提出了一种融合机制。


2d 3d 深度学习 deep learning 3d 图像_数据集_04

图三


        如图三所示,(a)便是最原始的FCN框架。(b)是第一种融合方式,称之为early integration,就是直接在输入端将focal stack中的slices和all-focus image全都concat在一起统一送入网络中,这种融合的缺点就是只是融合了浅层的特征,对于深度的语义特征的融合并没有太大的帮助。(c)是层间的融合,称之为layer-wise integration, 就是focal stream和all-focus stream中相对应的block在得出feature map后相加在一起,将相加后的结果最为两个stream各自下一个block的共同输入。这种融合方式很好地考虑了focal stack中的3D图片和all-focus的图片的融合,但是作者认为考虑各切片之间的联系会更好一点。(d) 称之为late integration,是将各切片分别独立地送入到网络中,最后将提取出来地feature map叠加后求平均,这种是将各切片地语义信息进行融合,但是很少考虑到各切片之间的联系,事实上各切片对最终的预测结果的贡献程度是不一样的,所以应该对不同的切片区别对待。


2d 3d 深度学习 deep learning 3d 图像_2d 3d 深度学习_05

图四

       最后作者提出的融合方式跟(d)一样都是late integration的方式,只不过不是简单的求平均,而是通过一种循环注意机制提取出更好的切片的语义信息,该循环注意机制如图四所示,每一步循环都由一个attention模块和ConvSTLM模块组成,首先是attention模块(如图四中的b所示),它的输入是之前图二中提到的focal stack stream中的那些蓝、黄、绿等一系列的feature maps,是各个切片通过VGG19所提取到的feature map,提取方法在网络总体结构中已经提到过了,如图四中的(b)所示,应该是一共有N个64通道的feature maps,这里的N应该是固定的,但是作者前文中说训练集中的每个all-focus图片对应的focal stack中的切片数量是不同的,估计是作者并没有解释清楚,他应该设定一个固定的输入切片数量,因为后面会用到N个卷积核的卷积操作,N应该为定值,所以我们就假设这个N是固定的,attention模块首先将输入的N个64通道的feature maps concate起来,变成图中的Fc系列,再将他们卷积成64通道的,变成图中蓝色的feature map, 对于上一步循环中输出的隐层 

2d 3d 深度学习 deep learning 3d 图像_数据集_06

 也进行卷积变成64通道蓝色的feature map(注意这里的 

2d 3d 深度学习 deep learning 3d 图像_数据集_06

 的通道数不是64xN),将它们相加,得到的仍然是64通道的feature map,再进行平均池化得到1x1x64的feature map,再通过N个1x1的卷积核卷积重新得到N个表征各切片重要程度,最后通过softmax归一化得到各个切片的权重

2d 3d 深度学习 deep learning 3d 图像_数据集_08

,表示第t次循环,n表示第n各切片。最后用权重去乘各个切片的64通道的feature map,得出attention之后的N个64通道的feature map,所以我们可以看到attention模块的目的就是要通过加权重的方式对各个切片的重要程度进行区分,一般比较重要的通道的响应值都比较高(我想通道增强 的motivation就是要让强的通道更强,所以才会命名为attention吧,这种动机是不是就和竞争的循环神经网络的做法相同),将feature map 平均池化后的向量就可以一定程度上反应各个通道的重要程度,一般的通道attention如图五所示,要对hxwx 

2d 3d 深度学习 deep learning 3d 图像_4D_09

的feature map进行通道增强,权重的获取就是将feature map average pooling 后再归一化,但是本文中需要增强的是slices而不是通道,为了减少计算量,作者就将concat后的feature maps卷积成64通道的,平均池化后再卷积成N,获取权重值,这里作者还融合了上一步循环中的隐层输出,更加有利于关于切片重要程度的权重的获取。

2d 3d 深度学习 deep learning 3d 图像_数据集_10

图五

 

       只利用了attention模块之后的特征并不能很好地用于预测,这在文章后面地消融实验中体现出来了,只用了attention模          块而不用ConvLSTM模块的模型效果反而变得更加差了,文章中说是没有生成更好的特征表示,我觉得还是特征增强的程度        还不是很强,在竞争神经网络中,初始状态好的神经元会通过一遍遍的循环变得更好直至收敛,而attention只是进行了一次          增强,远远不够,所以文章中采用COnvLSTM估计才会起作用吧,这也是我自己的猜测。

       接下来我们详细总结一下ConvLSTM,有关LSTM的理解可以在我的另一篇博客中看,                 

       作者说在4D数据上的显著性检测的方法现在还局限于传统的手工提取特征的方法,并没有利用深度神经网络的方法来解决,究其原因,还是可以用来训练的光场显著性数据库太少,深度学习利用大数据学习的算法优势体现不出来,所以深度学习来解决4D图片的显著性检测并没有流行起来,基于此,本篇论文便提出了大规模的光场数据集来进行训练。  

       得到了足够的光场数据集后,如何有效地利用它们还有待研究,在网络最后地显著性预测阶段,focal stacks images中地每一个切片都其不同的作用,因为有的聚焦的区域包含了显著性目标而有些散焦的区域仅仅代表了背景区域。我们的目的就是将那些能够前景清晰而背景模糊的切片很好地利用起来,所以作者采用了新颖地循环神经网络结构来进行选取,另外作者为了更好地帮助训练采用了具有对抗性地实例来训练,因为现有地DNNs对于人工合成地图片地检测能力是有限的,即使是state of art的模型,对于一点点可感知的差别鲁棒性并不是很强。