super-resolution技术日记——ESPCN

ESPCN一种实时的图像超分辨率方法


整理了下ESPCN

https://github.com/66wangxuewen99/Super-Resolution/tree/master/ESPCN

ESPCN 是在2016年在CVPR上发表的一片论文

Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network

中提出的一种实时的基于卷积神经网络的图像超分辨率方法。


本项目使用caffe+matlab实现了ESPCN的训练以及应用过程,提供了样本一些如PSNR曲线绘制的工具。

网络结构

训练网络: ESPCN_net.prototxt
super-resolution技术日记——ESPCN_第1张图片
应用网络: ESPCN_mat.prototxt
super-resolution技术日记——ESPCN_第2张图片

网络训练

  1. 样本准备
    从91张训练图片中提取图像块作为样本并写入hdf5文件。使用generate_espcn_train.m & generate_espcn_test.m 根据自己的网络参数设定更改settings,运行得到espcn_train.h5 & espcn_test.h5两个文件。
  2. 开始训练
    运行start.bat开始训练。
  3. 恢复训练
    编辑restore.bat中–snapshot= ?.solverstate后的文件名,运行restore.bat该次迭代状态中恢复训练。

应用

本项目中sr_demo.m实现了使用caffe的matlab接口来实现图片超分辨率。
基本流程如下:
super-resolution技术日记——ESPCN_第3张图片

caffe matlab接口的使用可以参考http://christopher5106.github.io/deep/learning/2015/09/04/Deep-learning-tutorial-on-Caffe-Technology.html

效果

super-resolution技术日记——ESPCN_第4张图片

super-resolution技术日记——ESPCN_第5张图片

super-resolution技术日记——ESPCN_第6张图片

其他

draw_psnr.m: 绘制指定测试图像的PSNR随迭代次数变化的曲线

super-resolution技术日记——ESPCN_第7张图片

注:本项目中训练得到的网络不可直接使用opencv或者使用c++接口来做应用,因为matlab中图像是列序优先,而opencv或c++中通常为行序优先,直接应用会得到一个效果比较差的结果。

你可能感兴趣的:(super-resolution技术日记——ESPCN)