Python结合AI生成图像艺术作品代码及介绍

        为实现生成图像艺术作品,我选用 Stable Diffusion 库结合 Python 编写代码。下面先展示代码,再详细介绍其原理、模块及使用方法等内容。

生成图片代码

import torch
from diffusers import StableDiffusionPipeline# 加载预训练模型
pipe = StableDiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5", torch_dtype=torch.float16)
pipe = pipe.to("cuda")# 定义生成图像的提示词
prompt = "A beautiful oil painting of a sunset over the ocean, with vibrant colors and expressive brushstrokes"# 生成图像
image = pipe(prompt).images[0]# 保存生成的图像
image.save("generated_artwork.png")

代码介绍​

1. 库的导入​

        ​import torch​

        from diffusers import StableDiffusionPipeline​

        这里导入了两个关键的库。torch是 PyTorch 库,它是一个用于机器学习的开源框架,提供了张量计算和深度学习模型构建等功能。在本代码中,它为模型的计算提供底层支持,如张量的运算、模型的加载与推理等。diffusers库是 Hugging Face 开发的一个用于扩散模型(Diffusion Models)的库,StableDiffusionPipeline类是其中用于加载和运行 Stable Diffusion 模型的关键组件。Stable Diffusion 是一种基于扩散模型的文本到图像生成模型,能够根据输入的文本提示生成高质量的图像。​

2. 加载预训练模型​

        pipe = StableDiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5",         torch_dtype=torch.float16)​

        pipe = pipe.to("cuda")​

        from_pretrained方法用于从 Hugging Face 的模型仓库加载预训练的 Stable Diffusion 模型,这里指定的模型版本是runwayml/stable-diffusion-v1-5。torch_dtype=torch.float16参数指定使用半精度浮点数来加载模型,这样可以减少内存占用,加快推理速度,但可能会在一定程度上损失一些精度。在实际应用中,如果对精度要求极高,也可以选择使用torch.float32。​

        pipe.to("cuda")这一步是将加载好的模型移动到 GPU 上进行计算。如果你的计算机没有可用的 GPU,也可以将"cuda"改为"cpu",但计算速度会明显变慢,尤其是在处理复杂图像生成任务时。​

3. 定义生成图像的提示词​

prompt = "A beautiful oil painting of a sunset over the ocean, with vibrant colors and expressive brushstrokes"​

        prompt变量用于定义生成图像的文本描述。这个提示词是引导模型生成特定风格和内容图像的关键。在这个例子中,提示词描述了一幅美丽的海洋日落油画,强调了鲜艳的色彩和富有表现力的笔触。提示词的准确性和丰富性直接影响生成图像的质量和符合度。你可以根据自己的需求修改这个提示词,比如将 “oil painting” 改为 “watercolor” 来生成水彩画风格,或者改变场景描述来生成不同主题的图像。​

4. 生成图像​

        image = pipe(prompt).images[0]​

        这一行代码调用了加载好的StableDiffusionPipeline对象pipe,将提示词prompt作为参数传入。pipe对象会根据提示词进行推理计算,生成一个包含多个图像的列表(在默认情况下,StableDiffusionPipeline每次调用会生成一个图像列表,即使只生成一张图,也会以列表形式返回)。这里我们通过[0]索引取出列表中的第一张图像,赋值给image变量。​

5. 保存生成的图像​

image.save("generated_artwork.png")​

        最后,使用save方法将生成的图像保存为本地文件,文件名是generated_artwork.png。你可以根据需要修改保存的文件名和文件格式,StableDiffusionPipeline生成的图像默认是PIL(Python Imaging Library)库的Image对象,支持常见的图像格式保存,如.jpg、.png等。​

代码扩展与优化方向​

  1. 参数调整:StableDiffusionPipeline支持多个参数调整生成效果,如num_inference_steps(推理步数,步数越多图像越精细,但计算时间也越长)、guidance_scale(引导尺度,控制生成图像与提示词的匹配程度,值越大越贴近提示词,但可能会损失一些创意)等。可以通过修改这些参数来优化生成的图像质量。​
  2. 添加负提示词:可以通过negative_prompt参数传入负提示词,用于描述不希望在图像中出现的元素,进一步精准控制生成图像的内容。​
  3. 集成交互界面:可以结合gradio或streamlit等库,开发一个简单的图形化交互界面,方便用户输入提示词并即时查看生成的图像艺术作品。​

        以上代码只是一个基础示例,通过灵活调整和扩展,可以利用 Python 和 Stable Diffusion 模型创作出丰富多样的图像艺术作品。

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

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

