位置: 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表白代码动态)

  • 未来广告营销的三大关键(未来广告的发展方向)

    未来广告营销的三大关键(未来广告的发展方向)

  • oppo手机分辨率怎么调(oppo手机分辨率是多少)

    oppo手机分辨率怎么调(oppo手机分辨率是多少)

  • 快手怎么不显示播放量(快手怎么不显示浏览记录)

    快手怎么不显示播放量(快手怎么不显示浏览记录)

  • 纵向选择一块文本区域的最快捷操作方法是(纵向选择一块文本区域最快捷方法)

    纵向选择一块文本区域的最快捷操作方法是(纵向选择一块文本区域最快捷方法)

  • 华为不可上网怎么修复(华为不可上网怎么回事)

    华为不可上网怎么修复(华为不可上网怎么回事)

  • 手机突然震动但没消息(手机突然震动但是没有消息怎么回事)

    手机突然震动但没消息(手机突然震动但是没有消息怎么回事)

  • TDLTE是什么手机(tdtech什么牌子手机)

    TDLTE是什么手机(tdtech什么牌子手机)

  • 离线导航怎么下载和使用(离线导航怎么导)

    离线导航怎么下载和使用(离线导航怎么导)

  • 惠普云打印提交但是不打印(惠普云打印怎么打印信息页)

    惠普云打印提交但是不打印(惠普云打印怎么打印信息页)

  • 微信登录频繁登录不上怎么办(微信登录频繁登录不上多久可以恢复登录)

    微信登录频繁登录不上怎么办(微信登录频繁登录不上多久可以恢复登录)

  • 小米6x支持OTG吗

    小米6x支持OTG吗

  • 苹果11有夜景模式吗(苹果11有夜景模式在哪)

    苹果11有夜景模式吗(苹果11有夜景模式在哪)

  • 小米放大器Pro连接超时(小米放大器pro连接不上路由器)

    小米放大器Pro连接超时(小米放大器pro连接不上路由器)

  • 为什么qq群聊信息显示不出来(qq群聊为什么有信息看不见)

    为什么qq群聊信息显示不出来(qq群聊为什么有信息看不见)

  • 显卡驱动要装c盘吗(显卡驱动要装在哪个盘)

    显卡驱动要装c盘吗(显卡驱动要装在哪个盘)

  • 华为荣耀9x微信视频怎么美颜(华为荣耀9X微信分身在哪里)

    华为荣耀9x微信视频怎么美颜(华为荣耀9X微信分身在哪里)

  • oppor9plus有没有语音唤醒功能(oppor9plus有没有红外线遥控功能)

    oppor9plus有没有语音唤醒功能(oppor9plus有没有红外线遥控功能)

  • 抖音里面如何删除动态(抖音里面如何删除自己的作品)

    抖音里面如何删除动态(抖音里面如何删除自己的作品)

  • vivox30是三星屏幕吗(vivox30是lcd屏吗)

    vivox30是三星屏幕吗(vivox30是lcd屏吗)

  • 固态硬盘能装机箱背面吗(固态硬盘能装机械位吗)

    固态硬盘能装机箱背面吗(固态硬盘能装机械位吗)

  • ie80是监听耳机吗

    ie80是监听耳机吗

  • 小米mir3是千兆路由器吗(小米mir3是千兆路由吗)

    小米mir3是千兆路由器吗(小米mir3是千兆路由吗)

  • 快手b类作品还能上吗(快手b类视频)

    快手b类作品还能上吗(快手b类视频)

  • 手机应援屏幕怎么弄(手机 应援)

    手机应援屏幕怎么弄(手机 应援)

  • 小米1.5匹空调一小时多少度电(小米1.5匹空调一晚上几度电)

    小米1.5匹空调一小时多少度电(小米1.5匹空调一晚上几度电)

  • 微信涂鸦工具在哪(微信涂鸦功能)

    微信涂鸦工具在哪(微信涂鸦功能)

  • dedecms织梦文章标题title长度修改方法(织梦文章标题显示不全)

    dedecms织梦文章标题title长度修改方法(织梦文章标题显示不全)

  • 价外税怎么理解
  • 借贷记账法的基本结构
  • 个人所得税数据已失效,请重新填写
  • 个税返还需要缴纳所得税吗
  • 电子承兑汇票如何贴现网银操作
  • 未开票确认收入分录怎么做
  • 施工单位企业税率是多少
  • 个税手续费返还计入哪个科目
  • 出口公司要交哪些税费
  • 营改增后建筑服务包括内容
  • 相关税费计入哪里
  • 公司的公益性捐款合法吗
  • 公司名下商品房交易开具发票
  • 不动产广告位出租税率是多少
  • 总账每个月都要结账吗
  • 调整以前年度企业所得税会计分录
  • windows10你需要trustedinstaller提供的权限才能更改
  • 贷款利率计算公式表格
  • php解构
  • windows10右键刷新有点卡
  • php验证码显示不出来
  • PHP:imagecreatefromstring()的用法_GD库图像处理函数
  • 哪些货物出口不需要运输条件
  • php 加密
  • 设置背景图片大小和元素的大小一致的代码
  • gridviewcolumn
  • framework在哪里打开
  • 文心一格百度
  • cmd 过滤命令
  • 转出未交增值税最终怎么转平
  • 公司以现金形式发工资的最好解释
  • 公司未成立前的花费算出资额吗
  • 代收代付进项税转出吗
  • 中小企业估值
  • 请问资产负债表中净资产怎么算
  • 一年的房租费摊销的账务处理
  • mysql终端操作
  • 修改mysql配置
  • 已计提完的固定资产怎么做账
  • 待抵扣进项税如何在营运资金
  • 公立医院事业单位工作人员招聘实践考核自我评价
  • 发货环节产生的影响
  • 财务管理税后利息费用都包含什么
  • 福利费需要通过应付职工薪酬吗
  • 通行费电子发票进项税额如何填报
  • 应收账款提坏账分录
  • 收单清算款计入什么费用
  • 押金可不可以抵房租
  • 备用金分为哪两种
  • 个人往对公账户上存款怎么存
  • 哪些住宿费不属于差旅费
  • 外币应收账款汇兑损失计入财务费用吗
  • u盘安装win8系统教程
  • win7系统设置开机启动项
  • 苹果电脑优酷视频播放不了
  • linux计划任务怎么写
  • u盘安装linux系统遇到的问题
  • eac.exe是什么
  • ubuntu安装visual studio2019
  • dropbox怎么在国内使用
  • win8怎么禁止弹窗
  • wysafe.exe是什么
  • win8 任务栏
  • windows10电脑屏保怎么取消
  • opengles和vulkan哪个好
  • 快速掌握押韵技巧
  • js的getattribute
  • node js并发加载缓慢
  • 从零开始学什么技术
  • Unity3D实现Billboard效果
  • iphone触控手势
  • vue中的event
  • 法线贴图应该贴在哪里
  • jquery中keyup
  • 除了增值税还要什么税种
  • 入职培训结束寄语
  • 深圳12366接听客服工作怎么样
  • 购买房屋交契税
  • 河北省云办税厅
  • 河南省纪检委网站
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设