论文笔记:ReNet: A Recurrent Neural Network Based Alternative to Convolutional Networks

1 摘要

本文提出一个叫ReNet的深度神经网络结构用于目标识别,该网络使用RNN代替了大部分的卷积+池化操作部分,通过使用RNN单元对图像块进行横向扫描、垂直扫描得到两个特征图再进行拼接。该网络在MNIST、CIFAR-10、SVHN数据集均有较好的表现。

2 亮点

2.1 使用RNN处理图像

作者认为使用池化层+卷积层会使得图像的信息丢失严重。因此作者使用RNN来避免池化操作。RNN一般是用于处理序列数据,如:语音识别、机器翻译等,RNN的结构图如下:
在这里插入图片描述
可以看到左边的RNN可以展开成右边,每个时刻的RNN都与当前和之前的有关。有关RNN更详细的资料可以参考:

RNN—从入门到放弃

而如果是处理图像,一般使用的是多维RNN,就是RNN有很多层。这样会使得计算量变得很大。而作者提出的RNN处理方式,不同于一般处理图片的RNN是使用多维RNN处理的。所以作者打算每次只处理图像的一行或者一列,使用BRNN处理(BRNN详细资料戳这!),BRNN就是双向的RNN。将图片划分成IxJ块,每块大小为 w p w_p × h p h_p ,每一块先使用一个RNN单元处理(将块矩阵展开处理),进行横向的双向扫描,由于RNN是擅长处理序列信息,每一个块就是一个时间点,依次输送到RNN单元中,得到一个特征图。再进行竖向的双向扫描得到另一个特征图,然后将这两个特征图进行拼接。如下图:
在这里插入图片描述
进行双向扫描时,其计算处理如下,由于每一排图像块是双向处理, f V F W D f_{VFWD} f V R E V f_{VREV} 分别是两个方向的处理。 f V R E V f_{VREV} 函数代表一个RNN处理单元, p i , j p_{i,j} 为每个块像素, z i , j 1 F z^{F}_{i,j-1} 是上一个RNN的处理结果占一定的比例与这次的输入进行处理。另一个方向的函数意思也是同理,只是 z i , j + 1 F z^{F}_{i,j+1} 代表的是未来的一个RNN单元占一定比例和当前的图像块进行处理。
在这里插入图片描述

2.2 ReNet总体结构

在总体中,肯定需要多层RNN处理特征图,越深度的RNN处理得到的特征图更加连续和光滑,也就是融合更多的全局信息。如下图:
在这里插入图片描述
先对32x32的图像分成16x16个2x2的图像块进行垂直RNN扫描得到16x16的特征图,再分成16x16个1x1的图像块进行水平RNN扫描得到16x16的特征图。将特征图分成8x8个2x2的图像块进行垂直RNN扫描,得到8x8的特征图…到最后得到512x4x4的特征图再进行一次水平扫描得到全连接层,最后接一个sortmax分类。这就是完整的一个使用RNN处理的图像分类模型。其中双向RNN扫描代替了CNN+池化层。可以说ReNet的每一层可以看做是卷积+池化的一个变种。

3 效果

在这里插入图片描述
这是在三个数据集上的表现效果,可见此种方法表现不错,能达到一些CNN处理的效果。

4 结论

本文相对来说较简单,提出双向RNN替代CNN+池化层,并取得不错的效果,此外,还可以使用更多其它类型的RNN处理,如:LSTM、GRU等等。使用RNN处理图像算是比较新的思路,对后面的图像分割有一些的启发。

5 参考资料

(1)ReNet: A Recurrent Neural Network Based Alternative to Convolutional Networks
(2)【论文】ReNet: A Recurrent Neural Network Based Alternative to Convolutional Networks
(3)RNN—从入门到放弃
(4)BRNN详细资料戳这!

发布了24 篇原创文章 · 获赞 27 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/gyyu32g/article/details/104423351