相关文章

Linux操作系统--静态库和动态库的生成and四种解决加载找不到动态库的四种方法

目录 必要的知识储备: 生成静态库: 生成动态库: 解决加载找不到动态库的四种方法: 第一种:拷贝到系统默认的库路径 /usr/lib64/ 第二种:在系统默认的库路径/usr/lib64/下建立软链接 第三种&#xff1…

LLM中的N-Gram、TF-IDF和Word embedding

文章目录 1. N-Gram和TF-IDF:通俗易懂的解析1.1 N-Gram:让AI学会"猜词"的技术1.1.1 基本概念1.1.2 工作原理1.1.3 常见类型1.1.4 应用场景1.1.5 优缺点 1.2 TF-IDF:衡量词语重要性的尺子1.2.1 基本概念1.2.2 计算公式1.2.3 为什么需…

Leetcode 3359. 查找最大元素不超过 K 的有序子矩阵【Plus题】

1.题目基本信息 1.1.题目描述 给定一个大小为 m x n 的二维矩阵 grid。同时给定一个 非负整数 k。 返回满足下列条件的 grid 的子矩阵数量: 子矩阵中最大的元素 小于等于 k。 子矩阵的每一行都以 非递增 顺序排序。 矩阵的子矩阵 (x1, y1, x2, y2) 是通过选择…

如何在 Ubuntu 22.04 上安装、配置、使用 Nginx

如何在 Ubuntu 22.04 上安装、配置、使用 Nginx?-阿里云开发者社区 更新应用 sudo apt updatesudo apt upgrade检查必要依赖并安装 sudo apt install -y curl gnupg2 ca-certificates lsb-release安装nginx sudo apt install -y nginx# 启动nginx sudo systemct…

Linux:显示 -bash-4.2$ 问题(CentOS 7)

文章目录 一、原因二、错误示例三、解决办法 一、原因 在 CentOS 7 系统中,如果你看到命令行提示符显示为 -bash-4.2$,一般是 Bash shell 正在运行,并且它没有找到用户的个人配置文件,或者这些文件有问题而未能成功加载。这个提示…

QT6 源(34):随机数生成器类 QRandomGenerator 的源码阅读

&#xff08;1&#xff09;代码来自 qrandom.h &#xff0c;结合官方的注释&#xff1a; #ifndef QRANDOM_H #define QRANDOM_H#include <QtCore/qalgorithms.h> #include <algorithm> // for std::generate #include <random> // for std::mt1993…

第二篇:linux之Xshell使用及相关linux操作

第二篇&#xff1a;linux之Xshell使用及相关linux操作 文章目录 第二篇&#xff1a;linux之Xshell使用及相关linux操作一、Xshell使用1、Xshell安装2、Xshell使用 二、Bash Shell介绍与使用1、什么是Bash Shell(壳)&#xff1f;2、Bash Shell能干什么&#xff1f;3、平时如何使…

MCP(模型上下文协议)学习笔记

学习MCP&#xff08;模型上下文协议&#xff09;的系统化路径&#xff0c;结合技术原理、工具实践和社区资源&#xff0c;帮助你高效掌握这一AI交互标准&#xff1a; 在当今人工智能飞速发展的时代&#xff0c;AI技术正以前所未有的速度改变着我们的生活和工作方式。然而&#…

MIR-2025 | 多模态知识助力机器人导航:从复杂环境到高效路径规划

作者&#xff1a;Hui Yuan, Yan Huang, Zetao Du, Naigong Yu, Ziqi Liu, Dongbo Zhang, Kun Zhang 单位&#xff1a;北京工业大学信息科学与技术学院&#xff0c;北京工业大学计算智能与智能系统北京市重点实验室&#xff0c;中科院自动化研究所模式识别国家重点实验室与多智…

javaSE.泛型界限

现在有一个新的需求&#xff0c;没有String类型成绩了&#xff0c;但是成绩依然可能是整数&#xff0c;也可能是小数&#xff0c;这是我们不希望用户将泛型指定为除数字类型外的其他类型&#xff0c;我们就需要使用到泛型的上界定义&#xff1a; 上界&#x1f447;只能使用其本…

