百度飞桨收费吗飞桨好用吗

中发源于凹非寺

量子位编辑|公众号QbitAI

在前几天发表的报道中,他谈到海外的AI危机脸部APP face app备受瞩目。 一键成为老人,一键恢复青春,一键从男人变成女人,一键笑,一键失去头发……

据福布斯称,谷歌play上的下载数量已经超过1亿。

苹果用户同样充满热情,根据App Annie的数据,目前在121个国家的iOS商店中排名第一。

虽然这看起来像是不可思议的黑科技,但实际上揭开神秘的面纱,技术本身并非不可能。 从GAN的角度来探索和解决这样的问题,可以做什么呢?

目前,飞航器的核心框架Paddle Fluid v1.5宣布将开放源代码PaddleGAN图像生成库,为用户提供易于使用、一键运行的GAN模型。

桨PaddlePaddle )致力于使深度学习技术的创新和应用更加简单。 生成式对抗网络GAN )近年来广泛应用于无监督的学习任务和生成任务,通过使两个神经网络相互博弈来进行学习,常用于生成虚假的真实图像、视频、三维物体模型等。 请大家体验一下~

下面发送真品干货带代码)!

1.效果实测

以下的效果使用百度和哈佛共同开发的STGAN模型以开源的方式实现

看到标签为“Bald”的变脸照片,很多读者是不是从骨髓中感到了凉爽? 各位,保重!

2. PaddleGAN支持的模型与任务

PaddleGAN图像生成模型库涵盖了目前主流的GAN算法,可以轻松参与各类GAN任务,也容易扩展自己的研究。

Pix2Pix和CycleGAN使用cityscapes数据集进行样式转换,而StarGAN、AttGAN和STGAN使用celeba数据集对图像进行局部或整体的属性更改。

STGAN是百度和哈佛联合开发的模型,提出了将STGAN方法用于图像/视频的端到端属性转换。 对传统方法提出了两点改进,celebA数据集上的转换效果优于现有方法:

通过在自编码网络结构中引入选择性属性编辑单元,加强了属性编辑的效果。 提出用基于属性变更的训练机制代替基于属性的标记。

3. 预训练模型

这次的PaddleGAN一共是开源的5种预训练模式。 设置桨叶环境后,可以下载预训练模型快速验证推理效果。

每个GAN都显示了放置在scripts文件夹中的测试示例,用户可以直接运行测试脚本来获得测试结果。

以下命令将生成CyleGAN的预测结果:

python infer.py \

–model _ net=循环根

– init _ model=$ 路径到单位模型)

– -图像_ size=256

–dataset _ dir=$ 路径到数据)

– -输入样式=$ 或b ) \

–net _ g=$ 生成器_网络)

– g _ base _ dims=$ 基本_ dim _ of _生成器)

执行以下命令以获得Pix2Pix的预测结果:

python infer.py \

–model_net=Pix2pix \

– init _ model=$ 路径到单位模型)

– -图像_ size=256

–dataset _ dir=$ 路径到数据)

–net _ g=$ 生成器网络)

以下命令将生成StarGAN、AttGAN或STGAN的预测结果:

python infer.py \

-模型网络=$ 星形或三角形或三角形)

– init _ model=$ 路径到单位模型)

–dataset _ dir=$ 路径到数据)

p>

4. 一键式的训练和测试生成网络

数据准备

模型库中提供了download.py数据下载脚本,该脚本支持下载MNIST数据集(CGAN和DCGAN所需要的数据集)以及CycleGAN和Pix2Pix所需要的数据集,使用以下命令下载数据:python download.py —dataset=mnist 通过指定dataset参数来下载相应的数据集。

StarGAN, AttGAN和STGAN所需要的Celeba数据集需要用户自行下载。

自定义数据集:用户可以使用自定义的数据集,只要设置成所对应的生成模型所需要的数据格式即可。

注意: pix2pix模型数据集准备中的list文件需要通过scripts文件夹里的make_pair_data.py来生成,可以使用以下命令来生成:python scripts/make_pair_data.py

—direction=A2B,用户可以通过设置—direction参数生成list文件,从而确保图像风格转变的方向。

一键式启动

python train.py \
–model_net=$name_of_model) \
–dataset=$name_of_dataset) \
–data_dir=$path_to_data) \
–train_list=$path_to_train_data_list) \
–test_list=$path_to_test_data_list) \
–batch_size=$batch_size)

可选参数见python train.py —help

—model_net参数来选择想要训练的模型

—dataset参数来选择训练所需要的数据集

每个GAN都给出了一份运行示例,放在scripts文件夹内,用户可以直接运行训练脚本快速开始训练。

在快读实现之余,对于目前主流的GAN的开源模型,我们也需要一起了解一下。

5. 主流开源模型简介

STGAN

由百度和哈工大联合研发,在原有的ATTGAN基础上,引入GRU结构,更好的选择变化的属性,可用于人脸特定属性转换。

STGAN中生成网络在编码器和解码器之间加入Selective Transfer UnitsSTU),有选择的转换编码网络,从而更好的适配解码网络。

生成网络中的编码网络主要由convolution-instance norm-ReLU组成,解码网络主要由transpose convolution-norm-leaky_ReLU组成,判别网络主要由convolution-leaky_ReLU组成,详细网络结构可以查看network/STGAN_network.py文件。

生成网络的损失函数是由WGAN的损失函数,重构损失和分类损失组成,判别网络的损失函数由预测损失,分类损失和梯度惩罚损失组成。飞桨核心框架Paddle Fluid v1.5中,新增了梯度惩罚的OP,进而支持了WGAN-GP的算法。在本次对外开放的模型中,WGAN均是使用了WGAN-GP算法。

△ 图:STGAN的网络结构

CGAN

条件生成对抗网络,一种带条件约束的GAN,使用额外信息对模型增加条件,可以指导数据生成过程。

△ 图:CGAN的网络结构

DCGAN

深度卷积生成对抗网络,将GAN和卷积网络结合起来,利用卷积神经网络作为网络结构进行图像生成,可以得到更加丰富的层次表达。为了提高生成样本的质量和网络的收敛速度,在网络结构上进行了一些改进:取消 pooling 层、加入 batch normalization、使用全卷积网络、在生成器(G)中,最后一层使用Tanh函数,其余层采用 ReLu 函数 ; 判别器(D)中都采用LeakyReLu。

△ 图:DCGAN中的生成器

Pix2Pix

利用成对的图片进行图像翻译,即输入为同一张图片的两种不同风格,可用于进行风格迁移。

Pix2Pix由一个生成网络和一个判别网络组成。生成网络中编码部分的网络结构都是采用convolution-batch norm-ReLU作为基础结构,解码部分的网络结构由transpose convolution-batch norm-ReLU组成,判别网络基本是由convolution-norm-leaky_ReLU作为基础结构,详细的网络结构可以查看network/Pix2pix_network.py文件。

生成网络提供两种可选的网络结构:Unet网络结构和普通的encoder-decoder网络结构。网络利用损失函数学习从输入图像到输出图像的映射,生成网络损失函数由GAN的损失函数和L1损失函数组成,判别网络损失函数由GAN的损失函数组成。生成器的网络结构如下图所示。

△ 图:Pix2Pix生成网络流程图

CycleGAN

可以利用非成对的图片进行图像翻译,即输入为两种不同风格的不同图片,自动进行风格转换。

CycleGAN由两个生成网络和两个判别网络组成,生成网络A是输入A类风格的图片输出B类风格的图片,生成网络B是输入B类风格的图片输出A类风格的图片。

生成网络中编码部分的网络结构都是采用convolution-norm-ReLU作为基础结构,解码部分的网络结构由transpose convolution-norm-ReLU组成,判别网络基本是由convolution-norm-leaky_ReLU作为基础结构,详细的网络结构可以查看network/CycleGAN_network.py文件。

生成网络提供两种可选的网络结构:Unet网络结构和普通的encoder-decoder网络结构。生成网络损失函数由LSGAN的损失函数,重构损失和自身损失组成,判别网络的损失函数由LSGAN的损失函数组成。

△ 图:CycleGAN生成网络流程图

StarGAN

多领域属性迁移,引入辅助分类帮助单个判别器判断多个属性,可用于人脸属性转换。

StarGAN中生成网络的编码部分主要由convolution-instance norm-ReLU组成,解码部分主要由transpose convolution-norm-ReLU组成,判别网络主要由convolution-leaky_ReLU组成,详细网络结构可以查看network/StarGAN_network.py文件。

生成网络的损失函数是由WGAN的损失函数,重构损失和分类损失组成,判别网络的损失函数由预测损失,分类损失和梯度惩罚损失组成。

△ 图:starGAN流程图

△ 图:StarGAN的生成网络结构[左]和判别网络结构[右]

AttGAN

利用分类损失和重构损失来保证改变特定的属性,可用于人脸特定属性转换。

AttGAN中生成网络的编码部分主要由convolution-instance norm-ReLU组成,解码部分由transpose convolution-norm-ReLU组成,判别网络主要由convolution-leaky_ReLU组成,详细网络结构可以查看network/AttGAN_network.py文件。

生成网络的损失函数是由WGAN的损失函数,重构损失和分类损失组成,判别网络的损失函数由预测损失,分类损失和梯度惩罚损失组成。

△ 图:AttGAN网络流程图

△ 图:AttGAN的网络结构

如果您想详细了解更多飞桨的相关内容,请参阅以下文档,或点击阅读原文

官网地址:

https://www.paddlepaddle.org.cn?fr=lzw4

项目地址:

https://github.com/PaddlePaddle/models/tree/v1.5.1/PaddleCV/PaddleGAN?fr=lzw4

想与更多的深度学习开发者交流,请加入飞桨官方QQ群:432676488

— 完 —

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号QbitAI)对话界面,回复“招聘”两个字。

量子位 QbitAI · 头条号签约作者

վ’ᴗ’ ի 追踪AI技术和产品新动态

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注