AIGC:文生图模型Stable Diffusion

news2024/11/18 21:44:59

1 Stable Diffusion介绍

Stable Diffusion 是由CompVis、Stability AI和LAION共同开发的一个文本转图像模型,它通过LAION-5B子集大量的 512x512 图文模型进行训练,我们只要简单的输入一段文本,Stable Diffusion 就可以迅速将其转换为图像,同样我们也可以置入图片或视频,配合文本对其进行处理。

Stable Diffusion的发布是AI图像生成发展过程中的一个里程碑,相当于给大众提供了一个可用的高性能模型,不仅生成的图像质量非常高,运行速度快,并且有资源和内存的要求也较低。

Stable Diffusion Demo:demo

2 运行环境构建

2.1 conda环境安装

conda环境准备详见:annoconda

2.2 运行环境准备

git clone https://github.com/CompVis/stable-diffusion.git

cd stable-diffusion

conda env create -f environment.yaml

conda activate ldm

pip install diffusers==0.12.1

2.3 模型下载

(1)下载模型文件“sd-v1-4.ckpt”

模型地址:模型

完成后执行如下命令

mkdir -p models/ldm/stable-diffusion-v1/

mv sd-v1-4.ckpt model.ckpt

mv model.ckpt models/ldm/stable-diffusion-v1/

(2)下载checkpoint_liberty_with_aug.pth模型

模型地址:模型

下载完成后,模型放到cache文件夹下

mv checkpoint_liberty_with_aug.pth ~/.cache/torch/hub/checkpoints/

(3)下载clip-vit-large-patch14模型

模型地址:模型

需要下载的模型文件如下:

 创建模型的存储目录

mkdir -p openai/clip-vit-large-patch14

下载完成后,把下载的文件移动到上面的目录下。

(4)下载safety_checker模型

模型地址:模型

需要下载模型文件如下:

创建模型文件的存储目录

mkdir -p CompVis/stable-diffusion-safety-checker

下载完成后,把下载的文件移动到上面的目录下

将(3)中的preprocessor_config.json移动当前模型目录下:

mv openai/clip-vit-large-patch14/preprocessor_config.json CompVis/stable-diffusion-safety-checker/

3 运行效果展示

3.1 运行文生图

python scripts/txt2img.py --prompt "a photograph of an astronaut riding a horse" --plms 

运行效果展示

txt2img.py参数

usage: txt2img.py [-h] [--prompt [PROMPT]] [--outdir [OUTDIR]] [--skip_grid] [--skip_save] [--ddim_steps DDIM_STEPS] [--plms] [--laion400m] [--fixed_code] [--ddim_eta DDIM_ETA]
                  [--n_iter N_ITER] [--H H] [--W W] [--C C] [--f F] [--n_samples N_SAMPLES] [--n_rows N_ROWS] [--scale SCALE] [--from-file FROM_FILE] [--config CONFIG] [--ckpt CKPT]
                  [--seed SEED] [--precision {full,autocast}]

