ESPCN一種實時的圖像超分辨率方法
轉:https://blog.csdn.net/zuolunqiang/article/details/52401802
整理了下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
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISO3QzMyITN1ETMwkDM2EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
應用網絡: ESPCN_mat.prototxt
網絡訓練
-
樣本準備
從91張訓練圖檔中提取圖像塊作為樣本并寫入hdf5檔案。使用generate_espcn_train.m & generate_espcn_test.m 根據自己的網絡參數設定更改settings,運作得到espcn_train.h5 & espcn_test.h5兩個檔案。
-
開始訓練
運作start.bat開始訓練。
-
恢複訓練
編輯restore.bat中–snapshot= ?.solverstate後的檔案名,運作restore.bat該次疊代狀态中恢複訓練。
應用
本項目中sr_demo.m實作了使用caffe的matlab接口來實作圖檔超分辨率。
基本流程如下:
caffe matlab接口的使用可以參考http://christopher5106.github.io/deep/learning/2015/09/04/Deep-learning-tutorial-on-Caffe-Technology.html
效果
其他
draw_psnr.m: 繪制指定測試圖像的PSNR随疊代次數變化的曲線
注:本項目中訓練得到的網絡不可直接使用opencv或者使用c++接口來做應用,因為matlab中圖像是列序優先,而opencv或c++中通常為行序優先,直接應用會得到一個效果比較差的結果。