位置: IT常识 - 正文

Yolov5网络修改教程(将backbone修改为EfficientNet、MobileNet3、RegNet等)(yolov5参数设置)

编辑:rootadmin
Yolov5网络修改教程(将backbone修改为EfficientNet、MobileNet3、RegNet等)

推荐整理分享Yolov5网络修改教程(将backbone修改为EfficientNet、MobileNet3、RegNet等)(yolov5参数设置),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:yolov5修改backbone,yolov5如何改进,yolov4怎么改网络框架,yolov5修改backbone,yolov5修改网络结构,yolov5怎么改进,修改yolov3网络结构,yolov5修改网络结构,内容如对您有帮助,希望把文章链接给更多的朋友!

在我的本科毕业论文中,我使用了Yolov5,并尝试对其更改。可以对Yolov5进行一定程度的定制化修改,例如更轻量级的Yolov5-MobileNetv3 或者比Yolov5s更好的(存疑,没有跑过大数据集,可自己实验)Yolov5-EfficientNet。

首先在修改之前,先看Yolov5的网络结构。整体看起来很复杂,但是不用慌张,本篇文章的主要修改处Backbone(特征提取网络)可以抽象为只有三部分,也就是只需要修改这一处地方即可。 然后了解我们需要修改的代码。需要修改代码主要集中在yolov5的model文件夹下。yaml主要是修改代码后相对应的配置文件。common.py中添加新的模块,yolo.py中则是让模型能够支持读取相应的配置文件。 前情介绍完毕。下面正式开始进行模型修改,第一步是选择一些性能比较好的特征提取网络,比如前文提到的MobileNet、EfficientNet等。其实表现的比较好的特征提取网络,大部分都经过三次及以上的下采样,能够得到三种不同大小的特征图。在Yolov5中会将这三种大小特征图进行特征融合,FPN和APN的操作,这里不详细展开,主要需要注意的是特征提取网络需要提取出三种不同大小的特征图,我们选择特征提取网络的最后三次下采样的输出给Yolov5网络,就完成了特征提取网络的修改。 以MobileNetv3-Small为例(我们甚至不需要自己搭建网络,直接挪用pytorch官方网络,以下网络任君选择)pytorch官网 输出网络结构,观察网络。mobilenetv3中主要分为features、avgpool、classify三部分组成,作用分别为特征提取、全局池化、分类器。我们只需要关注特征提取部分,并且着重关注于最后三次降采样部分,所以我们从最后开始往前进行观察。

MobileNet中的倒数第一次下采样发生在第九个模块。(如何快速看到降采样,简单来讲就是stride为2的地方。当然实际还有kernel_size等于5或者其他情况,但是一般比较新的网络kernel_size为5伴随的还有2的padding,所以偷懒可以只看stride) 因此9-11对应YOLOv5倒数第一次降采样。 倒数第二次降采样4-8 倒数第三次降采样0-3 确定好网络提取方式后,第二步,在common.py中最后添加模块。可以看到非常简单,主要添加MobileNet的三个部分。

from torchvision import modelsclass MobileNet1(nn.Module): # out channel 24 def __init__(self, ignore) -> None: super().__init__() model = models.mobilenet_v3_small(pretrained=True) modules = list(model.children()) modules = modules[0][:4] self.model = nn.Sequential(*modules) def forward(self, x): return self.model(x)class MobileNet2(nn.Module): # out 48 channel def __init__(self, ignore) -> None: super().__init__() model = models.mobilenet_v3_small(pretrained=True) modules = list(model.children()) modules = modules[0][4:9] self.model = nn.Sequential(*modules) def forward(self, x): return self.model(x)class MobileNet3(nn.Module): # out 576 channel def __init__(self, ignore) -> None: super().__init__() model = models.mobilenet_v3_small(pretrained=True) modules = list(model.children()) modules = modules[0][9:] self.model = nn.Sequential(*modules) def forward(self, x): return self.model(x)Yolov5网络修改教程(将backbone修改为EfficientNet、MobileNet3、RegNet等)(yolov5参数设置)

