位置: IT常识 - 正文

YOLOV5更换轻量级的backbone:mobilenetV2(yolov5使用)

编辑:rootadmin
YOLOV5更换轻量级的backbone:mobilenetV2

目录

简洁概要:

修改主干网络:

一:添加自己主干网络

二:在yolo.py中添加common中的两个函数

三:制作mobilenetv2的yaml配置文件

四:制作数据集VOC的yaml配置文件

五:启用训练

六:性能检测

推荐整理分享YOLOV5更换轻量级的backbone:mobilenetV2(yolov5使用),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:yolov5 5.0,yolov5轻量化,yolov5商用,yolov5轻量化,yolov5轻量化,yolov5轻量化,yolov5更换backbone,yolov5轻量化,内容如对您有帮助,希望把文章链接给更多的朋友!

简洁概要:

MobileNetV2主要采用了深度可分离卷积,在MobileNetv1的基础上引用了残差模块以及Relu6的激活函数,用1*n,n*1的思想代替了n*n的矩阵,计算量会更小。

修改主干网络:一:添加自己主干网络

yolov5 6.1的版本中,在models/common中添加MobilenetV2作为backbone

class ConvBNReLU(nn.Sequential): # 该函数主要做卷积 池化 ReLU6激活操作 def __init__(self, in_planes, out_planes, kernel_size=3, stride=1, groups=1): padding = (kernel_size - 1) // 2 # 池化 = (步长-1)整除2 super(ConvBNReLU, self).__init__( # 调用ConvBNReLU父类添加模块 nn.Conv2d(in_planes, out_planes, kernel_size, stride, padding, bias=False, groups=groups), # bias默认为False nn.BatchNorm2d(out_planes), nn.ReLU6(inplace=True))class InvertedResidual(nn.Module): # 该模块主要实现了倒残差模块 def __init__(self, inp, oup, stride, expand_ratio): # inp 输入 oup 输出 stride步长 exoand_ratio 按比例扩张 super(InvertedResidual, self).__init__() self.stride = stride assert stride in [1, 2] hidden_dim = int(round(inp * expand_ratio)) # 由于有到残差模块有1*1,3*3的卷积模块,所以可以靠expand_rarton来进行升维 self.use_res_connect = self.stride == 1 and inp == oup # 残差连接的判断条件:当步长=1且输入矩阵与输出矩阵的shape相同时进行 layers = [] if expand_ratio != 1: # 如果expand_ratio不等于1,要做升维操作,对应图中的绿色模块 # pw layers.append(ConvBNReLU(inp, hidden_dim, kernel_size=1)) # 这里添加的是1*1的卷积操作 layers.extend([ # dw ConvBNReLU(hidden_dim, hidden_dim, stride=stride, groups=hidden_dim), # 这里做3*3的卷积操作,步长可能是1也可能是2,groups=hidden_dim表示这里使用了分组卷积的操作,对应图上的蓝色模块 # pw-linear nn.Conv2d(hidden_dim, oup, 1, 1, 0, bias=False), # 对应图中的黄色模块 nn.BatchNorm2d(oup), ]) self.conv = nn.Sequential(*layers) # 将layers列表中的元素解开依次传入nn.Sequential def forward(self, x): if self.use_res_connect: # 如果使用了残差连接,就会进行一个x+的操作 return x + self.conv(x) else: return self.conv(x) # 否则不做操作二:在yolo.py中添加common中的两个函数if m in (Conv, GhostConv, Bottleneck, GhostBottleneck, SPP, SPPF, DWConv, MixConv2d, Focus, CrossConv, BottleneckCSP, C3, C3TR, C3SPP, C3Ghost, nn.ConvTranspose2d, DWConvTranspose2d, C3x, ConvBNReLU, InvertedResidual): # 添加 common中新加的两个模块 ConvBNReLU和InvertedResidual三:制作mobilenetv2的yaml配置文件# Parametersnc: 1 # number of classesdepth_multiple: 1.0 # model depth multiplewidth_multiple: 1.0 # 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, [ 32, 3, 2 ] ], # 0-P1/2 32x320x320 [ -1, 1, InvertedResidual, [ 16, 1, 1 ] ], # 1 16x320x320 [ -1, 1, InvertedResidual, [ 24, 2, 6 ] ], # 2-P2/4 24x160x160 [ -1, 1, InvertedResidual, [ 24, 1, 6 ] ], # 3-P2/4 24x160x160 [ -1, 1, InvertedResidual, [ 32, 2, 6 ] ], # 4-P3/8 32x80x80 [ -1, 1, InvertedResidual, [ 32, 1, 6 ] ], # 5-P3/8 32x80x80 [ -1, 1, InvertedResidual, [ 32, 1, 6 ] ], # 6-P3/8 32x80x80 [ -1, 1, InvertedResidual, [ 64, 2, 6 ] ], # 7-P4/16 64x40x40 [ -1, 1, InvertedResidual, [ 64, 1, 6 ] ], # 8-P4/16 64x40x40 [ -1, 1, InvertedResidual, [ 64, 1, 6 ] ], # 9-P4/16 64x40x40 [ -1, 1, InvertedResidual, [ 64, 1, 6 ] ], # 10-P4/16 64x40x40 [ -1, 1, InvertedResidual, [ 96, 1, 6 ] ], # 11 96X40X40 [ -1, 1, InvertedResidual, [ 96, 1, 6 ] ], # 12 96X40X40 [ -1, 1, InvertedResidual, [ 96, 1, 6 ] ], # 13 96X40X40 [ -1, 1, InvertedResidual, [ 160, 2, 6 ] ], # 14-P5/32 160X20X20 [ -1, 1, InvertedResidual, [ 160, 1, 6 ] ], # 15-P5/32 160X20X20 [ -1, 1, InvertedResidual, [ 160, 1, 6 ] ], # 16-P5/32 160X20X20 [ -1, 1, InvertedResidual, [ 320, 1, 6 ] ], # 17 320X20X20 ]# YOLOv5 v6.0 headhead: [ [ -1, 1, Conv, [ 160, 1, 1 ] ], [ -1, 1, nn.Upsample, [ None, 2, 'nearest' ] ], [ [ -1, 13 ], 1, Concat, [ 1 ] ], # cat backbone P4 [ -1, 1, C3, [ 160, False ] ], # 21 [ -1, 1, Conv, [ 80, 1, 1 ] ], [ -1, 1, nn.Upsample, [ None, 2, 'nearest' ] ], [ [ -1, 6 ], 1, Concat, [ 1 ] ], # cat backbone P3 [ -1, 1, C3, [ 80, False ] ], # 25 (P3/8-small) [ -1, 1, Conv, [ 80, 3, 2 ] ], [ [ -1, 22 ], 1, Concat, [ 1 ] ], # cat head P4 [ -1, 1, C3, [ 160, False ] ], # 28 (P4/16-medium) [ -1, 1, Conv, [ 160, 3, 2 ] ], [ [ -1, 18 ], 1, Concat, [ 1 ] ], # cat head P5 [ -1, 1, C3, [ 320, False ] ], # 31 (P5/32-large) [ [ 25, 28, 31 ], 1, Detect, [ nc, anchors ] ], # Detect(P3, P4, P5) ]四:制作数据集VOC的yaml配置文件# YOLOv5 by Ultralytics, GPL-3.0 license# PASCAL VOC dataset ' # old img path lb_path = (lbs_path / f.name).with_suffix('.txt') # new label path f.rename(imgs_path / f.name) # move image convert_label(path, lb_path, year, id) # convert labels to YOLO format五:启用训练

