<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[JachinMa的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/JachinMa</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; JachinMa]]></copyright><item><title><![CDATA[Adaptive Loss-aware Quantization for Multi-bit Networks]]></title><link>https://blog.youkuaiyun.com/JachinMa/article/details/106740085</link><guid>https://blog.youkuaiyun.com/JachinMa/article/details/106740085</guid><author>JachinMa</author><pubDate>Sat, 13 Jun 2020 23:37:11 +0800</pubDate><description><![CDATA[本文提出了一种通过减小量化误差来获得更好量化效果的自适应MBN(Multi-bit Networks)方法。
MBN方法，简单来说，是基于这样一个观察：网络中各层对量化粒度的敏感程度是不同的。那么假设我们给予的总的bit数不变的基础上，分别给对量化更敏感的层更多的bit数，较不敏感的层更少的bit数，从而达到更好的精度。
本文在这个思想上做出了改进：首先它优化的目标不是网络的损失，而是引入的量化误差，它的好处在于可以更好地修改赋予各层的bit数。其次它引入了剪枝方法，依次剪掉一些不必要的参数，从而可以减少分]]></description><category></category></item><item><title><![CDATA[使用openvino的python接口对分类网络进行量化]]></title><link>https://blog.youkuaiyun.com/JachinMa/article/details/106532059</link><guid>https://blog.youkuaiyun.com/JachinMa/article/details/106532059</guid><author>JachinMa</author><pubDate>Wed, 03 Jun 2020 23:38:45 +0800</pubDate><description><![CDATA[单个cpu推断
#!/usr/bin/env python
"""
 Copyright (C) 2018-2020 Intel Corporation

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

     ]]></description><category></category></item><item><title><![CDATA[DL workbench上手总结]]></title><link>https://blog.youkuaiyun.com/JachinMa/article/details/106531182</link><guid>https://blog.youkuaiyun.com/JachinMa/article/details/106531182</guid><author>JachinMa</author><pubDate>Wed, 03 Jun 2020 20:09:39 +0800</pubDate><description><![CDATA[DL workbench是openvino推出的一个win平台上的量化工具。它提供了大量的各个框架的模型，但也支持自己导入模型。它支持的模型框架有IR、ONNX、MXNet、Caffe、TensorFlow,但只支持著名的网络层，其它自定义层要自己手动写。
大概的操作流程见
https://blog.youkuaiyun.com/sandmangu/article/details/103581882
讲得比较详细了。
几个要注意的点是，安装好docker desktop后，如果不能很好地访问外网，最好在setting那]]></description><category></category></item><item><title><![CDATA[如何巧妙地安装keras?]]></title><link>https://blog.youkuaiyun.com/JachinMa/article/details/106524614</link><guid>https://blog.youkuaiyun.com/JachinMa/article/details/106524614</guid><author>JachinMa</author><pubDate>Wed, 03 Jun 2020 15:05:14 +0800</pubDate><description><![CDATA[step1: 安装tensorflow
step2: from tensorflow import keras
研究了下，原来keras已经集成到tensorflow里了，而且试了下，tf1和tf2里都可以导入，就是不知道接口是不是有变化。
安一送一还蛮实惠的。

]]></description><category></category></item><item><title><![CDATA[如何优雅地安装caffe2？]]></title><link>https://blog.youkuaiyun.com/JachinMa/article/details/106524300</link><guid>https://blog.youkuaiyun.com/JachinMa/article/details/106524300</guid><author>JachinMa</author><pubDate>Wed, 03 Jun 2020 14:53:51 +0800</pubDate><description><![CDATA[step1: 安装pytorch
step2: import caffe2
研究了一会，发现caffe2已经集成到pytorch里了，所以你只要安装pytorch就可以了。
买一送一还蛮划算的。

]]></description><category></category></item><item><title><![CDATA[int8量化的resnet50在ImageNet数据集上的推断结果]]></title><link>https://blog.youkuaiyun.com/JachinMa/article/details/106505953</link><guid>https://blog.youkuaiyun.com/JachinMa/article/details/106505953</guid><author>JachinMa</author><pubDate>Tue, 02 Jun 2020 22:48:51 +0800</pubDate><description><![CDATA[将resnet50除全连接层外的所有层均量化为8bit。
结果如图：

这是使用1个cpu核心的结果。

这是使用3个cpu核心的结果。
作为对比，这是全精度模型的结果。

1个cpu核心

3个cpu核心
从结果对比可以看出，量化模型的fps较全精度模型提升了1.x倍，而平均延迟则分别减少了30%和50%。
将转换后的IR模型在Ubuntu上使用cpu做了推断，fps结果和DL Workbench一致，延迟因为不会测试就没有测。
除此之外，量化模型和全精度网络的推断结果还有两个很大比较大的差别：量化模型的]]></description><category></category></item><item><title><![CDATA[使用openvino加速resnet50在VOC2007上的推断结果]]></title><link>https://blog.youkuaiyun.com/JachinMa/article/details/106483862</link><guid>https://blog.youkuaiyun.com/JachinMa/article/details/106483862</guid><author>JachinMa</author><pubDate>Mon, 01 Jun 2020 23:15:46 +0800</pubDate><description><![CDATA[平台是win10，cpu是Intel® Core™ i5-8300H CPU @ 2.30GHz(一共4核，在这里分配了最多3核做推断)，工具是openvino的DL Workbench。
下图的点从左至右的batch_size依次为1、16、32、48和64。

这是cpu核数为1时的推断结果图。
可以看出，随着batch_size的增加，延迟和fps均增加，直到在某个值后，fps不再增加，仅延迟增加。我们知道，推断的延迟和fps是一组矛盾的数据：在给定cpu时，低延迟往往意味着低fps(因为要尽量快地对]]></description><category></category></item><item><title><![CDATA[error: [Errno 13] Permission denied: /anaconda3/envs/py/lib/python3.6/site-packages/easy-install.pth]]></title><link>https://blog.youkuaiyun.com/JachinMa/article/details/106062210</link><guid>https://blog.youkuaiyun.com/JachinMa/article/details/106062210</guid><author>JachinMa</author><pubDate>Mon, 11 May 2020 20:46:32 +0800</pubDate><description><![CDATA[执行python setup.py install时遇到该错误，解决方法很简单：
改成sudo python3 setup.py install

]]></description><category></category></item><item><title><![CDATA[LSQ+: Improving low-bit quantization through learnable offsets and better initialization]]></title><link>https://blog.youkuaiyun.com/JachinMa/article/details/105975948</link><guid>https://blog.youkuaiyun.com/JachinMa/article/details/105975948</guid><author>JachinMa</author><pubDate>Thu, 07 May 2020 17:33:09 +0800</pubDate><description><![CDATA[本文是对lsq：Learned Step-size Quantization的改进。
关于lsq，这篇文章讲得很清楚：
https://blog.youkuaiyun.com/nature553863/article/details/104275477
简单来说，就是通过学习来确定量化间隔。
在lsq提出时，当时流行的激活函数是ReLU。它的特点是，将小于0的激活值都置为0，因此lsq在量化激活值时使用非对称...]]></description><category></category></item><item><title><![CDATA[STATIC QUANTIZATION WITH EAGER MODE IN PYTORCH]]></title><link>https://blog.youkuaiyun.com/JachinMa/article/details/104933635</link><guid>https://blog.youkuaiyun.com/JachinMa/article/details/104933635</guid><author>JachinMa</author><pubDate>Tue, 17 Mar 2020 22:46:04 +0800</pubDate><description><![CDATA[关于pytorch的量化，可以看https://blog.youkuaiyun.com/zlgahu/article/details/104662203/
import numpy as np
import torch
import torch.nn as nn
import torchvision
from torch.utils.data import DataLoader
import torchvis...]]></description><category></category></item><item><title><![CDATA[Object Detection in 20 Years: A Survey]]></title><link>https://blog.youkuaiyun.com/JachinMa/article/details/104748629</link><guid>https://blog.youkuaiyun.com/JachinMa/article/details/104748629</guid><author>JachinMa</author><pubDate>Mon, 09 Mar 2020 12:12:58 +0800</pubDate><description><![CDATA[本文回顾了目标检测20年来的发展。
目标检测的任务简单来说就是，what objects are where。它可以被分为两个大的研究领域：通用目标检测和检测应用。前者是模拟人类视觉，来对看到的所有物体进行分类和定位；后者则是做专门的应用，如行人检测、安全帽检测、口罩检测和文本检测等。
在时间尺度上，2014年是一个分界线。在此之前，深度学习还未普及，没有有效地提取特征的方法，研究人员们只能使用各...]]></description><category></category></item><item><title><![CDATA[LQ-Nets: Learned Quantization for Highly Accurate and Compact Deep Neural Networks]]></title><link>https://blog.youkuaiyun.com/JachinMa/article/details/104620969</link><guid>https://blog.youkuaiyun.com/JachinMa/article/details/104620969</guid><author>JachinMa</author><pubDate>Mon, 02 Mar 2020 22:12:02 +0800</pubDate><description><![CDATA[本文提出了一种通过学习来获得合适的量化间隔的方法。
本文的思路很简单，作者将uniform量化视作几个量化level的线性叠加：

左边是量化level，右边是线性叠加系数，它的取值范围为0或1。
于是作者提出类似的结构：

v是一个浮点数，e是线性叠加系数，它的取值范围为-1或1。
其优化目标为：

训练方法是分别固定B和v中的一个进行训练，这也是同时训练的参数过多时常常采用的一种方法。
我觉得...]]></description><category></category></item><item><title><![CDATA[Value-aware Quantization for Training and Inference of Neural Networks]]></title><link>https://blog.youkuaiyun.com/JachinMa/article/details/104602449</link><guid>https://blog.youkuaiyun.com/JachinMa/article/details/104602449</guid><author>JachinMa</author><pubDate>Sun, 01 Mar 2020 23:10:30 +0800</pubDate><description><![CDATA[本文提出了一种量化部分小的激活值及新的量化网络的反向传播的方法。
和权重熵量化方法的观察一致，作者发现大的激活值对精度的影响很大，且出现频率更低。于是作者提出了将1-3%最大的激活值保持原样，只量化剩余部分的激活值。
另外，作者在反向传播时，在计算每一层的梯度时，将激活值的数值类型转换为全精度。这样做的好处是，每次只需要存储一层激活值的全精度值，就减少了对存储的要求。
随后作者解释了，为什么量化激...]]></description><category></category></item><item><title><![CDATA[Quantization Mimic: Towards Very Tiny CNN for Object Detection]]></title><link>https://blog.youkuaiyun.com/JachinMa/article/details/104560013</link><guid>https://blog.youkuaiyun.com/JachinMa/article/details/104560013</guid><author>JachinMa</author><pubDate>Fri, 28 Feb 2020 19:04:34 +0800</pubDate><description><![CDATA[本文提出了一种使用量化后的教师网络进行知识蒸馏来得到性能较好的用于目标检测的学生量化网络。
其框架如下：

首先训练一个全精度的大型网络，然后在训练阶段对其和学生网络的特征图同时进行量化。用L2损失来定义两个网络的差距。

...]]></description><category></category></item><item><title><![CDATA[Towards Accurate Binary Convolutional Neural Network]]></title><link>https://blog.youkuaiyun.com/JachinMa/article/details/104542639</link><guid>https://blog.youkuaiyun.com/JachinMa/article/details/104542639</guid><author>JachinMa</author><pubDate>Thu, 27 Feb 2020 21:06:27 +0800</pubDate><description><![CDATA[本文提出了一种使用多个二进制网络的线性组合来拟合复杂网络的方法，它是首个在ImageNet上效果接近全精度网络的二进制网络。
其优化目标如下：

w是全精度权重，B为量化权重，α为每个二进制网络的系数：

为了能使反向传播正常进行，设定下式：


ui的取值区间是[-std(W),std(W)]。
前向和反向传播的过程如下：

整体框架如下：

左边每个框框是一个近似的全精度网络，其中每一个都是一...]]></description><category></category></item><item><title><![CDATA[Explicit Loss-Error-Aware Quantization]]></title><link>https://blog.youkuaiyun.com/JachinMa/article/details/104521401</link><guid>https://blog.youkuaiyun.com/JachinMa/article/details/104521401</guid><author>JachinMa</author><pubDate>Wed, 26 Feb 2020 20:05:21 +0800</pubDate><description><![CDATA[本文提出了使用全精度网络而非量化网络的误差更新权重的方法，以及对INQ的改进。
一般的量化网络，在训练时都会使用量化网络或混合网络(部分网络被量化)的误差来更新权重。本文则另辟蹊径，使用全精度网络的误差来更新权重。不仅取得了较好的结果，还避免了梯度的不匹配问题。
其损失函数为：

第一项是全精度网络的误差，第二项是全精度网络和量化网络的差异，第三项是量化权重和全精度权重的期望差。a1和a2是两个正...]]></description><category></category></item><item><title><![CDATA[Learning to Quantize Deep Networks by Optimizing Quantization Intervals with Task Loss]]></title><link>https://blog.youkuaiyun.com/JachinMa/article/details/104500090</link><guid>https://blog.youkuaiyun.com/JachinMa/article/details/104500090</guid><author>JachinMa</author><pubDate>Tue, 25 Feb 2020 17:42:46 +0800</pubDate><description><![CDATA[本文提出了一种可学习的量化间隔(Quantization Interval Learning,QIL)方法。
它的思路类似TSQ，都是分两步进行量化，但与TSQ不同，它在每一步里都同时对权重和激活值进行处理。
第一步是一个Transformer：其思路与DoReFa-Net类似，将权重变换到[-1,1]，将激活值变换到[0,1]。
其框架如下：

权重和激活值的变换公式分别为：




这里Cw和...]]></description><category></category></item><item><title><![CDATA[Learning Accurate Low-Bit Deep Neural Networks with Stochastic Quantization]]></title><link>https://blog.youkuaiyun.com/JachinMa/article/details/104482431</link><guid>https://blog.youkuaiyun.com/JachinMa/article/details/104482431</guid><author>JachinMa</author><pubDate>Mon, 24 Feb 2020 18:57:59 +0800</pubDate><description><![CDATA[本文提出了一种使用随机算法量化网络的方法。
它的思路类似INQ，都是将权重划分为被量化的和全精度部分，然后逐次增加量化的比例，直到百分百。不同之处在于量化权重的选取：INQ是按照从大到小的顺序进行量化，而本文则根据量化误差的大小选取：

这里Wi是某通道权重的全精度值，Qi是其量化后的值。作者定义一个函数：
作者依据该函数提出了四种量化方案：
1：量化概率为1/m，m为权重的通道数。
2：线性函数...]]></description><category></category></item><item><title><![CDATA[Quantization Networks]]></title><link>https://blog.youkuaiyun.com/JachinMa/article/details/104466135</link><guid>https://blog.youkuaiyun.com/JachinMa/article/details/104466135</guid><author>JachinMa</author><pubDate>Sun, 23 Feb 2020 20:17:14 +0800</pubDate><description><![CDATA[本文的创新点是，提出了了一种新的计算量化网络梯度的方法。
在对网络进行量化处理时，一个很常见的问题是，量化函数几乎不可导，因此很难通过反向传播来更新参数。为了解决这个问题，人们提出了种种近似方法。但这些近似方法终究和量化函数有所区别，因此就会导致梯度的不匹配问题。
于是本文提出了一种新的量化函数：

(这里A是一个单位阶跃函数，β是所有输入值的放缩尺度，x是要被量化的权重或激活值，bi和si是阶跃...]]></description><category></category></item><item><title><![CDATA[HAQ: Hardware-Aware Automated Quantization with Mixed Precision]]></title><link>https://blog.youkuaiyun.com/JachinMa/article/details/104451728</link><guid>https://blog.youkuaiyun.com/JachinMa/article/details/104451728</guid><author>JachinMa</author><pubDate>Sat, 22 Feb 2020 22:49:22 +0800</pubDate><description><![CDATA[本文的创新点为：
作者认为，在不同的平台上，以及不同的layer上，合适的量化bit数都是不同的。但是如果想认为找到这个最优值是不可能的，于是作者使用强化学习的方法来找到最合理的量化bit数。
本来芯片是不支持混合精度的计算的，但随着硬件的发展，支持混合机精度计算的芯片也出现了：比如苹果的A12，NVIDIA的图灵GPU框架等，从而使得这种思路得以实现。
它的优点是完全自动化，不需要专家知识和启发...]]></description><category></category></item></channel></rss>