C++实现超分辨率重建 EDSR

WDSR是NTIRE2018(图像恢复和增强新趋势)的现实赛道(有噪声图片)第一名,双三次上是第七名。

本来也想测试下效果,但模型在drive.google.com上下不了(PyTorch,以及keras),下了一个Tensorflow的pb模型,用Tensorflow或者OpenCV都没有打开。

先试试 EDSR 吧,这个是是NTIRE2017的第一名(哪个赛道?)。

先导出x4倍模型 edsr_baseline_x4-6b446fab.pt(《EDSR-PyTorch-master》程序自动下载的)。

流程图:

C++实现超分辨率重建 EDSR_第1张图片

模型定义:

struct EDSR模型
{
    //头
	层数据 * 输入层;

	//主体
	int 残差块数量;//16块
	残差块 * 块;
	层数据 * 残差输出层;

	//放大层
	层数据 * 放大1前层;
	层数据 * 放大2前层;

    //尾
	层数据 * 输出层;

	
	//构造函数
	EDSR模型();

};

主函数:

void EDSR(char * savefilename,EDSR模型 & sr)
{

//		
	int wid=bmp.width;
	int hei=bmp.height;
		cout<<"输入图像宽度:"<
	层数据 * 层;

	//两个卷积层 交替前传(源,目标)
			
	//用这个传回
	卷积层 * di=(卷积层 *)malloc(sizeof(卷积层));
		di->width=1;
		di->height=1;
		di->depth=1;
		di->data=new float[1 ]; 

	卷积层 *源,*目标;
	源 = &rgb;
	
	目标 = di;

	int pad;

		

	//定义一个宏
	//用于各个层
	#define 卷积前传(ConvX,步长)/* 上采样、下采样 */ \
	\
	层=sr.ConvX;/* Conv2 层 */ \
	if(层->输出维度 != 目标->depth || 目标->width != wid || 目标->height != hei)\
		Resize卷积层(*目标,wid,hei,层->输出维度);\
	pad=层->核宽/2;\
	vl_nnconv(源,目标,层 ,步长,步长,pad,pad,pad,pad);\
	/*vl_Norm(目标);*/\
	/*vl_nnrelu(目标);激励函数不用*/\
\
	std::swap (源,目标);\


	cout<<"输入层..."<depth);
	备份.data=new float[wid * hei * 源->depth ];
	//总备份
	卷积层复制(源,&备份);
	    

	//第二部分  16残差层
	卷积层 convfea5(wid,hei,源->depth);
	convfea5.data=new float[wid * hei * 源->depth ]; 

	卷积层 *源备份=&convfea5;


	if(源->depth != 目标->depth || 目标->width != wid || 目标->height != hei)
		Resize卷积层(*目标,wid,hei,源->depth);

	残差块 * 残差块0=sr.块;
	cout<卷积层;

						
		vl_nnconv(源,目标,层 ,1,1,1,1,1,1);
						
		vl_nnrelu(目标);
				

		层++;
		vl_nnconv(目标,源,层 ,1,1,1,1,1,1);

		//输入加上残差
		卷积层相加(源备份,源);


		残差块0++;//到下残差块
	}
	cout<输出维度 != 目标->depth || 目标->width != wid || 目标->height != hei)
		Resize卷积层(*目标,wid,hei,层->输出维度);
	pad=层->核宽/2;
	vl_nnconv(源,目标,层 ,1,1,pad,pad,pad,pad);
	del卷积层(*源);

						
	
	


	cout<<"图像转换成jpg格式... "<

效果:

输入 小图

C++实现超分辨率重建 EDSR_第2张图片EDSR 4倍

C++实现超分辨率重建 EDSR_第3张图片DBPN 4倍(可到《C++实现自适应风格迁移(adaptive-style-transfer-master)》一文开头处下载)

C++实现超分辨率重建 EDSR_第4张图片ESRGAN 4倍

EDSR 稍差一点,但速度快得太多了。

不知WDSR 效果咋样?

下载:

win32超分辩重建EDSR实用程序

超分辨率重建EDSR(4倍)的win32程序,使用edsr中的基础模型edsr_baseline_x4-6b446fab.pt

https://download.csdn.net/download/juebai123/11088815

 

 

你可能感兴趣的:(超分辨率重建,超分辨重建,EDSR,C++)