作者 | 崔皓
審校 | 重樓
摘要
本文探討了如何利用大語言模型和AI視頻生成模型來創建高度個性化和創意豐富的視頻內容。文章詳細介紹了從構思到實現的全過程,包括問題分析、目標設定、工具和模型選擇,以及實際操作步驟。使用的技術和工具包括OpenAI的GPT-3.5-turbo、Hugging Face的zerscope_v2_576w模型,以及Langchain、PyTorch等輔助工具。
開篇
在科技日新月異的今天,人工智能不僅僅局限于數據分析或自動駕駛等領域,其在創意產業中的應用也越來越廣泛。那么,能不能讓大語言模型與AI視頻生成模型聯手,為我們帶來高度個性化且極富創意的視頻內容呢?本文將介紹如果通過輸入幾個關鍵詞讓大模型幫助我們生成創意視頻。其中用到了OpenAI,Hugging face開源庫,LangChain等技術或框架,通過手把手編寫代碼,查找資料的方式呈現完整的開發過程。
突發奇想
在瀏覽社交媒體時,我經??吹礁鞣N精彩絕倫的創意視頻。每次看到這些,我都忍不住想:如果我也能制作出這樣的作品,該有多好!但問題是,我作為一個碼農對創意這件事一直不太自信。那么如何能夠創建屬于自己的創意視頻呢?
突然,我想到了大語言模型和AI視頻生成技術。大語言模型擅長生成文本,而AI視頻生成模型則能從文本生成視頻。那么,它們能否聯手,幫助我填補這一創意缺口呢?
思路整理:明確目標,分解任務
在有了初步的想法后,下一步就是具體地整理思路,明確我們需要解決哪些問題。這樣不僅能讓我們有目標可行,還能為后續的行動計劃提供明確的方向。以終為始,我們的目標就是讓計算機幫我們自動生成創意視頻,那么就可以分割為產生創意和生成視頻兩個環節。
問題一:創意缺乏,如何解決?
對于大多數碼農來說,創意并不是我們的強項。但是好消息是,現在有大語言模型能夠在這方面幫助我們。通過合理地設置提示(prompt)或者利用現有的模板,我們甚至能生成具體的創意腳本。
我的初步想法如下:
1. 查找合適的大語言模型,例如GPT-3.5-turbo。
2. 設計或找到有效的文本提示模板。
3. 進行多輪的文本生成實驗,直到滿意為止。
問題二:如何生成視頻?
生成創意文本后,下一步就是將這些文本轉化為視頻。由于我們并不是專業的視頻制作人員,因此找到一個現成的、用戶友好的AI視頻生成模型將會非常有幫助。
這也難不倒我,通過下面幾步或許能夠如愿以償:
1. 搜尋開源的AI視頻生成模型,到最大的模型庫Hugging face上去找找一定會有收獲。
2. 了解模型的輸入要求和使用方式。
3. 實施初步的視頻生成測試,如果需要,進行必要的調整。
首先,利用大語言模型解決創意問題;其次,利用AI視頻生成模型將創意實現為具體的視頻內容。這樣一來,即便我們不是“創意大師”,也完全有能力制作出令人印象深刻的創意視頻。
查找資料:武裝自己的工具箱
通過對目標的分析,我們總結出兩大問題,并且針對每個問題都有了基本的解決思路。接下來需要了解對應的工具,同時對工具,框架和庫進行測試,從而驗證我們的想法。
接著,我們對技術做了如下的選擇:
大語言模型:OpenAI的GPT-3.5-turbo
OpenAI是在AI界非常有影響力的組織,其推出的GPT模型家族幾乎成為了大語言模型的代名詞。同時,與其他版本相比,GPT-3.5-turbo的token費用更加實惠,對于個人或小型項目來說非常適用。
這里,我計劃使用GPT-3.5-turbo來生成創意文本。通過設置特定的提示和參數,我能夠讓模型產生具有高創意價值的文本內容。
AI視頻模型:cerspense/zeroscope_v2_576w
在Hugging Face的平臺上,這個模型因其高Star評級而受到了大量關注,這通常是社群對其有效性的一種認可。那么在這個平臺上面如何找到我們需要的模型呢?
首先,登錄平臺,在首頁選擇“Tasks”。
在Tasks中列出所有Hugging face上模型能夠執行的任務,并且Hugging face 已經對所有的模型進行了分類。我們找到“Text-to-Video”的分類,點擊進入。
在進去的頁面會對這類模型進行簡單地介紹。它會告訴你將文本輸入到模型,輸出的結果就是視頻。我們點擊右邊的“Browse Models”按鈕瀏覽所有的模型。
在展開的模型列表中,最上面的zeroscope_v2_576w 下載量有28.5K,看來用的人很多,而且星星數量也不少。
點擊進入模型詳情頁,里面對模型進行了簡單描述,并且提供了模型的使用方式。由于所有Hugging face上面托管的模型都可以免費使用,所以我們直接按照使用方法調用就好了。 具體的調用方法會在后面的代碼描述中說明。
我看了看模型基本沒有問題,于是敲定就是它了。將文本轉化為視頻內容的重任就交給它了。
輔助工具:Langchain, PyTorch, Diffusers
解決兩個大模型工具的問題之后,我們還需要一些幫手。
- Langchain:作為一個大模型的腳手架,Langchain的Prompt Template可以幫助我更有效地設置和優化模型的輸入提示。
- PyTorch:作為一個強大的機器學習庫,PyTorch可以用于定制一些特定功能,讓我更靈活地使用前兩者。
- Diffusers庫:提供了諸如`DiffusionPipeline`和`DPMSolverMultistepScheduler`等工具,這些可以用于進一步優化視頻生成過程。
Langchain主要用于優化大語言模型的輸入和輸出,PyTorch用于更高級的自定義和優化,而Diffusers庫則可以用于進一步提升視頻生成的質量。
通過選擇工具和模型,我為自己構建了工具箱。每一項選擇都是出于特定的考慮和需求,旨在解決我在創意視頻生成過程中可能遇到的問題。這樣,即使我不是一個“創意大師”,也有信心能制作出令人印象深刻的創意視頻。
小心嘗試:遇到的問題與調整
剛開始,我嘗試用一些簡單的關鍵字給到zeroscope_v2_576w模型,比如“小貓”,“科技感”,“奔跑”,來生成文本。然而,我很快發現這樣做產生的創意還是不夠豐富。語言的敏感性:英文輸入的效果更好。這和我之前預想的差不多,通過簡單的關鍵詞生成視頻可能還是不夠。
通過如下代碼,我搞定了創意文字的輸出。
from langchain.llms import OpenAI
from langchain import PromptTemplate
llm = OpenAI(model_name="gpt-3.5-turbo")
template = """
我想讓大模型根據文字生成創意視頻,我本身沒有什么思路, 會輸入幾個關鍵詞,你根據這幾個詞生成具有創意的一句話(英文),在15token以內。
我把中文輸入放到這里:{input},將你生成的這句話直接輸出,由于我要用這句話直接生成視頻,所以在輸出的時候不要附加除了這句話之外的內容。
"""
prompt = PromptTemplate(
#接受用戶輸入
input_variables=["input"],
#定義Prompt tempalte
template=template,
)
#這里是真正的用戶輸入
final_prompt = prompt.format(input='小貓 科技感 奔跑 ')
response = llm(final_prompt)
print (f"大語言模型的回應: {response}")
照例我們對代碼進行簡單介紹:
這段代碼是用于生成創意視頻概念的文本,具體通過與OpenAI的GPT-3.5-turbo大模型交互來實現。下面是代碼各部分的解釋:
1. 導入必要的模塊:
- `from langchain.llms import OpenAI`: 導入Langchain庫中的OpenAI模塊,用于與GPT-3.5-turbo交互。
- `from langchain import PromptTemplate`: 導入Langchain的PromptTemplate類,用于構建和格式化模型的輸入。
2. 初始化大模型:
- `llm = OpenAI(model_name="gpt-3.5-turbo")`: 初始化OpenAI的GPT-3.5-turbo模型。
3. 定義模板:
- `template = """..."""`: 定義一個字符串模板,用于生成與大模型交互的最終提示(prompt)。
4. 創建PromptTemplate對象:
- `prompt = PromptTemplate(...)`: 使用之前定義的字符串模板和輸入變量來創建PromptTemplate對象。
5. 生成最終的提示:
- `final_prompt = prompt.format(input='小貓 科技感 奔跑 ')`: 格式化PromptTemplate對象,插入真正的用戶輸入。
6. 與大模型交互:
- `response = llm(final_prompt)`: 使用格式化后的提示與GPT-3.5-turbo模型進行交互,獲取模型的輸出。
7. 輸出模型的響應:
- `print (f"大語言模型的回應: {response}")`: 打印模型生成的創意文本。
大語言模型的回應: "Technology-driven feline streaks across in a futuristic blur."
大模型的回應是上面這句英文,我反正沒有看出有什么創意,不過還是需要進行測試的。
在輸入prompt的部分我糾結了很久,GPT的模型有時候會輸出一些不必要的“廢話”,最后我強制它只輸出創意句子才滿足了我的要求。因為這里的response需要傳給視頻生成的模型,所以無關的信息是越少越好。
接下來的代碼就是將response給我們的zeroscope_v2_576w 視頻模型了。
# 導入PyTorch庫,這是一個用于機器學習和深度學習的開源庫
import torch
# 從diffusers庫中導入DiffusionPipeline和DPMSolverMultistepScheduler類
# DiffusionPipeline用于處理擴散流程,DPMSolverMultistepScheduler用于調度多步解算器
from diffusers import DiffusionPipeline, DPMSolverMultistepScheduler
# 從diffusers.utils模塊中導入export_to_video函數,用于導出生成的視頻幀
from diffusers.utils import export_to_video
# 使用from_pretrained方法從預訓練模型"cerspense/zeroscope_v2_576w"中加載DiffusionPipeline
# 并設置數據類型為float16以減少內存使用和提高計算速度
pipe = DiffusionPipeline.from_pretrained("cerspense/zeroscope_v2_576w", torch_dtype=torch.float16)
# 從當前管道的調度器配置中創建一個新的多步解算器調度器(DPMSolverMultistepScheduler)
pipe.scheduler = DPMSolverMultistepScheduler.from_config(pipe.scheduler.config)
# 啟用CPU離線模型加載,在有限的GPU內存下運行更大的模型
pipe.enable_model_cpu_offload()
# 設置輸入提示
prompt = response
# 使用管道進行推理,得到生成的視頻幀
# num_inference_steps設置為40,表示使用40步進行推理。
# 擴散模型需要通過擴散:添加噪聲,收縮:去除噪聲,最終生成數據。
# height和width設置生成視頻的分辨率
# num_frames設置生成視頻的幀數
video_frames = pipe(prompt, num_inference_steps=40, height=320, width=576, num_frames=24).frames
# 使用export_to_video函數導出生成的視頻幀,保存為視頻文件
video_path = export_to_video(video_frames)
這段代碼主要用于將大模型生成的創意文本轉化為一段視頻。代碼涉及多個步驟和組件,下面是代碼部分的解釋:
導入必要庫和模塊
1.導入PyTorch庫:PyTorch是一個用于機器學習和深度學習的開源庫。
2.導入DiffusionPipeline和DPMSolverMultistepScheduler:這兩個類分別用于處理擴散流程和調度多步解算器。
3.導入export_to_video函數:這個函數用于將生成的視頻幀導出為一個視頻文件。
4.加載預訓練的DiffusionPipeline:使用`from_pretrained`方法加載預訓練模型"cerspense/zeroscope_v2_576w"。
5.設置調度器:從當前管道的調度器配置中創建一個新的多步解算器調度器。
6.啟用CPU離線模型加載:這一步可在有限的GPU內存下運行更大的模型。
7.設置輸入提示:用大模型生成的文本(存儲在變量`response`中)作為輸入。
8.進行推理:使用DiffusionPipeline進行推理,生成視頻幀。
- `num_inference_steps=40`:推理過程會經歷40個步驟。
- `height=320, width=576`:設置生成視頻的分辨率。
- `num_frames=24`:設置生成視頻的幀數。
9.導出生成的視頻幀:使用`export_to_video`函數將生成的視頻幀保存為一個視頻文件。
整體邏輯是:先初始化所需的各個組件和庫,然后設置適當的參數和輸入提示,最后執行推理和導出結果。
得到結果:終點也是新的起點
經過上面的一番折騰,我將文件生成到了video_path 這個目錄中了。由于使用了co-lab的虛擬機實現了上面的代碼。
Google Colaboratory(簡稱Colab)是一個基于云端的Jupyter Notebook環境,用于編寫和執行Python代碼。它為數據科學、機器學習、深度學習等領域的研究和教育提供了便利的平臺。以下是一些關鍵特點和優勢:
主要特點:
1.免費使用:Colab是一個免費的服務,你只需要有一個Google帳號即可使用。
2. 便捷的共享和協作:與Google Drive集成,方便文件的上傳、下載和共享。也可以多人實時編輯同一個Notebook。
3. GPU支持:Colab提供免費的GPU資源,這對于執行復雜的機器學習或數據處理任務非常有用。
4. *簡單易用:無需配置,只需打開一個Web瀏覽器就可以編寫和執行代碼,適合初學者和專家。
5. *豐富的庫支持*:預安裝了大量的Python庫,無需手動安裝就可以直接使用,如NumPy, Pandas, TensorFlow, PyTorch等。
我這里打印一下 video_path 所在的目錄。
print(video_path)
發現在tmp 目錄下,我下載視頻并且打開播放??纯催@貓叫一個抽象,是因為奔跑的原因嗎?前腿去哪里了?
是提示詞不精準嗎?于是,我調整提示詞如下,讓gpt-3.5-turbo知道我是給視頻大模型提供生成句子的。
我想讓大模型根據文字生成創意視頻,生成視頻的模型我使用的是Hugging face上的zeroscope_v2_576w,我希望你給出的提示詞它能夠理解。
我本身沒有什么思路, 會輸入幾個關鍵詞,你根據這幾個詞生成具有創意的一句話(英文),在15token以內。
我把中文輸入放到這里:{input},將你生成的這句話直接輸出,由于我要用這句話直接生成視頻,所以在輸出的時候不要附加除了這句話之外的內容。
于是,我得到下面這段創意文字。
A futuristic, tech-savvy cat swiftly dashes through time.
希望,能夠得到好效果,于是我懷著忐忑的心情又生成了一次視頻。
這次看上去更像一只貓了,還有藍色的“圍脖”,這就是科技感嗎?
最終,我雖然生成了一個包含“小貓”、“科技感”和“奔跑”等元素的創意視頻,但還需要不斷的進行調整才能達到我的預期。所以,這只是一個開始。未來,我還計劃進一步優化方法,并嘗試更多不同類型的創意內容。
總結
通過整合不同的AI技術和工具,即便不是“創意大師”,我們也能生成富有創意和個性的視頻內容。在實驗過程中,我們遇到了一些問題,例如語言敏感性和輸入效果,但通過不斷調整和優化,最終實現了目標。這不僅為那些在創意產業中想要做出一番貢獻但又缺乏信心的人提供了一條可能的路徑,也展示了AI在創意領域的巨大潛力。通過合理地組合和應用這些先進的技術,我們完全有能力突破傳統的限制,創造出更加驚艷和個性化的作品。
作者介紹
崔皓,51CTO社區編輯,資深架構師,擁有18年的軟件開發和架構經驗,10年分布式架構經驗。