Yolov5更换backbone,与模型压缩(剪枝,量化,蒸馏)

Yolov5更换backbone,与模型压缩(剪枝,量化,蒸馏)目前支持更换yolov5的backbone主干网络为Ghostnet,以及采用eagleeye的剪枝方法支持对yolov5系列的剪枝。后续,将会添加更多更轻量,更优秀的主干网络,比如swintrans,…


Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

项目地址(GitHub):https://github.com/Ranking666/Yolov5-Processing

~~~欢迎各位交流、star、fork、issues~~~

项目介绍:

        本仓库是基于官方yolov5源码的基础上,进行的改进。

        目前支持更换yolov5的backbone主干网络为Ghostnet,以及采用eagleeye的剪枝方法支持对yolov5系列的剪枝。

        后续,将会添加更多更轻量,更优秀的主干网络,比如swintrans,EfficientNet等,以及其他剪枝方法,以及量化,蒸馏对于yolov5系列的支持。

        欢迎大家有问题,错误,想法都可以积极交流,探讨,学习,本项目长期维护,持续更新,各位的star,就是对本项目的大力支持。

《GhostNet: More Features from Cheap Operations》

        先简单介绍一下,目前支持的backbone

        在一张图像中存在着很多像素的冗余,而在CNN模型中这种冗余更是非常多的,提取到了大量无用的特征。

Yolov5更换backbone,与模型压缩(剪枝,量化,蒸馏)

        比如论文中给到的这个图,可以看到用扳手连接的几张图其实是非常相似的,完全是冗余的,不需要的

        于是本论文提出一个仅通过少量计算(cheap operations)就能生成大量特征图的结构——Ghost Module。

        Ghost Module可以适用在任何大型的CNN模型中,已经可以达到即插即用的效果。

        首先,作者将原来的卷积分为两步,第一步还是卷积,只不过输出通道数减少了;第二步是用第一步生成的特征图通过线性变化,来生成剩余的特征图。最后将两步的输出通道结合输出。也就是像图中b表示的这样

Yolov5更换backbone,与模型压缩(剪枝,量化,蒸馏)

       然后,作者通过一系列计算得出计算量是减少的,具体公式这里就不列出。     

       了解了Ghost Module,下面看Ghost Bottlenecks。

Yolov5更换backbone,与模型压缩(剪枝,量化,蒸馏)

        Ghost Bottlenecks的作用和残差块的作用一样,结构也和残差块的结构类似    ,就不过多介绍, 大家看过代码一下就能懂   

        所以,backbone就是由这样的Ghost Bottlenecks堆叠产生的。

EagleEye: Fast Sub-net Evaluation for Efficient Neural Network Pruning

        详细大家可以看之前的初入神经网络剪枝量化3

如有错误,欢迎各位批评指正!!!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/170748.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • webgame开发中的文件解密

    webgame开发中的文件解密上一篇讲的是文件的加密,这一篇记录一下如何加载并显示图片。 因为图片文件经过加密,已经成了二进制流的文件了(一堆乱码),只能使用URLStream来加载资源了。这里有一点要注意:URLStream中的读取操作是非阻塞的,在读取数据之前必须使用bytesAvailable属性来确定是否能够获取足够的数据,如何不能获取足够的数据,将引发EOFError异常。 主要思路:1、加载…

    2022年6月7日
  • C++的this指针

    C++的this指针C++的this指针当你进入一个房子后,你可以看见桌子、椅子、地板等,但是房子你是看不到全貌了。对于一个类的实例来说,你可以看到它的成员函数、成员变量,但是实例本身呢?this是一个指针,它时时刻刻指向你这个实例本身。C++在初始化对象时,每个对象中的数据成员都会得到系统分配的自己独立的存储空间。对于成员函数来说,一个函数的代码段在内存中只有一份,同一个类中的不同对象在调用自己的成…

    2022年5月16日
  • JavaScript 开发者年度调查报告

    JavaScript 开发者年度调查报告

    2022年3月3日
  • 动态规划算法求最长回文子串

    动态规划算法求最长回文子串给出了动态规划方法求最长回文子串的程序及分析。

    2022年6月11日
  • 将java或javaweb项目打包为jar包或war包[通俗易懂]

    将java或javaweb项目打包为jar包或war包[通俗易懂]一、为什么打包?         关于此问题,网上众说纷纭。结合个人理解以及网上说法,打成jar包,方便别人使用。如果别人运行java程序,不需要在寻找包含main方法的类去执行;如果别人使用jar包,直接在自己项目中导入jar包,而不是赋值一堆类文件。打成war包是真实生产化境,选择的web应用部署方式,网上说…

    2022年5月10日
  • 进销存源码|ERP多仓库管理系统全开源php源码

    进销存源码|ERP多仓库管理系统全开源php源码  进销存(ERP)源码是用来管理企业数据的软件工具。进销存系统帮助不同的组织处理企业的不同部门。不同部门如收货、库存管理、客户订单管理、生产计划、发货、会计、人力资源管理等业务职能。基本上,它是将企业的计划、生产、销售和营销工作整合到一个管理系统中的实践。它将跨不同部门的所有数据库合并到一个单一的数据库中,该企业的所有员工都可以轻松访问该数据库。它有助于自动化执行业务流程所涉及的任务。    进销存源码演示及资源获取:e.csymzs.top    使用进销存前:    在使用进销存源码之前,

    2022年5月31日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号