引言
随着目标检测技术的不断发展,YOLO系列模型因其卓越的实时性能和准确性而备受关注。最近,CVPR 2024的论文《Rewrite the Stars》提出了StarNet,一种通过星操作(element-wise multiplication)实现高维非线性特征映射的网络架构。这为YOLOv8的进一步改进提供了新的思路。本文将探讨如何将StarNet集成到YOLOv8中,以提高模型的特征表示能力和检测性能。
StarNet的优势
StarNet的设计旨在实现以下优势:
星形操作的强大能力:研究者通过实验和理论分析,明确证明了星形操作可以将输入数据映射到一个极高维的非线性特征空间。这意味着,星形操作能够生成丰富的特征表示,使得模型在处理复杂数据时更加有效。
与传统网络的区别:星形操作与传统神经网络的增加宽度(或通道数)的方法有所不同。它更像是核函数(特别是多项式核函数),在不同的通道上进行成对乘法,从而实现特征的非线性组合。星形操作能够在紧凑的特征空间内工作,同时受益于隐含的高维特征表示。这正是星形操作引人注目的地方,它能够在不增加计算成本的情况下,提供丰富的特征表示能力。
2. 添加StarNet星形卷积StarsBlock
由于StarNet是一个backbone,因此本研究只使用StarsBlock对YOLOv8做改进。本次改进主要有两种,一是直接在SPPF模块之前添加,二是将CF2和StarsBlock相结合变成C2f_StarsBlock替换原来的CF2模块。
接下来,我们将详细介绍如何将PKI集成到 YOLOv8 模型中。
这是我的GitHub代码:tgf123/YOLOv8_improve (github.com)
这是改进讲解:YOLOv8模型改进 第五讲 添加StarNet星形卷积StarsBlock_哔哩哔哩_bilibili
2.1 如何添加
首先,在我上传的代码中yolov8_improve中找到starnet.py代码部分,它包含两个部分一个是starnet.py的核心代码,一个是yolov8模型的配置文件。
然后我们在modules文件夹下面创建starnet.py文件,然后将PKInet的核心代码放入其中
2.1.1第一个改进
1. 在 task.py文件中导入StarsBlock
from ultralytics.nn.modules.starnet import StarsBlock
2. 然后将 StarsBlock添加到下面当中
2.1.2第二个改进
1. 在 task.py文件中导入StarsBlock
from ultralytics.nn.modules.starnet import C2f_StarsBlock
2. 然后将 C2f_StarsBlock添加到下面当中
3. 然后将 C2f_StarsBlock添加到下面当中
最后将配置文件复制到下面文件夹下,运行代码跑通