当前位置:网站首页>【Make YOLO Great Again】YOLOv1-v7全系列大解析(Neck篇)
【Make YOLO Great Again】YOLOv1-v7全系列大解析(Neck篇)
2022-08-01 02:31:00 【WeThinkIn】

Rocky Ding
公众号:WeThinkIn

写在前面
【Make YOLO Great Again】栏目专注于从更实战,更深刻的角度解析YOLOv1-v7这个CV领域举足轻重的算法系列,并给出其在业务侧,竞赛侧以及研究侧的延伸思考。欢迎大家一起交流学习,分享宝贵的ideas与思考~
大家好,我是Rocky。
近年来YOLO系列层出不穷,更新不断,已经到v7版本。Rocky认为不能简单用版本高低来评判一个系列的效果好坏,YOLOv1-v7不同版本各有特色,在不同场景,不同上下游环境,不同资源支持的情况下,如何从容选择使用哪个版本,甚至使用哪个特定部分,都需要我们对YOLOv1-v7有一个全面的认识。
故Rocky将YOLO系列每个版本都表示成下图中的五个部分,逐一进行解析,并将每个部分带入业务侧,竞赛侧,研究侧进行延伸思考,探索更多可能性。
而本文将聚焦于Neck侧的分享,希望能让江湖中的英雄豪杰获益,也希望大家提出宝贵的建议与观点,让这个栏目更加繁荣。

So,enjoy(与本文的BGM一起食用更佳哦):
干货篇
----【目录先行】----
YOLOv1-v7论文&&代码大放送
YOLO系列中Neck结构的由来以及作用
YOLOv1-v3 Neck侧解析
YOLOv4 Neck侧解析
YOLOv5 Neck侧解析
YOLOx Neck侧解析
YOLOv6 Neck侧解析
YOLOv7 Neck侧解析
【一】YOLOv1-v7论文&&代码大放送
YOLOv1论文名以及论文地址:You Only Look Once: Unified, Real-Time Object Detection
YOLOv1开源代码:YOLOv1-Darkent
YOLOv2论文名以及论文地址:YOLO9000: Better, Faster, Stronger
YOLOv2开源代码:YOLOv2-Darkent
YOLOv3论文名以及论文地址:YOLOv3: An Incremental Improvement
YOLOv3开源代码:YOLOv3-PyTorch
YOLOv4论文名以及论文地址:YOLOv4: Optimal Speed and Accuracy of Object Detection
YOLOv4开源代码:YOLOv4-Darkent
YOLOv5论文名以及论文地址:无
YOLOv5开源代码:YOLOv5-PyTorch
YOLOx论文名以及论文地址:YOLOX: Exceeding YOLO Series in 2021
YOLOx开源代码:YOLOx-PyTorch
YOLOv6官方讲解:YOLOv6:又快又准的目标检测框架开源啦
YOLOv6开源代码:YOLOv6-PyTorch
YOLOv7论文名以及论文地址:YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors
YOLOv7开源代码:Official YOLOv7-PyTorch
【二】YOLO系列中Neck结构的由来以及作用
YOLO从v3版本开始设计Neck结构,其中的特征融合思想最初在FPN(feature pyramid networks)网络中提出,在YOLOv3中进行结构的微调,最终成为YOLO后续系列不可或缺的部分。
FPN的思路剑指小目标,原来很多目标检测算法都是只采用高层特征进行预测,高层的特征语义信息比较丰富,但是分辨率较低,目标位置比较粗略。假设在深层网络中,最后的高层特征图中一个像素可能对应着输出图像的像素区域,那么小于像素的小物体的特征大概率已经丢失。与此同时,低层的特征语义信息比较少,但是目标位置准确,这是对小目标检测有帮助的。FPN将高层特征与底层特征进行融合,从而同时利用低层特征的高分辨率和高层特征的丰富语义信息,并进行了多尺度特征的独立预测,对小物体的检测效果有明显的提升。

