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

  • oppok9pro怎么应用分身(oppok9怎么设置应用加密)

    oppok9pro怎么应用分身(oppok9怎么设置应用加密)

  • 抖音几分钟前在线可以进行设置吗(抖音几分钟在线和今天在线什么区别)

    抖音几分钟前在线可以进行设置吗(抖音几分钟在线和今天在线什么区别)

  • 信号超出范围怎么办(信号超出范围怎么调整)

    信号超出范围怎么办(信号超出范围怎么调整)

  • 苹果13.5什么时候出正式版(苹果13.3.1什么时候正式上市)

    苹果13.5什么时候出正式版(苹果13.3.1什么时候正式上市)

  • 电信卡网速慢怎么办(电信卡网速慢怎么提速)

    电信卡网速慢怎么办(电信卡网速慢怎么提速)

  • 磁盘清理的主要作用是(磁盘清理的主要作用)

    磁盘清理的主要作用是(磁盘清理的主要作用)

  • 抖音显示的地址是不是到哪就显示哪(抖音显示的地址是定位还是注册地址)

    抖音显示的地址是不是到哪就显示哪(抖音显示的地址是定位还是注册地址)

  • 门禁卡怎么在手机上使用(门禁卡怎么在手机上使用荣耀手机)

    门禁卡怎么在手机上使用(门禁卡怎么在手机上使用荣耀手机)

  • iphone5s存储内存多大(苹果5s存储)

    iphone5s存储内存多大(苹果5s存储)

  • 为什么手机4g变成3g了(为什么手机4G变2G信号)

    为什么手机4g变成3g了(为什么手机4G变2G信号)

  • 苹果游戏充值退款后充值的道具还收回吗(苹果游戏充值退款绝对成功的理由)

    苹果游戏充值退款后充值的道具还收回吗(苹果游戏充值退款绝对成功的理由)

  • vivoz5有没有红外线(vivoz5手机有没有红外线遥控功能)

    vivoz5有没有红外线(vivoz5手机有没有红外线遥控功能)

  • 键盘上的end键在哪里(键盘的end键在哪里)

    键盘上的end键在哪里(键盘的end键在哪里)

  • 微信自动登录怎么设置(微信自动登录怎么设置手机)

    微信自动登录怎么设置(微信自动登录怎么设置手机)

  • 如何把图片镜面翻转(如何把图片镜面翻转过来)

    如何把图片镜面翻转(如何把图片镜面翻转过来)

  • word布局选项卡在哪里(word布局选项卡在哪里找)

    word布局选项卡在哪里(word布局选项卡在哪里找)

  • 淘宝无需物流算销量吗(淘宝无需物流算快递吗)

    淘宝无需物流算销量吗(淘宝无需物流算快递吗)

  • 手机定位服务需要一直开启吗(手机定位服务需要打开吗苹果)

    手机定位服务需要一直开启吗(手机定位服务需要打开吗苹果)

  • 华为mate10快充多少w(mate 10 快充)

    华为mate10快充多少w(mate 10 快充)

  • 相互宝分摊是什么(相互宝分摊是什么意思怎么取消)

    相互宝分摊是什么(相互宝分摊是什么意思怎么取消)

  • 手机qq怎么私发所有人(手机qq怎么私发消息)

    手机qq怎么私发所有人(手机qq怎么私发消息)

  • 手机休眠时间调不了怎么办(手机休眠时间调不了)

    手机休眠时间调不了怎么办(手机休眠时间调不了)

  • 苹果8p什么时候出的(苹果8p什么时候停产的)

    苹果8p什么时候出的(苹果8p什么时候停产的)

  • 苹果手机删除的软件怎么恢复(苹果手机删除的备忘录怎么恢复)

    苹果手机删除的软件怎么恢复(苹果手机删除的备忘录怎么恢复)

  • 解决 “TypeError: Cannot read properties of undefined (reading ‘xxx‘)“(解决肚子胀气最快方法)

    解决 “TypeError: Cannot read properties of undefined (reading ‘xxx‘)“(解决肚子胀气最快方法)

  • 撤回或减少投资同撤资减资的区别
  • 注册500万公司实缴多少钱
  • 税务现金流量表怎么填
  • 政府会计应付职工薪酬账务处理
  • 入资款印花税怎么计算
  • 小规模收的专票怎么做账
  • 旅游服务住宿费入什么科目
  • 税费滞纳金计入增值税吗
  • 失业保险费返还属于政府补助吗
  • 建造普通标准住宅出售,增值税超过扣除金额的
  • 收到退款如何做账
  • 有限合伙企业注册资金要求
  • 2018年小规模优惠政策
  • 进项转出再差额征收待抵扣
  • 投资性房地产房租计入什么会计科目
  • 按公允价值计量是什么意思
  • 主营业务税金及附加包括印花税吗
  • 物业公司代收电费标准
  • 进项税额转出报税填哪个表
  • 财税201617号文
  • 进项税额转出怎么填申报表
  • 资产减值损失汇算清缴调整表
  • 收到押金入什么会计科目
  • 同一控制下企业合并商誉
  • 企业清算期间账务怎么做
  • 非主营业务收入记什么
  • 对公账户资金往来会产生税吗
  • 推荐几个优秀的电影
  • 如何打开mac系统
  • 工会经费申报的依据
  • 如何把文档转换成二维码
  • 公司增资怎么需要什么资料
  • php use function
  • 装修费计入固定资产还是长期待摊
  • 二手车销售发票的开具怎么处理?
  • 三公经费包括哪些支出
  • 暂估和开票的差别是什么
  • php访问路径
  • 金融机构拆出资金的最长期限
  • 技术服务行业增值税税税负率是多少
  • 帝国cms使用手册
  • mysql复制表结构及数据
  • 出口企业申报退税不再提供纸质
  • 物流货损怎样处理
  • 租赁中承租人的会计分录
  • 企业清算是怎么做账的
  • 存款利息收入应计入收入总额吗
  • 商誉的会计核算怎么核算
  • 没有按时对账
  • 持有待售资产的条件
  • 净利润为负数会计分录
  • 企业的一般账户可以转款到个人吗
  • 限定性净资产举例
  • 增加委托代理人
  • mysql数据库数据备份
  • mysql获取当前时间
  • bitronix 连接 MySQL 出现MySQLSyntaxErrorException 的解决方法
  • window10怎么设置蓝牙
  • 误删了分区怎么恢复
  • win7系统关机没反应
  • win8无法关机一直转圈
  • linux如何安装wget命令
  • win10系统打开文件夹就不停的闪
  • cocos2dx 3.4 lua加密 setXXTEAKeyAndSign
  • 学习使用grunt来打包JavaScript和CSS程序的教程
  • shell 函数 return
  • JavaScript 2048 游戏实例代码(简单易懂)
  • jquery源码下载
  • windows下使用什么命令查看监听端口
  • 游戏的背包和道具系统
  • python指令生成脚本
  • jq复选框选中触发事件
  • jquery .form
  • unity3d效果图
  • linux如何配置
  • 酒店,旅店的营业范围
  • 出口报价必须含增值税吗
  • 公寓限购是好事吗
  • 红星新闻河南郑州
  • 小规模企业降税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设