[深度學習]利用Stable Diffusion輸入文字生成圖片

更新於 2024/07/21閱讀時間約 5 分鐘

本文下方連結的文章,利用Stable Diffusion生成512 * 512大小的圖片。

輸入的文字是 dog flying in space,此模型需輸入英文句子才會準確生成。

Stable Diffusion生成的圖片

Stable Diffusion生成的圖片


參考文獻

連結該作者在Hugging Face公開的模型去做使用。


本文是在Colab上執行。Python版本及套件版本

Python version: 3.10.12
diffusers version: 0.29.2
transformers version: 4.42.4
scipy version: 1.14.0

程式範例

1.安裝套件

!pip install --upgrade diffusers transformers scipy &> /dev/null

2. 程式碼

短短幾行程式碼,即可載入Stable Diffusion模型來生成圖片。

只要修改prompt就可以改變要生成的圖片。

import torch
from diffusers import StableDiffusionPipeline

#設定模型 ID 和設備
model_id = "CompVis/stable-diffusion-v1-4"
device = "cuda"

#載入模型
pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16)
pipe = pipe.to(device)
#torch_dtype=torch.float16 :單精度,較不佔記憶體

#生成圖像的描述
prompt = "dog flying in space"

#生成圖片
image = pipe(prompt).images[0] ##預設圖片大小:512*768
#儲存圖片
image.save("dog_flying_in_space.png")

'''
高度和寬度都是8的倍數
低於 512 可能會導致影像品質降低, 超過 512 會出現重複影像區域(遺失全域一致性)
非正方形影像最佳方法:一個維度為 512px,另一維度大於512px。
'''



程式碼詳細說明

  • 1. 導入相關套件
    import torch
    from diffusers import StableDiffusionPipeline
    • import torch:引入 PyTorch 庫,這是用於深度學習的熱門框架。
    • from diffusers import StableDiffusionPipeline:從 diffusers 庫中引入 StableDiffusionPipeline,這是用於圖像生成的管道。


  • 2. 設定模型和設備
    model_id = "CompVis/stable-diffusion-v1-4"
    device = "cuda"
    • model_id:指定要使用的模型 ID,此處是 CompVis/stable-diffusion-v1-4
    • device:此處設為 "cuda",表示使用 GPU。


  • 3. 載入模型
    # torch_dtype=torch.float16 :單精度,較不佔記憶體
    pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16)
    pipe = pipe.to(device)
    • StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16):從預訓練模型載入管道,並設定 torch_dtypetorch.float16。使用 float16 可以減少記憶體佔用。
    • 這行程式碼會從 Hugging Face 下載並載入 CompVis/stable-diffusion-v1-4 模型,然後你可以使用這個模型進行圖像生成任務。
    • pipe.to(device):指定設備(GPU)。


  • 4. 生成圖像
    prompt = "dog flying in space"

    # 預設圖片大小:512*768
    '''
    高度和寬度都是8的倍數
    低於 512 可能會導致影像品質降低, 超過 512 會出現重複影像區域(遺失全域一致性)
    非正方形影像最佳方法:一個維度為 512px,另一維度大於512px。
    '''
    image = pipe(prompt).images[0]
    • prompt = "dog flying in space":設置文本提示詞,這是生成圖像的描述。
    • image = pipe(prompt).images[0]:使用管道生成圖像。 pipe(prompt) 會返回一個結果對象, images[0] 表示取第一張生成的圖像。


  • 5. 保存圖像
    image.save("astronaut_rides_horse.png")
    • image.save("astronaut_rides_horse.png"):將生成的圖像保存為 astronaut_rides_horse.png 文件。


若要在本地端跑,需確保是有網路的,才可以從Hugging Face 下載並載入模型喔







