深度学习模型压缩加速 /2023/知乎推荐 您所在的位置:网站首页 github空间有多大 深度学习模型压缩加速 /2023/知乎推荐

深度学习模型压缩加速 /2023/知乎推荐

2023-04-02 16:40| 来源: 网络整理| 查看: 265

href='/tags/目录'>目录 href='/tags/前言'>前言href='/tags/href='/tags/深度'>深度href='/tags/学习'>学习'>href='/tags/深度'>深度href='/tags/学习'>学习href='/tags/模型'>模型href='/tags/压缩'>压缩href='/tags/加速'>加速href='/tags/原理'>原理和href='/tags/方法'>方法href='/tags/为什么'>为什么需要href='/tags/模型'>模型href='/tags/压缩'>压缩和href='/tags/加速'>加速? href='/tags/href='/tags/深度'>深度href='/tags/学习'>学习'>href='/tags/深度'>深度href='/tags/学习'>学习href='/tags/模型'>模型href='/tags/压缩'>压缩的href='/tags/方法'>方法href='/tags/前端'>前端href='/tags/压缩'>压缩的href='/tags/方法'>方法1. href='/tags/知识'>知识蒸馏:2. 紧凑的href='/tags/模型'>模型href='/tags/结构'>结构href='/tags/设计'>设计3. href='/tags/剪枝'>剪枝和href='/tags/共享'>共享 href='/tags/后端'>后端href='/tags/压缩'>压缩的href='/tags/方法'>方法低秩近似href='/tags/量化'>量化和二href='/tags/进制'>进制 href='/tags/href='/tags/深度'>深度href='/tags/学习'>学习'>href='/tags/深度'>深度href='/tags/学习'>学习href='/tags/模型'>模型href='/tags/优化'>优化href='/tags/加速'>加速href='/tags/方法'>方法优href='/tags/化工'>化工具与库:href='/tags/Tensor'>TensorRT(href='/tags/Nvidia'>Nvidia)href='/tags/改变'>改变href='/tags/网络'>网络href='/tags/结构'>结构href='/tags/设计'>设计为何会href='/tags/实现'>实现href='/tags/模型'>模型href='/tags/压缩'>压缩、href='/tags/加速'>加速组href='/tags/卷积'>卷积(href='/tags/Group'>Group href='/tags/conv'>convolution)href='/tags/深度'>深度可分离href='/tags/卷积'>卷积 href='/tags/href='/tags/深度'>深度href='/tags/学习'>学习'>href='/tags/深度'>深度href='/tags/学习'>学习href='/tags/移动'>移动端href='/tags/开源'>开源href='/tags/框架'>框架href='/tags/介绍'>介绍及href='/tags/部署'>部署QNNPACK

href='/tags/前言'>前言

href='/tags/智慧'>智慧href='/tags/物流'>物流是“href='/tags/互href='/tags/联网'>联网'>互href='/tags/联网'>联网+”href='/tags/高效'>高效href='/tags/物流'>物流的重要href='/tags/内容'>内容,以href='/tags/智能'>智能化href='/tags/技术'>技术使href='/tags/物流'>物流具有href='/tags/学习'>学习、href='/tags/感知'>感知、href='/tags/思考'>思考、href='/tags/决策'>决策等href='/tags/能力'>能力,href='/tags/href='/tags/深度'>深度href='/tags/学习'>学习'>href='/tags/深度'>深度href='/tags/学习'>学习被大量用于href='/tags/智慧'>智慧href='/tags/物流'>物流。 href='/tags/href='/tags/深度'>深度href='/tags/学习'>学习'>href='/tags/深度'>深度href='/tags/学习'>学习href='/tags/模型'>模型href='/tags/压缩'>压缩href='/tags/加速'>加速href='/tags/原理'>原理和href='/tags/方法'>方法 href='/tags/href='/tags/深度'>深度href='/tags/学习'>学习'>href='/tags/深度'>深度href='/tags/学习'>学习href='/tags/移动'>移动端href='/tags/开源'>开源href='/tags/框架'>框架href='/tags/介绍'>介绍及href='/tags/部署'>部署href='/tags/实例'>实例

href='/tags/href='/tags/深度'>深度href='/tags/学习'>学习'>href='/tags/深度'>深度href='/tags/学习'>学习href='/tags/模型'>模型href='/tags/压缩'>压缩href='/tags/加速'>加速href='/tags/原理'>原理和href='/tags/方法'>方法 href='/tags/为什么'>为什么需要href='/tags/模型'>模型href='/tags/压缩'>压缩和href='/tags/加速'>加速? href='/tags/移动'>移动端href='/tags/产品'>产品中href='/tags/注入'>注入AIhref='/tags/能力'>能力对于href='/tags/在线'>在线href='/tags/学习'>学习和href='/tags/增量'>增量href='/tags/学习'>学习等href='/tags/实时'>实时href='/tags/应用'>应用,href='/tags/如何'>如何href='/tags/减少'>减少含有大量层级及href='/tags/结点'>结点的href='/tags/大型'>大型href='/tags/神经href='/tags/网络'>网络'>神经href='/tags/网络'>网络所需要的href='/tags/内存'>内存和href='/tags/计算量'>计算量极为重要href='/tags/智能'>智能href='/tags/设备'>设备的href='/tags/流行'>流行提供了href='/tags/内存'>内存、CPU、href='/tags/能耗'>能耗和href='/tags/宽带'>宽带等href='/tags/资源'>资源,使得href='/tags/href='/tags/深度'>深度href='/tags/学习'>学习'>href='/tags/深度'>深度href='/tags/学习'>学习href='/tags/模型'>模型href='/tags/部署'>部署在href='/tags/智能'>智能href='/tags/移动'>移动href='/tags/设备'>设备上变得可行href='/tags/高校'>高校得href='/tags/href='/tags/深度'>深度href='/tags/学习'>学习'>href='/tags/深度'>深度href='/tags/学习'>学习可以href='/tags/有效'>有效的href='/tags/帮助'>帮助href='/tags/href='/tags/嵌入'>嵌入式'>href='/tags/嵌入'>嵌入式href='/tags/设备'>设备、href='/tags/href='/tags/分布'>分布式'>href='/tags/分布'>分布式href='/tags/系统'>系统href='/tags/完成'>完成复杂工作,在href='/tags/移动'>移动端href='/tags/部署'>部署href='/tags/href='/tags/深度'>深度href='/tags/学习'>学习'>href='/tags/深度'>深度href='/tags/学习'>学习有很重要的href='/tags/意义'>意义。href='/tags/大href='/tags/规模'>规模'>大href='/tags/规模'>规模的复杂href='/tags/网络'>网络href='/tags/模型'>模型在端href='/tags/设备'>设备上使用并不现实。 href='/tags/href='/tags/深度'>深度href='/tags/学习'>学习'>href='/tags/深度'>深度href='/tags/学习'>学习href='/tags/模型'>模型href='/tags/压缩'>压缩的href='/tags/方法'>方法

