論文:Visual ChatGPT :Talking, Drawing and Editing with Visual Foundation Models
代碼:https://github.com/microsoft/visual-chatgpt
出處:Microsoft Research Asia
時(shí)間:2023.03
Visual ChatGPT 是一個(gè)能夠調(diào)動(dòng)多個(gè)不同基礎(chǔ)視覺模型來理解視覺信息并生成對(duì)應(yīng)回答的系統(tǒng)。
一、背景
近期, Large Language models(LLMs)發(fā)展非???,如 T5[32]、BLOOM[36]、GPT-3[5] 等。
尤為引起人們注意的是 ChatGPT(基于 Instruct-GPT[29] 而來),能夠以真實(shí)對(duì)話的方式實(shí)現(xiàn)和人類的交互。
但是 ChatGPT 是使用語(yǔ)言模型訓(xùn)練的,不適用于圖像方面的生成任務(wù)。
圖像方面,Visual Foundation Models (VFMs) 也有很好的效果,BLIP[22] 能夠很好的理解圖像并輸出對(duì)圖像的描述, Visual Transformer 和 Stable Diffusion[35] 在圖像理解和生成方面有很好的效果。
但上述的先進(jìn)的語(yǔ)言模型和圖像模型只能接收特定模態(tài)的輸入和輸出。而且圖像模型有較高的固定輸入輸出格式,使得圖像模型沒有語(yǔ)言模型靈活。
能否構(gòu)建一個(gè)類似于 ChatGPT 的系統(tǒng)來實(shí)現(xiàn)圖像的理解和生成呢?
本文作者提出了一種 Visual ChatGPT,不需要從頭開始訓(xùn)練多模態(tài) ChatGPT,而是基于 ChatGPT 和多種 VFMs。
為了彌補(bǔ) ChatGPT 和這些 VFMs 的 gap,作者又構(gòu)建了一個(gè)提示管理器(Prompt Manager)來支持如下的功能,通過 Prompt Manager 來指導(dǎo) ChatGPT 使用這些 VFMs,并迭代反饋 :
- 直觀的告訴 ChatGPT 這些 VFMs 的能力和輸入輸出形式
- 將不同的視覺信息,如 png 圖像、深度圖像、掩碼矩陣轉(zhuǎn)換為語(yǔ)言形式的信息幫助 ChatGPT 進(jìn)行理解
- 處理不同 VFMs 的優(yōu)先級(jí)和沖突
Visual ChatGPT 能夠通過如下三步來實(shí)現(xiàn)圖像模型和語(yǔ)言模型的交互:
- 能夠同時(shí)接收語(yǔ)言和圖像作為輸入
- 提供需要多個(gè)人工智能模型與多個(gè)步驟協(xié)作的復(fù)雜視覺問題或視覺編輯指令
- 提供反饋意見并告訴系統(tǒng)糾錯(cuò)后的結(jié)果,即可以將視覺模型信息注入到 ChatGPT 中,并考慮多個(gè)輸入/輸出的模型和視覺反饋的模型
示例如圖 1 所示:
- 用戶上傳一張黃色花的圖片并輸入:“請(qǐng)根據(jù)預(yù)測(cè)的圖像深度,生成一朵紅色的花,然后逐步變成卡通的樣子”
- Prompt Manager 可以幫助 Visual ChatGPT 啟動(dòng)相關(guān) VFMs 的執(zhí)行鏈,首先使用深度估計(jì)模型來檢測(cè)深度信息,然后利用深度圖像模型生成一個(gè)紅花的深度信息,最后使用風(fēng)格遷移模型將風(fēng)格轉(zhuǎn)換為卡通
- Prompt Manager 通過提供可視化的類型和記錄信息來記錄轉(zhuǎn)換過程,當(dāng)獲得 “卡通” 的提示后,結(jié)束整個(gè)過程
本文貢獻(xiàn):
- 提出了 Visual ChatGPT,打開了 ChatGPT 和 VFMs 結(jié)合的大門,讓 ChatGPT 能夠處理更復(fù)雜的視覺問題
- 設(shè)計(jì)了一個(gè) Prompt Manager,包含 22 個(gè)不同的 VFMs 并且定義了它們之間的內(nèi)部相關(guān)性,以便更好的互動(dòng)和結(jié)合
- 驗(yàn)證了 Visual ChatGPT 對(duì)視覺的理解和生成能力
二、Visual ChatGPT
假設(shè)一個(gè)有 N N N 個(gè) question-answer pairs 的對(duì)話系統(tǒng)為 S = { ( Q 1 , A 1 ) , ( Q 2 , A 2 ) , . . . , ( Q N , A N ) } S=\{(Q_1, A_1),(Q_2, A_2),...,(Q_N, A_N) \} S={(Q1?,A1?),(Q2?,A2?),...,(QN?,AN?)}
為了從第 i i i 輪對(duì)話中得到響應(yīng) A i A_i Ai?,需要使用一系列的 VFM 和這些模型的中間輸出 A i ( j ) A_i^{(j)} Ai(j)?。 j j j 表示第 j j j 個(gè) VFM ( F F F) 的輸出。
也就是說在時(shí)域 Prompt Manager M M M 協(xié)調(diào)時(shí), A i ( j ) A_i^{(j)} Ai(j)? 的形式需要不斷修改來滿足每個(gè) F F F 的輸入。
最后,如果表示為最終響應(yīng),則系統(tǒng)輸出 A i ( j ) A_i^{(j)} Ai(j)? ,不再執(zhí)行 VFM。
Visual ChatGPT 的表達(dá)形式如下:
- System Principle P P P:系統(tǒng)規(guī)則為 Visual ChatGPT 提供了基礎(chǔ)規(guī)則,需要對(duì)圖像文件名敏感,能夠使用 VFM 來處理圖像。
- Visual Foundation Model F F F:Visual ChatGPT 能夠很好的組合不同的 VFM( F = { f 1 , f 2 , . . . , f N } F=\{f_1, f_2, ..., f_N\} F={f1?,f2?,...,fN?}),每個(gè)基礎(chǔ)模型 f i f_i fi? 都是具有顯式輸入和輸出的確定函數(shù)
- History of Dialogue H < i H_{<i} H<i?:定義第 i i i 輪對(duì)話的歷史為前面 “問題-回答” pairs 的串聯(lián)形式,即 { ( Q 1 , A 1 ) , ( Q 2 , A 2 ) , . . . , ( Q i , A i ) } \{(Q_1, A_1),(Q_2, A_2),...,(Q_i, A_i) \} {(Q1?,A1?),(Q2?,A2?),...,(Qi?,Ai?)}。此外,還有一個(gè)最大長(zhǎng)度閾值來截?cái)鄽v史信息,來滿足 ChatGPT 模型的輸入長(zhǎng)度
- User Query Q i Q_i Qi?:Visual ChatGPT 的用戶查詢包括語(yǔ)言查詢和視覺查詢
- History of Reasoning R i < j R_i^{<j} Ri<j?:為了解決復(fù)雜的問題,Visual ChatGPT 需要多個(gè) VFM 的合作,對(duì)第 i i i 輪對(duì)話, R i < j R_i^{<j} Ri<j? 是調(diào)用第 j j j 個(gè) VFM 之前的所有推理歷史
- Intermediate Answer A ( j ) A^{(j)} A(j):復(fù)雜查詢問題中,Visual ChatGPT 會(huì)調(diào)用多個(gè)不同的 VFM 來逐步獲得中間答案,也就會(huì)產(chǎn)生多個(gè)中間答案
- Prompt Manager M M M:提示管理器會(huì)將所有視覺信號(hào)轉(zhuǎn)換為語(yǔ)言以便于 ChatGPT 的理解
Visual ChatGPT 的基礎(chǔ)視覺模型如下,共 22 個(gè):
2.1 對(duì)系統(tǒng)規(guī)則的提示管理
Prompt Managing of System Principles M ( P ) M(P) M(P)
Visual ChatGPT 是一個(gè)能夠調(diào)動(dòng)多個(gè)不同 VFMs 來理解視覺信息并生成對(duì)應(yīng)回答的系統(tǒng)。故此,需要很多準(zhǔn)則來指導(dǎo)管理器將信息轉(zhuǎn)換為 ChatGPT 能理解的信息。
Prompt Managing (提示管理器)有如下幾個(gè)作用:
- Visual ChatGPT 的作用:協(xié)助完成一系列文本和視覺相關(guān)的任務(wù),如視覺問答、圖像生成和編輯等
- VFMs 的易用性:Visual ChatGPT 可以訪問 VFM 的列表來解決各種 VL 任務(wù)。決定使用哪個(gè)基礎(chǔ)模型完全由 ChatGPT 模型本身決定,因此很容易支持新的 VFM 和 VL 任務(wù)。
- 文件名敏感性:Visual ChatGPT 根據(jù)文件名訪問圖像文件,所以,使用精確的文件名很重要,可以避免歧義,因?yàn)橐惠唽?duì)話可能包含多個(gè)圖像及其不同的更新版本和文件名的濫用將導(dǎo)致混亂。因此,Visual ChatGPT 需要使用嚴(yán)格的文件名,以確保它檢索和操作正確的圖像文件。
- 鏈?zhǔn)剿枷耄喝鐖D 1 所示,要處理一個(gè)看似簡(jiǎn)單的命令,可能需要多個(gè) VFM,例如,查詢 “根據(jù)預(yù)測(cè)的圖像深度生成一朵紅花,然后使其像卡通一樣” 需要深度估計(jì)、深度到圖像和風(fēng)格轉(zhuǎn)移 VFM。為了通過將查詢分解為子問題來解決更具挑戰(zhàn)性的查詢,在 Visual ChatGPT 中引入了 CoT,以幫助決定、利用和分派多個(gè) VFM。
- 推理格式嚴(yán)格:Visual ChatGPT 必須遵循嚴(yán)格的推理格式。因此,需要用復(fù)雜的正則表達(dá)式匹配算法來解析中間推理結(jié)果,并為 ChatGPT 模型構(gòu)造合理的輸入格式,以幫助它確定下一次執(zhí)行,例如,觸發(fā)一個(gè)新的 VFM 或返回最終的響應(yīng)
- 可靠性:作為一種語(yǔ)言模型,Visual ChatGPT 可能會(huì)偽造虛假的圖像文件名或事實(shí),從而使系統(tǒng)不可靠。為了處理這些問題,Visual ChatGPT 忠實(shí)于視覺基礎(chǔ)模型的輸出,而不是制作圖像內(nèi)容或文件名。此外,多個(gè) VFM 的協(xié)作可以提高系統(tǒng)的可靠性,因此構(gòu)建的提示將指導(dǎo) ChatGPT 優(yōu)先利用 VFM,而不是基于對(duì)話歷史生成結(jié)果。
2.2 基礎(chǔ)模型的提示管理
Prompt Managing of Foundation Models M ( F ) M(F) M(F)
Visual ChatGPT 中有多個(gè) VFM 來處理各種 VL 任務(wù)。這些不同的 VFM 有相似之處,例如:
- 替換圖像中的目標(biāo)可以被視為生成一個(gè)新的圖像
- Image-to-Text(I2T)任務(wù)和圖像問題回答(VQA)任務(wù)可以理解為根據(jù)輸入的圖像來產(chǎn)生對(duì)應(yīng)的響應(yīng)
如圖 3 所示,提示管理器明確定義了以下各個(gè)子提示符,以幫助 Visual ChatGPT 準(zhǔn)確地理解和處理 VL 任務(wù):
- Name:名稱提示符為每個(gè) VFM 提供了全局函數(shù)的抽象,例如,回答關(guān)于圖像的問題,它不僅能夠幫助 Visual ChatGPT 以簡(jiǎn)潔的方式理解 VFM 的目的,而且也是 VFM 的 entry。
- Usage:使用提示符描述了應(yīng)該使用 VFM 的特定場(chǎng)景。例如,Pix2Pix 模型[35] 適合于更改圖像的樣式。提供這些信息有助于Visual ChatGPT 對(duì)特定任務(wù)使用哪個(gè) VFM 做出決定。
- Inputs/Outputs:輸入和輸出提示反應(yīng)了每個(gè) VFM 所需的輸入和輸出的格式,因?yàn)楦袷娇赡茏兓艽螅瑢?duì) Visual ChatGPT 能否正確執(zhí)行 VFM 有很重要的指導(dǎo)作用
- Example(可選):示例提示符是可選的,但它有助于 Visual ChatGPT 更好地理解如何在特定的輸入模板下使用特定的 VFM 并處理更復(fù)雜的查詢
2.3 . 用戶提問的提示管理
Prompt Managing of User Querie M ( Q i ) M(Q_i) M(Qi?)
Visual ChatGPT 能夠支持多種的查詢,包括語(yǔ)言和圖像的,簡(jiǎn)單的和復(fù)雜的,Prompt 通過如下兩個(gè)方面來處理用戶的查詢:
-
Generate Unique Filename
Visual ChatGPT 可以處理兩種與圖像相關(guān)的查詢:一種涉及新上傳的圖像,另一種涉及對(duì)現(xiàn)有圖像的引用。
對(duì)于新上傳的圖像,Visual ChatGPT 生成一個(gè)具有普遍唯一標(biāo)識(shí)符(UUID)的唯一文件名,并添加一個(gè)表示相對(duì)目錄的前綴字符串 “image”,例如,“image/{uuid}.png”。
雖然新上傳的圖像不會(huì)被輸入 ChatGPT,但會(huì)生成一個(gè)虛假的對(duì)話歷史,其中有一個(gè)問題說明圖像的文件名,還有一個(gè)答案表明圖像已經(jīng)收到。這段虛假的對(duì)話歷史有助于之后的對(duì)話。
對(duì)于涉及引用現(xiàn)有圖像的查詢,Visual ChatGPT 會(huì)忽略文件名檢查。這種方法已經(jīng)被證明是有益的,因?yàn)?ChatGPT 能夠理解用戶查詢的模糊匹配,如 UUID 名稱。
-
Force VFM Thinking
為了確保 Visual ChatGPT 的成功觸發(fā) VFM ,在(Qi)中添加了一個(gè)后綴提示:“由于 Visual ChatGPT 是一種文本語(yǔ)言模型,Visual ChatGPT 必須使用工具來觀察圖像,而不是想象。這些思想和觀察只在 Visual ChatGPT 中可見,Visual ChatGPT 應(yīng)該記住在人類的最終反應(yīng)中重復(fù)重要的信息。也會(huì)反復(fù)思考:我需要使用一個(gè)工具嗎?”。
這個(gè)提示有兩個(gè)目的:
- 它提示 Visual ChatGPT 使用基礎(chǔ)模型,而不是僅僅依賴于它的想象力;
- 它鼓勵(lì) Visual ChatGPT 提供由基礎(chǔ)模型生成的特定輸出,而不是像 “你在這里” 這樣的通用響應(yīng)。
2.4 基礎(chǔ)模型輸出的提示管理
Prompt Managing of Foundation Model Outputs M ( F ( A i ( j ) ) ) M(F(A_i^{(j)})) M(F(Ai(j)?))
對(duì)于來自不同 VFM F ( A i ( j ) ) F(A_i^{(j)}) F(Ai(j)?) 的中間輸出,Visual ChatGPT 能夠隱式地總結(jié)并將它們提供給 ChatGPT 進(jìn)行后續(xù)交互,即調(diào)用其他 VFM 進(jìn)行進(jìn)一步的操作,直到達(dá)到結(jié)束條件或反饋給用戶。內(nèi)部的步驟可以總結(jié)如下:
-
Genarete Chained Filename:
由于 Visual ChatGPT 的中間輸出將成為下一輪隱式對(duì)話的輸入,故應(yīng)該使這些輸出更合乎邏輯,以幫助 LLMs 更好地理解推理過程。
具體來說就是從視覺基礎(chǔ)模型生成的圖像被保存在路徑 “image/” 文件夾下。
之后,image 的命名為 :“{Name} {Operation} {Prev Name} {Org Name}”
例如 “image/ui3c_edge-of_o0ec_nji9dcgf.png” 表示輸入 o0ec 的一個(gè)名為 ui3c 的 canny edge image,且該圖像的元素名稱為 nji9dcgf。
這樣的命名規(guī)則可以讓 ChatGPT 了解是如何生成的這個(gè)圖像
-
Call for More VFMs:
Visual ChatGPT 的一個(gè)核心是可以自動(dòng)調(diào)用更多的 VFMs 來完成用戶的命令。也就是 ChatGPT 會(huì)不斷詢問自己,它是否需要 VFM 來解決當(dāng)前的問題,在每一階段結(jié)束時(shí)擴(kuò)展一個(gè) VFMs 的后綴。
-
Ask for More Details:
當(dāng)用戶的命令模棱兩可時(shí),Visual ChatGPT 應(yīng)該向用戶詢問更多的細(xì)節(jié),以幫助更好地利用 VFM。這種設(shè)計(jì)是為了安全考慮,因?yàn)?LLMs 不允許毫無(wú)根據(jù)地任意篡改或推測(cè)用戶的意圖(特別是當(dāng)輸入信息不足時(shí))。
三、實(shí)驗(yàn)
3.1 實(shí)驗(yàn)設(shè)置
使用 ChatGPT [29](OpenAI“文本-數(shù)據(jù)-003”版本)實(shí)現(xiàn) LLM(Large Language Model),并用 LangChain[7] 指導(dǎo) LLM。
從 HuggingFace Transformers [43], Maskformer [10] 和 ControlNet [53] 來收集基礎(chǔ)模型。
所有 22 個(gè) VFM 全部部署需要 4 個(gè) Nvidia V100 GPU,但用戶可以部署更少的基礎(chǔ)模型,以靈活地節(jié)省 GPU 資源。
聊天歷史記錄的最大長(zhǎng)度為 2000,多余的令牌被截?cái)嘁詽M足 ChatGPT 的輸入長(zhǎng)度。
3.2 多輪對(duì)話的完整案例
如圖 4 所示,展示了 Visual ChatGPT 的 16 輪多模態(tài)對(duì)話
3.3 Case Study of Prompt Manager
圖 5 展示了 Prompt Manager 相關(guān)案例研究
為了驗(yàn)證系統(tǒng)的效率,會(huì)從中刪除不同的部分來比較模型的性能,每次去除都會(huì)導(dǎo)致不同的容量退化。
1、Case Study of prompt managing of foundation models
VFM 的名稱是最重要的:
名稱需要有明確的定義,當(dāng)名稱缺失或不明確時(shí),Visual ChatGPT 會(huì)多次猜測(cè),直到它找到一個(gè)現(xiàn)有的 VFM,或遇到一個(gè)錯(cuò)誤,如圖 6 的左上部分所示。
VFM 的使用:
應(yīng)該清楚地描述應(yīng)該使用模型以避免錯(cuò)誤響應(yīng)的特定場(chǎng)景。右上角顯示了樣式轉(zhuǎn)換對(duì)替換對(duì)象的處理不當(dāng)。
應(yīng)準(zhǔn)確提示輸入和輸出格式,以避免參數(shù)錯(cuò)誤,如左下角所示。
雖然右下角刪除了示例提示,但 ChatGPT 也可以總結(jié)對(duì)話歷史和人類意圖來使用正確的 VFM,如右下角所示。
2、 Case Study of prompt managing of user query
圖 7 上半部分分析了用戶查詢的提示管理器案例
輸入的圖像需要有唯一的命名,以避免被覆蓋
3、Case Study of prompt managing of model outputs
如圖 7 下半部分所示
左下角的圖片比較了刪除和保留鏈?zhǔn)矫?guī)則的性能。使用鏈?zhǔn)矫?guī)則,Visual ChatGPT 可以識(shí)別文件類型,觸發(fā)正確的VFM,并得出文件依賴關(guān)系命名規(guī)則。
鏈?zhǔn)矫?guī)則確實(shí)有助于 Visual ChatGPT 的理解。
右下角的圖片給出了一個(gè)當(dāng)項(xiàng)目推斷不明確時(shí)要求更多細(xì)節(jié)的例子,這也表明了系統(tǒng)的安全性
四、當(dāng)前的局限性
1、強(qiáng)依賴于 ChatGPT 和 VFMs
2、需要不斷的提示,會(huì)比較耗時(shí),并且學(xué)專業(yè)的語(yǔ)言和圖像的知識(shí)
3、實(shí)時(shí)能力有限
4、token 長(zhǎng)度限制可能會(huì)限制可使用的語(yǔ)言模型的數(shù)量
5、因?yàn)?Visual ChatGPT 能夠方便的使用基礎(chǔ)模型,可能還包括一些遠(yuǎn)程模型,可能會(huì)導(dǎo)致敏感數(shù)據(jù)泄露
五、總結(jié)
本文算是首次將 ChatGPT 和多種計(jì)算機(jī)視覺基礎(chǔ)模型進(jìn)行結(jié)合的案例,通過設(shè)計(jì)一系列的提示,能夠逐步將視覺信息注入 ChatGPT 中,實(shí)現(xiàn)對(duì)視覺輸入的理解和生成。但也有很多限制,比如耗時(shí)較長(zhǎng),很依賴于基礎(chǔ)模型,執(zhí)行結(jié)果和人類期望是否一致等。
文章來源:http://www.zghlxwxcb.cn/news/detail-413948.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-413948.html
到了這里,關(guān)于【AIGC】3、Visual ChatGPT | 支持圖像/文本雙輸入的對(duì)話系統(tǒng)開源啦的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!