yolov5 backbone 更改为 mobilevit(即改即用)

在大佬的博客补充了一些小问题,按照如下修改,你的代码就能跑起来了

使用MobileViT替换YOLOv5主干网络

收费教程:YOLOv5更换骨干网络之 MobileViT-S / MobileViT-XS / MobileViT-XXS

知识储备

MobileViT模型简介

MobileViT、MobileViTv2、MobileViTv3学习笔记(自用)

MobileViTv1、MobileViTv2、MobileViTv3网络详解

准备工作:

我使用的是6.0 yolov5s

mobilevit

正式修改

  1. 将mobilevit.py放在yolov5/models

2. 修改models/yolo.py

加入所有的模块,或者只加入MV2Block, MobileViTBlock

加入MV2Block, MobileViTBlock

3.修改yaml文件

# YOLOv5 🚀 by Ultralytics, GPL-3.0 license

# Parameters
nc: 1 # number of classes
depth_multiple: 0.33  # model depth multiple
width_multiple: 0.50  # layer channel multiple
anchors:
  - [10,13, 16,30, 33,23]  # P3/8
  - [30,61, 62,45, 59,119]  # P4/16
  - [116,90, 156,198, 373,326]  # P5/32

# YOLOv5 backbone
backbone:
  # [from, number, module, args] 640 x 640
#  [[-1, 1, Conv, [32, 6, 2, 2]],  # 0-P1/2  320 x 320
  [[-1, 1, Focus, [32, 3]],
   [-1, 1, MV2Block, [32, 1, 2]],  # 1-P2/4
   [-1, 1, MV2Block, [48, 2, 2]],  # 160 x 160
   [-1, 2, MV2Block, [48, 1, 2]],
   [-1, 1, MV2Block, [64, 2, 2]],  # 80 x 80
   [-1, 1, MobileViTBlock, [64,96, 2, 3, 2, 192]], # 5 out_dim,dim, depth, kernel_size, patch_size, mlp_dim
   [-1, 1, MV2Block, [80, 2, 2]],  # 40 x 40
   [-1, 1, MobileViTBlock, [80,120, 4, 3, 2, 480]], # 7
   [-1, 1, MV2Block, [96, 2, 2]],   # 20 x 20
   [-1, 1, MobileViTBlock, [96,144, 3, 3, 2, 576]], # 11-P2/4 # 9
  ]

# YOLOv5 head
head:
  [[-1, 1, Conv, [256, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 7], 1, Concat, [1]],  # cat backbone P4
   [-1, 3, C3, [256, False]],  # 13

   [-1, 1, Conv, [128, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 5], 1, Concat, [1]],  # cat backbone P3
   [-1, 3, C3, [128, False]],  # 17 (P3/8-small)

   [-1, 1, Conv, [128, 3, 2]],
   [[-1, 14], 1, Concat, [1]],  # cat head P4
   [-1, 3, C3, [256, False]],  # 20 (P4/16-medium)

   [-1, 1, Conv, [256, 3, 2]],
   [[-1, 10], 1, Concat, [1]],  # cat head P5
   [-1, 3, C3, [512, False]],  # 23 (P5/32-large)

   [[17, 20, 23], 1, Detect, [nc, anchors]],  # Detect(P3, P4, P5)
  ]
  1. 修改mobilevit.py

可以愉快的跑起来了!!!

END

谢谢观看,有用的话点个赞吧!

ADD

einops.EinopsError: Error while processing rearrange-reduction pattern "b d (h ph) (w pw) -> b (ph pw) (h w) d".

Input tensor shape: torch.Size([1, 120, 42, 42]). Additional info: {'ph': 4, 'pw': 4}

  1. 是因为输入输出不匹配造成

  1. 记得关掉rect哦!一个是在参数里,另一个在下图。如果要在test或者val中跑,同样要改

特别感谢养乐多阿

  • 9
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 37
    评论
### 回答1: YOLOv5的backbone主要包括CSPDarknet53和自适应卷积模块,可以通过修改backbone来提高模型的性能或适应特定任务的需求。 对于CSPDarknet53,可以通过增加或减少其卷积层数量和特征图通道数来改变backbone的深度和宽度。这样可以在不影响整个模型结构的前提下,提高模型的性能和精度。 对于自适应卷积模块,可以通过增加或减少自适应卷积块的数量和修改其参数来改变backbone的特征提取能力和感受野大小,从而适应不同的输入图像尺寸和目标大小。 总之,对于YOLOv5的backbone修改需要有一定的经验和技能,需要综合考虑模型的性能、速度和精度等因素,并进行实验验证。 ### 回答2: YOLOv5是目标检测领域的经典算法,其采用了深度神经网络结构来实现快速精准的目标检测功能。其backbone部分是模型的主干部分,主要负责提取图像的特征信息。可以根据具体应用场景和数据集特征进行backbone的修改,以提高模型的性能。 在YOLOv5的backbone部分,可以采用不同的骨干网络架构,比如ResNet、EfficientNet、MobileNet等。其中,ResNet已经成为了图像分类、目标检测等领域中最为普及的骨干网络,其在提取特征方面具有优秀的性能和稳定的训练表现。因此,将ResNet骨干网络与YOLOv5的检测头进行融合,可以大幅提升模型的性能。 此外,为了提高模型的鲁棒性和泛化能力,可以加入不同的特征金字塔模块。例如,采用FPN(Feature Pyramid Networks)模块可以在不同尺度下提取图像的特征信息,可以明显地提高模型的检测能力和准确度。在此基础上,还可以加入ASPP(Atrous Spatial Pyramid Pooling)模块进行空间金字塔池化操作,以进一步提高模型的感受野和上下文信息。 此外,在特殊场景下,比如针对小目标检测或者稀疏目标检测的问题,可以根据具体问题采取相应的backbone修改策略。可以采用轻量化的网络结构,比如MobileNet、ShuffleNet等,以实现模型的快速响应和高效运行。 总之,对YOLOv5的backbone进行修改需要根据具体应用场景和目标检测问题进行选择和调整,以实现好的模型性能和精准度。 ### 回答3: YoloV5是计算机视觉领域中的一款目标检测算法,它使用了一种称为backbone的网络结构来提取图像特征。对backbone进行修改的目的,是为了进一步提高算法的性能,使其能够好地适应不同的应用场景和数据集。 在对YoloV5的backbone进行修改时,需要考虑以下几个方面: 1.网络深度:增加网络深度可以提高模型的表示能力,但也会增加模型的计算量和训练难度。同时,过深的网络可能会出现梯度消失或爆炸等问题,导致模型无法训练。因此,需要根据具体的场景和数据集来确定网络深度。 2.网络宽度:增加网络宽度可以提高模型的感受野和特征表示能力,但也会增加模型的计算量和内存消耗。因此,需要根据具体的硬件设备和训练数据来确定网络宽度。 3.网络结构:可以通过改变网络的结构来提高模型的性能。例如,可以使用残差连接、特征金字塔等技术来增加网络的表示能力和感受野。此外,还可以加入注意力机制、非局部操作等模块来提高模型的表达能力和鲁棒性。 4.预训练模型:可以使用预训练模型来提高模型的泛化能力和训练速度。例如,可以使用ImageNet等大规模图像数据集来预训练模型,以提高模型对图像特征的提取能力和泛化能力。 综上所述,对YoloV5的backbone进行修改需要综合考虑网络深度、宽度、结构和预训练等方面。只有针对具体的应用场景和数据集进行优化,才能得到好的性能和使用体验。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值