FPN论文地址:Feature Pyramid Networks for Object Detection
【Rocky的延伸思考】
业务侧:FPN具备业务模块沉淀价值,但还是要分场景来使用,主要在小目标场景可以尝试,但同时要兼顾上游数据侧与下游部署侧的适配。 竞赛侧:FPN的思想可谓是竞赛侧的一个利器,在分类,分割,检测等任务中都能大展拳脚,进行迁移应用。 研究侧:FPN具备作为baseline的价值,不管是进行拓展研究还是单纯学习思想,这个算法都是不错的选择。
【三】YOLOv1-v3 Neck侧解析
YOLOv1和YOLOv2都是不含Neck结构的,Rocky将在本系列的Backbone篇中对这两个模型进行详细介绍,本文中便不做过多赘述。

YOLOv3则是较好的引入了FPN的思想,以支持后面的Head侧采用多尺度来对不同size的目标进行检测,越精细的grid cell就可以检测出越精细的目标物体。YOLOv3设置了三个不同的尺寸,分别是,和,他们之间的比例为。
YOLOv3采用全卷积的思路,在Neck侧也不例外(YOLOv1-v2中采用池化层做特征图的下采样, v3中采用卷积层来实现)。
【Rocky的延伸思考】
业务侧:YOLOv3 Neck侧经过时间的考验与沉淀,非常适合作为业务侧的入场baseline部分模块进行搭建。 竞赛侧:YOLOv3 Neck架构在竞赛侧有迁移应用的价值。 研究侧:YOLOv3 Neck架构具备作为baseline的价值,不管是进行拓展研究还是单纯学习思想。
【四】YOLOv4 Neck侧解析
YOLOv4的Neck侧主要包含了SPP模块和PAN模块。

SPP模块在YOLOv3_SPP.cfg中率先展现,但是在YOLOv4中则成为了一个标配。SPP模块包含3个最大池化层,其滑动核(sliding kernel)尺寸分别是,并通过Padding操作,使每个最大池化层的输出特征图不变,用于Concat融合操作。
SPP模块代替了卷积层后的常规池化层,可以增加感受野,更能获取多尺度特征,训练速度也让人满意。Yolov4论文中使用的图像在COCO目标检测任务进行实验,SPP模块能以0.5%的额外计算代价将AP50提升2.7%。

SPP模块论文:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
PAN模块对不同层次的特征进行疯狂融合,其在FPN模块的基础上增加了自底向上的特征金字塔结构,保留了更多的浅层位置特征,将整体特征提取能力进一步提升。
在引入YOLOv4时,特征图最后的融合操作相比于原论文发生了变化,从add操作改为concat操作,增加了特征图的通道数:

PAN模块论文:Path Aggregation Network for Instance Segmentation
【Rocky的延伸思考】
业务侧:可以作为baseline模型的一个备选,实际效果还需通过实验来反馈。 竞赛侧:YOLOv4 Neck侧可以作为竞赛侧的提分策略。 研究侧:YOLOv4 Neck架构具备作为baseline的价值,不管是进行拓展研究还是单纯学习思想。
【五】YOLOv5 Neck侧解析
由于YOLOv5在YOLOv4发布之后没多久就开源了,且并没有论文的发表,创新性部分一直受到热议。

YOLOv5的Neck侧也使用了SPP模块和PAN模块,但是在PAN模块进行融合后,将YOLOv4中使用的常规CBL模块替换成借鉴CSPnet设计的CSP_v5结构,加强网络特征融合的能力。
【Rocky的延伸思考】
业务侧:YOLOv5 Neck侧在工程中非常稳定,且其github库更新频率让人敬佩,可以作为业务baseline模型的首选。 竞赛侧:YOLOv5 Neck侧可以作为检测和分割竞赛入场的模块。
【六】YOLOx Neck侧解析
YOLOx的Neck侧依然使用了YOLOv3的结构,并且使用了SPP模块。

【七】YOLOv6 Neck侧解析
YOLOv6的Neck侧受到硬件感知神经网络设计思想的启发,基于RepVGG style设计了可重参数化、更高效的Rep-PAN。

