作者 | 崔皓
審校 | 重樓
摘要

本文探討了如何利用大語言模型和AI視頻生成模型來創(chuàng)建高度個(gè)性化和創(chuàng)意豐富的視頻內(nèi)容。文章詳細(xì)介紹了從構(gòu)思到實(shí)現(xiàn)的全過程,包括問題分析、目標(biāo)設(shè)定、工具和模型選擇,以及實(shí)際操作步驟。使用的技術(shù)和工具包括OpenAI的GPT-3.5-turbo、Hugging Face的zerscope_v2_576w模型,以及Langchain、PyTorch等輔助工具。
開篇
在科技日新月異的今天,人工智能不僅僅局限于數(shù)據(jù)分析或自動(dòng)駕駛等領(lǐng)域,其在創(chuàng)意產(chǎn)業(yè)中的應(yīng)用也越來越廣泛。那么,能不能讓大語言模型與AI視頻生成模型聯(lián)手,為我們帶來高度個(gè)性化且極富創(chuàng)意的視頻內(nèi)容呢?本文將介紹如果通過輸入幾個(gè)關(guān)鍵詞讓大模型幫助我們生成創(chuàng)意視頻。其中用到了OpenAI,Hugging face開源庫,LangChain等技術(shù)或框架,通過手把手編寫代碼,查找資料的方式呈現(xiàn)完整的開發(fā)過程。突發(fā)奇想
在瀏覽社交媒體時(shí),我經(jīng)常看到各種精彩絕倫的創(chuàng)意視頻。每次看到這些,我都忍不住想:如果我也能制作出這樣的作品,該有多好!但問題是,我作為一個(gè)碼農(nóng)對(duì)創(chuàng)意這件事一直不太自信。那么如何能夠創(chuàng)建屬于自己的創(chuàng)意視頻呢?突然,我想到了大語言模型和AI視頻生成技術(shù)。大語言模型擅長生成文本,而AI視頻生成模型則能從文本生成視頻。那么,它們能否聯(lián)手,幫助我填補(bǔ)這一創(chuàng)意缺口呢?
思路整理:明確目標(biāo),分解任務(wù)
在有了初步的想法后,下一步就是具體地整理思路,明確我們需要解決哪些問題。這樣不僅能讓我們有目標(biāo)可行,還能為后續(xù)的行動(dòng)計(jì)劃提供明確的方向。以終為始,我們的目標(biāo)就是讓計(jì)算機(jī)幫我們自動(dòng)生成創(chuàng)意視頻,那么就可以分割為產(chǎn)生創(chuàng)意和生成視頻兩個(gè)環(huán)節(jié)。問題一:創(chuàng)意缺乏,如何解決?
對(duì)于大多數(shù)碼農(nóng)來說,創(chuàng)意并不是我們的強(qiáng)項(xiàng)。但是好消息是,現(xiàn)在有大語言模型能夠在這方面幫助我們。通過合理地設(shè)置提示(prompt)或者利用現(xiàn)有的模板,我們甚至能生成具體的創(chuàng)意腳本。我的初步想法如下:
1. 查找合適的大語言模型,例如GPT-3.5-turbo。
2. 設(shè)計(jì)或找到有效的文本提示模板。
3. 進(jìn)行多輪的文本生成實(shí)驗(yàn),直到滿意為止。
問題二:如何生成視頻?
生成創(chuàng)意文本后,下一步就是將這些文本轉(zhuǎn)化為視頻。由于我們并不是專業(yè)的視頻制作人員,因此找到一個(gè)現(xiàn)成的、用戶友好的AI視頻生成模型將會(huì)非常有幫助。這也難不倒我,通過下面幾步或許能夠如愿以償:
1. 搜尋開源的AI視頻生成模型,到最大的模型庫Hugging face上去找找一定會(huì)有收獲。
2. 了解模型的輸入要求和使用方式。
3. 實(shí)施初步的視頻生成測(cè)試,如果需要,進(jìn)行必要的調(diào)整。
首先,利用大語言模型解決創(chuàng)意問題;其次,利用AI視頻生成模型將創(chuàng)意實(shí)現(xiàn)為具體的視頻內(nèi)容。這樣一來,即便我們不是“創(chuàng)意大師”,也完全有能力制作出令人印象深刻的創(chuàng)意視頻。
查找資料:武裝自己的工具箱
通過對(duì)目標(biāo)的分析,我們總結(jié)出兩大問題,并且針對(duì)每個(gè)問題都有了基本的解決思路。接下來需要了解對(duì)應(yīng)的工具,同時(shí)對(duì)工具,框架和庫進(jìn)行測(cè)試,從而驗(yàn)證我們的想法。接著,我們對(duì)技術(shù)做了如下的選擇:
大語言模型:OpenAI的GPT-3.5-turbo
OpenAI是在AI界非常有影響力的組織,其推出的GPT模型家族幾乎成為了大語言模型的代名詞。同時(shí),與其他版本相比,GPT-3.5-turbo的token費(fèi)用更加實(shí)惠,對(duì)于個(gè)人或小型項(xiàng)目來說非常適用。這里,我計(jì)劃使用GPT-3.5-turbo來生成創(chuàng)意文本。通過設(shè)置特定的提示和參數(shù),我能夠讓模型產(chǎn)生具有高創(chuàng)意價(jià)值的文本內(nèi)容。
AI視頻模型:cerspense/zeroscope_v2_576w
在Hugging Face的平臺(tái)上,這個(gè)模型因其高Star評(píng)級(jí)而受到了大量關(guān)注,這通常是社群對(duì)其有效性的一種認(rèn)可。那么在這個(gè)平臺(tái)上面如何找到我們需要的模型呢?首先,登錄平臺(tái),在首頁選擇“Tasks”。

