在目标检测任务中,被橘饥升测目标的大小经常是不固定的,自动驾驶相关检测任务可能要同时检测大卡车与小狗;工业质检相关检测任务可能要同时检测布料的大面积撕裂与小穿孔;医疗病灶检测任务可能要同时检测大小不一的病灶。在被测物体尺度相差极大时,模型通常难以对极大和极小的物体同时进行检测。
首先,要知道为什么被测物体尺度相差过大会造成模型精度降低。物体检测领域中各个模型的骨干网络,无外乎不是使用多层卷积逐步提取图像深层信息,生成多层特征图,并基于深层特征图做定位、分类等进一步处理。
在这“由浅至深”的特征提取过程中,浅层特征具有较高的分辨率,可以携带丰富的几何细节信息,但感受野很小且缺乏语义信息,与之相反的是,深层特征具备较大的感受野以及丰富的语义信息,但分辨率不高,难以携带几何细节信息。 此时假设我们将模型继续加深,超深层特征中将具有极大的感受野,被测物体的语义信息也会因被周遭环境信息所稀释而降低。
如果训练数据中同时包含尺度极大和极小的被测物体,那么会发生什么呢?
如上图所示,假设模型一共有100层,大小目标的细节信息都随着模型层数的加深而衰退。对于语义信息而言,由于小目标尺度小,随着模型层数的增多(下采样次数的增多),语义信息可能在25层即提取完毕,之后随着层数的继续增加,小目标的语义信息也会快速被环境信息所稀释;而大目标尺度大,可能要在50层才能提取到足够的语义信息,但此时小目标的语义信息已经丢失的差不多了。
那么这个网络的深度应定为25层,还是50层,亦或是37层呢?定25层则对小目标的检测效果好而大目标检测能力差;定50层则反之;定37层则两类目标的检测能力较为均衡但都不在最好的检测状态。而这就是“多尺度”目标检测问题的根源所在。
以下是面对尺度变化范围过大导致精度降低的几种常见策略。
由同一肢或张图像生成的多张不同分辨率图像的集合,由大到小摞在一起,就是图像金字塔。图像金字塔可以通过对图像不断地进行梯次向下采样,直至达到某个终止条件而获得,这个过程看似十分简单,但是它可以十分有效的从多分辨率的角度来解释图像。图像金字塔的底部是待处理图像的高分辨率表示,而顶部是图像的低分辨率近似。
使用图像金字塔来解决“被测物体尺度变化幅度大导致模型精度降低“问题的过程可以看做是:将一张图片处理成图片金字塔后,随着金字塔层级的变化,单个被测物体也会生成由大到小的多种尺度。在将这些不同尺度的图片传入模型之后,即使模型只擅长对某一尺度范围内的物体进行识别,不论被测物大或小,总能在金字塔的某一层中被缩放至模型擅长处理的尺度范围内。请你思考一下,“图像金字塔”方法有哪些优缺点?
这种处理方法虽然通过多尺度的特征提取,解决了被测物体尺度变化范围过大的问题,但是会大幅增加内存占用量,导致复杂的网络难以进行训练;会大幅增加模型运算量,导致模型推理时间变长。
金字塔特征层级可以看做是一个特征图化的图像金字塔。模型一般浅层的特征图较大,后面会逐渐采用stride=2的卷积或者pool来降低特征图大小,可将前面较大的特征图和后面较小的特征图都用来做检测。
单次检测器模型(SSD)就尝试使用了金字塔特征层级的结构,SSD的“附加特征层(Extra Feature Layers)”中的特征图经由多次下采样,形成了不同尺度的4层特征图,而后在正向传播过程中重复使用这四层特征图分别进行预测,因此“金字塔特征层级”不会增加模型运算量,可看作是零计算成本的。但是与此同时,SSD没有重复使用VGG-Base中的特征图,而是再网络中的最高层之后添加几个新层,以此构建金字塔,因此它错过了重复使圆老用特征层级中更高分辨率特征图的机会,但这些更高分辨率的特征图对于检测小目标很重要。
FPN的全称是Feature Pyramid Networks,即“特征金字塔网络”,总体结构如上图所示。FPN是一个利用深度卷积神经网络中固有的多尺度特征图,通过加入侧向连接和上采样,来以极小的附加计算量构建不同尺度的具有高级语义信息的特征金字塔的网络结构。
对于物体检测模型而言,FPN结构并不是模型中独立的一个模块,而是作为原始Backbone的附加项,融合在卷积神经网络之中。FPN结构可分为Bottom-up pathway和Top-down pathway and lateral connections两条主线,下面将以ResNet作为原始Backbone,为大家讲解FPN结构是如何运作的。
Bottom-up pathway即为由下至上的通路,也就是FPN结构图左侧的结构,它等价于标准ResNet骨干网络。首先回顾一下ResNet网络结构:
ResNet18网络的原始输入大小是(224x224),随后经由stride=2的卷积层或池化层,将特征图大小逐步缩放至(112x112)、(56x56)、(28x28)、(14x14)、(7x7)(忽略最后的Average pool、Fc、Softmax层),此时的特征图根据分辨率由大到小一次排开,就形成了一个特征金字塔的结构。此时可将这每个bolck的输出按顺序标记为{C1,C2,C3,C4,C5}。
Top-down pathway and lateral connections又可分为“由上至下的通路”以及“侧向连接”两部分,也就是FPN结构图右侧的结构。这部分的运算规则可表示为:
运算规则1:通过侧向连接取左侧Bottom-up pathway的顶层输出C5(size=7x7),经由1x1的卷积调整通道数(论文中将此通道数调整为256以便Faster RCNN后续计算)后,所得的结果即为Top-down pathway and lateral connections结构的顶层,可标记为M5(size=7x7)。
运算规则2:通过侧向连接取左侧的输出C4(size=14x14),并将所得的M5通过最近邻值插值法进行2倍上采样(size=14x14),再将C4与上采样的结果进行加和,所得结果可标记为M4(size=14x14)。
以此类推,后续还可运算求得M3(size=28x28)、M2(size=56x56)(M1理论上可求,但是由于C1仅由原图经一次卷积所得,几乎不具备任何语义信息,因此一般不做计算)。运算完成后,结构图可表示为:
上述步骤所获得的结果可按顺序标记为{M2,M3,M4,M5}。但这还不是最终的输出结果,因为上采样过程中产生的混叠效应会对后续预测造成影响,所以还需对所有经由上采样得到的特征图进行一次3x3的卷积,来消除混叠效应造成的影响并获得最终的输出结果,输出结果可标记为{P2,P3,P4,P5}。由于M5并不是由上采样所得,故只需对{M2,M3,M4}做卷积即可。
上图展示的即为FPN结构的全部计算流程。
数据增强是一种提升小目标检测性能的最简单和有效的方法,通过不同的数据增强策略可以扩充训练数据集的规模,丰富数据集的多样性,从而增强检测模型的鲁棒性和泛化能力。常见的数据增强方法如下图所示:
数据增强这一策略虽然在一定程度上解决了小目标信息量少、缺乏外貌特征和纹理等问题,有效提高了网络的泛化能力,在最终检测性能上获得了较好的效果,但同时带来了计算成本的增加。而且在实际应用中,往往需要针对目标特性做出优化,设计不当的数据增强策略可能会引入新的噪声,损害特征提取的性能,这也给算法的设计带来了挑战。
生成对抗学习的方法旨在通过将低分辨率小目标的特征映射成与高分辨率目标等价的特征,从而达到与尺寸较大目标同等的检测性能。前文所提到的数据增强、特征融合和上下文学习等方法虽然可以有效地提升小目标检测性能,但是这些方法带来的性能增益往往受限于计算成本。例如Noh等人提出了新的特征级别的超分辨率方法,该方法通过空洞卷积的方式使生成的高分辨率目标特征与特征提取器生成的低分辨率特征保持相同的感受野大小,从而避免了因感受野不匹配而生成错误超分特征的问题。
“FPN是一个利用深度卷积神经网络中固有的多尺度特征图,通过加入侧向连接和上采样,来以极小的附加计算量构建不同尺度的具有高级语义信息的特征金字塔的网络结构。”
1.FPN结构与标准的单特征图输出的卷积神经网络进行比较:单特征图输出的卷积神经网络只输出最后一次特征图,容易丢失小目标的细节信息。
2.FPN结构与图像金字塔进行比较:FPN结构利用深度卷积神经网络中固有的多尺度特征图,不需要对原始图片做多级缩放,极大地减少了计算量。
3.FPN结构与金字塔特征层级进行比较:SSD中的金字塔层级没有使用原始骨干网络中的底层特征图,造成了部分细节信息的丢失,且特征图是随着正向传播过程直接生成的,深层特征图的语义信息无法与浅层结构信息进行结合。而FPN不仅保留了底层特征图的细节信息,还通过“由上至下”的结构将深层的语义信息与浅层的几何细节信息进行融合。
综上所述,FPN在标准卷积神经网络“由下至上”的数据流向基础上,通过横向连接的方式补充了“由上至下”的数据流向,这一结构可有效的丰富底层特征图中包含的语义信息,且FPN结构的金字塔是由Conv2开始计算,使底层几何细节信息特别丰富,尤其是小目标的位置信息,对小目标的召回率的提高有很大的帮助。
1.复制增强:KISANTAL M,WOJNA Z,MURAWSKI J,et al. Augmentation for small object detection[EB/OL].(2019‑02‑19)[2019‑02‑19]. https://arxiv.org/abs/1902.07296 .
2.自适应采样:CHEN C, ZHANG Y, LV Q, et al. RRNet: A hybrid detector for object detection in drone‑captured images[C]// Proceedings of the IEEE/CVF International Conference on Computer Vision Workshops. Los Alamitos: IEEE, 2019: 100‑108.
3.尺度匹配:YU X, GONG Y, JIANG N, et al. Scale match for tiny person detection[C]// Proceedings of the IEEE/CVF Winter Conference on Applications of Computer Vision. Los Alamitos: IEEE,2020: 1257‑1265.
4.缩放与拼接:CHEN Y,ZHANG P,LI Z,et al.Stitcher: Feedback‑driven data provider for object detection[EB/OL].(2020‑04‑26)[2021‑03‑14]. https://arxiv.org/abs/2004.12432 .
5.自学习数据增强:ZOPH B, CUBUK E D, GHIASI G, et al. Learning data augmentation strategies for object detection[C]//Proceedings of European Conference on Computer Vision. Cham: Springer, 2020: 566‑583.
6.生成对抗学习:NOH J, BAE W, LEE W, et al. Better to follow, follow to be better: Towards precise supervision of feature super-resolution for small object detection[C]// Proceedings of the IEEE/CVF International Conference on Computer Vision. New York: IEEE, 2019: 9725-9734.
7.FPN:LIN T Y, DOLLÁR P, GIRSHICK R, et al. Feature pyramid networks for object detection[C]// Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. New York: IEEE, 2017: 2117-2125.
8.图像金字塔:ADELSON E H,ANDERSON C H,BERGEN J R,et al.Pyramid methods in image processing[J].RCA Engineer,1984,29(6): 33‑41.
9.ZOU Z,SHI Z,GUO Y,et al.Object detection in 20 years: A survey[EB/OL].(2019‑05‑13)[2019‑05‑16]. https://arxiv.org/abs/1905.05055 . [百度学术]
对于神经网络,在进行终端部署时,需要考虑内存消耗问题,大体来说:
1、模型大小指的是模型参数所占的比特数,参数的不同量化方式会影响大小。蚂凯
以resnet18为例,原始的resnet18模型的参数所占空间约为45M,但是经过8bit量化后铅物蔽,所占空间为12M。
2、特征图消耗指的是网络在前向推理时 中间 或者 最后 的计算结果。
比如对于832*448*3图像输入到resnet18+FPN,中间特征层最大消耗为(832/2)*(448/2)*64*4=23M,64为通道数;输出结果为FPN各层输出,(832/4)*(448/4)*64*4 + (832/8)*(448/8)*64*4 + ....=6M + 1.5M + ...
所以为了减小神经网络的内存消耗,可以考虑以下几个槐州方面:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)