【YOLOv5进阶】——替换主干网络(backbone)-MobileNet为例

声明:笔记是做项目时根据B站博主视频学习时自己编写,请勿随意转载!


一、说在前面的一些话

1、torchvision

需要用到torchvision里的一些模块,之前第一期配置环境的时候已经安装过torchvision!

torchvision是PyTorch生态系统中的一个关键库,专门为计算机视觉任务设计和优化。它提供了丰富的功能和工具:

  • 数据集:内置了多种广泛使用的图像和视频数据集,如MNIST、CIFAR10/100、Fashion-MNIST、ImageNet、COCO等,以torch.utils.data.Dataset的形式实现,方便与PyTorch数据加载器(DataLoader)集成。
  • 数据预处理工具:通过torchvision.transforms模块提供了丰富的数据增强和预处理操作,包括但不限于裁剪、旋转、翻转、归一化、调整大小、颜色转换等,这些操作对于训练稳健的深度学习模型至关重要。
  • 预训练模型:提供了一些常用的预训练模型,如ResNet、VGG、Inception等,这些模型在大型数据集(如ImageNet)上进行过训练,并可以直接使用或进行微调。
  • 图像分类、目标检测和语义分割:提供了常用的图像分类、目标检测和语义分割任务的模型和数据集,如CIFAR-10、PASCAL VOC、COCO等。
  • 可视化工具:提供了一些可视化工具,如TensorBoard的集成、图像
### 替换YOLOv8主干网络MobileNet的方法 在YOLOv8中替换默认的主干网络MobileNet可以显著减少模型参数数量并提高推理速度,这对于资源受限环境下的应用尤为重要。具体实现方法如下: #### 创建自定义模块文件 为了集成MobileNet作为新主干网络,在`yolov10/ultralytics/nn/newsAddmodules`目录下创建一个新的Python文件,命名为`mobile_net_backbone.py`[^2]。 ```python import torch.nn as nn from torchvision import models class MobileNetBackbone(nn.Module): def __init__(self, pretrained=True): super(MobileNetBackbone, self).__init__() mobilenet = models.mobilenet_v3_large(pretrained=pretrained) self.features = mobilenet.features def forward(self, x): return self.features(x) ``` 这段代码实现了基于预训练权重加载MobileNet V3 Large模型,并提取其特征提取部分作为新的骨干网结构[^4]。 #### 修改配置文件 接下来修改YOLOv8对应的yaml配置文件(通常位于`models/yolo.yaml`),指定使用上述自定义构建的MobileNet backbone代替原有的backbone组件。找到对应位置并将相关内容更改为指向新建的`mobile_net_backbone.MobileNetBackbone()`类实化对象。 #### 调整训练脚本 确保训练过程中能够正确调用这个新的主干网络。可以在训练入口处导入该模块,并传入相应参数完成初始化工作。 ```python from yolov10.ultralytics.nn.newsAddmodules.mobile_net_backbone import MobileNetBackbone model.backbone = MobileNetBackbone() ``` 以上步骤完成后即可开始利用MobileNet作为YOLOv8的新主干网络进行目标检测任务的学习与预测过程。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二象性Libo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值