PyTorch 深度学习模型压缩开源库(含量化、剪枝、轻量化结构、BN融合)

2023-11-05

点击我爱计算机视觉标星,更快获取CVML新技术


本文为52CV群友666dzy666投稿,介绍了他最近开源的PyTorch模型压缩库,该库开源不到20天已经收获 219 颗星,是最近值得关注的模型压缩开源库。

开源地址

https://github.com/666DZY666/model-compression

背景

“目前在深度学习领域分类两个派别,一派为学院派,研究强大、复杂的模型网络和实验方法,为了追求更高的性能;另一派为工程派,旨在将算法更稳定、高效的落地在硬件平台上,效率是其追求的目标。

复杂的模型固然具有更好的性能,但是高额的存储空间、计算资源消耗是使其难以有效的应用在各硬件平台上的重要原因。

所以,卷积神经网络日益增长的深度和尺寸为深度学习在移动端的部署带来了巨大的挑战,深度学习模型压缩与加速成为了学术界和工业界都重点关注的研究领域之一”

项目简介

基于pytorch实现模型压缩

1、量化:8/4/2 bits(dorefa)、三值/二值(twn/bnn/xnor-net);

2、剪枝:正常、规整、针对分组卷积结构的通道剪枝;

3、分组卷积结构;

4、针对特征A二值的BN融合

目前提供

1、普通卷积和分组卷积结构

2、权重W和特征A的训练中量化,W(32/8/4/2bits,三/二值) 和A(32/8/4/2bits,三/二值)任意组合

3、针对三/二值的一些tricks:W二值/三值缩放因子,W/grad(ste、saturate_ste、soft_ste)截断,W三值_gap(防止参数更新抖动),W/A二值时BN_momentum(<0.9),A二值时采用B-A-C-P可比C-B-A-P获得更高acc

4、多种剪枝方式:正常剪枝、规整剪枝(比如可剪枝为剩余filter个数为16的倍数)、针对分组卷积结构的剪枝(剪枝后仍保证分组卷积结构)

5、batch normalization的融合及融合前后model对比测试:普通融合(BN层参数 —> conv的权重w和偏置b)、针对特征A二值的融合(BN层参数 —> conv的偏置b)

模型压缩数据结果对比

后续计划

1、Nvidia、Google的INT8量化方案

2、对常用检测模型做压缩

3、部署(1、针对4bits/三值/二值等的量化卷积;2、终端DL框架(如MNN,NCNN,TensorRT等))

项目地址(~欢迎交流、star~):

https://github.com/666DZY666/model-compression

博客:https://blog.csdn.net/qq_35999634

B站:https://space.bilibili.com/88044891?


模型压缩与应用部署交流群

关注最新最前沿的模型压缩、网络剪枝、轻量级网络设计、知识蒸馏、移动端部署优化技术,扫码添加CV君拉你入群,(如已为CV君其他账号好友请直接私信)

(请务必注明:部署)

喜欢在QQ交流的童鞋,可以加52CV官方QQ群:805388940。

(不会时时在线,如果没能及时通过验证还请见谅)


