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

  • 红米note10充电器多少瓦(红米note10充电器多少w)

    红米note10充电器多少瓦(红米note10充电器多少w)

  • 小爱同学灵敏度怎么设置(小爱同学灵敏度不高)

    小爱同学灵敏度怎么设置(小爱同学灵敏度不高)

  • 魅族17有没有光学防抖呢(魅族17有没有光学防抖)

    魅族17有没有光学防抖呢(魅族17有没有光学防抖)

  • 手机淘宝触屏版怎么关闭(手机淘宝触屏版APP下载)

    手机淘宝触屏版怎么关闭(手机淘宝触屏版APP下载)

  • 滴滴预付车费取消订单什么时候退(滴滴预付车费取消订单退款多久到账)

    滴滴预付车费取消订单什么时候退(滴滴预付车费取消订单退款多久到账)

  • 苹果手机抖音怎么看访客记录(苹果手机抖音怎么升级到最新版本)

    苹果手机抖音怎么看访客记录(苹果手机抖音怎么升级到最新版本)

  • iPhone批量删除联系人(iphone批量删除联系人)

    iPhone批量删除联系人(iphone批量删除联系人)

  • 淘宝买家五颗心代表什么(淘宝买家五心是多少分)

    淘宝买家五颗心代表什么(淘宝买家五心是多少分)

  • 把对方删了原来点赞的还有么(删了对方,还能找回之前的聊天信息吗)

    把对方删了原来点赞的还有么(删了对方,还能找回之前的聊天信息吗)

  • 苹果x录视频用1080还是4k(iphone录视频用30还是60)

    苹果x录视频用1080还是4k(iphone录视频用30还是60)

  • 超威售后电池和新电池有区别嘛(超威售后电池和原装电池有什么区别)

    超威售后电池和新电池有区别嘛(超威售后电池和原装电池有什么区别)

  • pr为什么导入视频只显示画面的一部分(pr为什么导入视频没有音轨)

    pr为什么导入视频只显示画面的一部分(pr为什么导入视频没有音轨)

  • comma是什么键(普通键盘的command在哪)

    comma是什么键(普通键盘的command在哪)

  • windows是不是应用软件(windows算应用软件吗)

    windows是不是应用软件(windows算应用软件吗)

  • 华为标准版是全网通吗(华为手机标准版和全网通的区别)

    华为标准版是全网通吗(华为手机标准版和全网通的区别)

  • 华为怎么下载软件(华为怎么下载软件不用密码)

    华为怎么下载软件(华为怎么下载软件不用密码)

  • 计算机的微处理器包括(计算机的微处理器属于什么)

    计算机的微处理器包括(计算机的微处理器属于什么)

  • 三星s10 韩版是双卡吗(三星s10韩版是什么型号)

    三星s10 韩版是双卡吗(三星s10韩版是什么型号)

  • 华为手机p30微信信息为什么不提示(华为手机p30微信运动不计步怎么办)

    华为手机p30微信信息为什么不提示(华为手机p30微信运动不计步怎么办)

  • jat-al00什么型号(jat-al00什么型号膜通用)

    jat-al00什么型号(jat-al00什么型号膜通用)

  • 进程关不掉应怎么办 如何关闭任务管理器关不掉的进程(电脑有些进程关不掉)

    进程关不掉应怎么办 如何关闭任务管理器关不掉的进程(电脑有些进程关不掉)

  • vue 城市选择器(省市区)的使用 element-china-area-data(vue城市列表插件)

    vue 城市选择器(省市区)的使用 element-china-area-data(vue城市列表插件)

  • 一切皆对象和深浅拷贝(一切皆对象什么意思)

    一切皆对象和深浅拷贝(一切皆对象什么意思)

  • Java集合框架之List(java集合框架主要有)

    Java集合框架之List(java集合框架主要有)

  • 织梦dede专题不同节点不能选取同样文章的解决方法(织梦专题页模板)

    织梦dede专题不同节点不能选取同样文章的解决方法(织梦专题页模板)

  • 分公司撤销跨区域转固定资产到总公司
  • 会计记账凭证如何填制
  • 什么不属于损益类的会计项目
  • 汇算清缴纳税调整项目
  • 电子税务局中在哪看本月开票统计表
  • 资产减值损失有二级科目吗
  • 设计服务需要交文化建设费吗
  • 2021年旅游免费
  • 赠送给客户的产品发货单要填写单价?
  • 公司车子的保养费怎么算
  • 减免应收账款账务处理
  • 自行建造固定资产的计税基础
  • 行政事业单位会计的工作内容
  • 个人独资企业免税额度
  • 实收资本账簿印花税需要每年交吗
  • 中国增值税发展史
  • "税务 政策"
  • 产品售后产生材料费会计核算
  • 补提以前年度税费应该计入
  • configureandwatch
  • 六月雪的养殖方法和注意事项
  • 个税汇算清缴已退税到账,怎么更正
  • 缴纳公积金个人部分会计分录
  • 电商平台第三方服务
  • 退货发票会作废吗
  • 科罗拉多斯普林斯海拔
  • 以前年度损益调整借贷方向
  • idea前端快捷键
  • 记账凭证和原始凭证都是登记账簿的直接依据
  • 增值税专用发票怎么开
  • vue3中使用for循环引用多个组件
  • 一文详解卡尔曼人物形象
  • 利用python
  • 公司注册资金多长时间可提出来
  • 发票写的是信息怎么办
  • 社保单位当月应缴月报查询
  • 个体户税率征收
  • 差旅费报销可以直接从公账转到个人账户吗
  • mysql更新视图的方式
  • 出租车手撕票可以税前扣除吗
  • 查验发票显示红冲是什么意思
  • 土地使用发票
  • 生产企业生产车间人员密度是多少
  • linux大版本升级
  • 技术服务费怎么收合理
  • 单位代个人交社保可以吗
  • 公司转帐支票可以转账吗
  • 归还银行的贷款会计分录
  • 商品进销存台账
  • 员工离职未领工资怎么处置
  • sql2008设置单用户模式
  • u盘界面可以设置背景吗
  • windows2000自动登陆
  • 脱机文件怎么办
  • ubuntu系统中文
  • linux设置用户名和密码
  • win7系统出现蓝屏怎么进去桌面
  • win7系统如何设置息屏
  • windows 8.1 build 9600
  • mac的替换在哪里
  • 使用cp命令时以下说法错误的是
  • Div CSS absolute与relative的区别小结
  • angular form表单
  • 收集linux日志
  • webservice规范
  • unity ctrl
  • javascript教程
  • unity linux arm
  • python 网络爬虫库
  • python读取一个文件并写入另一个文件
  • python怎么用的
  • 城建税教育费附加怎么做分录
  • 如何开通税务系统
  • 1992年2月20号是什么
  • 湖南省电子税务局
  • 2020江苏省禁钓规定
  • 青岛个人所得税咨询电话是多少
  • 车辆购置印花税需入固定资产吗
  • 房产税是按套还是按套
  • 用于直接销售消费品的消费税计入
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设