ECBSR
介绍
ECBSR(Edge-oriented Convolution Block for Real-time Super Resolution)是一种针对移动设备设计的轻量级超分辨率网络。它的核心是一种可重参数化的构建模块,称为边缘导向卷积块(ECB),这种模块在训练阶段通过多个路径提取特征,包括普通的3x3卷积、通道扩展-压缩卷积以及一阶和二阶空间导数。在推理阶段,这些操作可以合并成一个单一的3x3卷积,从而提高推理速度。
ECBSR的设计目标是在保持高效运行的同时提升图像的超分辨率效果。它通过优化计算结构,减少了运算负担,确保了在低功耗处理器上的流畅执行。ECBSR特别适合处理移动设备上的资源限制问题,同时保证了超分辨率处理的质量。
在实际应用中,ECBSR能够实现在移动设备上的实时超分辨率处理,例如在即时通讯软件的图像增强、直播应用中的画质升级、智能手机的相机增强插件等场景中。它能够在不增加过多计算成本的前提下,显著改善用户体验。
ECBSR的模型结构包括多个ECB模块,这些模块可以通过重参数化技术等价转换为一个普通的3x3卷积模块,适用于移动端、嵌入式等严格限制算力的场景。模型只支持单通道图像处理,如果是RGB图像,需要将图像从RGB颜色空间转换为YCbCr格式并只提取Y通道部分输入给模型处理。
在性能方面,ECBSR在不同的硬件平台上展现了出色的推理速度。例如,在骁龙865 DSP上,ECBSR-M4C8模型在进行1080p分辨率的图像超分辨率处理时,推理时间仅需10ms,而相比之下,传统的SRCNN和ESPCN模型则需要1583ms和26ms。这表明ECBSR在保证图像质量的同时,大幅度提高了处理速度。
相关资源
- 论文:Edge-oriented Convolution Block for Real-time Super Resolution on Mobile Devices(也可以从这里下载论文)
- GitHub地址:https://github.com/xindongzhang/ECBSR
Windows环境训练步骤
-
下载源码:
git clone https://github.com/xindongzhang/ECBSR.git
-
在本机上激活PyTorch的虚拟环境:
conda activate deeplearning
,前提条件是本机已经搭建过PyTorch的开发环境,关于Windows平台搭建教程可以参考:Windows11搭建GPU版本PyTorch环境详细过程
-
cd
到项目中,根据README.md安装依赖命令:pip install -r requirements.txt
-
下载数据集DIV2K 和 benchmark到本地,DIV2K有7.1G大小,benchmark有239M大小。【也可以根据自己的需求自己制作数据集】
-
更改configs文件夹中配置文件的数据集的路径,改成上面步骤下载好的训练数据集路径。
-
根据README.md,进行训令命令:
python train.py --config ./configs/ecbsr_x2_m4c8_prelu.yml
-
报错缺少库,利用pip进行安装:imageio、scikit-image、pytorch_msssim
-
开始训练,加载数据集,原本的float64精度直接提示内存不够了,于是在div2k.py和benchmark.py中将数据集的精度改成float32的精度,本机24G内存也差一点跑满了。
- 根据README.md中建议,再将 batch-size改小一点,改成16,进行训练。
- 开始训练,【太耗内存了😂,得换电脑,笔记本还是不行😂】