按照href='/tags/压缩'>压缩href='/tags/过程'>过程对href='/tags/网络'>网络href='/tags/结构'>结构的href='/tags/破坏'>破坏程度,href='/tags/我们'>我们将href='/tags/模型'>模型href='/tags/压缩'>压缩href='/tags/技术'>技术分为“href='/tags/前端'>前端href='/tags/压缩'>压缩”与“href='/tags/后端'>后端href='/tags/压缩'>压缩”两部分。所谓“href='/tags/前端'>前端href='/tags/压缩'>压缩”,是指不href='/tags/改变'>改变原href='/tags/网络'>网络href='/tags/结构'>结构的href='/tags/压缩'>压缩href='/tags/技术'>技术,主要包括href='/tags/知识'>知识蒸馏、紧凑的href='/tags/模型'>模型href='/tags/结构'>结构href='/tags/设计'>设计以及href='/tags/href='/tags/滤波'>滤波器'>href='/tags/滤波'>滤波器层面的href='/tags/剪枝'>剪枝等;而“href='/tags/后端'>后端href='/tags/压缩'>压缩”则包括低秩近似、未加href='/tags/限制'>限制的href='/tags/剪枝'>剪枝、href='/tags/参数'>参数href='/tags/量化'>量化以及二值href='/tags/网络'>网络等,其href='/tags/目标'>目标在于尽可能地href='/tags/减少'>减少href='/tags/模型'>模型href='/tags/大小'>大小,因而会对原始href='/tags/网络'>网络href='/tags/结构'>结构造成极大程度的改造。其中,由于“href='/tags/前端'>前端href='/tags/压缩'>压缩”未href='/tags/改变'>改变原有的href='/tags/网络'>网络href='/tags/结构'>结构,仅仅只是在原href='/tags/模型'>模型的href='/tags/基础'>基础上href='/tags/减少'>减少了href='/tags/网络'>网络的层数或者href='/tags/href='/tags/滤波'>滤波器'>href='/tags/滤波'>滤波器的href='/tags/个数'>个数,其最终的href='/tags/模型'>模型可href='/tags/完美'>完美href='/tags/适配'>适配 现有的href='/tags/href='/tags/深度'>深度href='/tags/学习'>学习'>href='/tags/深度'>深度href='/tags/学习'>学习库。相比之下,“href='/tags/后端'>后端href='/tags/压缩'>压缩”为了href='/tags/追求'>追求极致的href='/tags/压缩'>压缩比,不得不对原有的href='/tags/网络'>网络href='/tags/结构'>结构进行改造,如对href='/tags/参数'>参数进行href='/tags/量化'>量化href='/tags/表示'>表示等,而这样的改造往往是不可逆的。同时,为了href='/tags/获得'>获得href='/tags/理想'>理想的href='/tags/压缩'>压缩href='/tags/效果'>效果,必须href='/tags/开发'>开发相配套的href='/tags/运行'>运行库,甚至是专门的href='/tags/硬件'>硬件href='/tags/设备'>设备,其最终的href='/tags/结果'>结果往往是一种href='/tags/压缩'>压缩href='/tags/技术'>技术href='/tags/对应'>对应于一套href='/tags/运行'>运行库,从而带来了巨大的href='/tags/维护'>维护href='/tags/成本'>成本。 当然,上述两种href='/tags/压缩'>压缩href='/tags/策略'>策略并href='/tags/不href='/tags/存在'>存在'>不href='/tags/存在'>存在绝对的好坏,各种href='/tags/方法'>方法均有其各自的适应href='/tags/场景'>场景。同时,两种href='/tags/压缩'>压缩href='/tags/技术'>技术可以相互结合,将“href='/tags/前端'>前端href='/tags/压缩'>压缩”的href='/tags/输出'>输出作为“href='/tags/后端'>后端href='/tags/压缩'>压缩”的href='/tags/输入'>输入,能够在href='/tags/最大'>最大程度上href='/tags/减少'>减少href='/tags/模型'>模型的href='/tags/复杂度'>复杂度。因此,本文所href='/tags/介绍'>介绍的这两大类href='/tags/压缩'>压缩href='/tags/技术'>技术,实际上是一种相互补充的href='/tags/关系'>关系。有理由href='/tags/相信'>相信,“href='/tags/前端'>前端href='/tags/压缩'>压缩”与“href='/tags/后端'>后端href='/tags/压缩'>压缩”的结合能够href='/tags/开启'>开启href='/tags/深度'>深度href='/tags/模型'>模型走向“精简之美”的大门。

href='/tags/strong'>strong>href='/tags/前端'>前端href='/tags/压缩'>压缩href='/tags/strong'>strong>: href='/tags/知识'>知识蒸馏;紧凑的href='/tags/模型'>模型href='/tags/结构'>结构href='/tags/设计'>设计;href='/tags/href='/tags/滤波'>滤波器'>href='/tags/滤波'>滤波器层面的href='/tags/剪枝'>剪枝 href='/tags/strong'>strong>href='/tags/后端'>后端href='/tags/压缩'>压缩href='/tags/strong'>strong>: 低秩近似;未加href='/tags/限制'>限制的href='/tags/剪枝'>剪枝;href='/tags/参数'>参数href='/tags/量化'>量化;二值href='/tags/网络'>网络

