YOLOv11/YOLOv8网络结构图绘制,本文适用于论文添加修改模块,绘制属于自己的网络结构图

前言

在深度学习领域,YOLO(You Only Look Once)系列目标检测算法凭借其高效性和准确性,广泛应用于各种实际场景中,例如自动驾驶、安防监控和农业监测等。随着算法的不断发展,YOLO 的网络结构逐步优化,例如 YOLOv8 和 YOLOv11 引入了更加轻量化、高效的模块,使得模型在速度和精度上达到了新的平衡。然而,对于研究者来说,直接使用现成的模型并不能满足某些特定任务的需求,因此对网络结构进行自定义修改和优化就显得尤为重要。

为了便于研究人员在论文中直观展示自己改进后的网络结构,清晰地表达创新点,绘制网络结构图是一项关键工作。本文以 YOLOv8 和 YOLOv11 的网络结构为基础,分别详细讲解如何通过visio工具绘制属于自己的网络结构图,帮助研究人员更好地呈现模型的改进细节。

无论是针对初学者还是有经验的深度学习研究者,本文都将为您提供清晰的指导和实用的技巧,使您能够快速上手绘制高质量的网络结构图,为您的研究工作增添亮点。

网络结构图需要按照训练时使用到的yaml文件绘制,以下是具体的方法。

本文所用软件为Visio。

YOLOv8网络结构图

首先查看yolov8的yaml文件,只查看下面的backbone和head部分就可以。

总览

根据这个yaml,可以看出yaml文件的结构, [from, repeats, module, args]表示层的来源、重复次数、模块类型和参数,from:表示该模块的输入来源,如果为-1则表示来自于上一个模块中,如果为其他具体的值则表示从特定的模块中得到输入信息,为列表如[-1,6]则表示来自上一层和第6层;将所有的模块添加到visio软件中,一共有7个Conv,8个C2f,1个SPPF,2个Upsample,4个Concat,3个Detect,全部添加如下图,每个不同的模块可以设置不同的颜色,这样更加美观一些。

添加好之后按照顺序从上往下,逐层往下,第一层为0,第二层为1...,因此本文中所有的层数从0开始计算。

backbone

因此先把backbone部分按照顺序放在同一列,并用箭头依次连接,如下图。

 如果这里添加了注意力机制或者修改了主干网络,仍然是按照顺序,替换或者添加相应的部分,比如下面的yaml文件,更改了GhostConv和C3Ghost,添加了CBAM注意力机制,主干结构如下图

根据这个yaml,可以看到大部分的Conv都被GhostConv替换,C2f全部被C3Ghost替换,在第10层添加了CBAM,因此我们的结构图需要相应修改如下。

neck

主干部分绘制结束,接下来看下图默认的yolov8中head中所有元素,最后Detect先忽略。

可以看到第11层、14层、17层的Concat的from为列表,分别是-1和对应的层(从0开始),因此绘制时需要注意应该从两个位置接收,因此有两个箭头指向Concat。

绘制出来大概长这个样子, 以左下角的Upsample为第10层,左下角的C2f为第21层,这样绘制是因为第11层的Concat还需要传入第6层的C2f,第20层的Concat还需要传入第9层的SPPF,推荐先这样画方便最后整合,这部分属于neck,也就是颈部。

完整的网络结构图

最后是3个检测头,分别从第15、18、21层传入Detect,因此合并后的完整的网络结构图如下,再在最上方加个输入,即完成。

修改模块的网络结构图

如果是修改了模块,仍然是更改了GhostConv和C3Ghost,添加了CBAM注意力机制,yaml文件如下。

这个绘制成的网络结构图应该为

YOLOv11网络结构图

YOLOv11的网络结构图绘制与YOLOv8的方法一样,我们先查看YOLOv11的yaml文件。

总览

根据这个yaml,可以看出yaml文件的结构, [from, repeats, module, args]表示层的来源、重复次数、模块类型和参数,from:表示该模块的输入来源,如果为-1则表示来自于上一个模块中,如果为其他具体的值则表示从特定的模块中得到输入信息,为列表如[-1,6]则表示来自上一层和第6层;可以看到相比YOLOv8,将C2f替换为C3k2模块,第9层之后增加C2PSA模块,将所有的模块添加到visio软件中,一共有7个Conv,8个C3k2,1个SPPF,1个C2PSA,2个Upsample,4个Concat,3个Detect,全部添加如下图,每个不同的模块可以设置不同的颜色,这样更加美观一些。因此先将所有的模块列出来。

添加好之后按照顺序从上往下,逐层往下,第一层为0,第二层为1...,因此本文中所有的层数从0开始计算。

backbone

因此先把backbone部分按照顺序放在同一列,并用箭头依次连接,如下图。

如果这里添加了注意力机制或者修改了主干网络,仍然是按照顺序,替换或者添加相应的部分,与上面YOLOv11的方法一致,这里不再赘述,不懂的可以评论区问。

neck

主干部分绘制结束,接下来看下图默认的yolov8中head中所有元素,最后Detect先忽略。

绘制出来大概长这个样子, 以左下角的Upsample为第11层,右下角的C3k2为第22层,这样绘制是因为第12层的Concat还需要传入第6层的C3k2,第21层的Concat还需要传入第10层的SPPF,推荐先这样画方便最后整合,这部分属于neck,也就是颈部。

完整的网络结构图

最后是3个检测头,分别从第16、19、22层传入detect,因此合并后的完整的网络结构图如下,再在最上方加个输入,即完成。

修改模块的结构图同理,对照着yaml画就可以,自己不会绘制的可以私信我帮忙绘制网络结构图。