mmlab项目里面代码复用性和解耦性比较高,代码调用方便,但是有的地方可读性不是很好。关于他的网络结构arch其实一般都还好,比较清晰简单。就是关于 数据加载和数据处理、还有这个loss 的计算和优化过程,一般进去看麻烦一些。主要是在这个restore里面看这些宏观上的东西。
这里讲下 盲超分和非盲超分 在数据处理过程的不同:
1 你如果会看数据处理地方的配置文件的话,就很清晰,也不用你自己debug进去一个一个看:
比如 在basicvsr:
这里截取的一部分训练数据集的处理代码:你看从文件夹中加载,盲超分就是只加载出一个gt
而非盲超分就是两个都加载。。还有通道格式也介绍的挺详细的
train_pipeline = [ dict( type='LoadImageFromFileList', io_backend='disk', key='lq', channel_order='rgb'), dict( type='LoadImageFromFileList', io_backend='disk', key='gt', channel_order='rgb'),
real-basicvsr里面的就是:
dict( type='LoadImageFromFileList', io_backend='disk', key='gt', channel_order='rgb'),
然后实际代码中的数据处理地方都在这个runner 我觉得这是一个训练容器一样的。