不看后悔圖片程序(圖片程序代碼)
這是后悔一款通過 Docker 和八十行左右的 Python 代碼,實現一款類似 Midjourney 官方圖片解析功能 Describe 的圖片圖片 Pr
.jpg)
聲明:本文轉載自蘇洋大佬博客內文章,可有效轉載注明原文鏈接原文鏈接https://soulteary.com/2023/04/05/eighty-lines-of-code-to-implement-the-open-source-midjourney-and-stable-diffusion-spell-drawing-tool.html
這是程序程序一款通過 Docker 和八十行左右的 Python 代碼,實現一款類似 Midjourney 官方圖片解析功能 Describe 的代碼 Prompt 工具讓你在玩 Midjourney、Stable Diffusion 這類模型時,后悔不再為生成 Prompt 描述撓頭。圖片圖片
▍"咒語"做圖工具簡介該工具提供兩個版本,程序程序分別支持 CPU 和 GPU 推理使用,代碼如果你有一張大于 8GB 顯存的后悔顯卡,可以愉快的圖片圖片使用全部的功能,如果你只有 CPU,程序程序那么也可以使用 CPU 版本的代碼應用來進行偷懶。
Github:https://github.com/soulteary/docker-prompt-generator
“咒語”做圖工具項目該工具是由作者蘇洋開發而后開源的,作者本人開發這個工具最初的圖片圖片想法也是為了一個宗旨:“方便且快”,俗稱“懶”,程序程序作者原話是這樣說的:“昨晚在玩 Midjourney 的時候,在想 Prompt 的時候,想到撓頭。
作為一個懶人,計上心頭:能不能讓模型幫我生成 Prompt 呢,輸入一些關鍵詞或者句子,然后讓程序幫助我完成完整的 Prompt 內容(俗話:文生文)”而恰在此時Midjourney 官方又發布了新功能,“describe”,支持解析圖片為幾段不同的 Prompt 文本,并支持繼續進行圖片生成。
(俗話:圖生文,然后文生圖)
Midjourney 官方的“圖生文”功能:describe這個功能給了大多人人,甚至行業外的人,更多的體驗對于懶人體驗也非常好但是官方肯定不會開源此功能,所以蘇洋大佬靈機一動,就有了開發這款工具的初衷。
▍“作圖咒語生成器” 的使用為了更快的上手和使用到這個工具,我們需要先完成環境的配置應用和 Docker 環境準備基于 Docker 和 Nvidia 官方基礎容器的深度學習環境《基于 Docker 的深度學習環境(入門篇)》-作者:蘇洋。
https://soulteary.com/2023/03/22/docker-based-deep-learning-environment-getting-started.html純 CPU 也是可以上手的:《在搭載 M1 及 M2 芯片 MacBook設備上玩 Stable Diffusion 模型》-作者:蘇洋
https://soulteary.com/2022/12/10/play-the-stable-diffusion-model-on-macbook-devices-with-m1-and-m2-chips.html
在準備好 Docker 環境的配置之后,我們就可以繼續玩啦我們隨便找一個合適的目錄,使用 git clone 或者下載 Zip 壓縮包的方式,先把“Docker Prompt Generator(Docker 作圖咒語生成器)”項目的代碼下載到本地。
git clone https://github.com/soulteary/docker-prompt-generator.git# or curl -sL -o docker-prompt-generator.zip https:
//github.com/soulteary/docker-prompt-generator/archive/refs/heads/main.zip接著,進入項目目錄,使用 Nvidia 原廠的 PyTorch Docker 基礎鏡像來完成基礎環境的構建,相比于我們直接從 DockerHub 拉制作好的鏡像,自行構建將能節約大量時間。
我們在項目目錄中執行下面的命令,就能夠完成應用模型應用的構建啦:# 構建基礎鏡像dockerbuild -t soulteary/prompt-generator:base . -f docker/Dockerfile.base
# 構建 CPU 應用dockerbuild -t soulteary/prompt-generator:cpu . -f docker/Dockerfile.cpu # 構建 GPU 應用docker
build -t soulteary/prompt-generator:gpu . -f docker/Dockerfile.gpu然后,根據你的硬件環境,選擇性執行下面的命令,就能夠啟動一個帶有 Web UI 界面的模型應用啦。
# 運行 CPU 鏡像 docker run --gpus all --ipc=host --ulimit memlock=-1 --ulimit stack=67108864 --rm -it -p 7860:7860 soulteary/prompt-generator:cpu
# 運行 GPU 鏡像 docker run --gpus all --ipc=host --ulimit memlock=-1 --ulimit stack=67108864 --rm -it -p 7860:7860 soulteary/prompt-generator:gpu
我們在瀏覽器中輸入運行容器的宿主機的 IP 地址,就能夠開始使用工具啦使用工具工具的使用,非常簡單,分別有使用“圖片生成描述”和使用“文本生成描述”兩種我找了一張之前模型生成的圖片,然后將這張圖片喂給這個程序,點擊按鈕,就能獲得圖片的描述文本啦。
將圖片解析為描述文本我們可以在 Midjourney 或者 Stable Diffusion 中,直接使用這段文本來繼續生成圖片,或者使用“從文本中生成”,來擴展內容,讓內容更適合 Midjourney 這類應用。
為了體現工具的中文翻譯和續寫能力,我們單獨寫一段簡單的中文描述:“一只小鳥立梢頭,一輪明月當空照,一片黃葉鋪枝頭”。
使用中文生成圖片生成“咒語”(描述)可以看到,基于我們的輸入內容,生成了非常多不同的文本。想要驗證文本內容是否符合原意,我們可以將內容粘貼到 Midjourney 中進行測試。
使用上面兩段文本來生成圖片因為模型存在隨機性,如果想要得到更好的結果,還需要對描述進行更多的調整優化,不過,看起來工具解析圖片,生成的描述,其實是能夠做到開箱即用的,而根據我們的三言兩語生成的文本,也生成出了符合要求的圖片。
這次試驗中相對好的結果▍模型應用功能實現下面是工具的實現流程和思考,如果你想學習或快速使用開源模型項目來構建你的 AI 容器應用,可以繼續瀏覽應用功能設計在“動手”前,我們需要先明確功能設計,以及考慮使用什么樣的技術來做具體功能的技術支撐。
在我日常使用 Stable Diffusion、Midjourney 的過程中,時常有三個場景撓頭:我只有一些關鍵詞,需要發揮想象力把關鍵詞串起來,然后喂給模型應用如果描述內容不夠好,或者關鍵詞之間的關聯比較遠,那么圖片的生成效果就不會特別好。
我有一張圖片,想讓模型圍繞圖片中的內容,比如:構圖、某些元素、情感等進行二次創作,而不是簡單的做圖片中的元素替換我更習慣使用中文做描述,而不是英文,但是目前模型生成圖片,想要好的效果,需要使用英文,總是借助翻譯工具,切換程序界面或者網頁,還是挺麻煩的。
解決第一個問題,我們可以使用最近火爆出圈的 GPT-4 的前輩的前輩:GPT-2 其實就能夠滿足需求,將內容(一句話、幾個關鍵詞)進行快速續寫相比較使用 GPT-3 / GPT-4,無需聯網,也無需付費,模型文件更是“便宜大碗”,用 CPU 就能跑起來。
解決第二個問題,我們可以使用 OpenAI 在一年前推出的 CLIP 神經網絡模型,以及 Salesforce 推出的 BLIP ,能夠從圖片中抽取出最合適的描述文本,讓我們用在新的 AIGC 圖片生成任務中。
稍作優化調整,我們只需要大概使用 6~8GB 顯存就能將這部分功能的模型跑起來解決第三個問題,我們可以使用赫爾辛基大學開源的 OPUS MT 模型,實現將中文翻譯為英文,進一步偷懶,以及解決上面兩類原始模型不支持中文輸入的問題。
因為前兩個場景問題中的模型不支持中文,而我又是一個懶人,不想輸入英文來玩圖,所以我們先來解決第三個問題,讓整個應用實現流程更絲滑中文 Prompt 翻譯為英文 Prompt 功能想要實現第一個懶人功能,從用戶輸入的中文內容中,自動生成英文,我們需要使用中英雙語的翻譯模型。
赫爾辛基大學的開源組織將預訓練模型開放在了 HuggingFace 社區,Helsinki-NLP/opus-mt-zh-en我們可以通過寫十五行簡單的 Python 代碼,來完成模型文件的下載,以及實現將中文自動轉換為合適的英文內容的功能。
比如下面的例子中,程序運行完畢,將輸出《火影忍者》中的金句“青春不能回頭,所以青春沒有終點”的譯文from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
import torch model = AutoModelForSeq2SeqLM.from_pretrained("Helsinki-NLP/opus-mt-zh-en").eval() tokenizer = AutoTokenizer.from_pretrained(
"Helsinki-NLP/opus-mt-zh-en") deftranslate(text):with torch.no_grad(): encoded = tokenizer([text], return_tensors=
"pt") sequences = model.generate(**encoded) return tokenizer.batch_decode(sequences, skip_special_tokens=
True)[0] input = "青春不能回頭,所以青春沒有終點 ——《火影忍者》" print(input, translate(input))將上面的代碼保存為 translate.py,然后執行 python translate.py,等待模型下載完畢,我們將得到類似下面的結果:。
青春不能回頭,所以青春沒有終點 Youth cant turn back, so theres no end to youth.是不是看起來還不錯?這部分代碼保存在了項目中的 soulteary/docker-prompt-generator/app/translate.py。
接下來,我們來實現 Prompt “免費續杯”(有邏輯續寫)功能實現 MidJourney Prompt 續寫功能基于一些內容,進行繼續的內容生成,是生成類模型的看家本領,比如大家已經熟悉的不能再熟悉的 ChatGPT 背后的 GPT 模型系列。
作者也找到了一個 Google 離職創業的“國外大姐” 基于 GPT-2 使用 25 萬條 MidJourney 數據 fine-tune 好的 GPT2 模型:succinctly/text2image-prompt-generator
,試了試效果不錯,那么我們就用它來實現這部分功能吧和上面一樣,我們實現一個不到 30 行的簡單的程序,就能夠實現模型自動下載,以及調用模型根據我們的輸入內容(上文中熱血臺詞的翻譯)生成一些符合 Midjourney 或 Stable Diffusion 的新的 Prompt 內容:。
from transformers import pipeline, set_seed import random import re text_pipe = pipeline(text-generation
, model=succinctly/text2image-prompt-generator) def text_generate(input): seed = random.randint(
100, 1000000) set_seed(seed) for count in range(6): sequences = text_pipe(input, max_length=
random.randint(60, 90), num_return_sequences=8) list = [] for sequence in sequences: line = sequence[
generated_text].strip() if line != inputandlen(line) > (len(input) + 4) and line.endswith((
":", "-", "—")) is False: list.append(line) result = "\n".join(list) result = re.
sub([^ ]+\.[^ ]+,, result) result = result.replace("", "") if result !=
"": return result if count == 5: return result input = "Youth cant turn back, so theres no end to youth."
print(input, text_generate(input))我們將上面的代碼保存為 text-generation.py,然后執行 python text-generation.py,稍等片刻我們將得到類似下面的內容:
# Setting `pad_token_id` to `eos_token_id`:50256 for open-end generation. Youth cant turn back, so theres no
endto youth. Youth cant turn back, so theres noendto youth. Young, handsome, confident, lonely boy sitting
on his cant turn back, so theres noendto youth. Whereold yang waits, young man on the streets of Bangkok::
10 film poster::10 photorealism, postprocessing, low angle::10 Trending on artstation::8 —ar 47:82 Youth can
t turn back, so theres noendto youth. By Karel Thole and Mike Mignola --ar 2:3 Youth cant turn back, so there
s noendto youth. And there is a bright hope about a future where there will be time.內容看起來好像還不錯,我們直接在 Midjourney 中輸入測試,將得到類似下面的結果。
將我們生成的 Prompt 內容,使用 Midjourney 進行圖片生成看起來算是及格了,這部分代碼在項目的 soulteary/docker-prompt-generator/app/text-generation.py
完成了兩個功能之后,我們來實現根據圖片內容生成 Prompt 描述的應用功能實現根據圖片生成 Prompt 描述功能相比較上面兩個功能,使用 CPU 就能搞定,內容生成效率也非常高但是想要快速的根據圖片生成 Prompt 則需要顯卡的支持。
不過根據我的試驗,運行起來只需要 6~8GB 左右的顯存,還是比較省錢的(沒有顯卡可以使用云服務器代替,買個按量的,玩罷銷毀即可)這里,我們依舊是實現一段簡單的,不到 30 行的 Python 代碼,完成模型下載、應用加載、圖片下載,以及將圖片轉換為 Prompt 的功能:
from clip_interrogator import Config, Interrogator import torch config = Config() config.device = cuda
if torch.cuda.is_available() elsecpu config.blip_offload = Falseif torch.cuda.is_available() elseTrue
config.chunk_size = 2048 config.flavor_intermediate_count = 512 config.blip_num_beams = 64 config.clip_model_name =
"ViT-H-14/laion2b_s32b_b79k" ci = Interrogator(config) defget_prompt_from_image(image):return ci.interrogate(image.convert(
RGB)) import requests import shutil r = requests.get("https://pic1.zhimg.com/v2-6e056c49362bff9af1eb39ce530ac0c6_1440w.jpg?source=d16d100b"
, stream=True) if r.status_code == 200: with open(./image.jpg, wb) as f: r.raw.decode_content =
True shutil.copyfileobj(r.raw, f) from PIL import Image print(get_prompt_from_image(Image.open(
./image.jpg)))代碼中的圖片,使用了我專欄中上一篇文章的題圖(同樣使用 Midjourney 生成)將上面的內容保存為 clip.py,然后執行 python clip.py,稍等片刻,我們將得到類似下面的結果:。
# WARNING:root:Pytorch pre-release version 1.14.0a0+410ce96 - assuming intent to test itLoadingBLIPmodel...
loadcheckpointfromhttps://storage.googleapis.com/sfr-vision-language-research/BLIP/models/model_large_caption.pth
LoadingCLIPmodel...LoadedCLIPmodelanddatain8.29seconds.100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████|
55/55[00:00<00:00,316.23it/s]Flavor chain:38%|███████████████████████████████████████████████████████▏
|12/32[00:04<00:07,2.74it/s]100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████|
55/55[00:00<00:00,441.49it/s]100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████|
6/6[00:00<00:00,346.74it/s]100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████|
50/50[00:00<00:00,457.84it/s]arobotwithaspeechbubbleonabluebackground,highlydetailedhyperrealretro,artificial
intelligence!!,toyphotography,byEmmaAndijewska,markingsonrobot,computergenerated,blueish,delete,small
gadget,animated,bluebody,inretrocolors從結果中看,描述還是比較準確的這部分代碼在了項目的 soulteary/docker-midjourney-prompt-generator/app/clip.py。
好啦,到目前為止,三個主要功能,就都實現完畢了接下來,我們借助 Docker 和 Gradio 來完成 Web UI 和一鍵運行的模型容器應用使用 Docker 構建 AI 應用容器接下來,我們來完成 AI 應用的容器構建和相關代碼編寫。
前文中提到,我們將實現兩個版本的應用,分別支持 CPU 和 GPU 來完成快速的 AI 模型推理功能因為后者可以向下兼容前者,所以我們先來實現一個包含前兩個應用功能,CPU 就能跑的模型基礎鏡像完成只需要 CPU 運行的應用容器鏡像。
結合上文中的代碼,Dockerfile 文件不難編寫:FROM nvcr.io/nvidia/pytorch:22.12-py3 LABEL org.opencontainers.image.authors="soulteary@gmail.com" RUN pip config
set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple && \ pip install transformers sentencepiece sacremoses && \ pip
install gradio WORKDIR /app RUN cat > /get-models.py <
Helsinki-NLP/opus-mt-zh-en) AutoTokenizer.from_pretrained(Helsinki-NLP/opus-mt-zh-en) pipeline(text-generation
, model=succinctly/text2image-prompt-generator) EOF RUN python /get-models.py && \ rm -rf /get-models.py
將上面的內容保存為 Dockerfile.base,然后使用 docker build -t soulteary/prompt-generator:base . -f Dockerfile.base ,稍等片刻,包含了模型文件的基礎應用模型就搞定啦。
[+] Building 189.5s (7/8) => [internal] load .dockerignore
0.0s => => transferring context: 2B
0.0s => [internal] load build definition from Dockerfile.base
0.0s => => transferring dockerfile: 692B
0.0s => [internal] load metadata for nvcr.io/nvidia/pytorch:22.12-py3
0.0s => [1/5] FROM nvcr.io/nvidia/pytorch:22.12-py3
0.0s => CACHED [2/5] RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple && pip install transformers sentencepiece sacremoses && pip install gradio 0.0s
=> CACHED [3/5] WORKDIR /app
0.0s => CACHED [4/5] RUN cat > /get-models.py <
0.0s => [5/5] RUN python /get-models.py && rm -rf /get-models.py
189.4s => => # Downloading (…)olve/main/source.spm: 100%|██████████| 805k/805k [00:06<00:00, 130kB/s]
=> => # Downloading (…)olve/main/target.spm: 100%|██████████| 807k/807k [00:01<00:00, 440kB/s]
=> => # Downloading (…)olve/main/vocab.json: 100%|██████████| 1.62M/1.62M [00:01<00:00, 1.21MB/s]
=> => # Downloading (…)lve/main/config.json: 100%|██████████| 907/907 [00:00<00:00, 499kB/s]
=> => # Downloading pytorch_model.bin: 100%|██████████| 665M/665M [00:11<00:00, 57.2MB/s]
=> => # Downloading (…)okenizer_config.json: 100%|██████████| 255/255 [00:00<00:00, 81.9kB/s]實現過程中,我這邊的構建時間大概要 5 分鐘左右,可以從椅子上起來,動一動,聽首歌放松一會。
鏡像構建完畢,可以使用下面的命令,進入包含模型和 PyTorch 環境的 Docker 鏡像在這個鏡像中,我們可以自由的使用前兩個功能相關的模型:docker run --gpus all --ipc=host --。
ulimit memlock=-1 --ulimit stack=67108864 --rm -it -p 7680:7680 soulteary/prompt-generator:base bash有了環境之后,我們來繼續實現一個簡單的 Web UI,實現上文中的懶人功能:讓模型根據我們輸入的中文內容,生成可以繪制高質量圖片的 Prompt:
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM import torch model = AutoModelForSeq2SeqLM.from_pretrained(Helsinki-NLP/opus-mt-zh-en).eval() tokenizer = AutoTokenizer.from_pretrained(Helsinki-NLP/opus-mt-zh-en) def translate(text):
with torch.no_grad(): encoded = tokenizer([text], return_tensors=pt) sequences = model.generate(**encoded)
return tokenizer.batch_decode(sequences, skip_special_tokens=True)[0] from transformers import pipeline, set_seed
import random import re text_pipe = pipeline(text-generation, model=succinctly/text2image-prompt-generator
) def text_generate(input): seed = random.randint(100, 1000000) set_seed(seed) text_in_english =
translate(input) forcountinrange(6): sequences = text_pipe(text_in_english, max_length=random.randint(
60, 90), num_return_sequences=8) list = [] forsequencein sequences: line =
sequence[generated_text].strip() if line != text_in_english andlen(line) > (len(text_in_english) +
4) and line.endswith((:, -, —)) isFalse: list.append(line) result = "\n".join(
list) result = re.sub([^ ]+\.[^ ]+,, result) result = result.replace(, )
ifresult != : returnresultifcount == 5: returnresultimport gradio as gr with
gr.Blocks() asblock: with gr.Column(): with gr.Tab(文本生成): input = gr.Textbox(
lines=6, label=你的想法, placeholder=在此輸入內容...) output = gr.Textbox(lines=6, label=生成的 Prompt
) submit_btn = gr.Button(快給我編) submit_btn.click( fn=text_generate, inputs=
input, outputs=output ) block.queue(max_size=64).launch(show_api=False, enable_queue=True
, debug=True, share=False, server_name=0.0.0.0)在容器環境中創建一個名為 webui.cpu.py 的文件,然后使用 python webui.cpu.py,將看到類似下面的日志輸出:
Running on local URL: http://0.0.0.0:7860 To create a publiclink, set`share=True`in`launch()`.然后我們在瀏覽器中打開容器所在設備的 IP (如果在本機運行,可以訪問 http://127.0.0.1:7860 ,就能訪問 Web 服務啦。
隨便輸入點什么,它都能給你繼續往下編我們在上面的輸入框里輸入一些內容,然后點擊“快給我編”按鈕,就能夠得到一堆模型編出來的 Prompt 內容啦實現完“文生文”功能之后,我們來實現“圖生文”相關功能完成需要 GPU 運行的應用容器鏡像
結合上文,完成 GPU 相關功能需要的容器環境也不難:FROM soulteary/prompt-generator:base LABEL org.opencontainers.image.authors="soulteary@gmail.com" RUN pip config
set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple && \ pip install clip_interrogator git+https://github.com/pharmapsychotic/BLIP.git@lib
#egg=blip RUN cat > /get-models.py <
cudaif torch.cuda.is_available() elsecpu config.blip_offload = Falseif torch.cuda.is_available() else
True config.chunk_size = 2048 config.flavor_intermediate_count = 512 config.blip_num_beams = 64 config.clip_model_name =
"ViT-H-14/laion2b_s32b_b79k" ci = Interrogator(config) EOF RUN python /get-models.py && \ rm -rf /
get-models.py將上面的內容保存為 Dockerfile.gpu 文件,然后使用 docker build -t soulteary/prompt-generator:gpu . -f Dockerfile.gpu 完成鏡像的構建。
耐心等待鏡像構建完畢,使用下面的命令,能夠進入包含三種模型和 PyTorch 環境的 Docker 鏡像:docker run --gpus all --ipc=host --ulimit memlock=-1 --
ulimit stack=67108864 --rm -it -p 7680:7680 soulteary/prompt-generator:gpu bash接著,來編寫能夠調用三種模型能力的 Python 程序:
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM import torch model = AutoModelForSeq2SeqLM.from_pretrained(Helsinki-NLP/opus-mt-zh-en).eval() tokenizer = AutoTokenizer.from_pretrained(Helsinki-NLP/opus-mt-zh-en) def translate(text):
with torch.no_grad(): encoded = tokenizer([text], return_tensors=pt) sequences = model.generate(**encoded)
return tokenizer.batch_decode(sequences, skip_special_tokens=True)[0] from transformers import pipeline, set_seed
import random import re text_pipe = pipeline(text-generation, model=succinctly/text2image-prompt-generator
) def text_generate(input): seed = random.randint(100, 1000000) set_seed(seed) text_in_english =
translate(input) forcountinrange(6): sequences = text_pipe(text_in_english, max_length=random.randint(
60, 90), num_return_sequences=8) list = [] forsequencein sequences: line =
sequence[generated_text].strip() if line != text_in_english andlen(line) > (len(text_in_english) +
4) and line.endswith((:, -, —)) isFalse: list.append(line) result = "\n".join(
list) result = re.sub([^ ]+\.[^ ]+,, result) result = result.replace(, )
ifresult != : returnresultifcount == 5: returnresultfrom clip_interrogator import
Config, Interrogator import torch import gradio as gr config = Config() config.device = cudaif torch.cuda.is_available()
elsecpu config.blip_offload = Falseif torch.cuda.is_available() elseTrue config.chunk_size = 2048 config.flavor_intermediate_count =
512 config.blip_num_beams = 64 config.clip_model_name = "ViT-H-14/laion2b_s32b_b79k" ci = Interrogator(config)
def get_prompt_from_image(image, mode): image = image.convert(RGB) ifmode == best: prompt
= ci.interrogate(image) elif mode == classic: prompt = ci.interrogate_classic(image) elif
mode == fast: prompt = ci.interrogate_fast(image) elif mode == negative: prompt = ci.interrogate_negative(image)
returnpromptwith gr.Blocks() asblock: with gr.Column(): gr.HTML(
MidJourney / SD2 懶人工具
) with gr.Tab(從圖片中生成): with gr.Row(): input_image = gr.Image(type
=pil) with gr.Column(): input_mode = gr.Radio([best, fast, classic
, negative], value=best, label=Mode) img_btn = gr.Button(這圖里有啥) output_image = gr.Textbox(
lines=6, label=生成的 Prompt) with gr.Tab(從文本中生成): input_text = gr.Textbox(lines=6, label=
你的想法, placeholder=在此輸入內容...) output_text = gr.Textbox(lines=6, label=生成的 Prompt) text_btn = gr.Button(
快給我編) img_btn.click(fn=get_prompt_from_image, inputs=[input_image, input_mode], outputs=output_image) text_btn.click(fn=text_generate, inputs=input_text, outputs=output_text) block.queue(max_size=
64).launch(show_api=False, enable_queue=True, debug=True, share=False, server_name=0.0.0.0)我們將上面的程序保存為 webui.gpu.py,然后使用 python webui.gpu.py 運行程序,將得到類似下面的日志:
██████████████████████████████████████████████████████████████████████████████████████████████████████████████|
44.0/44.0[00:00<00:00,31.5kB/s]Downloading:100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████|
786k/786k[00:01<00:00,772kB/s]Downloading:100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████|
788k/788k[00:00<00:00,863kB/s]Downloading:100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████|
1.54M/1.54M[00:01<00:00,1.29MB/s]Downloading:100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████|
907/907[00:00<00:00,618kB/s]Downloading:100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████|
634M/634M[00:27<00:00,23.8MB/s]Downloading:100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████|
255/255[00:00<00:00,172kB/s]Downloading:100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████|
779k/779k[00:01<00:00,757kB/s]Downloading:100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████|
446k/446k[00:00<00:00,556kB/s]Downloading:100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████|
2.01M/2.01M[00:01<00:00,1.60MB/s]Downloading:100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████|
99.0/99.0[00:00<00:00,69.2kB/s]I040512:50:42.798199140240289830720instantiator.py:21]Createdatemporary
directoryat/tmp/tmpuvpi8s9qI040512:50:42.798363140240289830720instantiator.py:76]Writing/tmp/tmpuvpi8s9q/_remote_module_non_scriptable.py
W040512:50:42.878760140240289830720version.py:27]Pytorchpre-releaseversion1.14.0a0+410ce96-assumingintent
totestitI040512:50:43.373221140240289830720font_manager.py:1633]generatednewfontManagerLoadingBLIPmodel...
loadcheckpointfromhttps://storage.googleapis.com/sfr-vision-language-research/BLIP/models/model_large_caption.pth
LoadingCLIPmodel...I040512:51:00.455630140240289830720factory.py:158]LoadedViT-H-14modelconfig.I040512
:51:06.642275140240289830720factory.py:206]LoadingpretrainedViT-H-14weights(laion2b_s32b_b79k).Loaded
CLIPmodelanddatain8.22seconds.Running on local URL:http://0.0.0.0:7860Tocreateapubliclink,set`share=True`
in`launch()`.當看到 Running on local URL: http://0.0.0.0:7860 的日志的時候,我們就可以在瀏覽器中訪問程序啦。
將上文中的圖喂給它將上文中的圖片投喂給它,然后點下“這圖里有啥”按鈕,稍等片刻,我們將得到一些比較合理的 Prompts 內容,你可以用這些內容去生成圖片。
喂它文本,擴寫內容喂它文本,擴寫內容當然,你也可以將生成的文本內容再投喂給它,來獲得更多的 Prompt 內容,讓圖片的變化更豐富一些其他:顯存資源消耗在模型識別圖片的過程中,我簡單記錄了應用的顯存消耗,峰值大概在 8GB 左右。
Wed Apr 521:00:09 2023 +-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.89.02 Driver Version: 525.89.02 CUDA Version: 12.0 ||-------------------------------+----------------------+----------------------+ |
GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:
Usage/Cap| Memory-Usage | GPU-Util Compute M. | || | MIG M.
| |===============================+======================+======================| |0 NVIDIA GeForce ... Off
| 00000000:01:00.0 Off | Off | |31% 35C P8 23W / 450W | 8111MiB / 24564MiB |
0% Default | || | N/A | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ |
Processes:| | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage
| |=============================================================================| |0 N/A N/A
1286 G /usr/lib/xorg/Xorg 9MiB | |0 N/A N/A 1504 G /usr/bin/gnome-shell
10MiB | |0 N/A N/A 115252 C python 8086MiB | +-----------------------------------------------------------------------------+
參考鏈接:CLIP 神經網絡模型:https://openai.com/research/clipSalesforce 推出的 BLIP:https://blog.salesforceairesearch.com/blip-bootstrapping-language-image-pretraining/
赫爾辛基大學開源的 OPUS MT 模型:https://github.com/Helsinki-NLP/OPUS-MT-trainHelsinki-NLP/opus-mt-zh-en:https://huggingface.co/Helsinki-NLP/opus-mt-zh-en
succinctly/text2image-prompt-generator:https://huggingface.co/succinctly/text2image-prompt-generator
免責聲明:本站所有信息均搜集自互聯網,并不代表本站觀點,本站不對其真實合法性負責。如有信息侵犯了您的權益,請告知,本站將立刻處理。聯系QQ:1640731186
熱鬧!梅州城區群眾迎國慶文藝匯演,你在現場嗎?掌上梅州訊 10月4日晚,“群星舞臺大家樂——梅州城區群眾迎國慶文藝匯演”在梅州市文化館群星舞臺上演。晚上7點30分,演出拉開帷幕,各群眾隊伍以豐富多彩的藝術形式,展現了梅州城區群眾的愛國情懷和文化底 …
如何更改開機密碼(臺式電腦如何更改開機密碼)萬萬沒想到很多朋友為了電腦的安全,都設置了開機密碼,過一段時間就會修改下來增強電腦的安全性。方法/步驟點擊電腦右下角”開始——控制面板“按鈕。很多朋友為了電腦的安全,都設置了開機密碼,過一段時間就會修改下來增強 …
江祖平電視劇(江祖平電視劇古裝)速看哈嘍,大家好啊,我是維維安。相信喜歡古裝劇的小伙伴們,一定很熟悉老電視劇《懷玉公主》和《風云》里面的演員們,尤其是在劇中飾演“幽若”和“蕓兒”一 哈嘍,大家好啊,我是維維安相信喜歡古裝劇的小伙伴 …
dos 命令(dos命令刪除文件)全程干貨昨天在編寫批處理時,想到一個問題,DOS如何刪除文件到回收站。上網查了一下,很遺憾DOS命令行本身沒有刪除文件到回收站的功能,但是可以使用一些第 昨天在編寫批處理時,想到一個問題,DOS如何刪除 …
漢陰縣公安局森林警察大隊堅持黨建引領 護航生態安全近年來,漢陰縣公安局森林警察大隊始終將思想建設作為立警之本、強警之基,將“信仰根基”融入生態守護,鍛造忠誠警魂,在新時代生態安全守護中彰顯使命擔當。黨建鑄魂,破難題促發展。該大隊將理論學習與實踐任務結 …
下載電腦微信版一體機電腦品牌排名微信臺式電腦版下載賣場旺季動手機會 近期特惠手機精選一覽08-06本周,手機市場報價仍然十分不變,除一些方才上市的高價新機發作猛烈掉價以外下載電腦微信版一體電機腦品牌排名,其他的支流手機價錢都穩若泰山賣場旺季動手機會 …
dos 命令(dos命令刪除文件)全程干貨昨天在編寫批處理時,想到一個問題,DOS如何刪除文件到回收站。上網查了一下,很遺憾DOS命令行本身沒有刪除文件到回收站的功能,但是可以使用一些第 昨天在編寫批處理時,想到一個問題,DOS如何刪除 …
華為云電腦電腦價格計算美的Midea)電壓力鍋家用5L雙膽高壓鍋鮮湯深膽煮湯鍋 智能多功用電飯煲 智能預定燜香飯智能 【雙膽】RY50Q3-FS格蘭仕Galanz)電烤箱 家用烤箱 40L大容量 高低自力控溫 多層烘培烤箱 …
球王故里星光閃,踢球獻歌歡樂多!2024香港明星足球隊友誼賽(梅州五華站)舉行掌上梅州訊 11月3日晚,梅州五華惠堂體育場熱鬧非凡,“相約五華 常來長樂”2024香港明星足球隊友誼賽梅州五華站)在這里舉行。譚詠麟、曾志偉、黃日華、何家勁、洪天明、衛志豪等30多位耳熟能詳的明星領 …
電腦聲音太小(windows7電腦聲音太小)學到了嗎電腦聲音不正常如何解決?相信很多人都遇到過電腦聲音不正常如何解決。為此,今天分享這篇文章給有需要的人。跟著步驟,你一定可以。 電腦聲音不正常如何解決?相信很多人都遇到過電腦聲音不正常如何解決為此 …
- 點擊瀏覽更多最新資訊
節日消費折射經濟活力
如何設置dns(電腦如何設置dns)居然可以這樣
通達信電腦版下載官網抖音app電腦版
電腦免費下載游戲平臺抖音短視頻電腦版電腦有哪些系統
同賀國慶,觀禮升旗!市公安局舉行慶祝新中國成立75周年升國旗儀式
電腦微信版下載軟件電腦管家官方網站蘋果筆記本電腦官網
如何修改默認瀏覽器(手機如何修改默認瀏覽器)居然可以這樣
學習電腦的基本知識聯想電腦一體機筆記本電腦最好用排行
《經濟參考報》整版聚焦合肥新能源汽車發展
蘋果12怎么關機(蘋果手機12怎么關機和開機)硬核推薦
word乘號(word上下頁)深度揭秘
怎樣設置默認瀏覽器(怎樣設置默認瀏覽器主頁)干貨分享
上班注意安全!珠海發布全市雷雨大風黃色預警!
win7 專業版(win7專業版英文全稱)學到了
樂視手機怎么樣(樂視手機怎么樣投屏到小米電視)沒想到
彈窗廣告(彈窗廣告怎么徹底關閉)這都可以?
太湖縣百里鎮松泉村:信用村建設助推鄉風文明
通達信電腦版官方官網臺式電腦推薦
微信電腦版版本通達信電腦版官方下
東御公司舉辦2024年梅河路政大隊業務綜合技能競賽
聯想筆記本電腦排名電腦組裝步驟圖解
微信電腦版 官方下載臺式電腦主要配置超清電腦桌面壁紙4k
手機一鍵給電腦裝系統如何還原電腦出廠設置電腦做系統多少錢一次
程叢夫:很開心看到中國年輕車手不斷取得突破
大學筆記本電腦推薦電腦系統哪家的好用電腦游戲單機
戴爾電腦價格大全云電腦app官網下載
蘋果12怎么關機(蘋果12怎么關機開機按哪個鍵)一篇讀懂
月靈傳奇變態版電腦版電腦管家十大排名國產電腦排行榜前十名