第三步,修改yolo.py 在这部分添加这行代码,意思是在解析yaml时放入相应的模块。arg[0]表示yaml模块后跟着的第一个参数,这个参数要告诉模型,此模块输出的通道数。可以回到上面看一看,三个模块的输出通道数为24、48、576。 最后添加模型的yaml,我选择以yolov5n为原型进行修改。

yolov5n

# YOLOv5 🚀 by Ultralytics, GPL-3.0 license# Parametersnc: 80 # number of classesdepth_multiple: 0.33 # model depth multiplewidth_multiple: 0.25 # layer channel multipleanchors: - [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 v6.0 backbonebackbone: # [from, number, module, args] [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2 [-1, 1, Conv, [128, 3, 2]], # 1-P2/4 [-1, 3, C3, [128]], [-1, 1, Conv, [256, 3, 2]], # 3-P3/8 [-1, 6, C3, [256]], [-1, 1, Conv, [512, 3, 2]], # 5-P4/16 [-1, 9, C3, [512]], [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32 [-1, 3, C3, [1024]], [-1, 1, SPPF, [1024, 5]], # 9 ]# YOLOv5 v6.0 headhead: [[-1, 1, Conv, [512, 1, 1]], [-1, 1, nn.Upsample, [None, 2, 'nearest']], [[-1, 6], 1, Concat, [1]], # cat backbone P4 [-1, 3, C3, [512, False]], # 13 [-1, 1, Conv, [256, 1, 1]], [-1, 1, nn.Upsample, [None, 2, 'nearest']], [[-1, 4], 1, Concat, [1]], # cat backbone P3 [-1, 3, C3, [256, False]], # 17 (P3/8-small) [-1, 1, Conv, [256, 3, 2]], [[-1, 14], 1, Concat, [1]], # cat head P4 [-1, 3, C3, [512, False]], # 20 (P4/16-medium) [-1, 1, Conv, [512, 3, 2]], [[-1, 10], 1, Concat, [1]], # cat head P5 [-1, 3, C3, [1024, False]], # 23 (P5/32-large) [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5) ]

yolov5n-mobilenet

# YOLOv5 🚀 by Ultralytics, GPL-3.0 license# Parametersnc: 80 # number of classesdepth_multiple: 0.33 # model depth multiplewidth_multiple: 0.25 # layer channel multipleanchors: - [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 v6.0 backbonebackbone: # [from, number, module, args] [[-1, 1, MobileNet1, [24]], # 0 [-1, 1, MobileNet2, [48]], # 1 [-1, 1, MobileNet3, [576]], # 2 [-1, 1, SPPF, [1024, 5]], # 3 ]# YOLOv5 v6.0 headhead: [[-1, 1, Conv, [512, 1, 1]], [-1, 1, nn.Upsample, [None, 2, 'nearest']], [[-1, 1], 1, Concat, [1]], # cat backbone P4 [-1, 3, C3, [512, False]], # 7 [-1, 1, Conv, [256, 1, 1]], [-1, 1, nn.Upsample, [None, 2, 'nearest']], [[-1, 0], 1, Concat, [1]], # cat backbone P3 [-1, 3, C3, [256, False]], # 11 (P3/8-small) [-1, 1, Conv, [256, 3, 2]], [[-1, 7], 1, Concat, [1]], # cat head P4 [-1, 3, C3, [512, False]], # 14 (P4/16-medium) [-1, 1, Conv, [512, 3, 2]], [[-1, 3], 1, Concat, [1]], # cat head P5 [-1, 3, C3, [1024, False]], # 17 (P5/32-large) [[11, 14, 17], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5) ]

修改的话其实很好理解,yolov5n的back可以按着#的序号来数,concat的就是下采样层,照葫芦画猫,序号改成我们的模块即可。

最后使用–cfg调用即可

python train.py --cfg yolov5n-mobileNet.yaml --weight yolov5n.pt

