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.pswp.cn/pingmian/77178.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/77178.shtml
英文地址,請注明出處:http://en.pswp.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…