硬件感知神经网络设计的思想基于硬件的特性、推理框架/编译框架的特点,以硬件和编译友好的结构作为设计原则,在网络构建时,综合考虑硬件计算能力、内存带宽、编译优化特性、网络表征能力等,进而获得又快又好的网络结构。
Rep-PAN在PAN模块基础上,引入RepVGG style的RepBlock替换了YOLOv5中使用的CSP-Block,同时对整体Neck中的算子进行了调整,目的是在硬件上达到高效推理的同时,保持较好的多尺度特征融合能力。
RepVGG论文:RepVGG: Making VGG-style ConvNets Great Again
【Rocky的延伸思考】
业务侧:YOLOv6的Neck侧使用了端侧友好的设计策略,我也在实际中测试过,发现其效果会因任务类型与场景的改变而变化,是否使用还需要通过实验来反馈。 竞赛侧:相信YOLOv6的Neck侧在一些限定算力资源的竞赛中会大放异彩。
【八】YOLOv7 Neck侧解析
YOLOv7的Neck侧主要包含了SPPSCP模块和优化的PAN模块。

SPPCSP模块在SPP模块基础上在最后增加concat操作,与SPP模块之前的特征图进行融合,更加丰富了特征信息。
PAN模块引入E-ELAN结构,使用expand、shuffle、merge cardinality等策略实现在不破坏原始梯度路径的情况下,提高网络的学习能力。
论文原文:(E-ELAN uses expand, shuffle, merge cardinality to achieve the ability to continuously enhance the learning ability of the network without destroying the original gradient path.)

【Rocky的延伸思考】
业务侧:YOLOv7 Neck侧作为YOLO系列最新的一版,其值得我们在业务侧进行实验验证其效果。 研究侧:YOLOv7 Ncek是刚发表的,具备很强的研究侧价值。
精致的结尾
Rocky将算法高价值面试知识点即“三年面试五年模拟”之独孤九剑秘籍前六式进行汇总梳理成汇总篇,并制作成pdf版本,大家可在公众号后台 【精华干货】菜单或者回复关键词“三年面试五年模拟” 进行取用。由于“三年面试五年模拟”之独孤九剑秘籍pdf版本是Rocky在工作之余进行整理总结,难免有疏漏与错误之处,欢迎大家对可优化的部分进行指正,Rocky将在后续的优化迭代版本中及时更正。
Rocky也一直在运营技术交流群(WeThinkIn-技术交流群),这个群的初心主要聚焦于技术话题的讨论与学习,包括但不限于CV算法,算法,开发,IT技术等。群里有很多人工智能行业的大牛,欢迎大家入群一起学习交流~(请扫描二维码,我拉你进群~)
边栏推荐
- MYSQL logical architecture
- 内核的解压缩过程详解
- 【数据分析】基于matlab GUI学生成绩管理系统【含Matlab源码 1981期】
- 大佬们,MySQL cdc source在增量过程中回收 replication slave 和 r
- YOLO怎么入门?怎么实现自己的训练集?
- IDEA 找不到或无法加载主类 或 Module “*“ must not contain source root “*“ The root already belongs to module “*“
- RTL8762DK UART (two)
- 带wiringPi库在unbutu 编译 并且在树莓派运行
- 初出茅庐的小李第113篇博客项目笔记之机智云智能浇花器实战(2)-基础Demo实现
- Simple vim configuration
猜你喜欢

Unity3D study notes 10 - texture array

how to edit the table of contents of an epub ebook

RTL8762DK PWM (seven)

LeetCode每日一练 —— 环形链表问题(面试四连问)

Modern Enterprise Architecture Framework 1

北京突然宣布,元宇宙重大消息

New York University et al | TM-Vec: Template Modeling Vectors for Rapid Homology Detection and Alignment

TCP协议详解

MYSQL Index Analysis

The IDEA can't find or unable to load The main class or Module "*" must not contain The source root "*" The root already belongs to The Module "*"
随机推荐
Lua introductory case of actual combat 1234 custom function and the standard library function
Inheritance Considerations
Summary of JVM interview questions (continuously updated)
软考高级系统架构设计师系列之:系统开发基础知识
HCIP(14)
Summary of MVCC
pdb药物综合数据库
How to get started with YOLO?How to implement your own training set?
device node结构体转换成platform_device结构体
ECCV2022 Workshop | Multi-Object Tracking and Segmentation in Complex Environments
Fat interface in JQESAP system
数据中台建设(七):数据资产管理
Nmap 操作手册 - 完整版
Device tree - conversion from dtb format to struct device node structure
Chinese version of Pylint inspection rules
You need to know the TCP wave four times
OSF一分钟了解敏捷开发模式
解决安装MySQL后,Excel打开很慢的问题
TCP协议详解
OSD read SAP CRM One Order application log way of optimization