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

  • ipad2021刷新率是多少(ipad2021 刷新率)

    ipad2021刷新率是多少(ipad2021 刷新率)

  • w7系统怎么设置屏幕休眠(w7系统怎么设置动态壁纸)

    w7系统怎么设置屏幕休眠(w7系统怎么设置动态壁纸)

  • 荣耀50游戏模式怎么开(荣耀50游戏模式打开不显示)

    荣耀50游戏模式怎么开(荣耀50游戏模式打开不显示)

  • 苹果播客怎么用(苹果播客干嘛用的)

    苹果播客怎么用(苹果播客干嘛用的)

  • 爱奇艺热度5000是几亿(爱奇艺热度5000多吗?)

    爱奇艺热度5000是几亿(爱奇艺热度5000多吗?)

  • 小米应用隐藏在哪设置(小米应用隐藏了)

    小米应用隐藏在哪设置(小米应用隐藏了)

  • 苹果官网退款什么时候到账(苹果官网退款什么时候到账信用卡)

    苹果官网退款什么时候到账(苹果官网退款什么时候到账信用卡)

  • 苹果平板1566是哪年款的(苹果平板1566是什么型号的)

    苹果平板1566是哪年款的(苹果平板1566是什么型号的)

  • 腾讯会议中途退出会有记录吗(腾讯会议中途退出了会累计时长吗)

    腾讯会议中途退出会有记录吗(腾讯会议中途退出了会累计时长吗)

  • vivox50pro与pro+区别(vivox50poro和pro+)

    vivox50pro与pro+区别(vivox50poro和pro+)

  • 快手小店pid是什么意思(快手卖货pid是啥意思)

    快手小店pid是什么意思(快手卖货pid是啥意思)

  • oppoa11截屏怎么截屏(oppo a11截图)

    oppoa11截屏怎么截屏(oppo a11截图)

  • 腾讯课堂学生怎么闭麦(腾讯课堂学生怎么使用)

    腾讯课堂学生怎么闭麦(腾讯课堂学生怎么使用)

  • 改用本地账户登录是什么意思(改用本地账户登录好不好)

    改用本地账户登录是什么意思(改用本地账户登录好不好)

  • 多选几个文件按哪个键(按哪个键可以选择多个文件)

    多选几个文件按哪个键(按哪个键可以选择多个文件)

  • 苹果xsmax需要充电几小时(苹果iphonexsmax充电要充多久满?)

    苹果xsmax需要充电几小时(苹果iphonexsmax充电要充多久满?)

  • 华为mate30怎么设置隔空截屏(华为mate30怎么设置桌面钟表)

    华为mate30怎么设置隔空截屏(华为mate30怎么设置桌面钟表)

  • 苹果11分辨率是几k(苹果11分辨率是多少像素)

    苹果11分辨率是几k(苹果11分辨率是多少像素)

  • 斗鱼扫一扫在哪(斗鱼扫一扫在哪里)

    斗鱼扫一扫在哪(斗鱼扫一扫在哪里)

  • 58同城实名人脸认证安全吗(58同城人脸验证)

    58同城实名人脸认证安全吗(58同城人脸验证)

  • 微博视频如何保存到手机相册(微博视频如何保存)

    微博视频如何保存到手机相册(微博视频如何保存)

  • 苹果退款失败重复申请(苹果退款失败重新申请)

    苹果退款失败重复申请(苹果退款失败重新申请)

  • 怎么进入admin(怎么进入路由器设置界面)

    怎么进入admin(怎么进入路由器设置界面)

  • web前端期末大作业:网站设计与实现——咖啡网站HTML+CSS+JavaScript(web前端期末大作业源代码)

    web前端期末大作业:网站设计与实现——咖啡网站HTML+CSS+JavaScript(web前端期末大作业源代码)

  • 计入税金及附加的科目
  • 城建税计税依据扣除增值税期末留抵
  • 个税返还手续费奖励员工需要交个税吗
  • 出库成本是什么意思
  • 硬盘录像机开发板
  • 专利银行卡汇款流程
  • 公司的纳税信用等级对财务人员有什么影响
  • 报表净利润是亏损可弥补数吗
  • 一般纳税人主表第一栏数据
  • 报账员是会计还是出纳
  • 房产税计税依据含税还是不含税
  • 出售闲置材料账务怎么做
  • 车间工人加班餐图片
  • 营改增后场地租赁税率
  • 实收资本印花税减免税优惠政策2019
  • 没有发生关联交易需要关联申报吗?
  • 企业所得税纳税申报表A类
  • 外购商誉是资产吗
  • 个税免税收入和不征税收入
  • 酒店兼营行为的税务处理?
  • 别的公司代缴社保合法
  • win7网络无连接
  • 自用房地产转换为采用公允价值
  • 手机CPU天梯图2023年7月
  • 固定资产净值与原值的区别
  • 业务招待费税务筹划案例
  • 多收不用退的货物怎么办
  • ntkrpamp.exe
  • 固态硬盘近年价格走势
  • 一个红苹果多少钱
  • 都柏林圣三一学院图片
  • 广告费可以结转几年扣除
  • web防盗链
  • open开放的意思吗
  • flip函数
  • 销售提成占比
  • 结转完工产品成本的会计分录
  • discuz安装使用教程
  • 帝国cms如何设置最新
  • 哪些收据可以入账且可以税前抵扣
  • 小规模纳税人养老保险怎么交
  • 现金流量表本年累计金额怎么算
  • 帝国cms如何使用
  • 财政拨款结余明细科目编码
  • 承兑汇票可以当现金借给别人用吗
  • 企业所得税多预缴了怎么办
  • 房地产企业印花税计入什么科目
  • 债务人对债权人享有
  • 营业收入包括主营业务收入
  • 保险发票计入什么科目
  • 怎么解释税收
  • 如何结转生产成本至库存商品
  • 银行日记账年底是0第二年年初怎么写
  • sql server数据库正在恢复
  • win10蓝屏后黑屏
  • centos6.5安装步骤
  • centos 安装chia
  • win10自定义功能键
  • rosnmgr.exe - rosnmgr是什么进程 有什么用
  • linux0.01编译
  • windows7 sp1升级包
  • glClearBufferSubData
  • JavaScript中对象方法的创建
  • python生成随机
  • 不同页面之间传递数据
  • JavaScript中的NaN代表什么
  • jquery的选择器作用是选中某些元素
  • 使用权资产
  • jQuery Ajax使用FormData对象上传文件的方法
  • 如何在Android上使用cv库
  • javascript基础书
  • jquery Deferred 快速解决异步回调的问题
  • Javascript字符串对象函数
  • 可分割项目
  • 城乡医保怎么看有没有钱
  • 未缴税税务说明书
  • 20年灵活就业人员社保新标准
  • 重庆电子税务局app下载
  • 百旺金赋天津客服
  • 营业费用指哪些
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设