C++运行快速风格转换(10个)模型

本文介绍如何利用预训练的神经网络模型实现艺术风格的图像转换。通过《fast-neural-style-master》项目的十个模型,如instance_norm和eccv16系列,可以将普通照片转化为不同艺术风格的图像。文章详细解释了模型的选择和应用流程,并提供了实例演示。

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

前面我们已经能从Torch中直接读出网络训练好的参数,

这里就用《fast-neural-style-master》的它的十个模型来做一个实用程序吧。

模型分两种:

instance_norm
 http://cs.stanford.edu/people/jcjohns/fast-neural-style/models//instance_norm/candy.t7 
 http://cs.stanford.edu/people/jcjohns/fast-neural-style/models//instance_norm/la_muse.t7 
 http://cs.stanford.edu/people/jcjohns/fast-neural-style/models//instance_norm/mosaic.t7 
 http://cs.stanford.edu/people/jcjohns/fast-neural-style/models//instance_norm/feathers.t7 
 http://cs.stanford.edu/people/jcjohns/fast-neural-style/models//instance_norm/the_scream.t7 
 http://cs.stanford.edu/people/jcjohns/fast-neural-style/models//instance_norm/udnie.t7 

eccv16
 http://cs.stanford.edu/people/jcjohns/fast-neural-style/models//eccv16/the_wave.t7 
 http://cs.stanford.edu/people/jcjohns/fast-neural-style/models//eccv16/starry_night.t7 
 http://cs.stanford.edu/people/jcjohns/fast-neural-style/models//eccv16/la_muse.t7 
 http://cs.stanford.edu/people/jcjohns/fast-neural-style/models//eccv16/composition_vii.t7 

instance_norm 这种归一化用 :

nn.InstanceNormalization
nn.SpatialBatchNormalization

并且 ,使用维度 3->16->32->64->32->16->3 ,速度稍快一点

 

eccv16 归一化只用:

nn.SpatialBatchNormalization

使用维度 3->32->64->128->64->32->3,体积稍大一点。

 

定义基本和前面《fast-neural-style-tensorflow-master》相同,这里就不重复了

这里只讲模型选择部分流程:

1。先在程序文件夹中检测有哪几个t7文件。

2。显示名称

3。按数字1,2--9,0选一种风格

4。运行得到一种风格

选择一种风格:

//在程序目录中找t7模型 
//并由使用者选择一个
string loadModelName()
{
	const char *torch_model_name[] = {"mosaic.t7","candy.t7","la_muse.t7","the_scream.t7","feathers.t7","udnie.t7",//instance_norm 6个
		"the_wave.t7","starry_night.t7","la_muse_eccv16.t7","composition_vii.t7", //eccv16 4个
		NULL};
	const char *cn_name[] = {"镶嵌玻璃", "糖果","毕加索。缪斯","呐喊","树叶","少女乌迪妮",
		"神奈川冲浪里","星空","缪斯-2","组合七", NULL};
	// 文件指针
	FILE *tf;
	int n[10]={0};//指向哪个名称
	int num=0;//10中存在几个
	

	
	for (int i = 0; torch_model_name[i]; i++)
	{
		//检查文件是否存在
		//if(fopen_s(&tf,torch_model_name[i], "rb")==0) 
		tf= openfile(torch_model_name[i], "rb");//在程序目录或当前目录中打开文件
		if(tf!=NULL)
		{
			n[num++]=i;
			fclose(tf);
		}

	}
	//选择模型
	for (int i = 0; i<num; i++)
	{
		cout<<i+1<<":"<<cn_name[n[i]]<<endl;
	}
	cout<<"请按一个数字,选择转换风格"<<endl;

	//捕获按键
	int c=_getch();
	if (c>47 && c<num+49) //asc码 0-9 48-57
		//1->0 2->1 3->2 ... 9->8 0(10)->9 对应
		c-=48;
	else
		c=1;
	c--;

	if(c<0)c=9;//0对应10

	cout<<"使用 "<<cn_name[n[c]]<<" 风格"<<endl;

	is_feathers=false;
	if(n[c]<6)
	{
		is_instance_norm=true;
		if(n[c]==4)
			is_feathers=true;//feathers.t7 比较特殊 单独处理
	}
	else
	{
		is_instance_norm=false;
	}

	return string(torch_model_name[n[c]]);
}

如果你有全部十个t7模型:

如果只有3个会是这样:

1:镶嵌玻璃
2:糖果
3:组合七
请按一个数字,选择转换风格
使用 糖果 风格
正在载入‘风格转换模型’的数据

加载完成
输入图像宽度:224
        高度:224
输入层...
第一下采样层...
第二下采样层...
5个残差块... 包括 2 组卷积
4
第一上采样层...
第二上采样层...
输出层...
图像转换成jpg格式...
转换文件已经保存为:    风格转换
已经完成
用时:6.797 秒
请按任意键继续. . .

效果图:

内容图

这里只显示4种,还有其它6种风格的。

下载:

有10种风格的转换程序

win编译的 风格转换(style)的应用程序,有10风格,使用了OpenBLAS加速,详细情况参看博客

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值