【深度学习】关于SRCNN的输入和输出的一些细节

研究了近一周的SRCNN论文,遇到了N多坑人的问题,这东西虽然结构特别简单,但是论文中却存在着许多细节,看了好多博客感觉其他的博主对这些细节理解的都不太准确,当然我也不敢保证我的理解十分准确,仅仅依靠原文给大家做一些细节分析,想看论文原文的点这里:SRCNN

细节一:训练时输入和输出的尺寸

【深度学习】关于SRCNN的输入和输出的一些细节_第1张图片
上面这个图是我截取的原文,从这里可以看出,在训练阶段,实际上输入的尺寸是 32 × 32 32\times32 32×32,这个是训练扩大两倍进行SR的,如果训练扩大三倍进行SR,就要用 33 × 33 33\times33 33×33这个尺寸,因为是三的倍数。这些 32 × 32 32\times32 32×32的图作者不看作块,而是看成是小图片,经过了简单的三层卷积最后的尺寸变成了 20 × 20 20\times20 20×20,这个在后面有提到。这个 32 × 32 32\times32 32×32就可以从你的LR的图片上分割出来的图片,然后最后的输出要跟你原来的HR的图片的对应的 32 × 32 32\times32 32×32的区域的中间 20 × 20 20\times20 20×20(去掉周围的Padding6)去比较,也就是HR的图片的对应的32*32的区域的中间 20 × 20 20\times20 20×20作为标签集,按原文来说是这样训练的。

细节二:训练的次数和样本数

其实不用看那个91张图,总共这样 32 × 32 32\times32 32×32的小图片一共要有24800个,然后训练的次数涉及到了 8 × 1 0 8 8\times10^8 8×108次反向传播,作者在GPU上训练了三天。这个过程可真算够慢的,所以才有后来的FSCRNN吧。由于这个缓慢的过程,训练的时候会发现到后面误差下降特别慢,所以我到现在也没训练好这鬼东西……

细节三:测试时的细节

【深度学习】关于SRCNN的输入和输出的一些细节_第2张图片
很多人不太知道这个测试时的输入的尺寸到底是多大,实际上测试时输入的尺寸是任意的!!!注意看原文中我截取的这部分的第五行的arbitrary这个词(这里疏忽忘记画 横线了),这个词是任意的意思!也就是说在小图片的训练集上训练好了以后,最后这个网络就可以给任意大小的图片进行SR。注意前两行还在说训练集的事情,避免边界的影响,训练时网络并没有加padding,最后输出是20*20,可是测试集就不一样了!注意看“All the convolutional neural are given sufficient zeor-padding during testing.”这句,zero-padding 可不是不加边界的意思,而是要加零边界,具体加多少可以根据公式计算下,这个反正要加到最后的效果就是测试的时候网络的输入的尺寸和输出的尺寸要相同!
当然后面还提到要把数据进行归一化,但我觉得不归一化好像也没啥。

细节四:学习率的细节

注意上面我截取的原文的最后一段是有关学习率的设置,总的来说就是最后一层的学习率要比前几层小一个数量级!

细节五:色彩空间的细节

还有个比较坑的地方就是原文说这个东西是拿YCrCb色彩空间上的Y通道作为训练集进行训练的,最后比较的应该不只是这一个通道,所以不知道是不是因为这一点,我拿灰度图训练的效果一直都不好……
最后,不知道为啥,总感觉这个东西没有想象的那么强大……

你可能感兴趣的:(深度学习)