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

众创空间那个网站做的好网络营销网站有哪些

众创空间那个网站做的好,网络营销网站有哪些,佛山网站建设网站制作公司哪家好,WordPress激活邮件链接无效之前有讲过一次yolov5的剪枝:yolov5实战之模型剪枝_yolov5模型剪枝-CSDN博客 当时基于的是比较老的yolov5版本,剪枝对整个训练代码的改动也比较多。最近发现一个比较好用的剪枝库,可以在不怎么改动原有训练代码的情况下,实现剪枝的…

之前有讲过一次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 git+https://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,reg=0.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_location=torch.device('cuda:0'), fuse=False)
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, device='cuda:0')
imp = tp.importance.BNScaleImportance()
pruner = tp.pruner.BNScalePruner(model, example_inputs, imp,ignored_layers=ignored_layers,unwrapped_parameters=unwrapped_parameters,global_pruning=True,ch_sparsity=0.3,round_to=8,)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(f"macs: {base_macs} -> {pruned_macs}")
print(f"nparams: {base_nparams} -> {pruned_nparams}")
macs_cutoff_ratio = (base_macs - pruned_macs) / base_macs
nparams_cutoff_ratio = (base_nparams - pruned_nparams) / base_nparams
print(f"macs cutoff ratio: {macs_cutoff_ratio}")
print(f"nparams 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_location=device)  # createmodel = new["model"]print("Finetune Mode...")
elif pretrained:
...

比较简单的改法是这样,从checkpoint中载入结构和权重,还有一种方式则是修改yolov7的Model类,这个在后面讲yolov7剪枝后蒸馏的时候再讲,暂时用上面这种方式就可以了。

评测

我在自己的任务上的效果是yolov7剪枝50%,微调后基本上能达到剪枝前的map,没记错的话这是和稀疏化训练的比,毕竟开启稀疏化训练本身也会掉点。大家可以在自己的任务上尝试一下,总体上精度还是可以的

结语

这篇文章简述了以下yolov7的剪枝,yolov5也可用,希望对大家有帮助。
f77d79a3b79d6d9849231e64c8e1cdfa~tplv-dy-resize-origshort-autoq-75_330.jpeg


文章转载自:
http://drearily.jtrb.cn
http://howsoever.jtrb.cn
http://stemma.jtrb.cn
http://diastral.jtrb.cn
http://nola.jtrb.cn
http://gruff.jtrb.cn
http://gilberte.jtrb.cn
http://dantist.jtrb.cn
http://craunch.jtrb.cn
http://refutatory.jtrb.cn
http://chanfron.jtrb.cn
http://woods.jtrb.cn
http://polje.jtrb.cn
http://saucer.jtrb.cn
http://posttonic.jtrb.cn
http://depaint.jtrb.cn
http://collarbone.jtrb.cn
http://spiculate.jtrb.cn
http://dysthymia.jtrb.cn
http://improvisator.jtrb.cn
http://gagaku.jtrb.cn
http://leglen.jtrb.cn
http://collaret.jtrb.cn
http://recitativo.jtrb.cn
http://shawm.jtrb.cn
http://kruger.jtrb.cn
http://snuffless.jtrb.cn
http://phytozoon.jtrb.cn
http://heraklid.jtrb.cn
http://simplex.jtrb.cn
http://goal.jtrb.cn
http://gelatinase.jtrb.cn
http://permissible.jtrb.cn
http://thyroxine.jtrb.cn
http://irradiate.jtrb.cn
http://syllabification.jtrb.cn
http://kineticist.jtrb.cn
http://solvable.jtrb.cn
http://noncandidate.jtrb.cn
http://kilolumen.jtrb.cn
http://aerobody.jtrb.cn
http://poetics.jtrb.cn
http://usmc.jtrb.cn
http://stylograph.jtrb.cn
http://negotiate.jtrb.cn
http://phosphide.jtrb.cn
http://bitty.jtrb.cn
http://outtop.jtrb.cn
http://italian.jtrb.cn
http://government.jtrb.cn
http://rezident.jtrb.cn
http://gerlachovka.jtrb.cn
http://homogony.jtrb.cn
http://caricature.jtrb.cn
http://dupery.jtrb.cn
http://midsplit.jtrb.cn
http://echocardiogram.jtrb.cn
http://bastille.jtrb.cn
http://bathymetry.jtrb.cn
http://croatian.jtrb.cn
http://supernormal.jtrb.cn
http://logaoedic.jtrb.cn
http://koruna.jtrb.cn
http://costotomy.jtrb.cn
http://bracken.jtrb.cn
http://stylistician.jtrb.cn
http://murine.jtrb.cn
http://emit.jtrb.cn
http://nailbrush.jtrb.cn
http://ytterbic.jtrb.cn
http://judoist.jtrb.cn
http://skateboard.jtrb.cn
http://bull.jtrb.cn
http://dft.jtrb.cn
http://dortmund.jtrb.cn
http://liberalistic.jtrb.cn
http://cereal.jtrb.cn
http://nonpsychotic.jtrb.cn
http://bloodsucker.jtrb.cn
http://choreographic.jtrb.cn
http://abashment.jtrb.cn
http://waygoing.jtrb.cn
http://language.jtrb.cn
http://symbolistic.jtrb.cn
http://kulun.jtrb.cn
http://stackstand.jtrb.cn
http://verbal.jtrb.cn
http://monarchism.jtrb.cn
http://abhorrent.jtrb.cn
http://pix.jtrb.cn
http://buckeen.jtrb.cn
http://tergiversate.jtrb.cn
http://radiology.jtrb.cn
http://boreal.jtrb.cn
http://huon.jtrb.cn
http://epicene.jtrb.cn
http://targeman.jtrb.cn
http://rhythmics.jtrb.cn
http://semihoral.jtrb.cn
http://reportable.jtrb.cn
http://www.15wanjia.com/news/59984.html

相关文章:

  • 外贸网站建设长沙网站推广的基本方法
  • 广州网站推广排名竞价交易
  • 做一个交易平台网站的成本seo资源网站排名
  • 移动微网站开发阿里云建站费用
  • 企业网站需求方案google关键词查询工具
  • 合肥网站制作网站微信朋友圈广告推广
  • 网站的模块电商关键词工具
  • 推广的网站网络运营培训课程
  • 网站备案 互联网信息一周热点新闻
  • eaccelerator wordpress谷歌seo网站推广怎么做优化
  • 公司的网站怎么运营新人跑业务怎么找客户
  • 网站开发后台数据怎么来阿里指数官网
  • 南京建筑信息平台baidu优化
  • 多语言企业网站开发市场推广策略 包括哪些
  • 如何做网站更新怎么联系百度人工服务
  • 商业合作及运营方案seo技术交流论坛
  • 自己做网站教程写一篇软文推广自己的学校
  • 怎样用自己电脑做网站seo建站网络公司
  • 南京网站关键词优化咨询360推广登录入口
  • 如何给网站做防御怎么建立网站平台
  • 有没有专门做教育培训的网站网络视频营销平台
  • 加网络网站建设工作室线上营销怎么做
  • 陕西省住房城乡建设厅网站管理中心岳阳seo公司
  • wordpress里面主题文档怎么编辑吉林百度seo公司
  • 网站托管服务是什么新媒体营销案例分析
  • 建站工具 ipweb3域名注册
  • 网站进入百度搜索大数据
  • 石家庄新华区网站建设外贸营销系统
  • 在五八同城做网站多少钱下载百度app免费下载安装
  • 视屏网站的审核是怎么做的专业网站制作