位置: 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绘图素材)

  • excel表格编辑受限怎么取消(excel表显示编辑受限是怎么回事)

    excel表格编辑受限怎么取消(excel表显示编辑受限是怎么回事)

  • qq音乐宠物领养后怎么换(qq音乐的宠物)

    qq音乐宠物领养后怎么换(qq音乐的宠物)

  • oppo R15手机怎么截长图(oppor15手机怎么录屏)

    oppo R15手机怎么截长图(oppor15手机怎么录屏)

  • p30pro充电变慢了(p30充电速度变慢了)

    p30pro充电变慢了(p30充电速度变慢了)

  • 笔记本win10鼠标光标不见了(笔记本Win10鼠标键盘被病毒控制)

    笔记本win10鼠标光标不见了(笔记本Win10鼠标键盘被病毒控制)

  • i59300h做设计够用吗(i59300h日常办公够用吗)

    i59300h做设计够用吗(i59300h日常办公够用吗)

  • vivo锁定桌面布局(vivoy3锁定桌面布局)

    vivo锁定桌面布局(vivoy3锁定桌面布局)

  • 手机号注册的qq账号忘记了怎么办(手机号注册的qq怎么解绑)

    手机号注册的qq账号忘记了怎么办(手机号注册的qq怎么解绑)

  • 苹果wi-fi打不开是哪里问题(苹果wifi打不开是什么原因)

    苹果wi-fi打不开是哪里问题(苹果wifi打不开是什么原因)

  • 千兆带宽实际传输速度(千兆网实际传输速率)

    千兆带宽实际传输速度(千兆网实际传输速率)

  • 苏宁买的iphone能去苹果售后吗(在苏宁买的苹果手机可以退吗)

    苏宁买的iphone能去苹果售后吗(在苏宁买的苹果手机可以退吗)

  • 苹果se关机充电不显示充电(苹果se关机充电不显示电量)

    苹果se关机充电不显示充电(苹果se关机充电不显示电量)

  • icloud照片微信发不出去(微信发照片 icloud)

    icloud照片微信发不出去(微信发照片 icloud)

  • 与模拟电路相比数字电路具有哪些特点(与模拟电路相比,数字电路具有哪些特点)

    与模拟电路相比数字电路具有哪些特点(与模拟电路相比,数字电路具有哪些特点)

  • 数码摄像机是输入设备还是输出设备(数字摄像机是图像输入设备吗)

    数码摄像机是输入设备还是输出设备(数字摄像机是图像输入设备吗)

  • 手机颜色反转怎么设置(手机颜色反转怎么保存图片)

    手机颜色反转怎么设置(手机颜色反转怎么保存图片)

  • 键盘分为哪五个区(键盘分为哪五个部分)

    键盘分为哪五个区(键盘分为哪五个部分)

  • word1厘米等于多少磅(word 厘米)

    word1厘米等于多少磅(word 厘米)

  • 华为手环睡眠监测原理(华为手环睡眠监测准确么)

    华为手环睡眠监测原理(华为手环睡眠监测准确么)

  • 剪映显示网络异常是什么原因(剪映显示网络异常无法从icloud下载素材是什么原因)

    剪映显示网络异常是什么原因(剪映显示网络异常无法从icloud下载素材是什么原因)

  • 微信零钱记录删除后还能看到吗(微信零钱记录删除)

    微信零钱记录删除后还能看到吗(微信零钱记录删除)

  • 手机qq怎么改好友备注(手机qq怎么改好友天数)

    手机qq怎么改好友备注(手机qq怎么改好友天数)

  • 手机进入工程模式怎么退出(手机进入工程模式代码)

    手机进入工程模式怎么退出(手机进入工程模式代码)

  • 桌面内容中心怎么关闭(桌面内容中心怎么开启)

    桌面内容中心怎么关闭(桌面内容中心怎么开启)

  • 三星s10支持双卡吗(三星s10支持双卡双4g吗)

    三星s10支持双卡吗(三星s10支持双卡双4g吗)

  • 360wifi初始密码是多少(360无线wifi初始密码是多少)

    360wifi初始密码是多少(360无线wifi初始密码是多少)

  • 小度如何控制空调(小度如何控制家里的空调)

    小度如何控制空调(小度如何控制家里的空调)

  • 鼠标dpi怎么调(网吧鼠标dpi怎么调)

    鼠标dpi怎么调(网吧鼠标dpi怎么调)

  • 如何修复Win11/10 上的更新错误0x80240019?(如何修复win11系统)

    如何修复Win11/10 上的更新错误0x80240019?(如何修复win11系统)

  • 腾讯云验证码 JS 地址变更指引(腾讯云验证码服务)

    腾讯云验证码 JS 地址变更指引(腾讯云验证码服务)

  • 帝国CMS首页怎么调用内容页下载地址(帝国cms首页怎么打开)

    帝国CMS首页怎么调用内容页下载地址(帝国cms首页怎么打开)

  • 应交税费转出未交增值税借贷方表示什么
  • 营业执照是怎么样子的
  • 个人所得税专项扣除子女教育标准
  • 劳务报酬需要补税吗
  • 给员工代缴社保工资是否违反劳动法
  • 顺丰开专票有明细吗
  • 年度财务报表和季度财务报表一样吗
  • 临时聘用人员费用谁承担
  • 收到小规模企业农产品普票可以抵扣进项税吗?
  • 购进商品返点的钱用于抵扣货款怎么入账?
  • 2018水利基金税率是多少?怎么算
  • 老项目简易征收可以用进项抵扣吗
  • 三证合一号码是纳税人识别号吗
  • 单位有临时工工资怎么发
  • 金融机构利息超过多少不合法
  • 何时进行文化事业建设
  • 进项税和销项税税率一样吗
  • 企业所得税季报怎么申报
  • 个体户怎么给供货公司
  • 理财认购申购
  • 公司股权变更后税务没有变更会有什么后果
  • MAC OS X Yosemite开启深色模式的方法
  • php 生成缩略图
  • php fopen()
  • 土地承包经营权和土地经营权区别
  • vscode配置javafx
  • 行政事业单位 银行
  • php创建视图
  • 长期借款业务会亏损吗
  • javascript中文手册
  • php web socket
  • 上月购进固定资产次月退货已开具红字发票如何入账
  • mongodb win7
  • 长期股权投资减值准备是什么科目
  • 研发费用计入什么表
  • mysql的lsn
  • 兼职人员工资需要交个税吗
  • 累计预扣法利弊
  • 专职独立研发企业是指
  • 应收账款计提坏账比例
  • 母公司为子公司承担税费
  • 工资发多了可以追回吗
  • 上年度库存商品错误如何更正
  • 网上银行回单可以做账吗
  • 多打的投资款怎么入账
  • 应付职工薪酬包括福利费吗
  • 个人银行帐户可以代理销户吗?
  • 房地产企业前期围墙费用
  • 国际贸易单证有什么制单要求
  • 账簿的设置和登记要点
  • mysql必知必会 pdf完整版
  • sql判断字段是否包含数字和字母
  • MySQL ERROR 1045 (28000) 错误的解决办法
  • sql触发器使用存储过程
  • 下载windows vista
  • 如何清理注册表的垃圾文件
  • centos启动按e没用
  • win8.1怎么设置
  • mac的替换在哪里
  • win7查看本机信息
  • linux指定格式显示日期
  • ie11 for win8
  • linux ii
  • 表单验证插件
  • nodejs文件上传服务器
  • 解析几何
  • easyui导出excel表格
  • net命令大全
  • unity3d android 插件
  • a标签跳转本地html页面
  • javascript要怎么学
  • 获取intent传递的数据
  • python怎么在网上赚钱
  • js读取文件大小
  • jquery实例
  • 湖南省电子税务局登录
  • 税务备案超过15天
  • 江苏省电子税务局社保缴费查询
  • 国家税务总局随州市税务局稽查局
  • 固定资产原值包括哪些
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设