天天看點

ESPCN網絡結構和應用

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

ESPCN網絡結構和應用

應用網絡: ESPCN_mat.prototxt

ESPCN網絡結構和應用

網絡訓練

  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接口來實作圖檔超分辨率。

基本流程如下:

ESPCN網絡結構和應用

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

效果

ESPCN網絡結構和應用
ESPCN網絡結構和應用
ESPCN網絡結構和應用

其他

draw_psnr.m: 繪制指定測試圖像的PSNR随疊代次數變化的曲線

ESPCN網絡結構和應用

注:本項目中訓練得到的網絡不可直接使用opencv或者使用c++接口來做應用,因為matlab中圖像是列序優先,而opencv或c++中通常為行序優先,直接應用會得到一個效果比較差的結果。

繼續閱讀