长按关注我爱计算机视觉

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PyTorch 深度学习模型压缩开源库(含量化、剪枝、轻量化结构、BN融合) 的相关文章

  • JavaWeb学习-Servlet处理解析JSON文件导出Excel实例

    文章目录 前言 一 实例要求 二 主要问题点 1 保存请求中的文件 2 JSON的简单处理 3 Servlet共享数据 实现勾选信息导出为excel 三 源码 总结 前言 这里是javaweb小白第一次尝试写博客 主要是想记录一下自己在学习
  • vue 简单实现vuex原理

    效果图如下 1 准备好环境 使用 vue cil 初始化项目配置 npm install g vue cli 全局安装 vue cli vue create demo vue 创建项目 yarn add vuex安装vuex创建一个stor
  • 什么是区块链?区块链相关知识区入门

    初识区块链 1 区块链家族 一 去中心化 父亲 基本概念 中心化和去中心化就是集权与分权 去中心化是一种哲学中思想 在人类存在时即有 主旨为弱化中心 实现人与人之间的直接沟通 交易的一种方式 去中心化 不是不要中心 而是由节点来 自由选择中
  • 使用gdb调试出现 No debugging symbols found in a.out

    使用常规的gcc编译或者使用带调式信息 g的编译都有可能会在使用gdb工具的时候出现No debugging symbols found in a out错误 1 常规编译 使用常规编译生成的可执行文件正常一定会出现No debugging
  • 服务器强制关机后,无法开机

    服务器强制关机后 开不了机 开机后显示 dev sda1 recovering journal dev sda1 clean 3905813 58720032 files 193134708 234422272 blocks 经询问 是由强
  • 2014软专高级程序语言T4(三角形面积)

    平面有100个点 任意三个点可以构成一个三角形 编一个程序 输入100个点的坐标 输出在构成的所有三角形中 最大的三角形的面积 代码如下 include
  • 数据处理中的归一化与反归一化

    一 定义 数据归一化 标准化 是数据预处理的一项基础工作 不同评价指标往往具有不同的量纲和量纲单位 为避免影响数据分析结果 消除指标之间的量纲影响 须对数据进行标准化处理 数据的归一化 normalization 是将数据按比例缩放 使之落
  • redis必杀命令:键(key)

    语法 Redis 键命令的基本语法如下 redis 127 0 0 1 6379 gt COMMAND KEY NAME 例如 redis 127 0 0 1 6379 gt SET w3ckey redis OK redis 127 0
  • 使用UltraISO或Rufus制作U盘启动安装优麒麟19.04

    本文教你在Windows操作系统中使用UltraISO 软碟通 或Rufus制作U盘启动盘的方法 以优麒麟Ubuntu Kylin 19 04为例 适用于大多数Linux发行版 包括Ubuntu 18 04等 UltraISO和Rufus任
  • [网络安全自学篇] 三十八.hack the box渗透之BurpSuite和Hydra密码爆破及Python加密Post请求(二)

    这是作者的系列网络安全自学教程 主要是关于安全工具和实践操作的在线笔记 特分享出来与博友们学习 希望您们喜欢 一起进步 前文详细讲解了hack the box在线渗透平台获取邀请码 注册过程 本文将分享Web渗透三道入门题目 它们包括Pyt
  • python3 [爬虫入门实战] 爬虫之使用selenium 爬取百度招聘内容并存mongodb

    爬取的内容为百度招聘页面下的python 杭州地区 所要爬取的内容 一共爬取的是6个字段 1 招聘岗位 2 招聘城市 3 招聘公司 4 招聘薪资 5 招聘日期 6 招聘来源网站 用的是selenium beautifulsoup mongo
  • 餐饮开发项目有智能排菜算法遇到的问题

    说白了 智能排菜就是在用户下了订单之后自动的打印菜品 包含相同的菜品可以一起打出来 以提高饭店效率 个人的想法就是运行一个Timer 事实的检测智能排菜这个功能是否启用 若启用的话则自动打印菜品 Timer的用法就是要继承TimeTask把
  • 【无标题】Altium Designer 版本功能介绍收集

    尊敬的原文作者 感谢分享 如文章转载有冒犯之处 请您联系告知 鄙人将在第一时间删除 原文连接 Altium Designer更新得那么快 到底应该用哪个版本 电子发烧友网 AD19 0 6 显然 软件版本越高 功能越齐全 可能存在一些未知的
  • 使用JAVA实现语音朗读一段文本

    需求要用JAVA去调用windows自带的语音引擎去朗读一段文字 网上资料少得可怜 把百度和bing都翻遍了 总算找到一段代码 而且朗读起来还有感情色彩 win7测试 不过多音字还是暂时没解决 需要做的工作 1 下载jacob 1 17 M
  • 从源码出发浅析 Android TV 的焦点移动原理 (上篇)

    转自 https cloud tencent com developer article 1006289 焦点 焦点 Focus 可以理解为选中态 在Android TV上起很重要的作用 一个视图控件只有在获得焦点的状态下 才能响应按键的C
  • 安装Android Studio出现的问题--SDK Components Setup

    安装的时候遇到这样的问题 查了半天资料才解决 先看一看出错的地方 这一步是安装sdk 选择安装的位置 我选择直接安装到Android目录下 但是出问题了 换了其他的也不可以 再看一看我的文件夹安装目录 问题就出现在这里了 文件夹没弄对 解决
  • flex程序

    lt mx Application xmlns mx http www adobe com 2006 mxml layout absolute gt lt mx Script gt lt mx HTTPService id productS
  • pythonallowpos_Python 爬取 热词并进行分类数据分析-[数据修复]

    日期 2020 02 01 博客期 140 星期六 本博客的代码如若要使用 请在下方评论区留言 之后再用 就是跟我说一声 所有相关跳转 a 简单准备 c 拓扑数据 d 数据修复 本期博客 i App制作 j 安全性改造 今天问了一下老师 好
  • GDB调试:教你简单了解并使用GDB调试程序

    什么是GDB GDB GNU symbolic debugger 是由 GNU 软件系统社区提供的调试工具 当下的 GDB 支持调试多种编程语言编写的程序 包括 C C Go Objective C OpenCL Ada 等 实际场景中 G
  • 备赛电赛学习硬件篇(五):硬件框图、无线通信模块、OLED模块设计

    目录 一 硬件框图绘制 二 无线通信模块 三 OLED模块 一 硬件框图绘制 个人强烈推荐visionon VisionOn是一款可免费使用 亦可免注册使用 不能在线存储 的在线类Visio制图软件 也是一个个人在线白板系统 可