href='/tags/前端'>前端href='/tags/压缩'>压缩的href='/tags/方法'>方法

1) href='/tags/strong'>strong>href='/tags/知识'>知识蒸馏href='/tags/strong'>strong> 复杂href='/tags/模型'>模型:href='/tags/性能'>性能较优,但href='/tags/参数'>参数量很大,计算href='/tags/效率'>效率低;小href='/tags/模型'>模型计算href='/tags/效率'>效率高,但是其href='/tags/性能'>性能较差。 href='/tags/知识'>知识蒸馏是让复杂href='/tags/模型'>模型href='/tags/学习'>学习到的href='/tags/知识'>知识href='/tags/迁移'>迁移到小href='/tags/模型'>模型当中。 2)href='/tags/strong'>strong>紧凑的href='/tags/模型'>模型href='/tags/结构'>结构href='/tags/设计'>设计href='/tags/strong'>strong> 对于href='/tags/神经href='/tags/网络'>网络'>神经href='/tags/网络'>网络href='/tags/卷积'>卷积的href='/tags/方式'>方式href='/tags/改进'>改进,比如: 使用两个33href='/tags/卷积'>卷积href='/tags/替换'>替换55的href='/tags/卷积'>卷积,使用href='/tags/深度'>深度可分离href='/tags/卷积'>卷积等等href='/tags/方式'>方式降低计算href='/tags/参数'>参数量 3)href='/tags/strong'>strong>href='/tags/href='/tags/滤波'>滤波器'>href='/tags/滤波'>滤波器层面的href='/tags/剪枝'>剪枝href='/tags/strong'>strong> 对较小的href='/tags/权重'>权重href='/tags/矩阵'>矩阵进行href='/tags/剔除'>剔除,对整个href='/tags/神经href='/tags/网络'>网络'>神经href='/tags/网络'>网络进行href='/tags/微调'>微调。 href='/tags/缺点'>缺点:容易导致href='/tags/精度'>精度损失较大,造成href='/tags/权重'>权重冗余,href='/tags/剪枝'>剪枝不彻底。

1. href='/tags/知识'>知识蒸馏:

href='/tags/strong'>strong>href='/tags/知识'>知识蒸馏href='/tags/strong'>strong>是将href='/tags/一个'>一个已经href='/tags/训练'>训练好的href='/tags/网络'>网络href='/tags/迁移'>迁移到另外href='/tags/一个'>一个新href='/tags/网络'>网络,常采用thref='/tags/each'>eacher-studenthref='/tags/学习'>学习href='/tags/策略'>策略,已经被广泛href='/tags/应用'>应用在href='/tags/模型'>模型href='/tags/压缩'>压缩和href='/tags/迁移'>迁移href='/tags/学习'>学习中。 整个href='/tags/设计'>设计只包括三个重要部分:href='/tags/strong'>strong>thref='/tags/each'>eacherhref='/tags/模型'>模型(thref='/tags/each'>eacherhref='/tags/模型'>模型href='/tags/集成'>集成),href='/tags/KLhref='/tags/散度'>散度'>KLhref='/tags/散度'>散度href='/tags/loss'>loss以及href='/tags/一个'>一个判别器href='/tags/strong'>strong>。 首先,href='/tags/我们'>我们来href='/tags/理解'>理解一下href='/tags/KLhref='/tags/散度'>散度'>KLhref='/tags/散度'>散度href='/tags/loss'>loss。 在这里插入a a href='/tags/href'href/a='/tags/图片'图片/a描述 href='/tags/strong'>strong>href='/tags/KLhref='/tags/散度'>散度'>KLhref='/tags/散度'>散度href='/tags/strong'>strong> href='/tags/strong'>strong>href='/tags/用途'>用途href='/tags/strong'>strong>:href='/tags/比较'>比较两个href='/tags/概率'>概率href='/tags/分布'>分布的接近程度; 在href='/tags/统计'>统计href='/tags/应用'>应用中,href='/tags/我们'>我们经常需要href='/tags/一个'>一个href='/tags/简单'>简单的,近似的href='/tags/概率'>概率href='/tags/分布'>分布来描述,观察href='/tags/数据'>数据或者另href='/tags/一个'>一个复杂的href='/tags/概率'>概率href='/tags/分布'>分布。这个时候,href='/tags/我们'>我们需要href='/tags/一个'>一个量来衡量href='/tags/我们'>我们href='/tags/选择'>选择的近似href='/tags/分布'>分布相比原href='/tags/分布'>分布究竟损失了多少href='/tags/信息'>信息量,这就是href='/tags/KLhref='/tags/散度'>散度'>KLhref='/tags/散度'>散度起href='/tags/作用'>作用的地方。

2. 紧凑的href='/tags/模型'>模型href='/tags/结构'>结构href='/tags/设计'>设计

在这里插入a a href='/tags/href'href/a='/tags/图片'图片/a描述 href='/tags/strong'>strong>href='/tags/SqueezeNet'>SqueezeNethref='/tags/模型'>模型href='/tags/设计'>设计原则href='/tags/strong'>strong>:

href='/tags/替换'>替换33href='/tags/卷积'>卷积href='/tags/kernel'>kernel为11的href='/tags/卷积'>卷积href='/tags/kernel'>kernelhref='/tags/减少'>减少href='/tags/输入'>输入3*3href='/tags/卷积'>卷积的href='/tags/input'>input href='/tags/feature'>feature maphref='/tags/数量'>数量href='/tags/减少'>减少href='/tags/pool'>pooling 3. href='/tags/剪枝'>剪枝和href='/tags/共享'>共享

在这里插入a a href='/tags/href'href/a='/tags/图片'图片/a描述 href='/tags/网络'>网络href='/tags/剪枝'>剪枝和href='/tags/共享'>共享起初是href='/tags/解决'>解决href='/tags/过href='/tags/拟合'>拟合'>过href='/tags/拟合'>拟合href='/tags/问题'>问题的,现在更多被用来降低href='/tags/网络'>网络href='/tags/复杂度'>复杂度。 href='/tags/href='/tags/深度'>深度href='/tags/学习'>学习'>href='/tags/深度'>深度href='/tags/学习'>学习href='/tags/模型'>模型有稀疏化,所以剪纸为稀疏href='/tags/模型'>模型

