深入浅出 Yolo 系列之 Yolov7 基础网络结构详解

从 2015 年的 YOLOV1,2016 年 YOLOV22018 年的 YOLOV3,到 2020 年的 YOLOV4YOLOV5, 以及最近出现的 YOLOV76YOLOV7 可以说 YOLO 系列见证了深度学习时代目标检测的演化。对于 YOLO 的基础知识以及 YOLOV1 到 YOLOV5 可以去看大白的 YOLO 系列,本文主要对 YOLOV7 的网络结构进行一个梳理,便于大家直观的感受。

1. YOLOV7 整体结构

在这里插入图片描述

我们先整体来看下 YOLOV7,首先对输入的图片 resize 为 640x640 大小,输入到 backbone 网络中,然后经 head 层网络输出三层不同 size 大小的 feature map,经过 Rep 和 conv输出预测结果,这里以 coco 为例子,输出为 80 个类别,然后每个输出(x ,y, w, h, o) 即坐标位置和前后背景,3 是指的 anchor 数量,因此每一层的输出为 (80+5)x3 = 255再乘上 feature map 的大小就是最终的输出了。

2. backbone

YOLOV7 的 backbone 如下图所示
在这里插入图片描述

总共有 50 层, 我在上图用黑色数字把关键层数标示出来了。
首先是经过 4 层卷积层,如下图,CBS 主要是 Conv + BN + SiLU 构成,我在图中用不同的颜色表示不同的 size 和 stride, 如 (3, 2) 表示卷积核大小为 3 ,步长为 2。 在 config 中的配置如图。
在这里插入图片描述
在这里插入图片描述

经过 4个 CBS 后,特征图变为 160 * 160 * 128 大小。随后会经过论文中提出的 ELAN 模块,ELAN 由多个 CBS 构成,其输入输出特征大小保持不变,通道数在开始的两个 CBS 会有变化, 后面的几个输入通道都是和输出通道保持一致的,经过最后一个 CBS 输出为需要的通道。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
MP 层 主要是分为 Maxpool 和 CBS , 其中 MP1 和 MP2 主要是通道数的比变化。
在这里插入图片描述

backbone的基本组件就介绍完了,我们整体来看下 backbone,经过 4 个 CBS 后,接入例如一个 ELAN ,然后后面就是三个 MP + ELAN 的输出,对应的就是 C3/C4/C5 的输出,大小分别为 80 * 80 * 512 , 40 * 40 * 1024, 20 * 20 * 1024。 每一个 MP 由 5 层, ELAN 有 8 层, 所以整个 backbone 的层数为 4 + 8 + 13 * 3 = 51 层, 从 0 开始的话,最后一层就是第 50 层。

3. head

在这里插入图片描述

YOLOV7 head 其实就是一个 pafpn 的结构,和之前的YOLOV4,YOLOV5 一样。首先,对于 backbone 最后输出的 32 倍降采样特征图 C5,然后经过 SPPCSP,通道数从1024变为512。先按照 top down 和 C4、C3融合,得到 P3、P4 和 P5;再按 bottom-up 去和 P4、P5 做融合。
在这里插入图片描述
在这里插入图片描述
这里基本和 YOLOV5 是一样的,区别在于将 YOLOV5 中的 CSP 模块换成了 ELAN-H 模块, 同时下采样变为了 MP2 层。 ELAN-H 模块是我自己命名的,它和 backbone 中的 ELAN 稍微有点区别就是 cat 的数量不同。
在这里插入图片描述
至于 E-ELAN 论文中说到是在 YOLOV7-E6eE中用到, 但是我在看代码的时候,有点没太明白是怎么做 shuffle 的,这里等我弄明白了再补上来。
在这里插入图片描述

对于 pafpn 输出的 P3、P4 和 P5 , 经过 RepConv 调整通道数,最后使用 1x1 卷积去预测 objectness、class 和 bbox 三部分。
RepConv 在训练和推理是有一定的区别。训练时有三个分支的相加输出,部署时会将分支的参数重参数化到主分支上。
在这里插入图片描述

end

至此,我们将 YOLOV7 的基本结构介绍完了,至于 YOLOv7 的其他知识,如Aux Head 等以及 YOLOv7 的其他网络结构,我们后续再讲。 梳理可能有未理解正确的地方,欢迎交流。

  • 117
    点赞
  • 791
    收藏
    觉得还不错? 一键收藏
  • 32
    评论
