您的位置:首页 > 理论基础 > 计算机网络

VGG网络中测试时为什么全链接层改成卷积层

2018-03-27 11:49 826 查看
首先需要理解的是改fc层为conv层实际上的计算方式没有发生任何变化。但是其结果全卷积网络可以接收任意大小的图片输入,得到一个score map,对其做一个average就可以得到最终结果(one-hot label)。之所以需要这样设计,因为他们train与test的图片大小是不一样的。
    卷积层和全连接层的唯一区别在于卷积层的神经元对输入是局部连接的,并且同一个通道(channel)内不同神经元共享权值(weights). 卷积层和全连接层都是进行了一个点乘操作, 它们的函数形式相同. 因此卷积层可以转化为对应的全连接层, 全连接层也可以转化为对应的卷积层.    比如VGGNet[1]中, 第一个全连接层的输入是7*7*512, 输出是4096. 这可以用一个卷积核大小7*7, 步长(stride)为1, 没有填补(padding), 输出通道数4096的卷积层等效表示, 其输出为1*1*4096, 和全连接层等价. 后续的全连接层可以用1x1卷积等效替代.     简而言之, 全连接层转化为卷积层的规则是: 将卷积核大小设置为输入的空间大小.这样做的好处在于卷   积层对输入大小没有限制, 因此可以高效地对测试图像做滑动窗式的预测.     比如训练时对224*224大小的图像得到7*7*512的特征, 而对于384*384大小的测试图像, 将得到12*12*512的特征, 通过后面3个从全连接层等效过来的卷积层, 输出大小是6*6*1000, 这表示了测试图像在36个空间位置上的各类分数向量. 和分别对测试图像的36个位置使用原始的CNN相比, 由于等效的CNN共享了大量计算, 这种方案十分高效而又达到了相同目的.全连接层和卷积层的等效表示最早是由[2]提出. [2]将卷积层中的线性核改成由一系列的全连接层组成的小神经网络, 用于在每个卷积层提取更复杂的特征. 在实现时, NIN是由一个传统卷积层后面加一系列1*1卷积得到的。
[3]论证了用卷积层替代全连接层的好处, 下图黄色部分是多出来的计算量, 和将一个网络运用在测试图像的多个位置相比, 这种方法十分高效.


由于卷积层可以处理任意大小输入, 非常适合检测, 分割等任务, 比如[4]提出全卷积网络用于进行语义分割.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息