Python实现一行代码自动绘制艺术画

2022-12-30 87阅读 0评论

DI?=scoArt 是一个很牛的开源模块,它能根据你给定的关键词自动绘画

绘制过程是完全可见的,你可以在 juPyter 页面上看见这个绘制的过程:

Python实现一行代码自动绘制艺术画

1.准备

开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,可以访问这篇文章:超详细python安装指南进行安装。

(可选1)如果你用Python的目的是数据分析,可以直接安装anaconda,它内置了Python和pip.

(可选2)此外,推荐大家用VSCode编辑器,它有许多的优点

选择以下任一种方式输入命令安装依赖

1. Windows 环境 打开 Cmd (开始-运行-CMD)。

2. Macos 环境 打开 Terminal (command+空格输入Terminal)。

3. 如果你用的是 vscode编辑器 或 pycharm,可以直接使用界面下方的Terminal.

pip install discoart

为了运行 Discoart, 你需要Python 3.7+ 和支持 CUDAPyTorch.

2.开始使用 Discoart

你可以在Jupyter中运行Discoart,这样能方便地实时展示绘制过程:

from discoart import create  da = create()

这样将使用默认的 文本描述 和参数创建图像

text_prompTS:   - A beautiful painting of a singular lighthouse, shining its light across a tumultuous sea of blood by greg rutkowski and thomas kinkade, Trending on artstatiON.   - yellow color scheme  init_image: wIDth_height: [ 1280, 768 ]  skip_steps: 0 steps: 250  init_scale: 1000 clip_GUIdance_scale: 5000  tv_scale: 0 range_scale: 150 sat_scale: 0 cutn_batches: 4  diffusion_model: 512x512_diffusion_uncond_f.netune_008100 use_secondary_model: True diffusion_sampling_mode: ddim  perlin_init: False perlin_mode: mixed seed: eta: 0.8 clamp_grad: True clamp_max: 0.05  randomize_class: True clip_denoised: False rand_mag: 0.05  cut_overview: "[12]*400+[4]*600" cut_innercut: "[4]*400+[12]*600" cut_icgray_p: "[0.2]*400+[0]*600" cut_ic_pow: 1.  save_rate: 20 gif_FPS: 20 gif_size_ratio: 0.5 n_BATches: 4 batch_size: 1 batch_name: clip_models:   - ViT-B-32::openai   - ViT-B-16::openai   - RN50::openai clip_models_schedules:  use_vertical_symmetry: False use_horizontal_symmetry: False transformation_percent: [0.09]  on_misspelled_token: ignore diffusion_model_config: cut_schedules_group: name_docarray: skip_event: stop_event: text_clip_on_cpu: False truncate_overlength_prompt: False image_output: True visualize_cuts: False display_rate: 1

创建出来的就是这个图:

Python实现一行代码自动绘制艺术画

Create 支持的所有参数如下:

text_prompts:   - A beautiful painting of a singular lighthouse, shining its light across a tumultuous sea of blood by greg rutkowski and thomas kinkade, Trending on artstation.   - yellow color scheme  init_image: width_height: [ 1280, 768 ]  skip_steps: 0 steps: 250  init_scale: 1000 clip_gUIdance_scale: 5000  tv_scale: 0 range_scale: 150 sat_scale: 0 cutn_batches: 4  diffusion_model: 512x512_diffusion_uncond_finetune_008100 use_secondary_model: True diffusion_sampling_mode: ddim  perlin_init: False perlin_mode: mixed seed: eta: 0.8 clamp_grad: True clamp_max: 0.05  ranDOMize_class: True clip_denoised: False rand_mag: 0.05  cut_overview: "[12]*400+[4]*600" cut_innercut: "[4]*400+[12]*600" cut_icgray_p: "[0.2]*400+[0]*600" cut_ic_pow: 1.  save_rate: 20 gif_fps: 20 gif_size_ratio: 0.5 n_batches: 4 batch_size: 1 batch_name: clip_models:   - ViT-B-32::openai   - ViT-B-16::openai   - RN50::openai clip_models_schedules:  use_vertical_symmetry: False use_horizontal_symmetry: False transfORMation_percent: [0.09]  on_misspelled_token: ignore diffusion_model_config: cut_schedules_group: name_docarray: skip_event: stop_event: text_clip_on_cpu: False truncate_overlength_prompt: False image_output: True visualize_cuts: False display_rate: 1

你可以这么使用参数:

from discoart import create  da = create(     text_prompts='A painting of sea cliffs in a tumultuous storm, Trending on ArtStation.',     init_image='https://d2vyhzeko0lke5.cloudfront.net/2f4f6dfa5a05e078469ebe57e77b72f0.png',     skip_steps=100, )

Python实现一行代码自动绘制艺术画

如果你不是用jupyter运行的,你也可以看到中间结果,因为最终结果和中间结果都会被创建在当前工作目录下,即

./{name-docarray}/{i}-done.png./{name-docarray}/{i}-step-{j}.png./{name-docarray}/{i}-progress.png./{name-docarray}/{i}-progress.gif./{name-docarray}/da.protobuf.lz4

name-docarray是运行时定义的名称,如果没有定义,则会随机生成i-*第几个Batch。*-done-*是当前Batch完成后的最终图像。*-step-*是某一步的中间图像,实时更新。*-progress.png是到目前为止所有中间结果的png图像,实时更新。*-progress.gif是到目前为止所有中间结果的动画 gif,实时更新。da.protobuf.lz4是到目前为止所有中间结果的压缩 protobuf,实时更新。

3.显示/保存/加载配置

如果你想知道你当前绘图的配置,有三种方法

from discoart import show_config  show_config(da) # show the config of the first run show_config(da[3]) # show the config of the fourth run show_config(     'discoart-06030a0198843332edc554ffebfbf288' ) # show the config of the run with a known DocArray ID

要保存 Document/DocumentArray 的配置:

from discoart import save_config  save_config(da, 'my.yml') # save the config of the first run save_config(da[3], 'my.yml') # save the config of the fourth run

从配置中导入

from discoart import create, load_config  config = load_config('my.yml') create(**config)

此外,你还能直接把配置导出为图像的形式

from discoart.config import save_config_svg  save_config_svg(da)

Python实现一行代码自动绘制艺术画

到此这篇关于Python实现一行代码自动绘制艺术画的文章就介绍到这了,更多相关Python绘制艺术画内容请搜索云初冀北以前的文章或继续浏览下面的相关文章希望大家以后多多支持云初冀北!

免责声明
本站提供的资源,都来自网络,版权争议与本站无关,所有内容及软件的文章仅限用于学习和研究目的。不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,我们不保证内容的长久可用性,通过使用本站内容随之而来的风险与本站无关,您必须在下载后的24个小时之内,从您的电脑/手机中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。侵删请致信E-mail:Goliszhou@gmail.com
$

发表评论

表情:
评论列表 (暂无评论,87人围观)

还没有评论,来说两句吧...