C++实现自适应风格迁移(adaptive-style-transfer-master)

由于 "DBPNLL" 和 "DBPN" 并没有多大区别,只有中间部分多加了3层,以及前后加了正则化和去正则化,实现也是差不多,就不多写了。这里只提供一个下载(效果可见后面的一些文章中):

超分辩重建 D-DBPN(4倍)的win32程序

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

----------------------------------------分隔线--------------------------------------------------------------------------

还是回到风格迁移,下了《adaptive-style-transfer-master》包,以及编码器 、解码器模型(pretrained_vgg19_encoder_model.npz,pretrained_vgg19_decoder_model.npz)。

按提示,再下一个TensorLayer包,开始调试。该代码应该不是在TensorFlow1.0中写的,修改了部分代码,重新从《EDSR-tensorflow-master》中找了一个和1.0对应的TensorLayer包,就可以运行了。

该流程非常清晰:

1。输入内容风格图像
2。将 RGB 切换到 BGR
3。预处理图像
4。编码图像
# 我们应该在恢复模型之前初始全局变量
5。将编码的图像传递给 AdaIN
6。将目标特征解码回图像
7。去处理图像
8。将 BGR 切换回 RGB
9。剪辑到 0..255
10。成品

这和《AdaIN-style-master》的最简流程基本相同:

再导出训练数据到文本文件。在这里找到了一个前面改编中的错误,所以这里就不详细讲了,到前面文章中改改就好了。

主函数:

int main(int argc, char *argv[])
{

	char jpgname[256];
	if( argc == 2 )
		strcpy_s(jpgname, argv[1]);
	else		
		strcpy_s(jpgname, "chicago.jpg");yuqi

	//载入图片
	//缩放至 512x512 的图像 (VGG19 分类 224x224)
	Resizeloadjpg(jpgname);//也可以原始大小,但不能太小,不然池化后...,太大费时.



	clock_t start_t, end_t;//计算时间
	double total_t;
 
	start_t = clock();

	编码器 encoder;
	// 加载 CNN 模型参数
	//loadModel2(&encoder);
    //saveModel2进制(&encoder);
	loadModel2进制(&encoder);

	//从t7模型文件加载数据
	//loadt7Model(&encoder);

   

   //取得特征层  (图像由全局变量jpg输入)
	卷积层 * content=vgg(encoder);

	卷积层 content_copy(content->width,content->height,content->depth);
	content_copy.data=new float[content_copy.width*content_copy.height*content_copy.depth];
	卷积层复制(content,&content_copy);

	//载入风格图
	Resizeloadjpg(Style_Name);
	卷积层 * style=vgg(encoder);

	AdaIN(*content,* style);

	float alpha=0.5f;
	风格控制(content_copy,*content,alpha);

	解码器 decoder;	
	


	//loadModel(&decoder);//文本载入
	//saveModel2进制(&decoder);//二进制保存

	loadModel2进制(&decoder);//二进制载入

		

	//生成风格图
	Decoding("Adain-style", decoder,content);//保存输出风格名称,解码器参数,输入

   end_t = clock();
   total_t = (double)(end_t - start_t) / CLOCKS_PER_SEC;

   cout<<"已经完成"<<endl;
   cout<<"总用时:"<<total_t<<" 秒"<<endl;

    system("pause");

	return 0;
}

效果:

再来一张:

该《adaptive-style-transfer-master》程序实现了《AdaIN-style-master》中的decoder-content-similar.t7(解码器内容相似)部分。

结束。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值