YOLOv5模型剪枝压缩
基于yolov5 v5.0分支进行剪枝,采用yolov5s模型,原理为Learning Efficient Convolutional Networks Through Network Slimming(https://arxiv.org/abs/1708.06519)。
yolov5 v5.0转NCNN和安卓移植见YOLOv5转ONNX转NCNN_MidasKing的博客-CSDN博客_yolov5转onnx
yolov5s是非常优秀的轻量级检测网络,但是有时候模型依然比较大,使得我们不得不缩减网络输入大小,但是单纯降低输入来减少运算,例如640降低到320,对检测效果损失很大,同时模型体积依然是14M左右,所以可以通过添加L1正则来约束BN层系数,使得系数稀疏化,通过稀疏训练后,裁剪掉稀疏很小的层,对应激活也很小,所以对后面的影响非常小,反复迭代这个过程,可以获得很compact的模型,步骤基本是这样。
展开讲一下原理:
我们知道BN层的计算是这样的:
所以每个channel激活大小Zout和系数γ(pytorch对应bn层的weights,β对应bias)正相关,如果γ太小接近于0,那么激活值也非常小:
那么拿掉那些γ->0的channel是可以的,但是正常情况下,我们训练一个网络后,bn层的系数是类似正态分布:
上图就是正常训练时候γ的随着epoch的直方图分布,可以看基本正太分布。0附近的值是很少的,所以没法剪枝。
通过添加L1 正则约束:
上面第一项是正常训练的loss函数,第二项是约束,其中g(s) = |s|,λ是正则系数,根据数据集调整。可以将参数稀疏化,看看如果添加到训练的损失函数中去,在进行反向传播时候:
YOLOv5模型剪枝压缩相关推荐
- NNI模型剪枝压缩使用的较详细记录
使用微软nni工具,基于pytorch进行模型压缩记录总结,最后的结论一很久以前实验的,可能会有点误差,或者NNI工具更新了.但是nni模型剪枝压缩的整体流程是这样的,在此简单记录一下. 一.模型的剪 ...
- YOLOv5剪枝✂️| 模型剪枝实战篇
本篇博文所用代码为开源项目修改得到,且不适合基础太差的同学. 本篇文章主要讲解代码的使用方式,手把手带你实现YOLOv5模型剪枝操作. 文章目录 0. 环境准备 1. 使用YOLOv5训练自己的模型 ...
- 直播预告 | AAAI 2022论文解读:基于对比学习的预训练语言模型剪枝压缩
「AI Drive」是由 PaperWeekly 和 biendata 共同发起的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和 ...
- 基于YOLOv5模型压缩、模型量化、模型剪枝
基于YOLOv5模型压缩.模型量化.模型剪枝 代码下载地址:下载地址 Requirements pip install -r requirements.txt Pruning for YOLOs Mo ...
- 模型压缩、模型剪枝、模型部署
模型压缩.模型剪枝.模型部署 目录 模型压缩.模型剪枝.模型部署 ONNX & TensorRT ONNX model: TensorRT使用过程分为两步
- 【视频课】深度掌握模型剪枝+模型量化+知识蒸馏3大核心模型压缩技术理论!...
前言 欢迎大家关注有三AI的视频课程系列,我们的视频课程系列共分为5层境界,内容和学习路线图如下: 第1层:掌握学习算法必要的预备知识,包括Python编程,深度学习基础,数据使用,框架使用. 第2层 ...
- 高效深度学习软硬件设计——神经网络压缩、 Pruning模型剪枝、权值共享、低秩近似
目录 问题引出 高效推断的算法 Pruning模型剪枝 步骤 剪去参数--形状不规则 剪去神经元--形状仍然规则 Why Pruning Pruning Changes Weight Distribu ...
- 【知识星球】关于模型压缩,有三AI知识星球近一个月从模型精简,硬件实现,到模型剪枝分享了哪些内容...
欢迎大家来到<知识星球>专栏,模型压缩是我们星球社区的重点关注内容,本次简介近期分享的一部分内容. 作者&编辑 | 言有三 1 精简模型设计 精简模型的设计是模型压缩中的第一步,而 ...
- 深度学习模型压缩与加速理论与实战(一):模型剪枝
记录以下最近实验室的工作:模型的压缩和加速,虽然针对的是yolov3,但是剪枝的对象还是CBL层(即Conv Layer + BN Layer + LeakyReLU Layer),因此我觉得可能有一 ...
最新文章
- 在.net中使用GDI+来提高gif图片的保存画质
- nginx启动报错:Job for nginx.service failed. See 'systemctl status nginx.service' and 'journalctl -xn' fo
- centos7配置 console口_玩转KVM-一招打开vm的console口
- mysql增删改查扩展_MySQL(增删改查补充)
- windows常见端口和协议--SMB(445)-NETBIOS(137-138-139)
- MySQL 加锁处理分析(二)
- Wordpress 自定义文章类型添加 Categoried、Tags
- 超强合集:OCR文本检测干货汇总(含论文、源码、demo等资源)
- word高级技能之自动生成图目录/表目录
- 凯撒密码加密你的姓名拼音(c)
- 开发者痛斥手机供应商为了续航恶意查杀后台应用
- 仿微信/支付宝的自定义提现密码输入(一)
- 传输层协议TCP和UDP的区别详解
- 从零开始之驱动发开、linux驱动(二十三、platform总线之数据驱动分离)
- RXD、TXD你接错了没?
- 计算机存储程序错误检验,内存错误怎么办?内存错误的修复与检测方法介绍
- ELTEK电源维修SMPS5000SIL易达整流模块维修概述
- vue 两种方式实现抽奖效果(九宫格、翻牌抽奖) -----(非TX游戏概率)
- 使用python生成crc对照表
- 同网络段的设备之间网络无法Ping通