optional arguments:
  -h, --help            show this help message and exit
  --prompt [PROMPT]     the prompt to render
  --outdir [OUTDIR]     dir to write results to
  --skip_grid           do not save a grid, only individual samples. Helpful when evaluating lots of samples
  --skip_save           do not save individual samples. For speed measurements.
  --ddim_steps DDIM_STEPS
                        number of ddim sampling steps
  --plms                use plms sampling
  --laion400m           uses the LAION400M model
  --fixed_code          if enabled, uses the same starting code across samples
  --ddim_eta DDIM_ETA   ddim eta (eta=0.0 corresponds to deterministic sampling
  --n_iter N_ITER       sample this often
  --H H                 image height, in pixel space
  --W W                 image width, in pixel space
  --C C                 latent channels
  --f F                 downsampling factor
  --n_samples N_SAMPLES
                        how many samples to produce for each given prompt. A.k.a. batch size
  --n_rows N_ROWS       rows in the grid (default: n_samples)
  --scale SCALE         unconditional guidance scale: eps = eps(x, empty) + scale * (eps(x, cond) - eps(x, empty))
  --from-file FROM_FILE
                        if specified, load prompts from this file
  --config CONFIG       path to config which constructs model
  --ckpt CKPT           path to checkpoint of model
  --seed SEED           the seed (for reproducible sampling)
  --precision {full,autocast}
                        evaluate at this precision

3.2 运行图片转换

执行命令如下:

python scripts/img2img.py --prompt "A fantasy landscape, trending on artstation" --init-img assets/stable-samples/img2img/mountains-1.png --strength 0.8

 

4 问题解决

4.1 SAFE_WEIGHTS_NAME问题解决

运行txt2img,出现如下错误:

(ldm) [root@localhost stable-diffusion]# python scripts/txt2img.py --prompt "a photograph of an astronaut riding a horse" --plms 
Traceback (most recent call last):
  File "scripts/txt2img.py", line 22, in <module>
    from diffusers.pipelines.stable_diffusion.safety_checker import StableDiffusionSafetyChecker
  File "/root/anaconda3/envs/ldm/lib/python3.8/site-packages/diffusers/__init__.py", line 29, in <module>
    from .pipelines import OnnxRuntimeModel
  File "/root/anaconda3/envs/ldm/lib/python3.8/site-packages/diffusers/pipelines/__init__.py", line 19, in <module>
    from .dance_diffusion import DanceDiffusionPipeline
  File "/root/anaconda3/envs/ldm/lib/python3.8/site-packages/diffusers/pipelines/dance_diffusion/__init__.py", line 1, in <module>
    from .pipeline_dance_diffusion import DanceDiffusionPipeline
  File "/root/anaconda3/envs/ldm/lib/python3.8/site-packages/diffusers/pipelines/dance_diffusion/pipeline_dance_diffusion.py", line 21, in <module>
    from ..pipeline_utils import AudioPipelineOutput, DiffusionPipeline
  File "/root/anaconda3/envs/ldm/lib/python3.8/site-packages/diffusers/pipelines/pipeline_utils.py", line 67, in <module>
    from transformers.utils import SAFE_WEIGHTS_NAME as TRANSFORMERS_SAFE_WEIGHTS_NAME
ImportError: cannot import name 'SAFE_WEIGHTS_NAME' from 'transformers.utils' (/root/anaconda3/envs/ldm/lib/python3.8/site-packages/transformers/utils/__init__.py)

通过变更组件diffusers版本解决,命令如下:

pip install diffusers==0.12.1

4.2 不能连接到huggingface.co的解决办法

 python scripts/txt2img.py --prompt "a photograph of an astronaut riding a horse" --plms 
Traceback (most recent call last):
  File "/root/anaconda3/envs/ldm/lib/python3.8/site-packages/transformers/feature_extraction_utils.py", line 403, in get_feature_extractor_dict
    resolved_feature_extractor_file = cached_path(
  File "/root/anaconda3/envs/ldm/lib/python3.8/site-packages/transformers/utils/hub.py", line 282, in cached_path
    output_path = get_from_cache(
  File "/root/anaconda3/envs/ldm/lib/python3.8/site-packages/transformers/utils/hub.py", line 545, in get_from_cache
    raise ValueError(
ValueError: Connection error, and we cannot find the requested files in the cached path. Please try again or make sure your Internet connection is on.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "scripts/txt2img.py", line 28, in <module>
    safety_feature_extractor = AutoFeatureExtractor.from_pretrained(safety_model_id)
  File "/root/anaconda3/envs/ldm/lib/python3.8/site-packages/transformers/models/auto/feature_extraction_auto.py", line 270, in from_pretrained
    config_dict, _ = FeatureExtractionMixin.get_feature_extractor_dict(pretrained_model_name_or_path, **kwargs)
  File "/root/anaconda3/envs/ldm/lib/python3.8/site-packages/transformers/feature_extraction_utils.py", line 436, in get_feature_extractor_dict
    raise EnvironmentError(
OSError: We couldn't connect to 'https://huggingface.co' to load this model, couldn't find it in the cached files and it looks like CompVis/stable-diffusion-safety-checker is not the path to a directory containing a preprocessor_config.json file.
Checkout your internet connection or see how to run the library in offline mode at 'https://huggingface.co/docs/transformers/installation#offline-mode'.

解决方法:

将模型下载到本地,过程详见2.3描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/726818.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

飞行动力学 - 第5节-part2-喷气式飞机的爬升性能 之 基础点摘要

飞行动力学 - 第5节-part2-喷气式飞机的爬升性能 之 基础点摘要 1. 最大爬升角2. 最大爬升率3. 一些历史记录4. 参考资料 1. 最大爬升角 喷气式飞机由于推力稳定输出&#xff0c;其最大爬升角相对容易计算&#xff1a; 2. 最大爬升率 爬升率相对复杂&#xff0c;使用无量纲数据…

【原生HTML】表格

1、一个表格合并后多选 我这里的表格是在elementUI的tabs页里的&#xff0c;所以数据格式多了一层 数据格式 html原生代码&#xff1a; <tableclass"multi-table"style"width: 100%; border-color: #ebeef5"border"1px"cellspacing"0&qu…

使用IDEA时关于Tomcat处理HTML请求乱码的问题(通过访问服务器的静态页面F12后响应头里的编码格式都是utf-8了,还是乱码)

解决方法在文末&#xff0c;大家可以下滑到底部直接浏览 今天在使用Tomcat访问静态页面时&#xff0c;页面出现乱码问题&#xff0c;各种办法的试了&#xff0c;内心一度处于奔溃的边缘&#xff0c;在外出跑步冷静了一下之后&#xff0c;思路渐渐清晰。 出现乱码后的第一步&a…

C数据结构与算法——顺序表 应用

实验任务 (1) 掌握顺序表结构及其 C 语言实现&#xff1b; (2) 掌握插入、删除等基本算法&#xff1b; (3) 掌握顺序表的基本应用&#xff08;将两个有序线性表合并为一个有序表&#xff09;。 实验内容 使用 C 语言实现顺序表的类型定义与算法函数&#xff1b;编写 main()函…

Verilog parameter的用法

parameter简介 parameter”是Verilog HDL中的一个关键字&#xff0c;代表着参数型常量&#xff0c;即用parameter来定义一个标识符代表一个常量&#xff0c;这样可以提高程序的可读性与可维护性。 parameter应用场景 #&#xff08;parameter number500&#xff09; 表示定义一…

零代码开发平台免费,未来企业数字化转型常用工具

什么是零代码开发平台 零代码开发平台指的是一种软件开发工具&#xff0c;能够使开发人员在不编写代码的情况下构建应用程序或快速应用程序。它们一般是通过拖放的方式创建用户界面&#xff0c;配置业务逻辑&#xff0c;集成数据库等操作&#xff0c;节省开发周期和人力成本。…

安森美-深力科NC7SV08P5X能成为极高速、高驱动和低功耗应用的理想选择吗?

描述&#xff1a; 关于安森美-深力科NC7SV08P5X是飞兆超低功率 (ULP-A) TinyLogic 系列的一个 2 输入“与”门。 ULP-A 是要求极高速、高驱动和低功耗应用的理想选择。 用于宽低电压工作范围&#xff08;0.9 V 到 3.6 V VCC&#xff09;&#xff0c;适合驱动和速度要求高于 Ti…

需求分析的概念和原则

概念和原则 需求分析是指在软件开发和项目管理中&#xff0c;通过收集、理解、分析和记录用户和系统对系统或产品的需求&#xff0c;以确定其详细的特征和功能。它是一个关键的过程&#xff0c;旨在确保项目成功地满足用户的需求和期望。 在进行需求分析时&#xff0c;有一些…

常用数据聚类算法总结记录

本文的主要目的是总结记录日常学习工作中常用到的一些数据聚类算法&#xff0c;对其原理简单总结记录&#xff0c;同时分析对应的优缺点&#xff0c;以后需要的时候可以直接翻看&#xff0c;避免每次都要查询浪费时间&#xff0c;欢迎补充。 聚类算法是一种无监督学习的方法&am…

Docker安装 Nginx

相关文章&#xff1a; Docker容器之间的连接和通信(四)_做测试的喵酱的博客-CSDN博客 一、 Docker安装 Nginx 1.1、查看可用的 Nginx 版本 docker search nginx 1.2、安装最新 Nginx 版本 docker pull nginx:latest 1.3 查看本地镜像 docker images 1.4 运行容器 运行…

架构-新教材补充内容

系统工程 两分&#xff0c;需要计算的选择题 #mermaid-svg-opoH5AvD05BTqVHp {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-opoH5AvD05BTqVHp .error-icon{fill:#552222;}#mermaid-svg-opoH5AvD05BTqVHp .error-te…

关系型数据库全栈入选唯一厂商!GBASE南大通用的“可信”时刻

作为国产数据库的领军企业&#xff0c;业界公认的“可信”力量&#xff0c;GBASE南大通用深度参与大会&#xff0c;与各协会领导、学术大咖、技术领军共同论道我国数据库自立自强之路。 现在让我们一起盘点为期两天的议程中GBASE南大通用的“高光”时刻&#xff0c;且看GBASE是…

7.7工作总结

一、前言&#xff1a;这周三领导让我修改一个入库接口&#xff0c;需要加入三个参数&#xff0c;我直接把相应的数据加进去了忽略了这个参数是放在一个List中的同时还需要转成json的形式。因此我又修改了一遍。 二、错误的形式&#xff1a; 在接口文档中是这样的形式&#xff…

最新版Flink CDC MySQL同步Elasticsearch(一)

1.环境准备 首先我们要基于Flink CDC MySQL同步MySQL的环境基础上&#xff08;flink-1.17.1、Java8、MySQL8&#xff09;搭建Elasticsearch7-17-10和Kibana 7.17.10。笔者已经搭建好环境&#xff0c;这里不做具体演示了&#xff0c;如果需要Es的搭建教程情况笔者其他博客 注意…

【案例教程】GPT模型支持下的Python-GEE遥感云大数据分析、管理与可视化技术及多领域案例实践实践技术

随着航空、航天、近地空间等多个遥感平台的不断发展&#xff0c;近年来遥感技术突飞猛进。由此&#xff0c;遥感数据的空间、时间、光谱分辨率不断提高&#xff0c;数据量也大幅增长&#xff0c;使其越来越具有大数据特征。对于相关研究而言&#xff0c;遥感大数据的出现为其提…

海格里斯HEGERLS智能四向穿梭车系统是如何赋能企业降本增效的?

随着人工智能和物联网等新技术的更新迭代&#xff0c;物流行业数字化&#xff0c;智能仓储已成趋势。我国智能仓储在“互联网”战略的带动下快速发展&#xff0c;与大数据、云计算等新一代互联网技术深度融合&#xff0c;智能仓储整个行业向着运行高效、便捷、低成本的方向迈进…

Vision Transformer推理中线性-角度注意转换压缩自注意

文章目录 Castling-ViT: Compressing Self-Attention via Switching Towards Linear-Angular Attention at Vision Transformer Inference摘要本文方法实验结果 Castling-ViT: Compressing Self-Attention via Switching Towards Linear-Angular Attention at Vision Transform…

Angular 调试工具(Augury)

目录 1、简介 2、检验代码 3、Angury 本地构建和安装 3.1 添加到Chrome 浏览器&#xff1a; 3.2 添加到Firefox浏览器 4、项目中对应的Npm脚本 5、Augury 三大主要功能 5.1 组件树&#xff08;Component Tree&#xff09; 5.1.1 Component Tree 5.2 路由树&#xff0…

HarmonyOS学习路之开发篇—数据管理(对象关系映射数据库)

HarmonyOS对象关系映射&#xff08;Object Relational Mapping&#xff0c;ORM&#xff09;数据库是一款基于SQLite的数据库框架&#xff0c;屏蔽了底层SQLite数据库的SQL操作&#xff0c;针对实体和关系提供了增删改查等一系列的面向对象接口。应用开发者不必再去编写复杂的SQ…

港联证券|如何区分大盘股和小盘股?

1、依据个股的市值来区别。一般来说&#xff0c;大盘股&#xff1a;流转市值在500亿及以上&#xff0c;小盘股&#xff1a;流转市值一般在50亿及以下&#xff0c;市值在二者之间的被称为中盘股。 2、依据流转股本区别。一般来说&#xff0c;大盘股&#xff1a;流转股本大于5亿&…