基于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模型剪枝压缩相关推荐

  1. NNI模型剪枝压缩使用的较详细记录

    使用微软nni工具,基于pytorch进行模型压缩记录总结,最后的结论一很久以前实验的,可能会有点误差,或者NNI工具更新了.但是nni模型剪枝压缩的整体流程是这样的,在此简单记录一下. 一.模型的剪 ...

  2. YOLOv5剪枝✂️| 模型剪枝实战篇

    本篇博文所用代码为开源项目修改得到,且不适合基础太差的同学. 本篇文章主要讲解代码的使用方式,手把手带你实现YOLOv5模型剪枝操作. 文章目录 0. 环境准备 1. 使用YOLOv5训练自己的模型 ...

  3. 直播预告 | AAAI 2022论文解读:基于对比学习的预训练语言模型剪枝压缩

    「AI Drive」是由 PaperWeekly 和 biendata 共同发起的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和 ...

  4. 基于YOLOv5模型压缩、模型量化、模型剪枝

    基于YOLOv5模型压缩.模型量化.模型剪枝 代码下载地址:下载地址 Requirements pip install -r requirements.txt Pruning for YOLOs Mo ...

  5. 模型压缩、模型剪枝、模型部署

    模型压缩.模型剪枝.模型部署 目录 模型压缩.模型剪枝.模型部署 ONNX & TensorRT ONNX model: TensorRT使用过程分为两步࿱

  6. 【视频课】深度掌握模型剪枝+模型量化+知识蒸馏3大核心模型压缩技术理论!...

    前言 欢迎大家关注有三AI的视频课程系列,我们的视频课程系列共分为5层境界,内容和学习路线图如下: 第1层:掌握学习算法必要的预备知识,包括Python编程,深度学习基础,数据使用,框架使用. 第2层 ...

  7. 高效深度学习软硬件设计——神经网络压缩、 Pruning模型剪枝、权值共享、低秩近似

    目录 问题引出 高效推断的算法 Pruning模型剪枝 步骤 剪去参数--形状不规则 剪去神经元--形状仍然规则 Why Pruning Pruning Changes Weight Distribu ...

  8. 【知识星球】关于模型压缩,有三AI知识星球近一个月从模型精简,硬件实现,到模型剪枝分享了哪些内容...

    欢迎大家来到<知识星球>专栏,模型压缩是我们星球社区的重点关注内容,本次简介近期分享的一部分内容. 作者&编辑 | 言有三 1 精简模型设计 精简模型的设计是模型压缩中的第一步,而 ...

  9. 深度学习模型压缩与加速理论与实战(一):模型剪枝

    记录以下最近实验室的工作:模型的压缩和加速,虽然针对的是yolov3,但是剪枝的对象还是CBL层(即Conv Layer + BN Layer + LeakyReLU Layer),因此我觉得可能有一 ...

最新文章

  1. 在.net中使用GDI+来提高gif图片的保存画质
  2. nginx启动报错:Job for nginx.service failed. See 'systemctl status nginx.service' and 'journalctl -xn' fo
  3. centos7配置 console口_玩转KVM-一招打开vm的console口
  4. mysql增删改查扩展_MySQL(增删改查补充)
  5. windows常见端口和协议--SMB(445)-NETBIOS(137-138-139)
  6. MySQL 加锁处理分析(二)
  7. Wordpress 自定义文章类型添加 Categoried、Tags
  8. 超强合集:OCR文本检测干货汇总(含论文、源码、demo等资源)
  9. word高级技能之自动生成图目录/表目录
  10. 凯撒密码加密你的姓名拼音(c)
  11. 开发者痛斥手机供应商为了续航恶意查杀后台应用
  12. 仿微信/支付宝的自定义提现密码输入(一)
  13. 传输层协议TCP和UDP的区别详解
  14. 从零开始之驱动发开、linux驱动(二十三、platform总线之数据驱动分离)
  15. RXD、TXD你接错了没?
  16. 计算机存储程序错误检验,内存错误怎么办?内存错误的修复与检测方法介绍
  17. ELTEK电源维修SMPS5000SIL易达整流模块维修概述
  18. vue 两种方式实现抽奖效果(九宫格、翻牌抽奖) -----(非TX游戏概率)
  19. 使用python生成crc对照表
  20. 同网络段的设备之间网络无法Ping通

热门文章

  1. JavaScript学习第十三天
  2. 千年服务器经验怎么修改,千年服务端加入江湖等级的脚本
  3. 象yhoo相册那样在网页上操作图片(不完全)_1
  4. Revi开发 - 构件过滤(FilteredElementCollector)
  5. 我是如何一步步把客户的两台服务器给弄崩的
  6. Nginx之配置https/wss
  7. pycharm 全部文件搜索关键字(全局文件搜索)
  8. Linux创建文件的几种方式
  9. 什么是web前端驻场开发,费用怎么样
  10. matlab中for循环的简单使用