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

本文深入探讨了深度卷积的概念及其在FALSR算法中的应用,对比了深度卷积与普通卷积在处理96通道特征图时的不同,通过实例展示了两者在速度与效果上的差异。实验结果显示,虽然WDSR算法在图像平滑度上略胜一筹,但FALSR算法在超分辨率重建任务中展现出更快的速度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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<d;i++)
	{
			vl_nnconv(&st,&dt,&t1 ,1,1,1,1,1,1);

			st.data+=wh;
			dt.data+=wh;

			t1.权重_数据+=w2;


	}
	//*/
	vl_nnrelu(&di);
}

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

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

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

谁速度更快?

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

小图

FALSR

WDSR

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

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

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

下载:

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

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

https://download.youkuaiyun.com/download/juebai123/11171422

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值