压缩包网页预览(zip-html-preview)

zip-html-preview 项目介绍 这是一个基于 Spring Boot 开发的在线 ZIP 文件预览工具,主要用于预览 ZIP 压缩包中的 HTML 文件及其相关资源。 主要功能 支持拖拽上传或点击选择多个 ZIP 文件自动解压并提取 ZIP 文件中的 HTML 文件在线预览 HTML 文件及其相关的 CSS、JavaSc…

QML之Overlay

Overlay&#xff08;覆盖层&#xff09;是QML中用于在当前界面之上显示临时内容的重要组件。 一、Overlay基础概念 1.1 什么是Overlay&#xff1f; Overlay是一种浮动在现有界面之上的视觉元素&#xff0c;具有以下特点&#xff1a; 临时显示&#xff0c;不影响底层布局 通…

iso17025证书申请方法?iso17025认证意义

ISO/IEC 17025证书申请方法 ISO/IEC 17025是检测和校准实验室能力的国际标准&#xff0c;申请CNAS认可的流程如下&#xff1a; 1. 前期准备 标准学习&#xff1a;深入理解ISO/IEC 17025:2017标准要求。 差距分析&#xff1a;评估现有实验室管理与技术能力与标准的差距。 制…

reverse3 1(Base加密)

题目 做法 下载安装包&#xff0c;解压&#xff0c;把解压后的文件拖进Exeinfo PE进行分析 32位&#xff0c;无壳 扔进IDA&#xff08;32位&#xff09;&#xff0c;找到main&#xff0c;F5反编译 只是因为在人群中多看了你一眼——第31行的right flag&#xff0c;关键词找到…

电控---CMSIS概览

1. CMSIS库简介 CMSIS&#xff08;Cortex Microcontroller Software Interface Standard&#xff0c;Cortex微控制器软件接口标准&#xff09;是由ARM公司开发的一套标准化软件接口&#xff0c;旨在为基于ARM Cortex-M系列处理器&#xff08;如Cortex-M0/M0/M3/M4/M7/M33等&am…

list.

列表类型是用来存储多个有序的字符串&#xff0c;列表中的每个字符串称为元素&#xff08;element&#xff09;&#xff0c;⼀个列表最多可以存储个元素 在 Redis 中&#xff0c;可以对列表两端插入&#xff08;push&#xff09;和弹出&#xff08;pop&#xff09;&#xff0c;…

关于Diamond机械手的运动学与动力学的推导

1.关于Diamond机械手 &#xff08;1&#xff09;位置模型推导 逆解&#xff1a;机械末端平台的位置与驱动关节之间的关系。 设p点在xy平面的坐标是&#xff08;x&#xff0c;y&#xff09;T&#xff0c;此时根据向量求解 OP等于向量r等于e向xy轴的向量主动臂长度向xy轴的向量…

如何新建一个空分支(不继承 master 或任何提交)

一、需求分析&#xff1a; 在 Git 中&#xff0c;我们通常通过 git branch 来新建分支&#xff0c;这些分支默认都会继承当前所在分支的提交记录。但有时候我们希望新建一个“完全干净”的分支 —— 没有任何提交&#xff0c;不继承 master 或任何已有内容&#xff0c;这该怎么…

Flask(补充内容)配置SSL 证书 实现 HTTPS 服务

没有加密的http服务&#xff0c;就像在裸泳&#xff0c;钻到水里便将你看个精光。数据在互联网上传输时&#xff0c;如果未经加密&#xff0c;随时可能被抓包软件抓住&#xff0c;里面的cookie、用户名、密码什么的&#xff0c;它会看得一清二楚&#xff0c;所以&#xff0c;只…

云服务器CVM标准型S5实例性能测评——2025腾讯云

腾讯云服务器CVM标准型S5实例具有稳定的计算性能&#xff0c;CPU采用采用 Intel Xeon Cascade Lake 或者 Intel Xeon Cooper Lake 处理器&#xff0c;主频2.5GHz&#xff0c;睿频3.1GHz&#xff0c;CPU内存配置2核2G、2核4G、4核8G、8核16G等配置&#xff0c;公网带宽可选1M、3…