《YOLOV4&5原理与源代码解析之五:SPP CSP》
前面咱们都在讨论数据如何增强,这一开始讨论YOLOV4中网络结构的创新之处。YOLOV4将一些主流优秀的框架拿过来用,提升了效果,会有更多的性能开销,但同时作者又将其进行了简化,是的最终V4速度和mAP达到一个平衡的效果(个人觉得还是V5香,反正原理差不多)。
一、SPP
SPP能够增大感受野,使得算法适应不分辨率图像(也就是大目标、小目标);参考YOLOV3(V3中是:动态改变特征图大小,使得模型适应不同分辨率图像,兼顾大、小目标)其实,输入一个特征图,经过如下图Mutil-Scale MaxPooling的时候,能够将特征图size调整到一致,后续方便堆叠在一起。
放一张高清图:
概括下SPPNet(Sptial Pyramid Pooling 网络,空间金字塔池化):如上图,不管featureMap分辨率大小(输出都同一个维度),直接分三组,分为:4×4、2×2、1×1的块,然后执行MaxPooling,得到维度为16*256、4*256、1*256的特征图,如上图进行concat。
补充:
SPP模块首要作用是用来解决输入图像尺寸不统一的问题。大部分目标检测网络中,一般都会在最后使用全连接层作为输出层,这要求输入图像的尺寸固定。而目前的图像预处理操作中,resize,crop等都会造成一定程度的图像失真,因此影响了最终的精度。SPP模块,使用固定分块的池化操作,可以对不同尺寸的输入实现相同大小的输出,因此能够避免这一问题。此外,SPP中不同大小特征的融合,有利于待检测图像中目标大小差异较大的情况,尤其是对于yolov3一般针对的复杂多目标图像。作者:星月野
链接:https://www.zhihu.com/question/356414733/answer/900797797
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
另外参考我的博客:https://www.cnblogs.com/winslam/p/15720125.html
二、CSP
接下来的CSP模块是YOLOV4中最为核心的模块。官方YOLOV4也叫做 CSP-DarkNet。如下图,左边是ResNet,CSP不仅能够和残差网络组合,用在其他网络也是可以的。CSP的一个优势为:如下图b,将特征特分为两个部分,只有其中一个部分进行常规处理,最后将两部分合并在一起,计算量减少一半;如图b的模块在整个网络中被多次使用。论文中表述:这种做法使得速度极大提升,精度不降反而略微提升!
CSPNet:和残差连接、dropout一样,都可降低计算代价,简化网络,有效避免过拟合,同时提高mAP。
reference:
CSPNet:https://zhuanlan.zhihu.com/p/161188971