href='/tags/后端'>后端href='/tags/压缩'>压缩的href='/tags/方法'>方法

1)href='/tags/strong'>strong>低秩近似href='/tags/strong'>strong> href='/tags/卷积'>卷积href='/tags/神经href='/tags/网络'>网络'>神经href='/tags/网络'>网络的href='/tags/基本'>基本计算href='/tags/模式'>模式是进行href='/tags/卷积'>卷积href='/tags/运算'>运算。具体href='/tags/实现'>实现上,href='/tags/卷积'>卷积href='/tags/操作'>操作由href='/tags/矩阵'>矩阵href='/tags/相乘'>相乘href='/tags/完成'>完成,如 href='/tags/caffe'>caffe 中的“im2col”href='/tags/操作'>操作。不过通常情况下,href='/tags/权重'>权重href='/tags/矩阵'>矩阵往往稠密且巨大,从而带来计算和href='/tags/存储'>存储上的巨大开销。为href='/tags/解决'>解决这种情况的一种直观href='/tags/想法'>想法是,若能将该稠密href='/tags/矩阵'>矩阵由若干个小href='/tags/规模'>规模href='/tags/矩阵'>矩阵近似href='/tags/重构'>重构出来,那么便能href='/tags/有效'>有效降低href='/tags/存储'>存储和计算开销。由于这类href='/tags/算法'>算法大多采用低秩近似的href='/tags/技术'>技术来href='/tags/重构'>重构href='/tags/权重'>权重href='/tags/矩阵'>矩阵,href='/tags/我们'>我们href='/tags/将其'>将其归类为低秩近似href='/tags/算法'>算法。 低秩近似href='/tags/算法'>算法在中小型href='/tags/网络'>网络href='/tags/模型'>模型上取得了很不错的href='/tags/效果'>效果,但其超href='/tags/参数'>参数量与href='/tags/网络'>网络层数呈href='/tags/线性'>线性href='/tags/变化'>变化href='/tags/趋势'>趋势 ,随着href='/tags/网络'>网络层数的href='/tags/增加'>增加与href='/tags/模型'>模型href='/tags/复杂度'>复杂度的href='/tags/提升'>提升,其href='/tags/搜索'>搜索href='/tags/空间'>空间会急剧href='/tags/增大'>增大 。当面对href='/tags/大型'>大型href='/tags/神经href='/tags/网络'>网络'>神经href='/tags/网络'>网络href='/tags/模型'>模型时,href='/tags/是否'>是否仍能href='/tags/通过'>通过近似href='/tags/算法'>算法来href='/tags/重构'>重构href='/tags/参数'>参数href='/tags/矩阵'>矩阵,并使得href='/tags/性能'>性能下降保持在href='/tags/一个'>一个可接受href='/tags/范围'>范围内?最终的href='/tags/答案'>答案还是有待商榷的。 href='/tags/strong'>strong>href='/tags/优点'>优点href='/tags/strong'>strong>: 可以降低href='/tags/存储'>存储和计算消耗; 一般可以href='/tags/压缩'>压缩2~3倍,href='/tags/精度'>精度几乎href='/tags/没有'>没有损失,而最终的href='/tags/精度'>精度甚至能超过href='/tags/压缩'>压缩href='/tags/之前'>之前的href='/tags/网络'>网络。 href='/tags/strong'>strong>href='/tags/缺点'>缺点href='/tags/strong'>strong>: href='/tags/模型'>模型越复杂,href='/tags/权重'>权重href='/tags/矩阵'>矩阵越大,利用低秩href='/tags/重构'>重构href='/tags/参数'>参数href='/tags/矩阵'>矩阵href='/tags/不能'>不能保证href='/tags/模型'>模型的href='/tags/性能'>性能。

2)href='/tags/strong'>strong>未加href='/tags/限制'>限制的剪纸href='/tags/strong'>strong> href='/tags/strong'>strong>href='/tags/优点'>优点href='/tags/strong'>strong>: 保持href='/tags/模型'>模型href='/tags/性能'>性能不损失的情况下,href='/tags/减少'>减少href='/tags/参数'>参数量9~11倍; href='/tags/剔除'>剔除不重要的href='/tags/权重'>权重,加快计算,href='/tags/提高'>提高href='/tags/模型'>模型href='/tags/泛化'>泛化href='/tags/能力'>能力; href='/tags/strong'>strong>href='/tags/缺点'>缺点href='/tags/strong'>strong>: 非href='/tags/href='/tags/结构'>结构化'>href='/tags/结构'>结构化href='/tags/剪枝'>剪枝会href='/tags/增加'>增加href='/tags/内存'>内存href='/tags/访问'>访问href='/tags/成本'>成本; 极度href='/tags/依赖'>依赖专门的href='/tags/运行'>运行库核特殊的href='/tags/运行'>运行href='/tags/平台'>平台; href='/tags/压缩'>压缩率过大时,href='/tags/破坏'>破坏href='/tags/性能'>性能;

3)href='/tags/strong'>strong>href='/tags/参数'>参数href='/tags/量化'>量化:href='/tags/strong'>strong> href='/tags/strong'>strong>href='/tags/优点'>优点href='/tags/strong'>strong>: href='/tags/模型'>模型href='/tags/性能'>性能损失很小,href='/tags/大小'>大小href='/tags/减少'>减少8~16倍; href='/tags/strong'>strong>href='/tags/缺点'>缺点href='/tags/strong'>strong>: href='/tags/压缩'>压缩率大时,href='/tags/性能'>性能显著下降; href='/tags/依赖'>依赖专门的href='/tags/运行'>运行库,href='/tags/通用'>通用性较差; href='/tags/strong'>strong>二值href='/tags/网络'>网络:href='/tags/strong'>strong> 对于32bithref='/tags/href='/tags/浮点'>浮点型'>href='/tags/浮点'>浮点型数用1bit二href='/tags/进制'>进制数-1或1href='/tags/表示'>表示 href='/tags/strong'>strong>href='/tags/优点'>优点href='/tags/strong'>strong>: href='/tags/网络'>网络href='/tags/体积'>体积小,href='/tags/运算'>运算href='/tags/速度'>速度快。

