一 背景
神经网络用于物体检测比较成熟,现在的研究开始朝着精细化的分类识别进行。将检测的问题简化一下,变成单个类别的识别检测问题,比如人脸检测。
二 问题
以faster rcnn为代表的主流物体检测网络表现的很成功,但是速度较慢,对小物体的识别能力有限。后来发展出来的SSD与同时代的YOLO以提高速度为目的。而后,网络的研究发展开始转向精度与速度并行,比如FPN,RON,SSH还有他们是徒子徒孙。当然,他们有的是以对region的处理,以ssd等为代表,是处理方框的方式;另外一种是想办法将所检测物体映射到一个feature map上,由图中元素被激活状态去优化提取速度,如yolo/FPN等。
但是另外一个大的趋势是将高层的feature map(即网络结构靠后的网络)和底层的特征图(靠前的layer)结合在一起,提高预测结果的精度(今年2017年相关研究最多的地方)。一个越来越清晰的潜在逻辑是大的物体在高层的特征图中,而小的物体在底层的特征图中,然而并没有人系统的论述该逻辑。FCN(全卷积网络)中倒是提到过物体分割时,利用靠前的网络层可以提高分割的细节,是总体和细节的角度上去论述和实现的。当然也有SSD等也笼统的描述了感受野的变化引起的细节的提取,是从细节挖取的角度,但回避了这个问题:是不是小的对象在较底层的网络层中,而大物体对象在高层次的网络结构中。
三 理论分析
对神经网络是实现结果的预测,基本可分为直观的和数学推理的方式两种。
1. 直观的
以CNN为基础层作为结构的网络,是利用图像中局部的相互关系,发掘邻域特征形成结点。而神经网络中全部连接优化系数的方式是训练各层上结点间的联系。所以网络的总体表现是将图像中相邻的特征作为要素,最终按照想要的形式(ground truth)组合起来。
以此逻辑来看物体大小在网络结构中的表现:在给定的ground truth下,小的物体有较小的空间范围结构,大的物体是更多的小的物体的组合有复杂的空间结构,当然也有更大的空间范围。所以使用共享参数的卷积核,小的物体对象和大物体中简单单元以基本相同的速度变成有价值的特征,然后组合成一个有意义的个体。从个体对象的角度讲,当特征上升到个体后,该对象作为个体被激活(作为一个整体被处理);而更复杂的大物体要等到更靠后的位置才能达到相同的状态。
由此可以认为大小物体的激活会在相同的feature map上。
2. 数学推理的
一般,神经网络中对权值生成发挥主导作用的是卷积层和池化层。
对于池化层:如果相邻的但不同的特征值的点,经过池化层的时候,会有部分被消除掉。
对于卷积层:而相邻的但是不同的特征值的点,经过卷积层的时候,卷积层会根据最后ground truth调整参数,从而能保证这种状态的点也能安全的前向传播。
据此分析,能对网络训练的最终结果造成影响的是网络结构经过stride之后形成的ground truth的对象间的可区分度。如密集分布的小物体的可区分度受到的影响较大,比如VGG网络缩放8倍或者16倍之后,密集的小物体的ground truth(gt)也会产生不准确的差异,就会‘鼓励’网络学习到不准确的特征。
对于这种小物体形成的gt,现在流行的做法是在多个feature map上添加loss function,比如HourGlass,比如FPN等等一些列相类似方法的网络结构。而多loss function会影响神经网络的梯度传递,让网络适应不同的目标状态复杂化,最终让网络学习到额外的/非预期结果。
3. 实验推理
神经网络中的东西许多还不是和理论推理一致的,最终的结果还需要实验的支持,公认的实验结果应该是paper中的实验结果:
这是finding tiny face中的实验,这个实验是为了说明图片在context下的表现会更好。两张图片,小的图片(25*20)和大的图片(250*200),绿色框代表他们的大小,res*代表了残差网络的层数,最外围的虚线框代表了当前层的区域(25*20)的感受野大小。小脸的 {res2和(res4+res3+res2)} 这两组以及大脸的 {res4+res3+res2 和 res5+res4+res3+res2} 这两组作者介绍说能够说明context对人脸识别有提升效果,对小脸更佳。
确实如此,但作者还有没有说明清楚的:为什么小脸在一定的网络深度下精度就稳定不变了,而大脸要到一定的深度才能达到顶峰。这恰恰说明了一个主题,小的物体在深度神经网络中,在较浅的网络中就会被激活,而大的物体要等到更深处才能被激活。
4. 让事情更简单点
虽说神经网络部分被黑盒化有助于理解,不过回归到最简单的结构中去有助于理解被黑盒化的神经网络结构。
DPM(RGB大神的还是学生时候的作品),是利用HOG等发现物体的特征,然后在将这些被发现的特征组合起来变成一个有意义的向量,用来评价物体属于某类的概率。在我看来,这可以看作一个固定了卷积参数的神经网络。神经网络也可以理解成为两部分:发现特征,组合特征。CNN的发现特征是使用卷积结构来实现的(当然学习参数的那部分也在其中,便于理解,只考虑这部分),组合特征是靠神经网络连接以及连接的权重实现的。所以,从总体上考虑,CNN中有部分是用来发现特征的,有部分是用来组合特征关系的(对这部分讲感受野才有意义)。从这个视角在回过头看小物体和大物体,应该可以比较大胆放心的说:小物体在浅层的(低级的)网络层中被率先激活,大物体在深层的(高层的)网络层中被激活。
finding tiny face的另外一个实验,神经网络对哪些尺寸的图片预测结果更好(对大致40-140px),作者给出一个貌似合理的解释——因为数据集中大小脸分布不均匀,这部分的脸占主体。这个实验也某种程度上能说明大小物体被激活的层次。
5. dose it matters
不管怎样,在gt的控制下,中间激活的特征也会传达到计算loss的地方,不然就会产生可调整参数状态的梯度。可是在较浅层被激活的对象,其被控制的传导到最后,是经过了多层的卷积运算,此时的卷积运算对于这种物体来说,就变成了对象间的关系状态。这会产生超出预期的参数结果。
另外一个重要的原因是,不同大小的物体有一个取齐的状态,即小的物体需要取齐到大的物体所需要的深度。一方面是计算的浪费,另一方面是小物体的加入妨碍大物体的收敛。两个方面都是神经网络的额外衍生品——如何降低这种浪费!!
四 基于区域的(region based)和基于得分图(score map,region free)的差异
根据生成目标预测框的方式(在前,还是在后),可分为region free和region based两种。
region based:如faser rcnn,ssd(ssd在RON中被归为region free)等。由于ground truth不可避免的会出现不准确的结果,尤其对于小物体,很难得到一个亚像元的ground truth,但是使用回归框能够得到非常精确的真值结果,而feature map提取过程中又因此可以不苛责精度,对网络的快速收敛和精度有利。
score map的形式,是基于一个比较模糊的形式给出的ground truth,而结果的精度有赖于score map的精细度。现在常用到的防止ground truth失真的方法是在多个层次上均使用ground truth。也因此降低了速度,影响网络的收敛过程。具体而言,比如当下比较主流的网络RON,FPN都用到了和位置相关的score map用来指示图中目标,但是为了使用融合使用多loss的形式,我认为有两方面的劣势:a. 多loss会让网络分阶段多任务学习,有彼此之间连接层有一定的深度的时候,网络应该可以适应这种情况,但是任务之间造成的掣肘并没人关注太多;b. 现在网络基本上基础架构比较固定了,常用的降尺度的pooling层最小能采用的stride步长为2,所以使用反向连接上采样融合时,所能施展的空间着实有限。
在未来,应该有更有效的利用多尺度feature map的方法,而不仅仅是这种数据准备的形式——融合——然后剩下的交给网络去学习,且和普通结构保存了相同的loss function。
时间:2018/1/31