C++实现超分辨率 RDN--密集残差块总成

本文详细介绍了密集残差块总成函数的实现过程,该函数用于处理图像超分辨率,通过密集残差块增强特征表达,涉及卷积层、连接池等操作,最后通过卷积操作融合特征。

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

现在来实现

<密集残差块总成>  这个函数:

对照下图灰框部分

void 密集残差块总成(RDN模型 & sr,卷积层 & s_di)//从s_di 传入并返回
{
	int wid=s_di.width;
	int hei=s_di.height;
	int wh= wid*hei;
	int whd=wh*s_di.depth;


	//连接池
	卷积层 总连接池(wid,hei,320); //用于5个密集残差块输出总成
	总连接池.data=new float[wh * 320 ]; 

	卷积层 连接池(wid,hei,256); //用于单个密集残差块内部
	连接池.data=new float[wh * 256 ]; 
	密集残差块 * 密集残差块0=sr.块;
	cout<<sr.密集残差块数量<<"个密集残差块... "<<endl;

	卷积层 cat目标(wid , hei , 64);//也用于复制
	cat目标.data=总连接池.data;//指向头,后面向后移

	卷积层 复制用(wid , hei , 64);//也用于复制
	//复制用.data=总连接池.data;

	for (int k = 0;k<sr.密集残差块数量;k++)
	{
		cout<<"\r"<<k;
		if(k==0)
		{
			卷积层复制(&s_di,&cat目标);//准备输入数据(第一个)
		}
		else
		{
			复制用.data=cat目标.data-whd;//上一个结果即当前输入
			卷积层复制(&复制用,&cat目标);//准备输入数据
		}
		

		密集残差块前传(*密集残差块0,cat目标,连接池);

			

		cat目标.data+=whd;//到下一位置


		密集残差块0++;//到下密集残差块
	}
	cout<<endl;

	卷积层 目标(wid,hei,s_di.depth);
	目标.data=连接池.data; //暂用

	int pad=sr.conv3->核宽/2;
	vl_nnconv(&总连接池,&目标,sr.conv3 ,1,1,pad,pad,pad,pad);


	pad=sr.conv4->核宽/2;
	vl_nnconv(&目标,&s_di,sr.conv4 ,1,1,pad,pad,pad,pad);

	del卷积层(连接池);

	del卷积层(总连接池);
}

 <密集残差块前传> 函数参看ESRGAN一文。

RND这部分就结束了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值