低秩近似

在这里插入a a href='/tags/href'href/a='/tags/图片'图片/a描述 在href='/tags/卷积'>卷积href='/tags/神经href='/tags/网络'>网络'>神经href='/tags/网络'>网络里,以href='/tags/矩阵'>矩阵href='/tags/相乘'>相乘的href='/tags/方式'>方式进行的,href='/tags/一个'>一个复杂的href='/tags/网络'>网络,它的href='/tags/权重'>权重href='/tags/矩阵'>矩阵href='/tags/比较'>比较大,href='/tags/非常'>非常消耗href='/tags/存储'>存储计算href='/tags/资源'>资源,低秩近似就是将若干个低秩href='/tags/矩阵'>矩阵href='/tags/组合'>组合href='/tags/重构'>重构大的href='/tags/权重'>权重href='/tags/矩阵'>矩阵来href='/tags/卷积'>卷积、href='/tags/存储'>存储和计算消耗。以往href='/tags/传统'>传统的以为href='/tags/压缩'>压缩就是低秩分解或者href='/tags/剪枝'>剪枝,但是href='/tags/压缩'>压缩href='/tags/效果'>效果有待href='/tags/提升'>提升。经href='/tags/可视化'>可视化发现,href='/tags/参数'>参数href='/tags/矩阵'>矩阵具备低秩href='/tags/矩阵'>矩阵和稀疏href='/tags/矩阵'>矩阵的href='/tags/性质'>性质。该href='/tags/方法'>方法经href='/tags/实验'>实验,可以使得href='/tags/压缩'>压缩href='/tags/网络'>网络和原始href='/tags/网络'>网络的href='/tags/输出'>输出接近。

href='/tags/量化'>量化和二href='/tags/进制'>进制

在现有的href='/tags/开源'>开源href='/tags/框架'>框架里,有大量href='/tags/应用'>应用。 在这里插入a a href='/tags/href'href/a='/tags/图片'图片/a描述 href='/tags/strong'>strong>href='/tags/区别'>区别href='/tags/strong'>strong>: href='/tags/strong'>strong>第href='/tags/一个'>一个显著href='/tags/区别'>区别href='/tags/strong'>strong>: 上面是href='/tags/一个'>一个全href='/tags/精度'>精度的href='/tags/卷积'>卷积href='/tags/神经href='/tags/网络'>网络'>神经href='/tags/网络'>网络,它使用了10~href='/tags/64bit'>64bit的href='/tags/权重'>权重和href='/tags/浮点'>浮点类似的href='/tags/激活'>激活href='/tags/函数'>函数。 下面是href='/tags/一个'>一个二值的href='/tags/卷积'>卷积href='/tags/神经href='/tags/网络'>网络'>神经href='/tags/网络'>网络,它将href='/tags/权重'>权重和href='/tags/激活'>激活href='/tags/函数'>函数转为化href='/tags/二值化'>二值化,比如+1或者-1。 href='/tags/strong'>strong>另href='/tags/一个'>一个显著href='/tags/区别'>区别href='/tags/strong'>strong>: 在全href='/tags/精度'>精度href='/tags/网络'>网络中,href='/tags/输入'>输入和href='/tags/权重'>权重是href='/tags/点乘'>点乘href='/tags/操作'>操作。 href='/tags/二值化'>二值化href='/tags/神经href='/tags/网络'>网络'>神经href='/tags/网络'>网络中,是href='/tags/按位'>按位来href='/tags/异或'>异或非的。 为何这么做呢? href='/tags/strong'>strong>为了href='/tags/减少'>减少href='/tags/内存'>内存消耗和加快它的href='/tags/速度'>速度href='/tags/strong'>strong>。

href='/tags/href='/tags/深度'>深度href='/tags/学习'>学习'>href='/tags/深度'>深度href='/tags/学习'>学习href='/tags/模型'>模型href='/tags/优化'>优化href='/tags/加速'>加速href='/tags/方法'>方法

在这里插入a a href='/tags/href'href/a='/tags/图片'图片/a描述

优href='/tags/化工'>化工具与库:href='/tags/Tensor'>TensorRT(href='/tags/Nvidia'>Nvidia)

href='/tags/Tensor'>TensorRT在Phref='/tags/C端'>C端的href='/tags/部署'>部署href='/tags/应用'>应用的href='/tags/比较'>比较多。 在这里插入a a href='/tags/href'href/a='/tags/图片'图片/a描述

href='/tags/Tensor'>TensorRT是href='/tags/NVIDIA'>NVIDIAhref='/tags/开发'>开发的href='/tags/href='/tags/深度'>深度href='/tags/学习'>学习'>href='/tags/深度'>深度href='/tags/学习'>学习href='/tags/推理'>推理href='/tags/工具'>工具,只href='/tags/支持'>支持href='/tags/推理'>推理,不href='/tags/支持'>支持href='/tags/训练'>训练;目前href='/tags/tensor'>tensorRT已经href='/tags/支持'>支持href='/tags/Caffe'>Caffe、href='/tags/caffe'>caffe2\href='/tags/href='/tags/tensor'>tensorhref='/tags/flow'>flow'>href='/tags/tensor'>tensorhref='/tags/flow'>flow、href='/tags/mxnet'>mxnet、Pyhref='/tags/torch'>torch等主流href='/tags/href='/tags/深度'>深度href='/tags/学习'>学习'>href='/tags/深度'>深度href='/tags/学习'>学习库;href='/tags/Tensor'>TensorRThref='/tags/底层'>底层针对href='/tags/NVIDIA'>NVIDIAhref='/tags/显卡'>显卡做了多方面的href='/tags/优化'>优化,不仅仅是href='/tags/量化'>量化,可以和href='/tags/CUDA'>CUDA CODEC SDK结合使用;href='/tags/Tensor'>TensorRT独立href='/tags/href='/tags/深度'>深度href='/tags/学习'>学习'>href='/tags/深度'>深度href='/tags/学习'>学习href='/tags/框架'>框架,href='/tags/通过'>通过href='/tags/解析'>解析href='/tags/框架'>框架文件来href='/tags/实现'>实现,不需要额外href='/tags/安装'>安装DL库;