在Tasks中列出所有Hugging face上模型能夠執(zhí)行的任務(wù),并且Hugging face 已經(jīng)對(duì)所有的模型進(jìn)行了分類。我們找到“Text-to-Video”的分類,點(diǎn)擊進(jìn)入。

在進(jìn)去的頁面會(huì)對(duì)這類模型進(jìn)行簡(jiǎn)單地介紹。它會(huì)告訴你將文本輸入到模型,輸出的結(jié)果就是視頻。我們點(diǎn)擊右邊的“Browse Models”按鈕瀏覽所有的模型。

在展開的模型列表中,最上面的zeroscope_v2_576w 下載量有28.5K,看來用的人很多,而且星星數(shù)量也不少。

點(diǎn)擊進(jìn)入模型詳情頁,里面對(duì)模型進(jìn)行了簡(jiǎn)單描述,并且提供了模型的使用方式。由于所有Hugging face上面托管的模型都可以免費(fèi)使用,所以我們直接按照使用方法調(diào)用就好了。 具體的調(diào)用方法會(huì)在后面的代碼描述中說明。

我看了看模型基本沒有問題,于是敲定就是它了。將文本轉(zhuǎn)化為視頻內(nèi)容的重任就交給它了。
輔助工具:Langchain, PyTorch, Diffusers
解決兩個(gè)大模型工具的問題之后,我們還需要一些幫手。- Langchain:作為一個(gè)大模型的腳手架,Langchain的Prompt Template可以幫助我更有效地設(shè)置和優(yōu)化模型的輸入提示。
- PyTorch:作為一個(gè)強(qiáng)大的機(jī)器學(xué)習(xí)庫,PyTorch可以用于定制一些特定功能,讓我更靈活地使用前兩者。
- Diffusers庫:提供了諸如`DiffusionPipeline`和`DPMSolverMultistepScheduler`等工具,這些可以用于進(jìn)一步優(yōu)化視頻生成過程。
通過選擇工具和模型,我為自己構(gòu)建了工具箱。每一項(xiàng)選擇都是出于特定的考慮和需求,旨在解決我在創(chuàng)意視頻生成過程中可能遇到的問題。這樣,即使我不是一個(gè)“創(chuàng)意大師”,也有信心能制作出令人印象深刻的創(chuàng)意視頻。
小心嘗試:遇到的問題與調(diào)整
剛開始,我嘗試用一些簡(jiǎn)單的關(guān)鍵字給到zeroscope_v2_576w模型,比如“小貓”,“科技感”,“奔跑”,來生成文本。然而,我很快發(fā)現(xiàn)這樣做產(chǎn)生的創(chuàng)意還是不夠豐富。語言的敏感性:英文輸入的效果更好。這和我之前預(yù)想的差不多,通過簡(jiǎn)單的關(guān)鍵詞生成視頻可能還是不夠。通過如下代碼,我搞定了創(chuàng)意文字的輸出。
from langchain.llms import OpenAI
from langchain import PromptTemplate
llm = OpenAI(model_name="gpt-3.5-turbo")
template = """
我想讓大模型根據(jù)文字生成創(chuàng)意視頻,我本身沒有什么思路, 會(huì)輸入幾個(gè)關(guān)鍵詞,你根據(jù)這幾個(gè)詞生成具有創(chuàng)意的一句話(英文),在15token以內(nèi)。
我把中文輸入放到這里:{input},將你生成的這句話直接輸出,由于我要用這句話直接生成視頻,所以在輸出的時(shí)候不要附加除了這句話之外的內(nèi)容。
"""
prompt = PromptTemplate(
#接受用戶輸入
input_variables=["input"],
#定義Prompt tempalte
template=template,
)
#這里是真正的用戶輸入
final_prompt = prompt.format(input='小貓 科技感 奔跑 ')
response = llm(final_prompt)
print (f"大語言模型的回應(yīng): {response}")