C++实现超分辨 FALSR(2)之深度卷积

FALSR中除了用到4分组卷积外,也有2分组卷积,这个只要把前面的 4 换成 2 就可以了。

这里说一说“深度卷积“,就是说每个深度通道只用一个卷积核。

比如:

96通道特征图 应用 3x3核 输出 96通道图

普通卷积层 需要 96X96 个核

深度卷积层 只要       96 个核

实现:

void 深度卷积(卷积层 & si,卷积层 & di,层数据 * 层)//DepthwiseConv2dNative
{
	int wid=si.width;
	int hei=si.height;
	int wh=wid*hei;
	int d=si.depth;

	if(层->输入维度 !=si.depth || 层->输出维度 !=1)
		cout<<"出错了,深度卷积!!!\n";
	if(层->输出维度 *层->输入维度 != di.depth || di.width != wid || di.height != hei)
		Resize卷积层(di,wid,hei,层->输出维度 *层->输入维度);


	//*
	层数据 t1;
	t1.权重长度=层->权重长度/d;
	t1.权重_数据=层->权重_数据;
	t1.偏移长度=1;
	t1.偏移_数据=层->偏移_数据;
	t1.核宽=层->核宽;
	t1.输入维度=层->输入维度/d;
	t1.输出维度=1;

	int w2=t1.核宽*t1.核宽;

		
	卷积层 st(wid,hei);
	st.data=si.data;

	卷积层 dt(wid,hei);
	dt.data=di.data;
	for(int i=0;i

一句话,就是 一个通道用一个核。

深度卷积:96个通道 需要 96 次 矩阵乘法(小矩阵)。

普通卷积:96个通道 只需   1 次 矩阵乘法(大矩阵)。

谁速度更快?

这里和前面的WDSRx2比一比效果和速度:

C++实现超分辨 FALSR(2)之深度卷积_第1张图片小图

C++实现超分辨 FALSR(2)之深度卷积_第2张图片FALSR

C++实现超分辨 FALSR(2)之深度卷积_第3张图片WDSR

看上去WDSR 更光顺一点,FALSR稍粗糙点。

速度 WDSR 16.1 秒 ,FALSR 9.6 秒,差不多快一倍。

当然,这个是基础模型,还有参数更多,效果更好的,速度也应该慢点吧。

下载:

快速超分辨率重建 FALSR(2倍)win程序

快速超分辨率重建 FALSR(2倍)win程序 ,由《FALSR-master》中的 FALSR-C.pb 模型改编而来

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

 

 

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