• 《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

  • 相关阅读:
    OOP3(继承中的类作用域/构造函数与拷贝控制/继承与容器)
    OOP2(虚函数/抽象基类/访问控制与继承)
    OOP1(定义基类和派生类)
    拷贝控制3(对象移动)
    拷贝控制2(拷贝控制和资源管理/交换操作/动态内存管理)
    拷贝控制1(拷贝、赋值与销毁)
    动态内存2(动态数组)
    python--numpy模块、spicy模块、 matplotlib模块
    Java--23种设计模式之decorator模式
    Android开发---开发文档翻译
  • 原文地址:https://www.cnblogs.com/tensorrt/p/14452136.html
Copyright © 2020-2023  润新知