avatar-img
128會員
209內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
螃蟹_crab的沙龍 的其他內容
長短期記憶(英語:Long Short-Term Memory,LSTM)是一種時間循環神經網路(RNN),論文首次發表於1997年。 LSTM(長短期記憶)是一種特定類型的遞歸神經網絡(RNN),在許多需要處理時間序列數據或順序數據的應用中非常有用。 以下是一些常見的 LSTM 應用:
先前上一篇是使用NLT內置的電影評論數據集 movie_reviews,來訓練出情感分析模型,此篇文章介紹可以導入自己的訓練資料集來建立情感分析模組。 [Python][自然語言]NLTK 實現電影評論情感分析 所需套件 pip install pandas pip install sci
情感分析是一種自然語言處理技術,用於自動識別和分析文本中的情感傾向,通常是正向、負向或中性。 我們可以使用 NLTK 來實現一個基於單純貝斯分類器的情感分析模型。
本文介紹了流行的Python套件NLTK(Natural Language Toolkit)的主要特點、功能和在中文和英文語料上的應用。從安裝到實際應用,深入介紹了分詞、停用詞去除、詞性標註、命名實體識別等NLP任務的具體實現和步驟,幫助讀者理解和應用NLTK。
本文利用pyqt5,使用pyttsx3將QLineEdit(單行輸入框)的字串,轉成語音呈現出來。
本文主要使用SpeechRecognition來做一個簡單的語音辨識,使用pyqt5介面呈現。 按下Start Recording,開始錄音,並顯示請開始說話。然後按鈕名改名Stop 在按下Stop Recording,稍等片刻後就會呈現出辨識結果​ 程式範例 import sys i
長短期記憶(英語:Long Short-Term Memory,LSTM)是一種時間循環神經網路(RNN),論文首次發表於1997年。 LSTM(長短期記憶)是一種特定類型的遞歸神經網絡(RNN),在許多需要處理時間序列數據或順序數據的應用中非常有用。 以下是一些常見的 LSTM 應用:
先前上一篇是使用NLT內置的電影評論數據集 movie_reviews,來訓練出情感分析模型,此篇文章介紹可以導入自己的訓練資料集來建立情感分析模組。 [Python][自然語言]NLTK 實現電影評論情感分析 所需套件 pip install pandas pip install sci
情感分析是一種自然語言處理技術,用於自動識別和分析文本中的情感傾向,通常是正向、負向或中性。 我們可以使用 NLTK 來實現一個基於單純貝斯分類器的情感分析模型。
本文介紹了流行的Python套件NLTK(Natural Language Toolkit)的主要特點、功能和在中文和英文語料上的應用。從安裝到實際應用,深入介紹了分詞、停用詞去除、詞性標註、命名實體識別等NLP任務的具體實現和步驟,幫助讀者理解和應用NLTK。
本文利用pyqt5,使用pyttsx3將QLineEdit(單行輸入框)的字串,轉成語音呈現出來。
本文主要使用SpeechRecognition來做一個簡單的語音辨識,使用pyqt5介面呈現。 按下Start Recording,開始錄音,並顯示請開始說話。然後按鈕名改名Stop 在按下Stop Recording,稍等片刻後就會呈現出辨識結果​ 程式範例 import sys i
你可能也想看
Google News 追蹤
Thumbnail
本文探討了複利效應的重要性,並藉由巴菲特的投資理念,說明如何選擇穩定產生正報酬的資產及長期持有的核心理念。透過定期定額的投資方式,不僅能減少情緒影響,還能持續參與全球股市的發展。此外,文中介紹了使用國泰 Cube App 的便利性及低手續費,幫助投資者簡化投資流程,達成長期穩定增長的財務目標。
Thumbnail
在現今少子化的時代,提升學習效率至關重要。卡爾·紐波特的書《DEEP WORK深度工作力》提供了有效的時間管理和學習策略,能夠幫助我們在競爭激烈的社會中脫穎而出。書中介紹的學習方法和策略,不僅適用於大學生,也可應用在日常生活中,幫助我們擁有良好的學習力,增進生活效率。
Thumbnail
本文介紹了self-attention在處理不固定大小輸入值時的應用,並討論瞭如何計算self-attention以及transformer中的multi-head self-attention。此外,文章還探討了在語音辨識和圖片處理中使用self-attention的方法,以及與CNN的比較。
Thumbnail
這本書訪談了大學學生,並且歸納出幾點建議,書中也提到不必每條條都嚴格遵守,而是選擇一組吸引你的規則,並在大學生活中履行。 我自己在看這本書的時候,結合自己的大學經歷,選取幾點我比較有感觸的部分,分為以下幾點,後面則會提到一些關於書中內容反思
Thumbnail
透過麗鳳督導在心理諮商上的應用,能夠讓我們看待個案問題時有了全新的視角。學理論要浸泡到自動化思考,分析個案時需要考慮家庭結構、互動關係和人際界線等重要元素。此外,心理諮商師需用關係去理解表徵問題,並運用大量的探問與對話,從而從症狀到系統的探索。
Thumbnail
不是只是硬記硬背,而是要用對方法。學習,不分年紀,不分時候,我們隨時都在學習,但有良好的學習技能,像故事/小說書中,電影裡那些擁有超能力的人一樣,可以在自己想學的技能中,一眼就記住,過目不忘的技能,如果擁有或許也是一件不錯的事,但切換到現實,我們認真學習,雖然也能記住,但所要花費的時間成本...
深度學習是機器學習的一個分支,它使用多層神經網絡來模擬和解決複雜的問題。有許多不同的深度學習框架可供選擇,這些框架提供了用於訓練神經網絡的工具和函數。以下是一些常用的深度學習框架的簡介: TensorFlow: TensorFlow由Google開發,是最流行的深度學習框架之一。它具有靈活的計算
Thumbnail
如何與錯誤打交道,就是對於自身的錯誤的察覺,又或者是對於所學的知識正確性如何思辨。 大家好,今天我們來談談「第二層思考」。這是一個相當重要的概念,尤其在現代社會中,我們需要面對各種各樣的資訊和知識,但有時候這些資訊和知識並不是那麼正確。所以,我們必須學會用第二層思考去判斷和分析這些資訊和知識。 首先
Thumbnail
師範大學的 陳佩英 教授來訪均一! 讓我們有機會向教授請益有關個人化學習的前瞻發展可能性。 教授很親切給予我們許多建言與引導,聽完教授的回饋,有三個小心得: 真的覺得自己懂得不過廣泛,也不夠深啊! 2. 也很喜歡教授提醒我們要注意工具背後的教育理念。 a. 特別是對非認知能力的評量,不能用行為主義來
Thumbnail
是什麼讓一個人的成長速度比另一個人更快呢? 《深度學習的技術》的作者楊大輝的答案是:學習的深淺。
Thumbnail
學習如何學習(拓、活) 繼上一篇談到「記、懂、網」之後,讓我們再續談「拓」。在拓篇,我們將要增加知識的品質。而在本篇的最後一節「活」篇,則是探討到學習的管道。 所以,在讀這篇文章時,你也可以反過來,先拉到最下面的「活」篇,掌握正確的學習管道之後,你再回來這裡,將知識依照順序加工
Thumbnail
本文探討了複利效應的重要性,並藉由巴菲特的投資理念,說明如何選擇穩定產生正報酬的資產及長期持有的核心理念。透過定期定額的投資方式,不僅能減少情緒影響,還能持續參與全球股市的發展。此外,文中介紹了使用國泰 Cube App 的便利性及低手續費,幫助投資者簡化投資流程,達成長期穩定增長的財務目標。
Thumbnail
在現今少子化的時代,提升學習效率至關重要。卡爾·紐波特的書《DEEP WORK深度工作力》提供了有效的時間管理和學習策略,能夠幫助我們在競爭激烈的社會中脫穎而出。書中介紹的學習方法和策略,不僅適用於大學生,也可應用在日常生活中,幫助我們擁有良好的學習力,增進生活效率。
Thumbnail
本文介紹了self-attention在處理不固定大小輸入值時的應用,並討論瞭如何計算self-attention以及transformer中的multi-head self-attention。此外,文章還探討了在語音辨識和圖片處理中使用self-attention的方法,以及與CNN的比較。
Thumbnail
這本書訪談了大學學生,並且歸納出幾點建議,書中也提到不必每條條都嚴格遵守,而是選擇一組吸引你的規則,並在大學生活中履行。 我自己在看這本書的時候,結合自己的大學經歷,選取幾點我比較有感觸的部分,分為以下幾點,後面則會提到一些關於書中內容反思
Thumbnail
透過麗鳳督導在心理諮商上的應用,能夠讓我們看待個案問題時有了全新的視角。學理論要浸泡到自動化思考,分析個案時需要考慮家庭結構、互動關係和人際界線等重要元素。此外,心理諮商師需用關係去理解表徵問題,並運用大量的探問與對話,從而從症狀到系統的探索。
Thumbnail
不是只是硬記硬背,而是要用對方法。學習,不分年紀,不分時候,我們隨時都在學習,但有良好的學習技能,像故事/小說書中,電影裡那些擁有超能力的人一樣,可以在自己想學的技能中,一眼就記住,過目不忘的技能,如果擁有或許也是一件不錯的事,但切換到現實,我們認真學習,雖然也能記住,但所要花費的時間成本...
深度學習是機器學習的一個分支,它使用多層神經網絡來模擬和解決複雜的問題。有許多不同的深度學習框架可供選擇,這些框架提供了用於訓練神經網絡的工具和函數。以下是一些常用的深度學習框架的簡介: TensorFlow: TensorFlow由Google開發,是最流行的深度學習框架之一。它具有靈活的計算
Thumbnail
如何與錯誤打交道,就是對於自身的錯誤的察覺,又或者是對於所學的知識正確性如何思辨。 大家好,今天我們來談談「第二層思考」。這是一個相當重要的概念,尤其在現代社會中,我們需要面對各種各樣的資訊和知識,但有時候這些資訊和知識並不是那麼正確。所以,我們必須學會用第二層思考去判斷和分析這些資訊和知識。 首先
Thumbnail
師範大學的 陳佩英 教授來訪均一! 讓我們有機會向教授請益有關個人化學習的前瞻發展可能性。 教授很親切給予我們許多建言與引導,聽完教授的回饋,有三個小心得: 真的覺得自己懂得不過廣泛,也不夠深啊! 2. 也很喜歡教授提醒我們要注意工具背後的教育理念。 a. 特別是對非認知能力的評量,不能用行為主義來
Thumbnail
是什麼讓一個人的成長速度比另一個人更快呢? 《深度學習的技術》的作者楊大輝的答案是:學習的深淺。
Thumbnail
學習如何學習(拓、活) 繼上一篇談到「記、懂、網」之後,讓我們再續談「拓」。在拓篇,我們將要增加知識的品質。而在本篇的最後一節「活」篇,則是探討到學習的管道。 所以,在讀這篇文章時,你也可以反過來,先拉到最下面的「活」篇,掌握正確的學習管道之後,你再回來這裡,將知識依照順序加工