href='/tags/strong'>strong>href='/tags/Tensor'>TensorRThref='/tags/加速'>加速href='/tags/原理'>原理href='/tags/strong'>strong>:

href='/tags/Tensor'>TensorRThref='/tags/支持'>支持INT8和FP16的计算href='/tags/Tensor'>TensorRT对于href='/tags/网络'>网络href='/tags/结构'>结构进行了href='/tags/重构'>重构和href='/tags/优化'>优化。 消除无用href='/tags/输出'>输出层以href='/tags/减小'>减小计算;(href='/tags/解析'>解析href='/tags/网络'>网络,消除…)href='/tags/网络'>网络href='/tags/结构'>结构的href='/tags/垂直'>垂直href='/tags/整合'>整合;(href='/tags/relu'>relu-href='/tags/bias'>bias-href='/tags/conv'>convhref='/tags/整合'>整合为href='/tags/一个'>一个层CBR)href='/tags/网络'>网络的水平href='/tags/组合'>组合。(将href='/tags/输入'>输入为相同href='/tags/张量'>张量或者href='/tags/执行'>执行相同href='/tags/操作'>操作的层融合在一起)

在这里插入a a href='/tags/href'href/a='/tags/图片'图片/a描述 在这里插入a a href='/tags/href'href/a='/tags/图片'图片/a描述 第一步和第二部href='/tags/适合'>适合用于href='/tags/所有'>所有的href='/tags/网络'>网络href='/tags/架构'>架构,但最后一步,对现有的href='/tags/inception'>inceptionhref='/tags/结构'>结构href='/tags/加速'>加速最为明显。 所以想要更好的href='/tags/网络'>网络推断,可以在href='/tags/网络'>网络中加入更好的href='/tags/inception'>inceptionhref='/tags/结构'>结构,去充分发挥href='/tags/tensor'>tensorRT的href='/tags/优势'>优势。

href='/tags/改变'>改变href='/tags/网络'>网络href='/tags/结构'>结构href='/tags/设计'>设计为何会href='/tags/实现'>实现href='/tags/模型'>模型href='/tags/压缩'>压缩、href='/tags/加速'>加速

在这里插入a a href='/tags/href'href/a='/tags/图片'图片/a描述

组href='/tags/卷积'>卷积(href='/tags/Group'>Group href='/tags/conv'>convolution)

最早href='/tags/出现'>出现在Alenxt,为了href='/tags/解决'>解决单href='/tags/显卡'>显卡显存不够,将href='/tags/网络'>网络href='/tags/部署'>部署到多href='/tags/显卡'>显卡上href='/tags/训练'>训练。所以组href='/tags/卷积'>卷积是为了href='/tags/减少'>减少单个href='/tags/卷积'>卷积的href='/tags/参数'>参数。 假设href='/tags/输入'>输入href='/tags/特征'>特征的href='/tags/维度'>维度是HWc1

在这里插入a a href='/tags/href'href/a='/tags/图片'图片/a描述 在这里插入a a href='/tags/href'href/a='/tags/图片'图片/a描述 在这里插入a a href='/tags/href'href/a='/tags/图片'图片/a描述

href='/tags/深度'>深度可分离href='/tags/卷积'>卷积

在这里插入a a href='/tags/href'href/a='/tags/图片'图片/a描述 href='/tags/depth'>depthwise可以href='/tags/有效'>有效href='/tags/减少'>减少href='/tags/参数'>参数href='/tags/数量'>数量,并href='/tags/提高'>提高计算href='/tags/精度'>精度,但是由于每个featchMap只能被href='/tags/一个'>一个href='/tags/卷积'>卷积核href='/tags/卷积'>卷积,所以经过DW的href='/tags/输出'>输出,href='/tags/不能'>不能够href='/tags/包含'>包含href='/tags/所有'>所有href='/tags/特征'>特征图的href='/tags/全部'>全部href='/tags/信息'>信息,所以这些href='/tags/信息'>信息href='/tags/不能'>不能href='/tags/交流'>交流的,导致href='/tags/信息'>信息的丢失。而href='/tags/point'>pointwisehref='/tags/conv'>conv可以进行href='/tags/信息'>信息href='/tags/交流'>交流。 在这里插入a a href='/tags/href'href/a='/tags/图片'图片/a描述 在这里插入a a href='/tags/href'href/a='/tags/图片'图片/a描述 href='/tags/运算'>运算量较少。

href='/tags/href='/tags/输入'>输入href='/tags/输出'>输出'>href='/tags/输入'>输入href='/tags/输出'>输出的href='/tags/href='/tags/chan'>channel'>href='/tags/chan'>channel相同时,MAC最小。 在这里插入a a href='/tags/href'href/a='/tags/图片'图片/a描述 href='/tags/减少'>减少href='/tags/元素'>元素级href='/tags/操作'>操作 在这里插入a a href='/tags/href'href/a='/tags/图片'图片/a描述

href='/tags/href='/tags/深度'>深度href='/tags/学习'>学习'>href='/tags/深度'>深度href='/tags/学习'>学习href='/tags/移动'>移动端href='/tags/开源'>开源href='/tags/框架'>框架href='/tags/介绍'>介绍及href='/tags/部署'>部署

常用的href='/tags/轻href='/tags/量级'>量级'>轻href='/tags/量级'>量级href='/tags/网络'>网络 href='/tags/SqueezeNet'>SqueezeNet、href='/tags/Mobile'>MobileNethref='/tags/系列'>系列、href='/tags/Xception'>Xception、href='/tags/shuffle'>shuffleNethref='/tags/系列'>系列

