VL開源模型實現文本生成圖片

一、?基礎知識

根據描述生成圖片的視覺-語言模型(Vision-Language Models, VL 模型)是近年來多模態生成領域的熱點研究方向。這些模型能夠根據自然語言描述生成高質量的圖像,廣泛應用于藝術創作、設計輔助、虛擬場景構建等領域。

1??根據描述生成圖片的 VL 模型

1.1 DALL·E 系列

模型簡介

  • DALL·E:由 OpenAI 提出,基于 GPT-3 架構,能夠根據文本描述生成高質量的圖像。

  • DALL·E 2:DALL·E 的升級版,生成圖像的分辨率和質量更高,支持更復雜的文本描述。

特點

  • 支持零樣本生成(Zero-Shot Generation)。

  • 能夠生成高度符合文本描述的圖像。

  • 支持圖像編輯(如修改圖像中的特定部分)。

應用場景

  • 藝術創作、廣告設計、虛擬場景構建等。

?1.2?Stable Diffusion

模型簡介

  • 由 Stability AI 提出,基于擴散模型(Diffusion Model),能夠根據文本描述生成高質量的圖像。

  • 開源且可定制,支持用戶訓練自己的模型。

特點

  • 生成圖像的分辨率高,細節豐富。

  • 支持文本到圖像生成、圖像修復、圖像編輯等多種任務。

  • 計算效率較高,適合在消費級硬件上運行。

應用場景

  • 藝術創作、游戲設計、個性化內容生成等。

3. Imagen

模型簡介

  • 由 Google 提出,基于擴散模型和大型語言模型(如 T5),能夠根據文本描述生成高質量的圖像。

  • 強調文本理解的準確性和圖像生成的真實性。

特點

  • 生成圖像的質量極高,細節逼真。

  • 支持復雜的文本描述。

  • 在文本-圖像對齊方面表現優異。

應用場景

  • 廣告設計、虛擬場景構建、教育輔助等。

4. CogView

模型簡介

  • 由清華大學提出,基于 Transformer 架構,專門用于文本到圖像生成。

  • 支持中文和英文文本描述。

特點

  • 對中文文本的支持較好。

  • 生成圖像的分辨率較高。

  • 支持多種風格的圖像生成。

應用場景

  • 中文內容創作、廣告設計、教育輔助等。

5. MidJourney

模型簡介

  • 由 MidJourney 團隊開發,專注于藝術風格的文本到圖像生成。

  • 通過 Discord 平臺提供服務,用戶可以通過文本指令生成圖像。

特點

  • 生成圖像具有獨特的藝術風格。

  • 支持多種藝術風格(如油畫、水彩、科幻等)。

  • 用戶交互友好,適合非技術用戶使用。

應用場景

  • 藝術創作、個性化內容生成、社交媒體等。

6. Parti (Pathways Autoregressive Text-to-Image)

模型簡介

  • 由 Google 提出,基于自回歸模型(Autoregressive Model),能夠根據文本描述生成高質量的圖像。

  • 強調生成圖像的多樣性和文本-圖像對齊能力。

特點

  • 支持長文本描述。

  • 生成圖像的多樣性高。

  • 在復雜場景生成方面表現優異。

應用場景

  • 廣告設計、虛擬場景構建、教育輔助等。

7. Make-A-Scene

模型簡介

  • 由 Meta (Facebook) 提出,結合文本描述和用戶繪制的草圖生成圖像。

  • 強調用戶控制和生成圖像的細節。

特點

  • 支持用戶通過草圖控制生成圖像的布局。

  • 生成圖像的細節豐富。

  • 適合需要高精度控制的應用場景。

應用場景

  • 藝術創作、設計輔助、虛擬場景構建等。

示例

  • 輸入:文本?"A forest with a river running through it."?和用戶繪制的草圖。

  • 輸出:一張符合描述和草圖的森林河流圖片。

8. VQGAN+CLIP

模型簡介

  • 結合 VQGAN(一種生成對抗網絡)和 CLIP(一種視覺-語言模型),能夠根據文本描述生成圖像。

  • 開源且易于定制。

特點

  • 生成圖像的風格多樣。

  • 支持用戶自定義生成過程。

  • 計算資源需求較低。

應用場景

  • 藝術創作、個性化內容生成、社交媒體等。

2. 各模型需要的計算資源?

