当前位置: 首页 > news >正文

银川做淘宝网站的淄博百度推广

银川做淘宝网站的,淄博百度推广,二手书屋网站开发的意义,东营做网站优化哪家好Mindspore框架:CycleGAN模型实现图像风格迁移算法 Mindspore框架CycleGAN模型实现图像风格迁移|(一)CycleGAN神经网络模型构建 Mindspore框架CycleGAN模型实现图像风格迁移|(二)实例数据集(苹果2橘子&…

Mindspore框架:CycleGAN模型实现图像风格迁移算法

Mindspore框架CycleGAN模型实现图像风格迁移|(一)CycleGAN神经网络模型构建
Mindspore框架CycleGAN模型实现图像风格迁移|(二)实例数据集(苹果2橘子)
Mindspore框架CycleGAN模型实现图像风格迁移|(三)损失函数计算
Mindspore框架CycleGAN模型实现图像风格迁移|(四)CycleGAN模型训练
Mindspore框架CycleGAN模型实现图像风格迁移|(五)CycleGAN模型推理与资源下载

1. 损失函数计算

CycleGAN 网络本质上是由两个镜像对称的 GAN 网络组成。

在这里插入图片描述
运算流程:
在这里插入图片描述

CycleGAN网络运转流程:图中苹果图片 𝑥 经过生成器 𝐺得到伪橘子 𝑌̂ ,然后将伪橘子 𝑌̂ 结果送进生成器 𝐹又产生苹果风格的结果 𝑥̂ ,最后将生成的苹果风格结果 𝑥̂ 与原苹果图片 𝑥一起计算出循环一致损失。

对生成器 𝐺 及其判别器 𝐷𝑌:
x-> 𝐺(𝑥)
目标损失函数定义为:
在这里插入图片描述
其中 𝐺试图生成看起来与 𝑌 中的图像相似的图像 𝐺(𝑥),而 𝐷𝑌的目标是区分翻译样本 𝐺(𝑥) 和真实样本 𝑦,生成器的目标是最小化这个损失函数以此来对抗判别器。即 在这里插入图片描述

对生成器G到F
x-> 𝐺(𝑥) ->F( 𝐺(𝑥))
在这里插入图片描述

这种循环损失计算,会捕捉这样的直觉,即如果我们从一个域转换到另一个域,然后再转换回来,我们应该到达我们开始的地方。

2.损失函数实现

# GAN网络损失函数,这里最后一层不使用sigmoid函数
loss_fn = nn.MSELoss(reduction='mean')
l1_loss = nn.L1Loss("mean")def gan_loss(predict, target):target = ops.ones_like(predict) * targetloss = loss_fn(predict, target)return loss

生成器网络和判别器网络的优化器:

# 构建生成器优化器
optimizer_rg_a = nn.Adam(net_rg_a.trainable_params(), learning_rate=0.0002, beta1=0.5)
optimizer_rg_b = nn.Adam(net_rg_b.trainable_params(), learning_rate=0.0002, beta1=0.5)
# 构建判别器优化器
optimizer_d_a = nn.Adam(net_d_a.trainable_params(), learning_rate=0.0002, beta1=0.5)
optimizer_d_b = nn.Adam(net_d_b.trainable_params(), learning_rate=0.0002, beta1=0.5)

3. 模型前向计算损失的过程

import mindspore as ms# 前向计算def generator(img_a, img_b):fake_a = net_rg_b(img_b)fake_b = net_rg_a(img_a)rec_a = net_rg_b(fake_b)rec_b = net_rg_a(fake_a)identity_a = net_rg_b(img_a)identity_b = net_rg_a(img_b)return fake_a, fake_b, rec_a, rec_b, identity_a, identity_blambda_a = 10.0
lambda_b = 10.0
lambda_idt = 0.5# 生成器
def generator_forward(img_a, img_b):true = Tensor(True, dtype.bool_)fake_a, fake_b, rec_a, rec_b, identity_a, identity_b = generator(img_a, img_b)loss_g_a = gan_loss(net_d_b(fake_b), true)loss_g_b = gan_loss(net_d_a(fake_a), true)loss_c_a = l1_loss(rec_a, img_a) * lambda_aloss_c_b = l1_loss(rec_b, img_b) * lambda_bloss_idt_a = l1_loss(identity_a, img_a) * lambda_a * lambda_idtloss_idt_b = l1_loss(identity_b, img_b) * lambda_b * lambda_idtloss_g = loss_g_a + loss_g_b + loss_c_a + loss_c_b + loss_idt_a + loss_idt_breturn fake_a, fake_b, loss_g, loss_g_a, loss_g_b, loss_c_a, loss_c_b, loss_idt_a, loss_idt_bdef generator_forward_grad(img_a, img_b):_, _, loss_g, _, _, _, _, _, _ = generator_forward(img_a, img_b)return loss_g# 判别器
def discriminator_forward(img_a, img_b, fake_a, fake_b):false = Tensor(False, dtype.bool_)true = Tensor(True, dtype.bool_)d_fake_a = net_d_a(fake_a)d_img_a = net_d_a(img_a)d_fake_b = net_d_b(fake_b)d_img_b = net_d_b(img_b)loss_d_a = gan_loss(d_fake_a, false) + gan_loss(d_img_a, true)loss_d_b = gan_loss(d_fake_b, false) + gan_loss(d_img_b, true)loss_d = (loss_d_a + loss_d_b) * 0.5return loss_ddef discriminator_forward_a(img_a, fake_a):false = Tensor(False, dtype.bool_)true = Tensor(True, dtype.bool_)d_fake_a = net_d_a(fake_a)d_img_a = net_d_a(img_a)loss_d_a = gan_loss(d_fake_a, false) + gan_loss(d_img_a, true)return loss_d_adef discriminator_forward_b(img_b, fake_b):false = Tensor(False, dtype.bool_)true = Tensor(True, dtype.bool_)d_fake_b = net_d_b(fake_b)d_img_b = net_d_b(img_b)loss_d_b = gan_loss(d_fake_b, false) + gan_loss(d_img_b, true)return loss_d_b# 保留了一个图像缓冲区,用来存储之前创建的50个图像
pool_size = 50
def image_pool(images):num_imgs = 0image1 = []if isinstance(images, Tensor):images = images.asnumpy()return_images = []for image in images:if num_imgs < pool_size:num_imgs = num_imgs + 1image1.append(image)return_images.append(image)else:if random.uniform(0, 1) > 0.5:random_id = random.randint(0, pool_size - 1)tmp = image1[random_id].copy()image1[random_id] = imagereturn_images.append(tmp)else:return_images.append(image)output = Tensor(return_images, ms.float32)if output.ndim != 4:raise ValueError("img should be 4d, but get shape {}".format(output.shape))return output

4.计算梯度和反向传播

from mindspore import value_and_grad# 实例化求梯度的方法
grad_g_a = value_and_grad(generator_forward_grad, None, net_rg_a.trainable_params())
grad_g_b = value_and_grad(generator_forward_grad, None, net_rg_b.trainable_params())grad_d_a = value_and_grad(discriminator_forward_a, None, net_d_a.trainable_params())
grad_d_b = value_and_grad(discriminator_forward_b, None, net_d_b.trainable_params())# 计算生成器的梯度,反向传播更新参数
def train_step_g(img_a, img_b):net_d_a.set_grad(False)net_d_b.set_grad(False)fake_a, fake_b, lg, lga, lgb, lca, lcb, lia, lib = generator_forward(img_a, img_b)_, grads_g_a = grad_g_a(img_a, img_b)_, grads_g_b = grad_g_b(img_a, img_b)optimizer_rg_a(grads_g_a)optimizer_rg_b(grads_g_b)return fake_a, fake_b, lg, lga, lgb, lca, lcb, lia, lib# 计算判别器的梯度,反向传播更新参数
def train_step_d(img_a, img_b, fake_a, fake_b):net_d_a.set_grad(True)net_d_b.set_grad(True)loss_d_a, grads_d_a = grad_d_a(img_a, fake_a)loss_d_b, grads_d_b = grad_d_b(img_b, fake_b)loss_d = (loss_d_a + loss_d_b) * 0.5optimizer_d_a(grads_d_a)optimizer_d_b(grads_d_b)return loss_d
http://www.15wanjia.com/news/20311.html

相关文章:

  • 做网站用python还是java宁波谷歌seo推广
  • 青海省教育厅门户网站最经典最常用的网站推广方式
  • 做 从哪个网站上下载图片北京百度科技有限公司电话
  • 九台市做网站的公司保定网站建设报价
  • 怎么建视频网站免费的下载百度app最新版到桌面
  • 网站开发指什么软件seo兼职平台
  • 江西人才网官方网站风云榜小说排行榜
  • wordpress代刷网山东网站seo
  • 济宁做网站哪家好长沙网络推广
  • 重庆有哪些公司seo搜索引擎优化内容
  • 网站运营服务商企业策划咨询公司
  • 平台代理是什么工作seo外包优化公司
  • 企业网站怎样做seo内部优化包括哪些内容
  • 北京网站的建立的便宜的seo官网优化
  • 网站搜索引擎优化方案范文一键生成网站
  • 软件开发模型包括哪五种如何把一个关键词优化到首页
  • 苏中建设 官方网站aso优化公司
  • 建一个门户网站要多少钱自学seo大概需要多久
  • 天津哪家公司做公司网站学校seo推广培训班
  • 图书馆 网站建设搜索引擎优化是什么意思
  • 百度seo 站长工具企业线上培训平台有哪些
  • 做购物网站能赚钱吗it培训班出来工作有人要么
  • 网站空间企业个人软文投放平台有哪些?
  • wordpress 媒体播放搜索引擎网站推广如何优化
  • 成都网络推广培训旺道seo
  • 云南网站建设多少钱游戏优化大师官网
  • 岳阳市内从事网站建设的公司谷歌浏览器网页版
  • 国家部委政府网站群建设工作设计网站模板
  • wordpress详情页的百度搜索出图做网络优化哪家公司比较好
  • 免费空间官网博客seo教程