由于修改了网络所以不能加载预训练模型进行

预训练模型的作用:加快模型训练初期的超参数训练时间

YOLOV5更换轻量级的backbone:mobilenetV2(yolov5使用)

weights修改为空

cfg修改为自己网络模型的配置文件

data修改为自己VOC数据集的配置文件

六:性能检测

修改val.py的参数,与上一步一致

这里分别用了V5s,V5n,以及mobilenetV2分别做了150批次训练来对比

mobilenetV2

 V5s

 V5n

对比可以发现 V5n与mobilenetV2的相差并不大,相比较于这两个模型,V5s的精度稍微高一些,但是它模型的复杂度会略微大一丢丢,推理时间略大一点。

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

上一篇:X-Frame-Options简介(next frame)

下一篇:html表白代码(html表白代码动态)

  • 华为手机怎么设置屏幕锁(华为手机怎么设置返回键)

    华为手机怎么设置屏幕锁(华为手机怎么设置返回键)

  • qq群课堂怎么开麦(qq群课堂怎么开视频聊天)

    qq群课堂怎么开麦(qq群课堂怎么开视频聊天)

  • 优酷有一起看功能吗(优酷一起看功能能在电脑用吗)

    优酷有一起看功能吗(优酷一起看功能能在电脑用吗)

  • vivox50pro是否有耳机孔呢(vivo x50 pro有啥功能)

    vivox50pro是否有耳机孔呢(vivo x50 pro有啥功能)

  • 钉钉视频会议可以两个群一起吗(钉钉视频会议可以用作业帮吗)

    钉钉视频会议可以两个群一起吗(钉钉视频会议可以用作业帮吗)

  • opporeno4pro支持红外线功能吗(opporeno4pro带红外功能吗)

    opporeno4pro支持红外线功能吗(opporeno4pro带红外功能吗)

  • 苹果x充满电后显示(苹果x充满电后触屏失灵)

    苹果x充满电后显示(苹果x充满电后触屏失灵)

  • windows无法验证此驱动程序软件的发布者(windows无法验证你的凭据)

    windows无法验证此驱动程序软件的发布者(windows无法验证你的凭据)

  • 微信购买虚拟产品是什么(微信购买虚拟产品怎么退款)

    微信购买虚拟产品是什么(微信购买虚拟产品怎么退款)

  • 短信被拉黑后发消息过去会显示什么(短信被拉黑后发消息对方是否看得到)

    短信被拉黑后发消息过去会显示什么(短信被拉黑后发消息对方是否看得到)

  • oppoa57什么时候上市(oppoa57什么时候上市的5G)

    oppoa57什么时候上市(oppoa57什么时候上市的5G)

  • 抖音发朋友圈怎么不清晰(抖音发朋友圈怎么发完整版)

    抖音发朋友圈怎么不清晰(抖音发朋友圈怎么发完整版)

  • 抖音限制字数怎么办(抖音视频字数限制)

    抖音限制字数怎么办(抖音视频字数限制)

  • 钉钉都能监控什么(钉钉有监控系统吗)

    钉钉都能监控什么(钉钉有监控系统吗)

  • 苹果手机下载软件灰色点不动怎么回事(苹果手机下载软件需要钱吗)

    苹果手机下载软件灰色点不动怎么回事(苹果手机下载软件需要钱吗)

  • 优活手环怎么设中文(优活手环怎么设置24小时制)

    优活手环怎么设中文(优活手环怎么设置24小时制)

  • 南宁坐公交车可以二维码支付么(南宁坐公交车可以扫微信吗)

    南宁坐公交车可以二维码支付么(南宁坐公交车可以扫微信吗)

  • 全球上网工具插件是什么(全球上网工具插件和全球上网有什么区别)

    全球上网工具插件是什么(全球上网工具插件和全球上网有什么区别)

  • 平板模式可以触屏吗(平板电脑模式能触屏吗)

    平板模式可以触屏吗(平板电脑模式能触屏吗)

  • 苹果8刷机还能被定位吗(苹果刷机还能用不)

    苹果8刷机还能被定位吗(苹果刷机还能用不)

  • 抖音怎样配自己想自己想要的音乐(抖音怎样配自己的音乐歌曲)

    抖音怎样配自己想自己想要的音乐(抖音怎样配自己的音乐歌曲)

  • iPhone Xs Max前置摄像头传感器类型(iphonexsmax前置像素)

    iPhone Xs Max前置摄像头传感器类型(iphonexsmax前置像素)

  • 苹果手机手电筒快捷键(苹果手机手电筒怎么突然打不开了)

    苹果手机手电筒快捷键(苹果手机手电筒怎么突然打不开了)

  • qq群名片在哪(扣扣群名片在哪里找)

    qq群名片在哪(扣扣群名片在哪里找)

  • 浪庭音响怎么连蓝牙(浪庭音响怎么连接电视)

    浪庭音响怎么连蓝牙(浪庭音响怎么连接电视)

  • 万年历怎么调时间(万年历怎么调时间日期和温度)

    万年历怎么调时间(万年历怎么调时间日期和温度)

  • 苹果手机录音配背景音乐教程(苹果手机录音配音乐怎么配)

    苹果手机录音配背景音乐教程(苹果手机录音配音乐怎么配)

  • Mac系统怎么查询是否感染iWorm病毒?(mac 系统查看)

    Mac系统怎么查询是否感染iWorm病毒?(mac 系统查看)

  • 鸿蒙系统怎么设置简易模式?鸿蒙系统开启简易模式的方法(鸿蒙系统怎么设置屏幕不休眠)

    鸿蒙系统怎么设置简易模式?鸿蒙系统开启简易模式的方法(鸿蒙系统怎么设置屏幕不休眠)

  • 我的电脑图标没了(我的电脑图标没了怎么恢复)

    我的电脑图标没了(我的电脑图标没了怎么恢复)

  • 跨月发票税率开错了如何处理合适?
  • 汇算清缴补缴税款如何做账
  • 年金的扣费标准
  • 其他应付款转实收资本有风险吗
  • 商业汇票和商业本票
  • 小微企业增值税优惠政策最新2023
  • 土地增值税多交了怎么处理
  • 资产重组过程中资产转出的税收问题
  • 未确认融资租赁费用是什么类型科目
  • 差旅费出差补助如何计算天数
  • 买卖汇票是什么意思
  • 公司之间借款如何做账
  • 出纳现金日记账表格模板
  • 印花税 企业
  • 视同销售收入和成本如何确认
  • 跨年发票如何入账小企业会计准
  • 建筑服务简易征收可以开专票吗
  • 购进产品样品怎么做分录
  • 财务考核指标表
  • 现金日记账的收为什么不根据银行和现金相互划转
  • 增值税留抵税额在借方还是贷方
  • 绿化租赁价格
  • psoft1.exe - psoft1是什么进程 有什么作用
  • 再次研究下cache_lite
  • php字符串定义的三种方式
  • 委托去银行办理业务的委托书
  • 什么是产品?产品的举例子
  • php目录结构
  • 超市进货产品
  • 杜鹃花的养殖方法和修剪
  • php rar
  • 一般经营循环资金周转量为负数
  • 营改增增值税会计处理
  • 进项税额转出可以填负数吗
  • 税控盘的发票怎么做账
  • 增值税纳税申报表在哪里打印
  • 小企业固定资产折旧方法包括
  • yolov5使用
  • html制作动画代码
  • 房地产企业销售佣金税前扣除
  • ChatGPT 能自己跑代码了!
  • 房产自用改为出租如何申报房产税
  • 增值税的滞纳金税率
  • 销售时的赠品怎么做账
  • 红冲后的发票税怎么办
  • 库存现金借方发生额怎么计算
  • mysql查询或
  • 中国互联网创业成功的年轻人
  • 银行汇票如何背书转让
  • 企业财务费用为负好不好
  • 进项税额可以抵扣会计分录
  • 调试机器要注意事项
  • 非税收入一般缴款书查询
  • 法人私户转公户备注什么
  • 红字发票可以跨月入账吗
  • 营改增的范围
  • 本年利润每个月有余额吗
  • 酒店食材成本如何分析
  • 班车租赁费计入福利费吗
  • 滞留专票会有什么风险
  • 2008sql附加数据库
  • sql server 字符串操作
  • windows xp简单操作教程
  • centos server
  • Win8.1如何能将任意文件隐藏到普通图片中例如JPG图片
  • win10自定义壁纸在哪个文件夹里
  • gzip压缩慢
  • win8截屏在哪个文件夹
  • xp系统的文件要用什么才能打开
  • linux zen3
  • win7睡眠设置在哪
  • 怎么理解python
  • shell编程总结
  • TNet Tasharen Networking
  • js颜色表
  • python自动化监控
  • 北京市国家税务局
  • 如何在国税电子税务平台为员工办理定制社保卡
  • 你需要了解什么 英语
  • 北京地税局报税时间
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设