当前位置: 首页 > news >正文

汕头站扩建工程WordPress密码如何修改

汕头站扩建工程,WordPress密码如何修改,小满crm,手机宣传网站之前有讲过一次yolov5的剪枝#xff1a;yolov5实战之模型剪枝_yolov5模型剪枝-CSDN博客 当时基于的是比较老的yolov5版本#xff0c;剪枝对整个训练代码的改动也比较多。最近发现一个比较好用的剪枝库#xff0c;可以在不怎么改动原有训练代码的情况下#xff0c;实现剪枝的…之前有讲过一次yolov5的剪枝yolov5实战之模型剪枝_yolov5模型剪枝-CSDN博客 当时基于的是比较老的yolov5版本剪枝对整个训练代码的改动也比较多。最近发现一个比较好用的剪枝库可以在不怎么改动原有训练代码的情况下实现剪枝的操作这篇文章就简单介绍一下剪枝的概念以及为什么要剪枝可以参看上一篇这里就不赘述了。 Torch-Pruning VainF/Torch-Pruning: [CVPR 2023] Towards Any Structural Pruning; LLMs / Diffusion / Transformers / YOLOv8 / CNNs (github.com) 今天我们要用到的就是这个剪枝库这个库集成了很多剪枝的方法毕竟使用比较简单。 用法 这个剪枝库既有low level的剪枝也就是手动控制剪枝哪些层也有high level的剪枝就是使用预设的剪枝算法自动选择剪枝的部分。对于我们来说更适合使用high level剪枝。具体的这里使用和上一篇yolov5里面的剪枝一样的算法在这个库里叫BNScalePruner。 安装 首先我们需要安装上面提到的库有两种方式来安装 pip install torch-pruning 或源码安装当碰到bug发布版本没修复源码修复的时候 pip install githttps://github.com/VainF/Torch-Pruning.git 稀疏化训练 为了更好的剪枝我们在训练剪枝前的网络时推荐开启稀疏化训练利用这个库我们可以很方便的实现这个操作。 首先在我们的训练代码中定义好剪枝器, 这里的opt.prune是我自己加的来控制是否开启稀疏化训练的标志 # prune if opt.prune:examle_input torch.randn(1, 3, imgsz, imgsz).to(device)imp tp.importance.BNScaleImportance()pruner tp.pruner.BNScalePruner(model, examle_input, imp,reg0.0001)稀疏化训练主要需要设置reg参数一般设置0.001~1e-6之间。 定义好剪枝器后在训练代码的scaler.scale(loss).backward()之后添加如下代码 if opt.prune:pruner.regularize(model)即可实现稀疏化训练。 剪枝 稀疏化训练后也可以不做稀疏化训练我们就可以进行剪枝操作了。这个库可以在训练中交互式进行多次剪枝简单起见我们这里分离剪枝和训练的代码只进行剪枝操作。 import torch_pruning as tp from models.experimental import attempt_load import torchweights yolov7.pt model attempt_load(weights, map_locationtorch.device(cuda:0), fuseFalse) for p in model.parameters():p.requires_grad True ignored_layers [] from models.yolo import Detect, IDetect from models.common import ImplicitA, ImplicitM for m in model.modules():if isinstance(m, (Detect,IDetect)):ignored_layers.append(m.m) unwrapped_parameters [] for name, m in model.named_parameters():if isinstance(m, (ImplicitA,ImplicitM,)):unwrapped_parameters.append((name,1)) # pruning 1st dimension of implicit matrixprint(ignored_layers) example_inputs torch.rand(1, 3, 416, 416, devicecuda:0) imp tp.importance.BNScaleImportance() pruner tp.pruner.BNScalePruner(model, example_inputs, imp,ignored_layersignored_layers,unwrapped_parametersunwrapped_parameters,global_pruningTrue,ch_sparsity0.3,round_to8,)base_macs, base_nparams tp.utils.count_ops_and_params(model, example_inputs) pruner.step() pruned_model pruner.model pruned_macs, pruned_nparams tp.utils.count_ops_and_params(pruned_model, example_inputs) print(fmacs: {base_macs} - {pruned_macs}) print(fnparams: {base_nparams} - {pruned_nparams}) macs_cutoff_ratio (base_macs - pruned_macs) / base_macs nparams_cutoff_ratio (base_nparams - pruned_nparams) / base_nparams print(fmacs cutoff ratio: {macs_cutoff_ratio}) print(fnparams cutoff ratio: {nparams_cutoff_ratio}) save_path weights.replace(.pt, _pruned_bn_0.3.pt)torch.save({model: pruned_model.module if hasattr(pruned_model, module) else pruned_model}, save_path)去掉一些计算剪枝比例的保存代码等代码外剪枝操作其实由pruner.step()这一步完成。这里我们主要需要设置的参数是 ch_sparsity: 可以理解成剪枝的比例越大剪得越多global_pruning: True表示整个模型的权重按一个整体排序后剪枝False表示按分组内部按比例剪枝round_to: 剪枝后的通道保留为多少的倍数一般在硬件上保留8的倍数 微调 经过剪枝的网络精度是下降比较明显的需要再在数据上finetune一些epoch才能把精度拉回来。 yolov7默认是通过yaml文件创建模型结构然后再载入权重进行训练的而我们剪枝后的模型是没有模型结构文件的因此需要对训练代码做一定的修改具体而言只是对模型的载入进行一点修改。其中opt.finetune是用来控制是否处于finetune模式的标志位。 if opt.finetune: # for model without cfgnew torch.load(weights, map_locationdevice) # createmodel new[model]print(Finetune Mode...) elif pretrained: ...比较简单的改法是这样从checkpoint中载入结构和权重还有一种方式则是修改yolov7的Model类这个在后面讲yolov7剪枝后蒸馏的时候再讲暂时用上面这种方式就可以了。 评测 我在自己的任务上的效果是yolov7剪枝50%微调后基本上能达到剪枝前的map没记错的话这是和稀疏化训练的比毕竟开启稀疏化训练本身也会掉点。大家可以在自己的任务上尝试一下总体上精度还是可以的 结语 这篇文章简述了以下yolov7的剪枝yolov5也可用希望对大家有帮助。
http://www.dnsts.com.cn/news/181359.html