简单讲一下Yolov5-MobileNetv3的表现,GFLOPs即运算量大幅度减少的同时,精度与yolov5n未使用预训练网络的性能相近。但是GPU环境下运算速度没有提升,主要由于SE模块的特点,不展开细讲,更适合CPU移动平台。

小秀一下,只更改过一个数字的Yolov5贡献者。下一篇文章将介绍如何使用TensorRT C++加速yolov5.

本文链接地址:https://www.jiuchutong.com/zhishi/290817.html 转载请保留说明!

上一篇:手把手教你将HTML文件打包成.apk和.exe(怎样把htm文件转成excel)

下一篇:【AI绘图】来体验了下AI绘图(ai绘图素材)

  • vivos7和vivox50的区别(vivos7和vivox50价格相差有些大呢)

    vivos7和vivox50的区别(vivos7和vivox50价格相差有些大呢)

  • 电脑无法识别9008端口(电脑无法识别鼠标的usb设备怎么办)

    电脑无法识别9008端口(电脑无法识别鼠标的usb设备怎么办)

  • WPS如何输入方块加勾(wps怎么输入方框里打√)

    WPS如何输入方块加勾(wps怎么输入方框里打√)

  • qq怎么让对方看到红色感叹号(qq怎么让对方看到我在线)

    qq怎么让对方看到红色感叹号(qq怎么让对方看到我在线)

  • 拼多多怎么不让别人加我好友(拼多多怎么不让好友看见我买了什么)

    拼多多怎么不让别人加我好友(拼多多怎么不让好友看见我买了什么)

  • 苹果xsmax型号mt是什么版本

    苹果xsmax型号mt是什么版本

  • 笔记本激活是什么意思(笔记本激活什么不给退货)

    笔记本激活是什么意思(笔记本激活什么不给退货)

  • 40w快充是什么意思(40w快充是多少v)

    40w快充是什么意思(40w快充是多少v)

  • wps怎么标页码(Wps怎么标页码)

    wps怎么标页码(Wps怎么标页码)

  • 电脑开机长鸣一直响(电脑开机长鸣一声短鸣三声)

    电脑开机长鸣一直响(电脑开机长鸣一声短鸣三声)

  • 直播因违规被关闭多久(直播违规了)

    直播因违规被关闭多久(直播违规了)

  • 电脑多久换一次(电脑多久换一次电池)

    电脑多久换一次(电脑多久换一次电池)

  • 淘宝淘金币可以赠送给别人吗(淘宝淘金币可以卖吗)

    淘宝淘金币可以赠送给别人吗(淘宝淘金币可以卖吗)

  • 耳机能听见声音不能说话怎么回事(耳机能听见声音,但自己的声音传不出去)

    耳机能听见声音不能说话怎么回事(耳机能听见声音,但自己的声音传不出去)

  • 爱奇艺怎么看不了完整电视剧了(爱奇艺怎么看不了离线视频)

    爱奇艺怎么看不了完整电视剧了(爱奇艺怎么看不了离线视频)

  • qqwifi在线一定在线吗(qqwifi在线是不是在玩手机)

    qqwifi在线一定在线吗(qqwifi在线是不是在玩手机)

  • 网易云音乐等级听歌量怎么计算(网易云音乐等级10级意味着什么)

    网易云音乐等级听歌量怎么计算(网易云音乐等级10级意味着什么)

  • 淘宝发货超时会怎样(淘宝发货超时会影响宝贝权重吗)

    淘宝发货超时会怎样(淘宝发货超时会影响宝贝权重吗)

  • 怎样解除手机反复重启(怎样解除手机反向充电)

    怎样解除手机反复重启(怎样解除手机反向充电)

  • 苹果11pro屏幕多大(苹果11pro屏幕多少钱)

    苹果11pro屏幕多大(苹果11pro屏幕多少钱)

  • no command是什么意思中文(no command是什么意思中文读书郎)

    no command是什么意思中文(no command是什么意思中文读书郎)

  • 三星a60上市时间(三星a60上市时间价格)

    三星a60上市时间(三星a60上市时间价格)

  • win10右键卡顿怎么办(window10为什么右键就卡住)

    win10右键卡顿怎么办(window10为什么右键就卡住)

  • 实用工具推荐,浏览器必备宝藏插件:Wetab新标签页(实用工具书推荐)

    实用工具推荐,浏览器必备宝藏插件:Wetab新标签页(实用工具书推荐)

  • 干货!​如何打造我们自己的“ChatGPT”?| 大佬思辨

    干货!​如何打造我们自己的“ChatGPT”?| 大佬思辨

  • 代扣代缴境外增值税可以抵扣
  • 什么叫差额征税呢
  • 一般纳税人商品混凝土税率
  • 进项税额转出意思是下月还得缴吗
  • 资产负债表与利润表的区别
  • 季报利润表本月金额和本年累计金额
  • 餐饮业购买的油类有哪些
  • 个人出租住房要交个税吗
  • 残疾人就业保障金征收使用管理办法
  • 采购部差旅费会计分录怎么做
  • 个人劳务费增值税如何缴纳
  • 差旅费报销单属于什么凭证?
  • 工资薪金总额包括年终奖吗
  • 进口设备贴息政策2019
  • 一般纳税人增值税可以抵扣吗
  • 税收编码选错了,发票已经开出去几个月了,还有影响吗
  • 出口退税的城建税和教育费附加怎么算
  • 推广费是广告费和业务宣传费吗
  • 工程施工开具发票
  • 工会经费怎么做账务处理
  • 企业所得税投资收益纳税调整
  • 防伪税控发票维修流程
  • win11压缩文件
  • 非应纳增值税项目
  • 购进土地会计分录
  • linux系统参数调优
  • 投资利润率用什么表示
  • php 实例
  • 高翔ORB-SLAM2稠密建图编译(添加实时彩色点云地图+保存点云地图)
  • vue3.0 vite
  • 【第十一届“泰迪杯”数据挖掘挑战赛】B题产品订单的数据分析与需求预测“解题思路“”以及“代码分享”
  • 普通发票被退回怎么处理
  • edge 状态栏
  • framework core
  • 使用groupadd命令创建用户组
  • 业务招待费调增额怎么算
  • 哪些计入管理费用哪些计入资本公积
  • 将织梦dedecms转换到wordpress
  • 个人独资企业核算方式
  • 企业报废车辆如何做账
  • sql server 2008保存数据库
  • mysql开启远程访问权限
  • 预缴了增值税在申报增值税时申报
  • 存货周转率作为控制变量
  • 企业销售收入确认条件
  • 可供出售金融资产是流动资产吗
  • 可转债会计分录怎么做
  • 一般纳税人增值税怎么算
  • 如何把有余额的账单删除
  • 申报前的增值税怎么算
  • 工会经费怎么计提及使用
  • 事业单位零余额账户使用流程
  • 财务报表年报里面的利息费用怎么填
  • 公司二手车销售
  • 土地需要摊销嘛?
  • 企业微信收款如何交税
  • 开给个人的普通增值税
  • 开业前的装修费怎么做账
  • 在MySQL中使用GTIDs复制协议和中断协议的教程
  • 关闭windowsxp窗口的方法有
  • ffplay播放视频命令
  • win8.1怎么安装appx没有许可证
  • dghm.exe是什么程序
  • linux安装和配置
  • win10桌面图标无法正常显示
  • 系统映像不存在怎么重装系统
  • win7便签在哪里找回来
  • perl的$1
  • 如何用vs默认打开unity脚本
  • js数组操作函数
  • ajax multipart/form-data
  • nodejs的组成
  • 实用的app都有哪些
  • jquery教程
  • 四川税务局发票下载
  • 合肥地税局客服电话
  • 兴安盟县城
  • 怎么查询地方规划用地
  • 餐饮办税
  • 亿企代账怎么增加辅助科目
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设