BinaryDenseNet
简介
- ICCVF-2019
- 二值化神经网络结构设计
- 论文地址:BinaryDenseNet: Developing an Architecture for Binary Neural Networks
本文工作
- 研究针对二值化神经网络的优化结构设计
- 设计了BinaryDenseNet
- 进行了多种二值化神经网络的代码实现并且开源
Related Work
本文将加速神经网络训练推理的方法总结为三种:
- 轻量化网络结构设计(AlexNet,MobileNet,ShuffleNet);
- 量化神经网络权重的同时保持实值激活(BC,BWN,TTQ);
- 同时量化神经网络权重和激活(DoReFa-Net,BNN,XNOR-Net)。
下图是论文中对这些方法的对比:
本文方法
ResNetE
之前的很多二值化神经网络结构采用了ResNet的shortcut(下图(a)),但是并没有采用bottleneck结构(下图(b))。
Bi-Real方法采用了每个Conv都进行shortcut连接的方法,称为ResNetE(Extra shortcut,下图(c)),另外Bi-Real方法还采用可全精度的下采样层。
保留全精度层
本文指出,如果对没有shortcut连接的层进行二值化,那么会造成不可恢复的信息丢失。所以本文方法保持网络结构的
(1)第一个卷积层,
(2)最后一个全连接层,
(3)下采样层;
为全精度,不对这些层进行二值化。
在CIFAR-10数据集上进行了实验,利用ResNet-18网络,保留下采样层为全精度。结果准确率提升0.4%-1.1%,但是同时模型大小从1.39MB增加到了2.03MB。
在ImageNet上进行测试,准确率提升2.2%-2.6%,模型大小从3.36MB增加到了4.0MB。
放缩系数
对于权重和激活都进行二值化的神经网络,存在两个放缩系数,分别是权重和激活的放缩系数。如下公式:
本文指出,在添加BatchNorm操作之后,是否采用这些放缩系数,对于量化误差影响不大,但是后续的实验结果表明,这样的结果仅针对pretrain的模型有效,如下图:
BinaryDenseNet
二值化神经网络结构设计准则
- 二值化神经网络结构的设计理念应该基于最大程度保留信息。
- 紧凑的网络结构可能对于二值化神经网络不好,因为紧凑的神经网络结构是为了减少冗余而二值化神经网络希望可以增加信息的传递。
- Bottleneck结构应该尽量避免,bottleneck结构先减少通道再增加通道,在二值化神经网络中可能会带来不可逆的信息损失。
- 应当对下采样层保持全精度。
- Shortcut结构可以保留信息,对二值化神经网络友好。
- 应当增加网络宽度(通道数)。
BinaryDenseNet
- 本文采用了DenseNet类型的shortcut连接,即将之前层的feature map concat到新的feature map上(图(b)(c))。
- 更改block之间的连接的操作顺序为:Maxpool–ReLU–1x1Conv(图(d)(e))
文章出处登录后可见!
已经登录?立即刷新