相关文章:

  • 泉州住房和城乡建设局网站wordpress教程网视频
  • 城市生活网官方网站appwordpress单页淘客源码
  • 网站做文献格式建设部特殊工种查询网站
  • 珠海响应式网站建设价格人社部能力建设中心网站
  • 网站建设管理报告有谁知道网站优化怎么做
  • 网站建设费用计入管理费用的哪个科目渭南建设用地规划查询网站
  • 网站建设vr网站名称大全
  • 公司网站建设方案书怎么写作文生成器
  • 网站线上推广方式邢台做网站信息
  • 中企动力网站案例wordpress 短地址
  • 卖彩票的网站怎么做的wordpress专用主机
  • 如何给网站做在线培训系统
  • 网站建设研究背景宁波建站公司哪家服务好
  • 制作个人网站怎么做做湲兔费网站视颍
  • 邯郸网站制作建设班组安全建设 网站
  • 网页设计和网站建设实战大全网站变成了百度推广
  • 网站开发的就业方向网站的数据库怎么建立
  • 免费网站建站凡科建站做搜狗网站排名软件
  • 网站建设类的公司名怎么起国内有名的软件开发公司排名
  • 网站备案号没有-1aso关键字优化
  • 建立企业网站的形式有wordpress如何匹配模板
  • 网站信息内容建设实施办法厦门响应式网站建设
  • 除了dz论坛还能搭建什么网站企业做网站公司排名
  • 宁波住房与城乡建设部网站58招聘运营网站怎么做
  • 河南锦路路桥建设有限公司网站铸铁加工平台
  • 网站图标怎么做的帮别人制作网页多少钱
  • 成都网站开发 Vr网页设计软件列表点击查看代码
  • 做搜狗网站企业微信公众号
  • 企业网站制作服务器自助网站能在百度上搜到么
  • 长沙网站建设及推广公司空包网站怎么做