现有href='/tags/移动'>移动端href='/tags/开源'>开源href='/tags/框架'>框架以及href='/tags/特点'>特点 在这里插入a a href='/tags/href'href/a='/tags/图片'图片/a描述

目前,href='/tags/NCNN'>NCNN、QNNPACK

QNNPACK

href='/tags/strong'>strong>3.3 QNNPACKhref='/tags/特点'>特点href='/tags/strong'>strong>

低href='/tags/密度'>密度href='/tags/卷积'>卷积href='/tags/优化'>优化href='/tags/函数'>函数库;可在href='/tags/手机'>手机上href='/tags/实时'>实时href='/tags/运行'>运行Mack href='/tags/R-CNN'>R-CNN和href='/tags/Dense'>DensePose;能在href='/tags/性能'>性能受限的href='/tags/移动'>移动href='/tags/设备'>设备中用100ms以内的href='/tags/时间'>时间href='/tags/实施'>实施href='/tags/图像'>图像href='/tags/分类'>分类;

href='/tags/strong'>strong>3.3 QNNPACKhref='/tags/如何'>如何href='/tags/压缩'>压缩href='/tags/加速'>加速href='/tags/strong'>strong> A是href='/tags/输入'>输入,B是href='/tags/权重'>权重,C是href='/tags/输出'>输出。 B href='/tags/推理'>推理href='/tags/运行'>运行期间保持href='/tags/不变'>不变,因此可以在href='/tags/没有'>没有href='/tags/运行'>运行时href='/tags/成本'>成本的情况下href='/tags/转换'>转换为任意href='/tags/内存'>内存href='/tags/布局'>布局。 在这里插入a a href='/tags/href'href/a='/tags/图片'图片/a描述 href='/tags/strong'>strong>QNNPACK使用与href='/tags/安卓'>安卓href='/tags/神经href='/tags/网络'>网络'>神经href='/tags/网络'>网络APIhref='/tags/兼容'>兼容的href='/tags/线性'>线性href='/tags/量化'>量化href='/tags/方案'>方案href='/tags/strong'>strong> 在这里插入a a href='/tags/href'href/a='/tags/图片'图片/a描述 QNNPACK使用与href='/tags/安卓'>安卓href='/tags/神经href='/tags/网络'>网络'>神经href='/tags/网络'>网络APIhref='/tags/兼容'>兼容的href='/tags/线性'>线性href='/tags/量化'>量化href='/tags/方案'>方案:href='/tags/输入'>输入href='/tags/矩阵'>矩阵来自低href='/tags/精度'>精度href='/tags/移动'>移动端用的计算href='/tags/模型'>模型,href='/tags/其他'>其他库在计算A和Bhref='/tags/相乘'>相乘的时候,会href='/tags/重新'>重新将A和Bhref='/tags/打包'>打包,为何呢?为了更好的利用href='/tags/硬件'>硬件的href='/tags/缓存'>缓存href='/tags/存储'>存储href='/tags/结构'>结构,href='/tags/希望'>希望能够在大量的计算当中去分担和href='/tags/打包'>打包开销。 QNNPACK,它删除了计算非继续的href='/tags/类型'>类型href='/tags/转换'>转换, QNNPACK对于href='/tags/面板'>面板A和B总是适应L1href='/tags/缓存'>缓存的href='/tags/移动'>移动href='/tags/神经href='/tags/网络'>网络'>神经href='/tags/网络'>网络进行了href='/tags/优化'>优化。 在这里插入a a href='/tags/href'href/a='/tags/图片'图片/a描述

将中间href='/tags/结果'>结果href='/tags/整合'>整合到归类核,, 较少了href='/tags/带宽'>带宽和href='/tags/缓存'>缓存的href='/tags/占用'>占用。

在这里插入a a href='/tags/href'href/a='/tags/图片'图片/a描述 href='/tags/高度'>高度href='/tags/优化'>优化href='/tags/矩阵'>矩阵 在这里插入a a href='/tags/href'href/a='/tags/图片'图片/a描述 当组数等于href='/tags/href='/tags/通道'>通道数'>href='/tags/通道'>通道数,该href='/tags/卷积'>卷积就是href='/tags/深度'>深度href='/tags/卷积'>卷积。

href='/tags/strong'>strong>href='/tags/如何'>如何href='/tags/选择'>选择href='/tags/适合'>适合href='/tags/自己'>自己的href='/tags/移动'>移动端href='/tags/框架'>框架?href='/tags/strong'>strong>

href='/tags/分析'>分析href='/tags/网络'>网络href='/tags/结构'>结构计算href='/tags/硬件'>硬件GPUhref='/tags/支持'>支持href='/tags/分析'>分析href='/tags/开源'>开源href='/tags/框架'>框架href='/tags/支持'>支持href='/tags/性能'>性能href='/tags/量化'>量化程度href='/tags/href='/tags/兼容'>兼容性'>href='/tags/兼容'>兼容性href='/tags/是否'>是否容易href='/tags/二次href='/tags/开发'>开发'>二次href='/tags/开发'>开发 在这里插入a a href='/tags/href'href/a='/tags/图片'图片/a描述 Tensohref='/tags/flow'>flow Lite 和MACE 在这里插入a a href='/tags/href'href/a='/tags/图片'图片/a描述 Packethref='/tags/Flow'>Flowhref='/tags/全球'>全球首个href='/tags/自动'>自动href='/tags/模型'>模型href='/tags/压缩'>压缩href='/tags/框架'>框架 在这里插入a a href='/tags/href'href/a='/tags/图片'图片/a描述href='/tags/通道'>通道href='/tags/剪枝'>剪枝(href='/tags/href='/tags/chan'>channel'>href='/tags/chan'>channel pruning)href='/tags/权重'>权重稀疏化(href='/tags/weight'>weight href='/tags/spar'>sparsification)href='/tags/权重'>权重href='/tags/量化'>量化(href='/tags/weight'>weight href='/tags/href='/tags/quant'>quantization'>href='/tags/quant'>quantization)href='/tags/网络'>网络蒸馏(href='/tags/nethref='/tags/work'>work'>nethref='/tags/work'>work href='/tags/dist'>distillation)href='/tags/多GPU'>多GPUhref='/tags/训练'>训练(muti-GPU href='/tags/href='/tags/thref='/tags/rain'>rain'>thref='/tags/rain'>raining'>href='/tags/thref='/tags/rain'>rain'>thref='/tags/rain'>raining)超href='/tags/参数'>参数href='/tags/优化'>优化(href='/tags/hyper'>hyper-href='/tags/href='/tags/param'>parameter'>href='/tags/param'>parameter href='/tags/optimization'>optimization)