### 回答1: 这是关于使用 YOLOv5 深入浅出的问题。YOLOv5 是目标检测领域的一种深度学习框架,它建立在 YOLO 系列基础上,具有更快的速度和更高的精度。YOLov5 的核心基础知识包括卷积神经网络和目标检测算法等。 ### 回答2: 目前,Yolo系列算法已经成为了目标检测领域的主流算法之一。其中,Yolov5作为Yolo系列的最新版本,相比之前版本,在检测速度和精度上都有了大幅度的提升。本文将从以下四个方面对Yolov5进行深入浅出地解析。 一、Yolov5基础框架 Yolov5的基础框架由三个主要部分组成,分别是:Backbone、Neck和Head。Backbone通常采用的是骨干网络,如ResNet、EfficientNet等,用于提取图像特征。Neck是用来融合不同层级的特征图,一般采用的是FPN(Feature Pyramid Network)或PAN(Path Aggregation Network)。Head是由若干个卷积层和全连接层组成的一个模块,用于进行目标检测。 二、Yolov5中的anchor boxes 在目标检测中,anchor boxes是非常重要的一部分。在Yolov5中,anchor boxes是通过k-means算法进行聚类得到的。这里的k-means算法是针对训练集中目标的大小进行的聚类,目的是得到最适合的anchor boxes尺寸。 三、Yolov5网络结构的变化 相比于Yolov4,Yolov5在网络结构上的变化主要包括:去掉了大量瓶颈块,增大了通道数,增加了下采样层数,减少了最大池化层。这些变化都是为了提高检测速度和准确率。 四、Yolov5的训练技巧 在训练阶段,Yolov5采用了GIoU损失函数和Mosaic数据增强方式。GIoU损失函数是一种与边框大小无关的、能够有效地惩罚预测框的偏移和错位的损失函数。而Mosaic数据增强方式则是一种结合了多张图像的数据增强方式,在提高数据样本多样性的同时还能有效避免过拟合。 综上所述,Yolov5作为Yolo系列的最新版本,不仅在检测速度和准确率上有了大幅提升,还采用了一系列新的训练技巧。对于从事目标检测研究的人员来说,了解和掌握Yolov5的核心基础知识是非常重要的。 ### 回答3: YOLOv5是一种新的目标检测算法,它通过使用深度学习技术来实现图像中物体的检测。这个算法具有很高的准确率和比较快的处理速度,因此在实际应用中得到了广泛的应用。下面来深入浅出的讲解YOLOv5的基础知识。 1、YOLOv5的特点:YOLOv5采用的是深度学习技术,利用神经网络对图像进行处理,从而实现物体检测。它的特点是速度快,准确率高。相比传统的目标检测方法,YOLOv5还可以同时处理多个物体的检测,所以它比较适合用于实时场景中的物体检测。 2、YOLOv5的网络结构YOLOv5采用的是一种叫做YOLOv4的网络结构,它是一种非常复杂的卷积神经网络模型。整个网络分为多个层次,每一层都是由卷积、池化、激活函数等多个操作组成。通过这些层级的处理,YOLOv5可以进行对图像的特征提取,并最终输出每个物体的位置和类别。 3、YOLOv5的训练过程:YOLOv5的训练过程是一个比较复杂的过程,需要利用大量的标注好的图像数据进行训练。这个过程需要用到一些特殊工具和方法,比如数据增强、批量训练、学习率调整等。通过这些方法,YOLOv5可以不断地优化自己的检测能力,从而提升对物体的检测准确率。 4、YOLOv5的应用场景:YOLOv5的应用场景非常广泛,可以应用于工业生产、安防监控、交通管理等多个领域。比如在工业生产中,可以用来对自动化生产线上的产品进行检测;在安防监控中,可以用来对物体进行追踪和识别;在交通管理中,可以用来对车辆、行人等进行检测和统计。 以上就是YOLOv5的核心基础知识的完整讲解了,希望能对大家有所启发。总的来说,YOLOv5是一种比较先进的目标检测算法,其准确率和速度都较高,可以应用于多个领域。但是其训练过程比较复杂,需要有一定的专业知识和技能才能够进行有效的训练和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 32
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值