脑洞大开!这个简易命令行工具,输入文字可生成的奇特图像

开源前哨

共 4841字,需浏览 10分钟

 · 2021-04-19

【导语】:使用文本生成图像的简单命令行工具。

“mist over green hills” 生成的图片

雾气朦胧的青山

简介

deep-daze 是一个使用 OpenAI 的 CLIP 和 Siren 的,使用文本生成图像的命令行工具,使用简单的语言描述图像内容,即可生成对应的图片。


shattered plates on the grass
(草地上的碎盘子)


cosmic love and attention


a time traveler in the crowd
(人群中的时光旅行者)


项目地址是:

https://github.com/lucidrains/deep-daze

下载安装

deep-daze是一个Python命令行工具,所以使用的环境中需要先安装Python,然后执行以下命令即可安装:

$ pip install deep-daze

简单使用

deep-daze的使用也非常简单,记住一个imagine命令即可,如:

$ imagine "a house in the forest"

在Windows中需要使用管理员打开CMD窗口。

如果内存足够大,可以添加--deeper选项来获得更高质量的图片:

$ imagine "shattered plates on the ground" --deeper

deep-daze有以下选项可供选择:

--img=IMAGE_PATH
    默认值:无。
    用以优化png/jpg图像或PIL图像的路径。
--encoding=ENCODING
    默认值:无。
    用户创建的自定义CLIP编码。如果使用,则替换使用的任何文本或图像。
--create_story=CREATE_STORY
    默认值:False。
    如果启用此功能,则可以使用比77个字符更长的文本,用于创建图片故事。
--story_start_words=STORY_START_WORDS
    默认值:5。
    仅在create_story为True时使用。
--story_words_per_epoch=STORY_WORDS_PER_EPOCH
    默认值:5。
    仅在create_story为True时使用。
--story_separator:
    默认值:无
    仅在create_story为True时使用。定义一个类似.的分隔符。
--lower_bound_cutout=LOWER_BOUND_CUTOUT
    默认值:0.1
    每批SIREN图像的随机切口的大小的采样下限。应小于0.8。
--upper_bound_cutout=UPPER_BOUND_CUTOUT
    默认值:1.0
    每批SIREN图像的随机切口的大小的采样上限。应该保持在1.0。
--saturate_bound=SATURATE_BOUND
    默认值:False
    如果为True,则在训练期间将LOWER_BOUND_CUTOUT线性增加至0.75。
--learning_rate=LEARNING_RATE
    默认值:1e-05
    神经网络的学习率。
--num_layers=NUM_LAYERS
    默认值:16
    Siren神经网络的隐藏层数量。
--batch_size=BATCH_SIZE
    默认值:4
    计算损失之前传递到Siren图像的数量。减小此值可能会降低内存和准确性。
--gradient_accumulate_every=GRADIENT_ACCUMULATE_EVERY
    默认值:4
    计算出n个样本的加权损耗。增加此值有助于以较小的批次大小提高准确性。
--epochs=EPOCHS
    默认值:20
    要运行的次数。
--iterations=迭代
    默认值:1050
    在给定时期内计算和反向传播损耗的次数。
--save_every=SAVE_EVERY
    默认值:100
    生成图像的每一次迭代是这个数的倍数。
--image_width = IMAGE_WIDTH
    默认值:512
    所需的图像分辨率。
--deeper=DEEPER
    默认值:False
    使用具有32个隐藏层的Siren神经网络。
--overwrite=OVERWRITE
    默认值:False
    是否覆盖现有的同名生成图像。
--save_progress=SAVE_PROGRESS
    默认值:False
    是否保存在Siren训练之前生成的图像。
--seed=SEED
    类型:可选
    默认值:无
    要使用的种子用于确定性的运行。
--open_folder=OPEN_FOLDER
    默认值:True
    是否打开生成的图像的文件夹。
--save_date_time=SAVE_DATE_TIME
    默认值:False
    保存文件具有时间戳。例如`%y%m%d-%H%M%S-my_phrase_here`
--start_image_path= TART_IMAGE_PATH
    默认值:无
    首先在原始图像上训练生,然后再转向文本输入
--start_image_train_iters=START_IMAGE_TRAIN_ITERS
    默认值:50
    在初始图像上进行初始训练的次数
--theta_initial=THETA_INITIAL
    默认值:30.0
    描述色彩空间频率的参数。仅适用于网络的第一层。
--theta_hidden = THETA_INITIAL
    默认值:30.0
    描述色彩空间频率的参数。仅适用于网络的隐藏层。
--save_gif = SAVE_GIF
    默认值:False
    是否保存生成过程的GIF动画。仅在save_progress设置为True时有效。

更多

  • 基于一张图片进行训练合成
$ imagine 'a clear night sky filled with stars' --start_image_path ./cloudy-night-sky.jpg

原始图片:

合成图片:


  • 使用Python进行调用
from deep_daze import Imagine

imagine = Imagine(
    text = 'cosmic love and attention',
    num_layers = 24,
)
imagine()
  • 每迭代四次就保存,以该格式保存图片:insert_text_here.00001.png,insert_text_here.00002.png,...
imagine = Imagine(
    text=text,
    save_every=4,
    save_progress=True
)
  • 创建带有时间戳和序列号的文件
imagine = Imagine(
    text=text,
    save_every=4,
    save_progress=True,
    save_date_time=True,
)


- EOF - 


更多优秀开源项目(点击下方图片可跳转)



开源前哨

日常分享热门、有趣和实用的开源项目。参与维护10万+star 的开源技术资源库,包括:Python, Java, C/C++, Go, JS, CSS, Node.js, PHP, .NET 等

关注后获取

回复 资源 获取 10万+ star 开源资源



分享、点赞和在看

支持我们分享更多优秀开源项目,谢谢!

浏览 22
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报