深度学习实战9-文本生成图像-本地电脑实现text2img

发布于:2022-11-27 ⋅ 阅读:(579) ⋅ 点赞:(0)

大家好,我是微学AI,今天给大家带来一个文本生成图像的案例。让大家都成为艺术家,自己电脑也能生成图片 ,该模型它能让数十亿人在几秒钟内创建出精美的艺术品。在速度和质量方面,都有所突破,这意味着图像生成技术走向大众。

Stable Diffusion模型包括两个步骤:

前向扩散——通过逐渐扰动输入数据将数据映射到噪声。这是通过一个简单的随机过程正式实现的,该过程从数据样本开始,并使用简单的高斯扩散核迭代地生成噪声样本。此过程仅在训练期间使用,而不用于推理。

参数化反向——撤消前向扩散并执行迭代去噪。这个过程代表数据合成,并被训练通过将随机噪声转换为真实数据来生成数据。

模型构架:

下面介绍一下,Stable Diffusion模型的代码实现,主代码:

from tensorflow import keras
from stable_diffusion_tf.stable_diffusion import StableDiffusion
import argparse
from PIL import Image
import os
parser = argparse.ArgumentParser()

parser.add_argument(
    "--prompt",
    type=str,
    nargs="?",
    default="Romantic lavender and sunset",
    help="the prompt to render",
)

parser.add_argument(
    "--output",
    type=str,
    nargs="?",
    default="output4.png",
    help="where to save the output image",
)

parser.add_argument(
    "--H",
    type=int,
    default=256,
    help="image height, in pixels",
)

parser.add_argument(
    "--W",
    type=int,
    default=512,
    help="image width, in pixels",
)

parser.add_argument(
    "--scale",
    type=float,
    default=7.5,
    help="unconditional guidance scale: eps = eps(x, empty) + scale * (eps(x, cond) - eps(x, empty))",
)

parser.add_argument(
    "--steps", type=int, default=50, help="number of ddim sampling steps"
)

parser.add_argument(
    "--seed",
    type=int,
    help="optionally specify a seed integer for reproducible results",
)

parser.add_argument(
    "--mp",
    default=False,
    action="store_true",
    help="Enable mixed precision (fp16 computation)",
)

args = parser.parse_args()

if args.mp:
    print("Using mixed precision.")
    keras.mixed_precision.set_global_policy("mixed_float16")

# 引入StableDiffusion模型
generator = StableDiffusion(img_height=args.H, img_width=args.W, jit_compile=False)
img = generator.generate(
    args.prompt,
    num_steps=args.steps,
    unconditional_guidance_scale=args.scale,
    temperature=1,
    batch_size=1,
    seed=args.seed,
)

Image.fromarray(img[0]).save(args.output)
print(f"saved at {args.output}")

代码下载地址:

链接:https://pan.baidu.com/s/1ES7Vr_gla5hwPmdkUdR8Qg?pwd=wqmb

提取码:wqmb

运行案例,大家用GPU跑会快一点。

描述语言: A girl carrying a bag faces the sea as the sun sets(一个女孩背着包面向大海,夕阳西下)

 描述语言: A sea of romantic lavender with the sun setting(浪漫的薰衣草的海洋,夕阳西下)

有技术问题,可以私信 


网站公告

今日签到

点亮在社区的每一天
去签到