顶会文章复现
在超分辨率领域有多个具有里程碑意义的模型,如最早的SRCNN、使用残差连接的VDSR和EDSR。在基于注意力机制的方法中,也有RCAN、SAN等具有代表性的模型。由于以上这些模型发表较早,且发表于顶会,大多数都有开源的代码供读者学习参考借鉴。
在学术界流行的深度学习框架是PyTorch,因此很多模型都有对应的PyTorch版本的代码。然而为求框架的稳定性以及代码的延续和传承,至今仍有许多代码所使用的PyTorch版本为0.4.0或0.4.1,这对于使用安培架构及更新架构的GPU来说,都是不能兼容的。因此,在Github等网站上有其他人提供的非官方的基于1.x版本PyTorch的代码,也有的论文作者会及时更新代码,如EDSR模型已兼容1.2版本的PyTorch,能够正常的运行在CUDA 11.x的GPU上。
对于延续EDSR代码框架的其他网络模型而言,可以把没有提供1.x版本代码的网络模型复制到EDSR代码中,即可完成对该模型的复现(注意一下option的设置)。然而在复现时也会出现一些代码上的bug,这一部分的问题可以在Github上各官方提供的代码的issue里,以及其他网站,如CSDN、知乎等得到解答。
成熟的代码框架
以基于注意力机制的超分辨率网络为例,其中很多模型所使用的代码框架都是近似的,如VDSR、EDSR、RCAN、SAN等模型均使用了同样的代码框架,所有的代码中最大的不同是在网络设计部分,其余的部分基本保持一致。这种代码框架的传承可以给后续的研究者带来方便,即只需要设计自己的网络代码,而无需考虑额外的外围代码。并且这个框架在保留足够自定义参数的功能外,已较为成熟——能够自定义训练集、验证集和测试集,也能自定义各种参数和超参数,训练、测试时也能做到可视化。
正如上文所说的,EDSR模型能够兼容CUDA 11.x版本的GPU。那么可以直接在此代码的基础上,新增自己的网络模型代码,即可完成整个网络代码的编写。由于使用的版本较新,不会出现部分兼容性的问题,但在训练时也会碰到一些代码上的bug,,解决方法同上文,但如果是基于完成上述复现的代码框架则不会出现这些问题。
参考代码(Github平台)
[2] VDSR
[3] EDSR
[4] RCAN
[5] SAN
[6] HAN
[7] PAN
[8] A²N