25

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

 4 years ago
source link: http://mp.weixin.qq.com/s?__biz=MzIwMTE1NjQxMQ%3D%3D&%3Bmid=2247489950&%3Bidx=3&%3Bsn=2d368d012b964f5a2f9976cd7229e206
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

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

iqE3q2F.png!web

开源地址

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)

模型压缩数据结果对比

F7Nvi2n.png!web

后续计划

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君其他账号好友请直接私信)

请务必注明:部署

fERFR3M.png!web

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

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

UbiEbaU.png!web

长按关注 我爱计算机视觉


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK