BASIC BINARY CONVOLUTION UNIT FOR BINARIZEDIMAGE RESTORATION NETWORK

Published as a conference paper at ICLR 2023

1. 作者做了什么?

由于我的毕设是基于BNN的轻量图像复原,所以想找一些基于BNN的工作,前些年的工作主要是基于BNN在做图像分类,在底层视觉领域做的并不多。

  • 作者对网络的BN等部分进行了测试,分析出了其在底层视觉任务的中的作用。

  • 这篇文章提出了一个新的卷积单元BBCU,利用这个卷积单元替代了传统神经网络的一些部分,从而将BNN应用在图像超分、去噪、去模糊等领域,取得了比一些全精度方法更快,效果更好的结果。

这篇文章是字节跳动发的,我感慨一下,对于这种我能想到有落地意义的研究,企业的洞察力还是强,而且动作很快,相当于给出了这个方向的一个 baseline 。

老师希望我开题能提出如何改进,可是我对这个领域感觉太模糊了,提不出切实可行的改进方案,这就是论文粗读带来的弊端,好像了解了,但什么也不知道,所以还是得多精度一些文章,了解了细节才能有想法。

2. 摘要翻译

轻量并且快速的图像复原(IR)模型对于资源受限的设备来说至关重要。二值神经网络(BNN)是最有前途的模型压缩方法之一,可以显著减少完全精度卷积神经网络的(CNN)计算量和参数。但是,BNN和全精度CNN之间存在不同的特性,我们几乎无法使用设计CNN的开发经验来开发BNN。

在这项研究中,我们重新考虑了二值卷积中的各个组件,如残差连接、BatchNorm、激活函数和结构,用于IR任务。我们进行了系统性分析,以解释每个组件在二值卷积中的作用,并讨论了可能遇到的问题。具体来说,**我们发现残差连接可以减少二值化引起的信息损失;BatchNorm可以解决残差连接和二值卷积之间的数值范围差距;激活函数的位置对BNN的性能有显著影响。**根据我们的发现和分析,我们设计了一个简单但高效的基本二值卷积单元(BBCU)。

此外,我们将IR网络分为四个部分,为每个部分特别设计了BBCU的变体,以探索对这些部分进行二值化的好处。我们在不同的IR任务上进行了实验,结果表明我们的BBCU明显优于其他BNN和轻量级模型,这表明BBCU可以作为二值化IR网络的基本单元。

3. CONCLUSION

这项研究致力于探索BNN在低级任务上的性能,并寻找通用且高效的基本二值卷积单元。通过对现有元素进行分解和分析,我们提出了BBCU,这是一个简单而有效的基本二值卷积单元,具有高效性能,优于现有的最新技术。此外,我们将IR网络分为四个部分,并特别为它们开发了BBCU的变体,以探索二值化的好处。总的来说,BBCU提供了对BNN的深刻分析,并可以作为未来二值化IR网络的强大基本二值卷积单元,这对学术研究和产业都具有重要意义。

看到这里,人家已经把工作做的这么好了,BNN做图像复原的效果已经比全精度网路的 StoA 好了,那我还能干什么?

问了学长和江奎老师,学长说,这个共组之前肯定还有用BNN做low-level任务的,再找找。江奎老师说,论文肯定会把自己最好的成果展示出来,你要有自己的思考,去发掘这个方法的缺点,对比其与全精度模型相比有哪些劣势。

听完老师和学长的提示,我有了如下思考:

首先再精读一下论文,BNN有了那么多精度损失,怎么可能一下就在low-level领域比全精度网络的StoA都好了,这么说所有的全精度网络不用做了,都改用BNN吧。我猜测:

  1. 作者可能只是对比了一些比较老的方法,而且对比的方式可能也不全面,一定哪里存在着弊端。
  2. 可能牺牲了一些空间和时间,并没有全面二值化。
  3. 前两天听zjx说,有人的论文结果展示很好,但是code的细节中,做了类似去除一些效果差的验证图片等操作,换来了效果的提升。(当然我相信字节这样的企业若面向落地的话,没必要这么做。)

4. INTRODUCTION

目前基于CNN的图像复原取得了很好的效果,但是CNN需要复杂的运算和足够存储空间来运行。目前一些手持设备和无人机等设备上没有搭载GPU和足够的内存来存储和运行计算代价昂贵的CNN模型。因此,如何保留模型的性能的同时显著降低其计算和内存消耗变得至关重要。

BNN理论上可以实现32倍的内存节省和64倍的计算量降低。但是目前BNN的研究主要集中在一些high-level的任务上,尤其是分类等,但是类似图像去噪这种low-level的视觉任务缺乏探索。基于此,作者认为我们迫切需要研究BNN在low-level上的性质,并且提供了一个简单、普适、可扩展的baseline可用于之后研究和部署。

作者列出了一些SR方向的基于BNN的工作:

  • Efficient Super Resolution Using Binaried Neural Network(2019):二值化了卷积核权重,但是没有二值化激活项。
  • Binaried Neural Network for Single Image Super Resolution(2020):其中提出了一种bit accumulation mechanism (BAM)的方法来近似全精度卷积。
  • Training Binary Neural Network without Batch Normalization for lmage Super-Resolution(2021):进一步引入了知识蒸馏来提高二值SR网络的效果。

作者认为上述方法没能充分利用BNN的潜力。作者研究了BNN中的关键部分:residual connection,BatchNorm(BN),activation function。并且基于这些研究的分析提出了 basic binary Conv unit(BBCU)。

(1)residual connection:对binary convoluntion(BC)添加全精度的 residual connection,可以减少二值化带来的信息损失。

(2)BN:2020的基于BNN的分类方法总是在BC卷积模块前使用BN。EDSR(2017)中证明了BN模块对于SR的性能是有害的。但是本文作者发现BN对基于BNN的SR是有用的,可以平衡residual connection和BC模块输出值的范围。

可以看出(b)中,没有经过BN模块,大致范围是(-1, 1)和(-15,15),

而(a)中,BC的输出结果,经过BN模块后输出的值的范围与residual connection分布范围更接近。

(3)如图©为了去除BN模块,作者提出了一个residual alignment(RA)方案。通过将输入图像乘以一个扩展因子k来减小,它与BC输出值的范围差异。这种将范围放大的方法,比使用BN将值的范围限制在一个小区间内效果更好。

(4)对比图©和(d)可以看出,在residual connection之后进行激活,会导致负数值范围变窄,所以改进的BBCU-V4将激活函数放在了residual connection操作之前。

(5)作者将IR网络分解为4个部分:head, body, upsampling和tail,如下图(a)。先前的工作仅仅二值化body部分。但是upsampling部分占据了52.3%的计算量,所以对除body之外的3个部分的二值化也很重要。作者为了二值化这四个部分,分别设计了不同了的BBCU变体,如下图(b)。

作者的贡献可以归为如下三类:

  • 作者可视化了BNN的一些重要元素以探索他们的作用。
  • 作者为IR网络开发出一个简单,强大,普适且可扩展的BBCU。此外,作者针对IR网络的各个部分分别设计了BBCU变体。
  • 在不同IR任务上,BBCU展示了比其他基于BNN的SOTA方法更好的效果。

5. METHOD

对于二值卷积,权重和激活二值化为 -1 和 +1。使用 XNOR 和 bit counting 操作替代复杂的浮点操作:

XjbWjb=bitcount(XNOR(Xjb,Wjb)),xi,jb=Sign(xi,jf)={+1, if xi,jf>αi,j1, if xi,jfαi,j,xi,jfXjf,xi,jbXjb,i[0,C),\begin{gathered} \mathcal{X}_{\mathbf{j}}^{\mathbf{b}} \otimes \mathcal{W}_{\mathbf{j}}^{\mathbf{b}}=\operatorname{bitcount}\left(\operatorname{XNOR}\left(\mathcal{X}_{\mathbf{j}}^{\mathbf{b}}, \mathcal{W}_{\mathbf{j}}^{\mathbf{b}}\right)\right), \\ x_{i, j}^b=\operatorname{Sign}\left(x_{i, j}^f\right)=\left\{\begin{array}{l} +1, \text { if } x_{i, j}^f>\alpha_{i, j} \\ -1, \text { if } x_{i, j}^f \leq \alpha_{i, j} \end{array}, x_{i, j}^f \in \mathcal{X}_j^f, x_{i, j}^b \in \mathcal{X}_j^b, i \in[0, C),\right. \end{gathered}

wi,jb=Wjf1nSign(wi,jf)={+Wjf1n, if wi,jf>0Wjf1n, if wi,jf0,wi,jfWjf,wi,jbWjb,i[0,C)w_{i, j}^b=\frac{\left\|\mathcal{W}_{\mathbf{j}}^{\mathbf{f}}\right\|_1}{n} \operatorname{Sign}\left(w_{i, j}^f\right)=\left\{\begin{array}{l} +\frac{\left\|\mathcal{W}_{\mathbf{j}}^{\mathbf{f}}\right\|_1}{n}, \text { if } w_{i, j}^f>0 \\ -\frac{\left\|\mathcal{W}_{\mathbf{j}}^{\mathrm{f}}\right\|_1}{n}, \text { if } w_{i, j}^f \leq 0 \end{array}, w_{i, j}^f \in \mathcal{W}_{\mathbf{j}}^{\mathbf{f}}, w_{i, j}^b \in \mathcal{W}_{\mathbf{j}}^{\mathbf{b}}, i \in[0, C)\right.

where XjfRC×H×W\mathcal{X}_{\mathbf{j}}^{\mathbf{f}} \in \mathbb{R}^{C \times H \times W} and WjfRCout×Cin×Kh×Kw\mathcal{W}_{\mathbf{j}}^{\mathbf{f}} \in \mathbb{R}^{C_{o u t} \times C_{i n} \times K_h \times K_w} are full-precision activations and convolution weights in jj-th layer, respectively. Similarly, XjbRC×H×W\mathcal{X}_{\mathbf{j}}^{\mathbf{b}} \in \mathbb{R}^{C \times H \times W} and WjbRCout ×Cin ×Kh×Kw\mathcal{W}_{\mathbf{j}}^{\mathbf{b}} \in \mathbb{R}^{C_{\text {out }} \times C_{\text {in }} \times K_h \times K_w} are binarized activations and convolution weights in jj-th layer separately. xi,jf,wi,jf,xi,jbx_{i, j}^f, w_{i, j}^f, x_{i, j}^b, and wi,jbw_{i, j}^b are the elements of ii-th channel of Xjf,Wjf,Xjb\mathcal{X}_{\mathbf{j}}^{\mathbf{f}}, \mathcal{W}_{\mathbf{j}}^{\mathbf{f}}, \mathcal{X}_{\mathbf{j}}^{\mathbf{b}}, and Wjb\mathcal{W}_{\mathbf{j}}^{\mathbf{b}} respectively. αi,j\alpha_{i, j} is the learnable coefficient controlling the threshold of sign function for ii-th channel of Xjf\mathcal{X}_{\mathbf{j}}^{\mathbf{f}}. It is notable that the weight binarization method is inherited from XONR-Net (Rastegari et al., 2016), of which Wjf1n\frac{\left\|\mathcal{W}_j^f\right\|_1}{n} is the average of absolute weight values and acts as a scaling factor to minimize the difference between binary and full-precision convolution weights.

RPReLU的定义如下:

f(yi,j)={yi,jγi,j+ζi,j, if yi,j>γi,jβi,j(yi,jγi,j)+ζi,j, if yi,jγi,j,yi,jYj,i[0,C)f\left(y_{i, j}\right)=\left\{\begin{array}{l} y_{i, j}-\gamma_{i, j}+\zeta_{i, j}, \text { if } y_{i, j}>\gamma_{i, j} \\ \beta_{i, j}\left(y_{i, j}-\gamma_{i, j}\right)+\zeta_{i, j}, \text { if } y_{i, j} \leq \gamma_{i, j} \end{array}, y_{i, j} \in \mathcal{Y}_j, i \in[0, C)\right.

BBCU-V1的表达式如下: