【Week-Y4】修改yolov5s中C3模块的结构,common.py文件解读

修改C3模块的结构

如左图,有3个conv模块,需要改为右图,右图只包含2个conv模块。
📕提示:仅需修改./models/common.py文件

📕步骤:

(1)首先找到coomon.py中定义C3模块的地方;

(2)然后将代码与上图的左图对应起来,观察需要改动的位置,结合结构,更容易看懂代码;

(3)找到之后按照要求修改,并运行train.py,看是否能跑通。

./models/common.py中,保存的是v5s各个模块的实现,包括基本模块(如autopad、Conv、Bottleneck、BottleneckCSP、C3、SPP、Concat、Expand和Contract)和重要模块(NMS、AutoShape、Detections、Classify)。

一、commom.py文件解析

yolov5-master的文件结构如下:

python 复制代码
yolov5-master
|-classify
|-data
|-models (本次学习需要的文件在这里面)
	|-hub
	|-segment
	|-common.py(这是本次学习需要修改的文件,文件内容是yolov5s各个模块的定义)
	|-experi,emtal.py
	|-tf.py
	...
|-runs
|-segment
|-utils
...

打开common.py文件,找到定义C3模块的位置:

python 复制代码
class C3(nn.Module):
    # CSP Bottleneck with 3 convolutions
    def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5):
        """Initializes C3 module with options for channel count, bottleneck repetition, shortcut usage, group
        convolutions, and expansion.
        """
        super().__init__()
        c_ = int(c2 * e)  # hidden channels
        self.cv1 = Conv(c1, c_, 1, 1)
        self.cv2 = Conv(c1, c_, 1, 1)
        self.cv3 = Conv(2 * c_, c2, 1)  # optional act=FReLU(c2)
        self.m = nn.Sequential(*(Bottleneck(c_, c_, shortcut, g, e=1.0) for _ in range(n)))

    def forward(self, x):
        """Performs forward propagation using concatenated outputs from two convolutions and a Bottleneck sequence."""
        return self.cv3(torch.cat((self.m(self.cv1(x)), self.cv2(x)), 1))

这一段代码中定义了C3的模块结构,初始化时定义了3个卷积结构,然后在forward函数内部,给出了该模块的返回值,将返回值self.cv3(torch.cat((self.m(self.cv1(x)), self.cv2(x)), 1))拆解,并与给出的C3结构一一对应,得到下图:

由此可知,去掉concat后的卷积只需要将返回值的最外层丢掉即可。

二、修改代码,运行train.py训练

C3模块修改如下:【注释的那行是原来的结构,也就是concat后还经过了conv】

数据集:水果数据集 【使用week Y2的数据集】

命令行:python .\train.py --img 900 --batch 2 --epoch 100 --data .\fruit.yaml --cfg .\models\yolov5s.yaml --weights .\yolov5s.pt --device cpu【与week Y2的训练命令是一样的】

开始训练:

相关推荐
聚客AI1 小时前
🧠深度解析模型压缩革命:减枝、量化、知识蒸馏
人工智能·深度学习·llm
SHIPKING3931 小时前
【机器学习&深度学习】Ollama、vLLM、LMDeploy对比:选择适合你的 LLM 推理框架
人工智能·深度学习·机器学习
coding者在努力2 小时前
深度学习核心技巧
人工智能·深度学习
yzx9910132 小时前
从机器视觉到图像识别:计算机视觉的多维探索
人工智能·深度学习·机器学习
是Dream呀2 小时前
GPT-5时代的AI工具:AiOnly一站式平台深度体验报告
人工智能·深度学习·机器学习
CoovallyAIHub6 小时前
标注成本骤降,DINOv3炸裂发布!冻结 backbone 即拿即用,性能对标SOTA
深度学习·算法·计算机视觉
聚客AI7 小时前
深度拆解AI大模型从训练框架、推理优化到市场趋势与基础设施挑战
图像处理·人工智能·pytorch·深度学习·机器学习·自然语言处理·transformer
arron88998 小时前
YOLOv8n-pose 模型使用
人工智能·深度学习·yolo
飞翔的佩奇14 小时前
【完整源码+数据集+部署教程】表盘指针检测系统源码和数据集:改进yolo11-CA-HSFPN
python·yolo·计算机视觉·数据集·yolo11·表盘指针检测
Coovally AI模型快速验证17 小时前
农田扫描提速37%!基于检测置信度的无人机“智能抽查”路径规划,Coovally一键加速模型落地
深度学习·算法·yolo·计算机视觉·transformer·无人机