XNOR-Net: ImageNet Classification Using Binary Convolutional Neural Networks 论文笔记

该论文提出了二值权重网络和XNOR网络,以近似标准卷积神经网络。二值权重网络通过二值表示权重,节省32倍存储空间。XNOR网络进一步对输入也进行二值化,实现58倍的计算速度提升和32倍内存节省。实验表明,XNOR网络在CPU上可实时运行,且在ImageNet分类任务上保持与全精度网络相当的准确性,优于其他二值化方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0 摘要

    我们针对标准卷积神经网络提出了两种有效的近似网络:二元权重网络和XNOR网络。二元权重网络中,卷积核用两个值来近似表示,从而节省32倍的存储空间。在XNOR网络中,卷积核和卷积层输入都是用两个值(1和-1)表示的。 XNOR网络主要使用二元运算进行卷积运算。这使得卷积操作速度提高了58倍,节省了32倍的内存。 XNOR网络实现了在CPU(而不是GPU)上实时运行最先进网络的可能。我们的二元权值网络简单,准确,高效,并且能够处理具有挑战性的视觉任务。我们在ImageNet分类任务上评估我们的方法。 AlexNet二元权值版本的分类准确性与全精度AlexNet相同。我们将我们的方法与最近的网络二值化方法BinaryConnect和BinaryNets进行比较,并且在ImageNet上以大幅优势胜过这些方法,超过了top-1 16%的精度。

1 引言

    深度神经网络在计算机视觉领域,语音识别领域都显示了很好的性能。在计算机视觉领域,最出名的是卷积神经网络。AlexNet,VGG,GoogLeNet,ResNet用于物体分类;RCNN,Fast RCNN,Faster RCNN用于物体检测。
    卷积神经网络在物体识别和检测领域展现了其可靠的性能,已经被用于现实世界的应用中。同时,虚拟现实(VR),增强现实(AR )以及智能可穿戴设备等方面也正在发生有趣的进步。将这两件作品结合在一起,我们认为现在是在智能便携设备上安装最先进识别系统的最佳时机。 但是,基于CNN的识别系统需要大量的内存和计算资源。 虽然它们在基于GPU的机器上运行良好,但它们通常不适用于手机和嵌入式电子设备等较小的设备。
    例如,AlexNet具有61M参数(249MB内存)并且需要执行1.5B高精度操作来分类一个图像。 对于更深的CNN,这些数字甚至更高,例如VGG(参见第4.1节)。 存储这些参数很快就会超过手机等小型设备的有限内存容量,电池电量和计算能力。
    在本文中,我们介绍一种简单,高效,准确的网络来近似卷积神经网络。近似的方法是通过对卷积神经网络中的权值,甚至中间层的表达,进行二值化。 我们的二值化方法旨在使用二元运算找到卷积的最佳近似值。我们证明,我们对神经网络进行二值化的方式在ImageNet分类的准确度与标准全精度网络一致,但是需要的内存更少和浮点运算也更少。
    我们研究两个近似网络:具有二元权重的网络和XNOR网络。 在二元权重网络中,所有权重值都用两个值近似。 与全精度权重的网络相比,二元权重网络更小(大约压缩了32倍)。另外,当权重值都用两个值近似时,卷积可以仅通过加法和减法来计算(无乘法),从而加快运算速度(大约提高2倍)。 将大型CNN进行二值化近似可以适用于小型便携式设备,同时保持相同的准确性(请参阅第4.1节和第4.2节)。
    更进一步,我们提出了XNOR网络,其中卷积层、全连接层的权重以及网络的输入都进行二值化。 二值化的权重和二值化的输入可以有效地实现卷积运算。如果卷积运算的所有操作数都是二值(1和-1)的,那么可以通过XNOR(异或非门)和位计数操作来估计卷积。XNOR-Nets可以精确地近似CNN,同时在CPU中提高58倍计算速度。 这意味着,XNOR-Nets可以在内存小和无GPU的设备中实现实时前向计算(XNOR-Net中的前向计算可以在CPU上非常高效地完成)。
    本文是第一次尝试在像ImageNet这样的大规模数据集上对二值神经网络进行评估。 我们的实验结果表明,我们提出的卷积神经网络二值化方法在ImageNet挑战ILSVRC2012中的top-1图像分类方面优于Binarynet方法,并且有大幅度的提高(16.3%)。 我们的贡献有两方面:
首先,我们介绍了卷积神经网络中权值二值化的方法,并展示了我们的解决方案与最先进的解决方案相比的优势。
其次,我们引入XNOR-Nets,一种具有二值权重和二值输入的深度神经网络模型,并且实验表明XNOR-Nets可以获得与全精度网络相似的分类准确性,但是更高效。

2 相关工作

    深度神经网络往往参数过多,会造成参数冗余。这会导致内存和计算资源的浪费。已有一些方法来解决这个问题,使得训练和前向计算更有效。
Shallow Networks浅层网络: 用更浅的网络来表示训练好的网络。很多时候,神经网络会存在冗余的参数和层数,这个方法通过使用更浅的网络,达到相同的效果,减少参数加快计算。
Compressing pre-trained networks压缩训练好的模型: Deep Compression就是这样的方法。通过对模型参数进行剪枝,量化,哈夫曼编码等技巧,能够压缩模型。
Designing compact layers设计更简洁层: Residual layers就是一种压缩的手段。
Quantizing parameters量化参数: 目前浮点数通常使用32bit表示,量化可以用更少的位数来表示参数,但是会损失一定精度。
Network binarization网络二值化: 二值化是将网络完全使用+1, -1来表示,这样就可以用1bit来表示网络。Binary Weight Network 和XNOR-Net都是二值化的网络。网络二值化后,卷积可以表示为简单的加法减法,且可以大大减小计算时间。

3 二值化卷积网络

    图1简单列出了二值化的两种网络和标准的卷积网络的差别。
这里写图片描述

3.1 Binary-Weight-Networks

    Binary-weights的目的是将权重W的值都用二值表示,也就是W的值要么是-1,要么是1。这个替代过程贯穿整个forward和backward过程,但是在更新参数时候还是采用原来的权重W,主要是因为梯度的量级通常很小,直接对B进行更新时,求导后值为0,造成梯度消失;而且更新参数需要的精度比较高。

    一个卷积层的操作可以用 IW I ∗ W 表示, I I 表示输入,维度是 c × w i n × h i n W W 表示卷积核(或者叫权重),维度是 c × w × h 。那么当我用二值卷积核 B B 以及一个尺度参数 α 代替原来的卷积核 W W (即, W α B ),那么就可以得到下面这个式子: IW(IB)α I ∗ W ≈ ( I ⨁ B ) α

    其中, 表示没有乘法的卷积计算; α α 默认是个正数, α α B B 是相对的,因为如果 α B B 都取相反数的话,二者相乘的结果不变。前面的 B W W 表示某一层的卷积操作的写法,因为每一层卷积都包含多个卷积核,因此如果具体到某一层的某个卷积操作,则可以用下面这个式子表示: W l k A l k B l k 。其中, α=Alk α = A l k ;下标 lk l k 表示第 l l 层的第 k 个卷积核。

    既然我们希望用一个尺度参数 α α 和二值矩阵 B B 来代替原来的权重 W ,那么肯定希望前者能尽可能等于后者,于是就有了下面的优化目标函数,也就是希望下面这个式子中的 J J 越小越好,这种情况下的 α B B 就是我们需要的。另外这里将矩阵 W B B 变换成向量,也就是 W B B 的维度是 1 × n ,这里 n=c×w

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值