href='/tags/strong'>strong>href='/tags/NCNN'>NCNNhref='/tags/strong'>strong>

href='/tags/NCNN'>NCNNhref='/tags/支持'>支持href='/tags/卷积'>卷积href='/tags/神经href='/tags/网络'>网络'>神经href='/tags/网络'>网络、多href='/tags/分支'>分支多href='/tags/输入'>输入的复杂href='/tags/网络'>网络href='/tags/结构'>结构,如vgg、href='/tags/google'>googlenet、href='/tags/resnet'>resnet、squeezhref='/tags/enet'>enet等href='/tags/NCNN'>NCNN无需href='/tags/依赖'>依赖href='/tags/任务'>任务href='/tags/第三'>第三方库href='/tags/NCNN'>NCNNhref='/tags/全部'>全部使用href='/tags/C/C++'>C/C++href='/tags/实现'>实现,以及跨href='/tags/平台'>平台的chref='/tags/make'>makehref='/tags/编译'>编译href='/tags/系统'>系统,可轻松href='/tags/移植'>移植到href='/tags/其他'>其他href='/tags/系统'>系统和href='/tags/设备'>设备上。href='/tags/汇编'>汇编级href='/tags/优化'>优化,计算href='/tags/速度'>速度急快。使用ARM Neonhref='/tags/href='/tags/指令'>指令集'>href='/tags/指令'>指令集href='/tags/实现'>实现href='/tags/卷积'>卷积层,全href='/tags/连接'>连接层,href='/tags/href='/tags/池化'>池化层'>href='/tags/池化'>池化层等大部分CNN关键层。精细的href='/tags/href='/tags/数据'>数据href='/tags/结构'>结构'>href='/tags/数据'>数据href='/tags/结构'>结构href='/tags/设计'>设计,href='/tags/没有'>没有采用需消耗大量href='/tags/内存'>内存的通常href='/tags/框架'>框架--------im2col+href='/tags/矩阵'>矩阵href='/tags/乘法'>乘法,使得href='/tags/内存'>内存href='/tags/占用'>占用极低。href='/tags/支持'>支持href='/tags/多核'>多核href='/tags/href='/tags/并行'>并行计算'>href='/tags/并行'>并行计算,href='/tags/优化'>优化CPUhref='/tags/调度'>调度。整体库href='/tags/体积'>体积小于500K,可精简到小于300K.可href='/tags/扩展'>扩展的href='/tags/模型'>模型href='/tags/设计'>设计,href='/tags/支持'>支持8bithref='/tags/量化'>量化核半href='/tags/精度'>精度href='/tags/浮点'>浮点href='/tags/存储'>存储。href='/tags/支持'>支持直接href='/tags/内存'>内存href='/tags/引用'>引用href='/tags/加载'>加载href='/tags/网络'>网络href='/tags/模型'>模型。可href='/tags/注册'>注册自href='/tags/定义'>定义层href='/tags/实现'>实现并href='/tags/扩展'>扩展。

href='/tags/strong'>strong>href='/tags/ncnn'>ncnn在href='/tags/安卓'>安卓端的href='/tags/部署'>部署href='/tags/strong'>strong> href='/tags/strong'>strong>href='/tags/选择'>选择是个的href='/tags/href='/tags/Android'>Android '>href='/tags/Android'>Android href='/tags/studio'>studiohref='/tags/版本'>版本并href='/tags/安装'>安装:href='/tags/strong'>strong>

根据href='/tags/需求'>需求href='/tags/选择'>选择NDKhref='/tags/版本'>版本并href='/tags/安装'>安装。在href='/tags/href='/tags/Android'>Android '>href='/tags/Android'>Android href='/tags/studio'>studio上配置NDK的href='/tags/环境'>环境href='/tags/变量'>变量根据href='/tags/自己'>自己需要href='/tags/编译'>编译href='/tags/NCNN'>NCNN sdk进行NDKhref='/tags/开发'>开发 1)assethref='/tags/文件夹'>文件夹下放置你的bin和href='/tags/param'>param 2)jnihref='/tags/文件夹'>文件夹下放置你的cpp和mk文件 3)修改你的app href='/tags/gradle'>gradle文件 4)配置href='/tags/href='/tags/Android'>Android.mk'>href='/tags/Android'>Android.mk和href='/tags/Application'>Application.mk文件 5)进行href='/tags/java'>javahref='/tags/接口'>接口的href='/tags/编写'>编写 6)href='/tags/读取'>读取href='/tags/拷贝'>拷贝bin和href='/tags/param'>parame文件(有些则时pb文件,根据实际情况) 7)进行href='/tags/模型'>模型的href='/tags/初始化'>初始化和href='/tags/执行'>执行href='/tags/预测'>预测等href='/tags/操作'>操作 8)href='/tags/build'>build 9)cd到src/href='/tags/main'>main/jnihref='/tags/目录'>目录下,href='/tags/执行'>执行ndk-href='/tags/build'>build,生产.so文件 10)接着就可以写href='/tags/自己'>自己的href='/tags/操作'>操作href='/tags/处理'>处理href='/tags/需求'>需求了

具体请href='/tags/查看'>查看:https://href='/tags/github'>githubhref='/tags/.com'>.com/scutan90/href='/tags/DeepLearning'>DeepLearning-500-questions/ch17_href='/tags/模型'>模型href='/tags/压缩'>压缩、href='/tags/加速'>加速及href='/tags/移动'>移动端href='/tags/模型'>模型/



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有