昇腾应用案例体验:(7) 卡通图像生成

本文介绍了如何利用昇腾AI平台上的GAN架构生成卡通图像,包括编码器-解码器结构、残差块和判别器的设计,以及ATC模型转换和模块化推理过程。着重展示了预处理、模型推理和后处理步骤,以及实际应用案例和效果展示。

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

昇腾AI应用,探索人工智能的无限可能,使能千行百业


卡通图像生成

概述

卡通图象生成网络结构如下,以Generative Adversarial Networks(GAN)为基础,其架构包括一个生成器(Generator)和一个判别器(Discriminator),通过迭代训练两个网络(即生成器和判别器),由判别器提供的对抗性损失可以生成卡通化的结果。同时将生成器替换为自编码结构,使得生成器具有更强的生成能力。对于生成器,它希望生成样本尽可能符合真实样本的分布,而判别器则希望尽可能的区分真实样本与生成样本。具体来说,判别器将真实样本判断为正确,记为1;而将生成结果判断为错误,记为0。

编码器输入为真实图片 ,其架构由7 × 7的卷积核,步长为1的卷积层开始,随后紧跟两个降采样块(步长为2),对特征进行提取,对风格图片生成有用的信息将在这个过程中被提取。然后紧接4个残差块(Residual Block),用来重建内容特征。而解码器架构由5个残差块开始,通过两个上采样块(步长为2)来实现对不同风格特征的重建,最后在添加一层使用7 × 7卷积核、步长为1的卷积层,得到最终输出生成的卡通图片结果。

为了辅助生成器生成更好的结果,判别器需要判断输出图像是否是真实的卡通图片。因为判断是否真实依赖于图片本身特征,不需要抽取最高层的图片特征信息,所以可以设计成较为浅层的框架。首先对输入进行卷积核为3 x 3的卷积,然后紧接两个步长为2的卷积块来降低分辨率,并且提取重要的特征信息。最后使用一个3 × 3的卷积层得到最终提取的特征,再与真实标签进行损失计算。如果输入为256 × 256,则输出为64 × 64的PatchGAN形式。这里将Leaky ReLU的参数设置为0.2。

如下图所示,昇腾软件栈中存在一个ATC模型转换工具,针对本应用,我们需要使用该工具将原始模型转换成系统支持的om模型。

本应用采用了下图所示的模块化设计,通过各模块之间的协调配合完成一张图片的推理输出。

其中各个模块的主要功能点如下所示:

  • 1.运行管理资源申请:用于初始化系统内部资源,固定的调用流程。
  • 2.加载模型文件并构建输出内存:从文件加载离线模型cartoonization.om数据,需要由用户自行管理模型运行的内存,根据内存中加载的模型获取模型的基本信息包含模型输入、输出数据的数据buffer大小;由模型的基本信息构建模型输出内存,为接下来的模型推理做好准备。
  • 3.数据预处理:对读入的图像数据进行预处理,然后构建模型的输入数据。
  • 4.模型推理:根据构建好的模型输入数据进行模型推理。
  • 5.解析推理结果:根据模型输出,解析模型的推理结果。使用OpenCV将转换后的卡通画数据转化为JPEG。

模型原始链接: https://github.com/taki0112/CartoonGAN-Tensorflow

图像预处理

使用DVPP对读入图片进行解码,并缩放至256 × 256分辨率,以符合网络输入大小;在模型转换时,使用AIPP功能,将unit8的数据转换为fp16格式,将0~255的数值归一化到-1~1,将BGR的图片格式转换为RGB格式。

模型推理结果后处理

后处理模块主要是对模型的推理结果进行格式变换,然后将变换结果反馈给用户。主要过程是先将RGB格式的输出转换为BGR格式,在将-1~1的值映射回0~255,最后将256 × 256的转换结果缩放回原始图像的尺寸大小。

效果展示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值