随机推荐

  • 使用 github 仓库搭建 Hexo教程,Hexo配置文件解读,Hexo安装next主题及主题配置,美化

    这是之前写的文章了 重新补一补 把另外写的都和在一起了 出问题方便找 搭建 Hexo 准备 安装 nodejs 安装 git 可以看我之前的博客 好像有写安装方法 安装 hexo cli 中文官网 安装是安装在本地 首先在本地创建一个目录
  • 内存碎片是什么?关于内存碎片的解释

    内存碎片是什么 关于内存碎片 内存碎片通常分为内部碎片和外部碎片 内部碎片 所谓内部碎片指的就是 系统为某项功能分派了一定的内存 但是该功能的实现没有用完所有系统分配的 余下的部分就被成为内存碎片的内部碎片 外部碎片 外部内存指的是有一些连
  • Pytorch 对应版本下载及安装

    PyTorch官网 https pytorch org PyTorch官网浏览旧版本对应安装 https pytorch org get started previous versions PyTorch各个版本下载网址 https dow
  • R语言案例分析:多元数据的基本统计分析

    R语言案例分析 多元数据的基本统计分析 来自 多元统计分析与R语言建模 第四版 数据集下载 我们利用该数据集中的Case1来完成下面的R语言操作 options digits 4 输出结果位数 par mar c 4 4 2 1 0 1 c
  • SPI通信协议和2.4G总结

    SPI SPI Serial Peripheral Interface 协议是由摩托罗拉公司提出的通讯协议 即串行外设接口 是一种高速全双工的通信总线 SPI 总线系统是一种同步串行外设接口 它可以使 MCU 与各种外围设备以串行方式进行通
  • python 绘制 频谱图

    效果图 t np arange 0 time 1 0 sampling rate wavename morl cmorB C where B is the bandwidth and C is the center frequency to
  • linux cpu、内存、IO、网络的测试工具

    一 linux cpu 内存 IO 网络的测试工具 cpu测试工具 1 Super Pi for linux Super PI是利用CPU的浮点运算能力来计算出 圆周率 所以目前普遍被用户用做测试系统稳定性和测试CPU计算完后特定位数圆周率
  • React创建一个简单的计数器

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 React创建一个计数器 一 利用state实现 React创建一个计数器 一 利用state实现 状态 state 即数据 是组件内部的私有数据 只能在组件内部使
  • 算法序列--栈和队列

    栈 Stack 是一个后进先出 last in first 偶通 LIFO 的线性表 要求只在表尾进行删除和插入操作 栈的元素必须后进先出 操作只能在栈的表尾进行 表尾为栈的栈顶 top 相应的表头为栈底 bottom 栈的插入操作 Pus
  • 懒加载(lazy)

    懒加载 简述 当我们查询一个对象的时候 在默认情况下 返回的只是该对象的普通属性 当用户去使用对象属性时 才会向数据库发出再一次的查询 这种现象我们称为 lazy现象 解决方法可以这样 1 显示初始化 Hibernate initized
  • Redis发布/订阅、事务、Bloom、过期策略

    文章目录 发布 订阅 pub sub 事务 RedisBloom 缓存 TTL 发布 订阅 pub sub publish channel message subscribe channel sub后就可以收到pub信息 群聊信息存储 事务
  • 耳语秘密WhisperedSecrets PurrfectHorror CE

    WhisperedSecrets PurrfectHorror CE耳语秘密 完美恐怖收藏版是一款恐怖游戏 当当地的埃及学教授在城市博物馆的文物被盗后向您寻求帮助时 对于像您这样的专家来说 这似乎是一个简单的案例 但当您发现阿波夫之镰超出了
  • 高斯顺序消元法c++程序代码及实例

    include using namespace std define n 4 通过符号常量定义线性方程组的规模大小 当前的n值表示适用解n元一次线性方程组 void Process of elimination double A n n d
  • Vue.js 报错:Cannot read property ‘validate‘ of undefined“

    错误解决 起因 是我将elemnt ui登录 默认放在mounted 函数里面 导致vue初始化就调用这个函数 找了网上 有以下错误原因 1 一个是你ref写错了 导致获取不了这个表单dom 我这显然不是 2 我们vue初始化时 eleme
  • Springboot+POI 带有图片的表格导入导出功能解析

    今天来讲下在导入数据的场景时 表格中会有一列存放的是对应的图片信息 导入后在前端页面进行表格数据展示 这里的难点主要在于 对于获取表格中图片列的图片数据进行保存到服务器以及对应插入数据库 建议一般是用图片的保存服务器的路径地址保存到数据库中
  • idea装载jerbel以及文件上传下载

    一 JRebel 1 1 Jrebel介绍 JRebel是一个Java开发工具 它是一款用于实时代码重载的插件 它的主要功能是在不重新启动应用程序的情况下 将修改后的Java代码实时应用到正在运行的应用程序中 从而加快开发周期 提高开发效率
  • SQL Server常用数据类型

    SQL Server常用数据类型 数据类型是数据的一种属性 是数据所表示信息的类型 下面是小编为大家搜索整理了关于SQLServer常用数据类型 欢迎参考阅读 希望对大家有所帮助 SQLServer2000提供了比较多的数据类型供用户使用
  • MySQL中删除重复数据只保留一条

    MySQL中删除重复数据只保留一条 数据 INSERT INTO test time uuid name VALUES 1 wang INSERT INTO test time uuid name VALUES 2 王 INSERT INT
  • Object与json字符串的相互转换

    Object与json字符串的相互转换 第一步 引入fastjson的依赖jar包 注 maven项目 直接在pom xml中进行配置即可 注 如果引入此版本的依赖 导致项目不能启动 报错 找不到启动类 那么可以换一个版本的fastjson
  • PyTorch 深度学习模型压缩开源库(含量化、剪枝、轻量化结构、BN融合)

    点击我爱计算机视觉标星 更快获取CVML新技术 本文为52CV群友666dzy666投稿 介绍了他最近开源的PyTorch模型压缩库 该库开源不到20天已经收获 219 颗星 是最近值得关注的模型压缩开源库 开源地址 https githu