模型名稱計算需求備注
DALL·E 系列需要大規模 GPU 集群,適合在云端運行。
Stable Diffusion中等可以在消費級 GPU 上運行,但高分辨率生成仍需較強算力。
Imagen基于大規模語言模型和擴散模型,計算需求較高。
CogView中等至高基于 Transformer,生成高分辨率圖像時需要較強算力。
MidJourney中等通過云端服務提供,用戶無需本地計算,但對服務器算力需求較高。
Parti基于自回歸模型,生成高質量圖像需要大量計算資源。
Make-A-Scene中等至高結合用戶輸入和生成模型,計算需求較高。
VQGAN+CLIP可以在消費級 GPU 甚至 CPU 上運行,計算需求最低。

二、VQGAN+CLIP 的使用示例

1. 前期準備:

1. 安裝依賴

pip install torch torchvision ftfy regex tqdm clip
pip install torch torchvision
pip install taming-transformers

pip install pytorch_lightning==1.9.4? (taming-transformers?依賴于?pytorch_lightning

pip install git+https://github.com/openai/CLIP.git

2. 模型僅支持英文,若需要其他語言,需要安裝多語言庫(用于把其他語言轉化成英文):

pip install multilingual-clip

2. 下載模型參數和配置:

2.1 模型權重?

  • vqgan_imagenet_f16_16384.ckpt
  • vqgan_imagenet_f16_1024.ckpt

2.2 VQGAN 配置文件: vqgan_imagenet_f16_16384.yaml?

  • vqgan_imagenet_f16_16384.yaml
  • vqgan_imagenet_f16_1024.yaml

3. 代碼

import torch
import clip
from omegaconf import OmegaConf
from pytorch_lightning.callbacks import ModelCheckpoint
from taming.models.vqgan import VQModel
from torchvision import transforms
from torchvision.transforms.functional import to_pil_image# 加載 VQGAN 模型
def load_vqgan_model(config_path, model_path, device="cuda"):"""加載 VQGAN 模型:param config_path: VQGAN 配置文件的路徑:param model_path: VQGAN 模型權重的路徑:param device: 模型運行的設備(如 "cuda" 或 "cpu"):return: 加載好的 VQGAN 模型"""# 加載配置文件config = OmegaConf.load(config_path)# 初始化 VQGAN 模型model = VQModel(**config.model.params)# 將 ModelCheckpoint 添加到允許的全局變量列表中torch.serialization.add_safe_globals([ModelCheckpoint])# 加載模型權重,資源有限可以使用參數量小的模型state_dict = torch.load(model_path, map_location="cpu")["state_dict"]model.load_state_dict(state_dict, strict=True)# 將模型移動到指定設備model = model.to(device)model.eval()  # 設置為評估模式return model# 加載 CLIP 模型
device = "cuda" if torch.cuda.is_available() else "cpu"
clip_model, preprocess = clip.load("ViT-B/32", device=device)# 加載 VQGAN 模型
config_path = "vqgan_imagenet_f16_16384.yaml"  # 配置文件路徑
model_path = "vqgan_imagenet_f16_16384.ckpt"  # 模型權重路徑
vqgan_model = load_vqgan_model(config_path, model_path, device=device)# 定義文本描述
text_description = "A futuristic cityscape at night with neon lights"# 使用 CLIP 生成文本特征
text = clip.tokenize([text_description]).to(device)
with torch.no_grad():text_features = clip_model.encode_text(text)# 使用 VQGAN 生成圖像
# 注意:VQGAN 本身不支持直接根據文本特征生成圖像,需要結合其他方法(如優化過程)
# 計算資源有限的情況可以把num_steps調小一點50,image_size調小128
def generate_from_text_features(model, text_features, num_steps=50, image_size=128):"""根據文本特征生成圖像(示例代碼,需要結合優化過程):param model: VQGAN 模型:param text_features: 文本特征:param num_steps: 優化步數:param image_size: 生成圖像的大小:return: 生成的圖像(PIL 圖像)"""# 初始化隨機噪聲圖像noise = torch.randn(1, 3, image_size, image_size).to(device)noise.requires_grad_(True)# 優化器optimizer = torch.optim.Adam([noise], lr=0.01)# 優化過程for step in range(num_steps):optimizer.zero_grad()# 使用 VQGAN 編碼和解碼噪聲圖像quantized, _, _ = model.encode(noise)reconstructed_image = model.decode(quantized)# 將張量轉換為 PIL 圖像reconstructed_image_pil = to_pil_image(reconstructed_image.squeeze(0).cpu())  # 移除 batch 維度并轉換為 PIL 圖像# 使用 CLIP 的預處理函數preprocessed_image = preprocess(reconstructed_image_pil).unsqueeze(0).to(device)  # 添加 batch 維度并移動到設備# 使用 CLIP 提取圖像特征image_features = clip_model.encode_image(preprocessed_image)# 計算損失(假設使用 CLIP 的相似度作為損失)loss = -torch.cosine_similarity(text_features, image_features).mean()# 反向傳播和優化loss.backward()optimizer.step()print(f"Step {step + 1}/{num_steps}, Loss: {loss.item()}")# 將生成的圖像轉換為 PIL 圖像generated_image = torch.clamp(reconstructed_image, -1, 1)  # 限制值范圍generated_image = (generated_image + 1) / 2  # 反歸一化到 [0, 1]generated_image = generated_image.squeeze(0).cpu()  # 移除 batch 維度并移動到 CPUreturn transforms.ToPILImage()(generated_image)# 生成圖像
generated_image = generate_from_text_features(vqgan_model, text_features)# 保存生成的圖像
generated_image.save("generated_cityscape.png")

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/74077.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/74077.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/74077.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Java SE】抽象類/方法、模板設計模式

目錄 1.抽象類/方法 1.1 基本介紹 1.2 語法格式 1.3 使用細節 2. 模板設計模式(抽象類使用場景) 2.1 基本介紹 2.2 具體例子 1.抽象類/方法 1.1 基本介紹 ① 當父類的某些方法,需要聲明,但是又不確定如何實現時&#xff…

【人工智能】LM Studio 的 GPU 加速:釋放大模型推理潛能的極致優化

《Python OpenCV從菜鳥到高手》帶你進入圖像處理與計算機視覺的大門! 解鎖Python編程的無限可能:《奇妙的Python》帶你漫游代碼世界 隨著大語言模型(LLM)的廣泛應用,其推理效率成為限制性能的關鍵瓶頸。LM Studio 作為一個輕量級機器學習框架,通過 GPU 加速顯著提升了大…

深度學習:從零開始的DeepSeek-R1-Distill有監督微調訓練實戰(SFT)

原文鏈接:從零開始的DeepSeek微調訓練實戰(SFT) 微調參考示例:由unsloth官方提供https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Qwen2.5_(7B)-Alpaca.ipynbhttps://colab.research.google.com/git…

流暢如絲:利用requestAnimationFrame優化你的Web動畫體驗

requestAnimationFrame 是前端開發中用于優化動畫性能的 API。它允許瀏覽器在下一次重繪之前執行指定的回調函數,通常用于實現平滑的動畫效果。 1.作用 優化性能:requestAnimationFrame 會根據瀏覽器的刷新率(通常是 60Hz,即每秒…

【pytest框架源碼分析五】pytest插件的注冊流程

前文介紹到pytest整體是運用插件來實現其運行流程的。這里仔細介紹下具體過程。 首先進入main方法 def main(args: list[str] | os.PathLike[str] | None None,plugins: Sequence[str | _PluggyPlugin] | None None, ) -> int | ExitCode:"""Perform an i…

IoTDB日志提示Too many open files

問題 時序數據庫 IoTDB 1.3.3 版本 IoTDB 執行查詢操作失敗,日志打印提示 Too many open files。通過命令查看打開文件數,結果如下: [root0002 DataReceiver]# lsof|grep 28347|wc -l DataNode 55444 [root0002 DataReceiver]# lsof|g…

prometheus 添加alertmanager添加dingtalk機器人告警

1、dingtalk創建機器人,目前我們采用加白名單的方式校驗 2、定位到如下圖 test結果如下

C 語 言 --- 操 作 符 2

C 語 言 --- 操 作 符 2 移 位 操 作 符定 義原 碼 補 碼 和 反 碼左 移&#xff08;<<&#xff09;右 移&#xff08;>>&#xff09;算 術 右 移邏 輯 右 移 按 位 與、按 位 或、和 按 位 異 或按 位 與按 位 或按 位 異 或 邏 輯 反 操 作負 值 操 作按 位 取 反…

基于Spring Boot的公司資產網站的設計與實現(LW+源碼+講解)

專注于大學生項目實戰開發,講解,畢業答疑輔導&#xff0c;歡迎高校老師/同行前輩交流合作?。 技術范圍&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容&#xff1a;…

零碳工廠能源管理系統的核心技術與應用實踐

零碳工廠能源管理系統是一種高效的解決方案&#xff0c;旨在優化能源使用并減少碳排放&#xff0c;以幫助工廠實現低碳或零碳的生產目標。以下是該系統的詳細構成和功能&#xff1a; 1. 核心組件 傳感器和監測設備&#xff1a;用于實時監測工廠內的能源使用情況&#xff0c;包…

美攝接入DeepSeek等大模型,用多模態融合重構視頻創作新邊界!

今年以來&#xff0c;DeepSeek憑借其強大的深度推理分析能力&#xff0c;在AI領域掀起新的熱潮。美攝科技快速響應市場需求&#xff0c;迅速接入以DeepSeek、通義千問、商湯、文心一言為代表的大模型&#xff0c;為企業視頻創作生產帶來全新體驗。 傳統視頻創作面臨著同質化、…

JAVA————十五萬字匯總

JAVA語言概述 JAVA語句結構 JAVA面向對象程序設計&#xff08;一&#xff09; JAVA面向對象程序設計&#xff08;二&#xff09; JAVA面向對象程序設計&#xff08;三&#xff09;工具類的實現 JAVA面向對象程序設計&#xff08;四&#xff09;錄入異常處理 JAVA圖形用戶界面設…

力扣熱題100(方便自己復習,自用)

力扣熱題100 1. 兩數之和 - 力扣&#xff08;LeetCode&#xff09; 查找兩數之和是不是等于target也就是我們找到一個數之后&#xff0c;用target將其減掉&#xff0c;再尋找應當對應的元素是什么每找到一個數&#xff0c;我們就將其放在集合中&#xff0c;因為集合中可以去重…

【yolo】yolo訓練報錯,以及解決方案

背景&#xff1a; 剛剛&#xff0c;寫了《【yolo】yolo推理報錯&#xff0c;以及解決方案》&#xff0c;馬上訓練就遇到類似的報錯。 我對我標注的圖像進行了300輪的訓練&#xff0c;但是訓練完300輪后&#xff0c;報錯了。。。 報錯信息 300 epochs completed in 0.085 hou…

vscode/cursor中python運行路徑設置 模塊導入問題

vscode/cursor中python運行路徑設置 ## 文件路徑設置 問題描述 pycharm的項目用cursor運行&#xff0c;出現目錄找不到 后來利用 os.getcwd()&#xff0c;經過打印調試發現是IDE的本身配置問題 pycharm中&#xff0c;os.getcwd()默認打開當前腳本所在目錄 vscode/cursor中…

理解線性動力學中的模態疊加法

線性動力學中的模態疊加方法 模態疊加法是線性動力學中一種有價值的工具&#xff0c;可以有效地確定頻域或時域中的系統響應。對于某些類型的線性動力學分析&#xff0c;有必要使用此方法&#xff0c;因此了解該過程對于獲得準確的結果至關重要。在本博客中&#xff0c;我們將…

報錯 - redis - Unit redis.service could not be found.

報錯&#xff1a; Unit redis.service could not be found.Could not connect to Redis at 127.0.0.1:6379: Connection refused解決方法&#xff1a; 檢查狀態、有必要的話 重新安裝 Linux 上查看狀態 systemctl status redis顯示以下內容&#xff0c;代表正常服務 出現下面…

CMS網站模板定制設計與安全評估

內容概要 現代CMS&#xff08;內容管理系統&#xff09;作為網站建設的核心載體&#xff0c;其模板架構與安全防護體系的協同設計已成為企業數字化轉型的關鍵環節。隨著網絡攻擊向量日益復雜化&#xff0c;基于HTTPS協議的端到端加密部署不僅成為基礎安全配置&#xff0c;更直…

【React】useEffect、useLayoutEffect底層機制

目錄 useEffect不設置依賴設置空數組&#xff0c;無依賴設置多個依賴返回值是一個函數總結useEffect的使用環境useEffect 中發送請求錯誤示例用.then獲取數據在useEffect創建一個函數 總結 useLayoutEffectuseLayoutEffect 和useEffect區別執行時機&#xff1a;瀏覽器渲染的關系…

深度解析學術論文成果評估(Artifact Evaluation):從歷史到現狀

深度解析學術論文成果評估(Artifact Evaluation)&#xff1a;從歷史到現狀 引言 在計算機科學和工程領域的學術研究中&#xff0c;可重復性和可驗證性越來越受到重視。隨著實驗性研究的復雜性不斷增加&#xff0c;確保研究成果可以被其他研究者驗證和構建變得尤為重要。這一需…