本文提出了 VISPROG,一種神經(jīng)符號方法,用于在給定自然語言指令的情況下解決復(fù)雜的組合視覺任務(wù)。VISPROG 無需進(jìn)行任何特定任務(wù)的訓(xùn)練。相反,它利用大型語言模型的上下文學(xué)習(xí)能力來生成類似Python的模塊化程序,然后執(zhí)行這些程序以獲得解決方案和全面且可解釋的基本原理。
生成的程序的每一行都可以調(diào)用幾個現(xiàn)成的計算機(jī)視覺模型、圖像處理子例程或Python函數(shù)之一來產(chǎn)生可由程序的后續(xù)部分使用的中間輸出。我們展示了 VISPROG 在 4 個不同任務(wù)上的靈活性 - 組合視覺問答、圖像對的零樣本推理、事實知識對象標(biāo)記和語言引導(dǎo)圖像編輯。我們相信像 VISPROG 這樣的神經(jīng)符號方法是一個令人興奮的途徑,可以輕松有效地擴(kuò)展人工智能系統(tǒng)的范圍,以服務(wù)于人們可能希望執(zhí)行的復(fù)雜任務(wù)的長尾。
1 前言
目的:對通用人工智能系統(tǒng)的追求導(dǎo)致了強(qiáng)大的端到端可訓(xùn)練模型的開發(fā),其中許多模型渴望為人工智能提供簡單的自然語言界面使用戶能與模型進(jìn)行交互?,F(xiàn)有方法:構(gòu)建這些系統(tǒng)的主要方法是大規(guī)模無監(jiān)督預(yù)訓(xùn)練,然后是監(jiān)督多任務(wù)訓(xùn)練。然而,這種方法需要為每個任務(wù)提供精心策劃的數(shù)據(jù)集,這使得擴(kuò)展到我們最終希望這些系統(tǒng)執(zhí)行的復(fù)雜任務(wù)變得具有挑戰(zhàn)性。此論文工作:在這項工作中,探索使用大型語言模型來解決復(fù)雜任務(wù)的視覺問題,方法是將自然語言描述的這些任務(wù)分解為可以由專門的端到端訓(xùn)練模型或其他程序處理的更簡單的步驟。
圖 1.VISPROG 是一個用于組合視覺推理的模塊化且可解釋的神經(jīng)符號系統(tǒng)(左為框架圖,右為此系統(tǒng)可實現(xiàn)的四大任務(wù))VISPROG,它輸入視覺數(shù)據(jù)(單個圖像或一組圖像)以及自然語言指令,生成一系列步驟,如果您愿意,還可以生成可視化程序,然后執(zhí)行這些步驟以產(chǎn)生所需的輸出??梢暬绦蛑械拿恳恍卸紩{(diào)用系統(tǒng)當(dāng)前支持的各種模塊之一。模塊可以是現(xiàn)成的計算機(jī)視覺模型、語言模型、OpenCV中的圖像處理子例程或算術(shù)和邏輯運(yùn)算符。
模塊消耗通過執(zhí)行前面的代碼行產(chǎn)生的輸入,并輸出可被下游消耗的中間結(jié)果。在上面的示例中,VISPROG 生成的可視化程序調(diào)用人臉檢測器、GPT-3 作為知識檢索系統(tǒng),以及 CLIP作為開放詞匯圖像分類器來生成所需的輸出(參見圖。1)。VISPROG 改進(jìn)了以前為視覺應(yīng)用生成和執(zhí)行程序的方法。
對于視覺問答(VQA)任務(wù),神經(jīng)模塊網(wǎng)絡(luò)(NMN)[2,9,10,12]由專門的、可微分的神經(jīng)模塊組成一個特定于問題的、端到端的可訓(xùn)練網(wǎng)絡(luò)。這些方法要么使用脆弱的、現(xiàn)成的語義解析器來確定性地計算模塊的布局,要么通過 REINFORCE [30] 通過弱答案監(jiān)督來學(xué)習(xí)布局生成器。相比之下,VISPROG 使用強(qiáng)大的語言模型(GPT-3)以及少量上下文示例,無需任何訓(xùn)練即可創(chuàng)建復(fù)雜的程序1。VISPROG 創(chuàng)建的程序還使用比 NMN 更高級別的抽象,并調(diào)用經(jīng)過訓(xùn)練的最先進(jìn)模型和非神經(jīng) Python 子例程(圖 2)。
這些優(yōu)點(diǎn)使 VISPROG 成為易于使用、高性能和模塊化的神經(jīng)符號系統(tǒng)。VISPROG 也具有高度可解釋性。首先,VISPROG 生成易于理解的程序,用戶可以驗證其邏輯正確性。其次,通過將預(yù)測分解為簡單的步驟,VISPROG 允許用戶檢查中間步驟的輸出以診斷錯誤,并在需要時干預(yù)推理過程??偠灾哂兄虚g步驟結(jié)果(例如文本、邊界框、分割掩模、生成的圖像等)的執(zhí)行程序鏈接在一起以描述信息流,作為預(yù)測的視覺原理。
為了展示其靈活性,我們使用 VISPROG 執(zhí)行 4 個不同的任務(wù),這些任務(wù)共享一些通用技能(例如圖像解析),同時還需要一定程度的專業(yè)推理和視覺操作能力。這些任務(wù)是 - 我們強(qiáng)調(diào),語言模型和任何模塊都沒有以任何方式進(jìn)行微調(diào)。讓 VISPROG 適應(yīng)任何任務(wù)非常簡單,只需提供一些由自然語言指令和相應(yīng)程序組成的上下文示例即可。
雖然易于使用,但 VISPROG 在組合 VQA 任務(wù)上比基本 VQA 模型提高了 2.7 個點(diǎn),在 NLVR 上的零樣本準(zhǔn)確率高達(dá) 62.4%,無需對圖像對進(jìn)行訓(xùn)練,并且在知識標(biāo)記方面取得了令人愉快的定性和定量結(jié)果和圖像編輯任務(wù)。
本文貢獻(xiàn)點(diǎn):(i) VISPROG - 一個使用語言模型的上下文學(xué)習(xí)能力從自然語言指令生成視覺程序的系統(tǒng),用于組合視覺任務(wù)(第 3 節(jié));(ii) 展示 VISPROG 在復(fù)雜視覺任務(wù)上的靈活性,例如事實知識對象標(biāo)記和語言引導(dǎo)圖像編輯,這些任務(wù)在單一端到端模型中未能實現(xiàn)或取得有限成功;(iii) 為這些任務(wù)提供可視化原理,并展示它們在錯誤分析和用戶驅(qū)動指令調(diào)整方面的實用性,以顯著提高 VISPROG 的性能。
2 相關(guān)背景
由于大型語言模型 (LLM) 令人難以置信的理解、生成和上下文學(xué)習(xí)能力,神經(jīng)符號方法獲得了新的發(fā)展動力。現(xiàn)在簡單說明下以前的視覺任務(wù)程序生成和執(zhí)行方法、最近使用LLMs進(jìn)行視覺的工作以及語言任務(wù)推理方法的進(jìn)展。視覺任務(wù)的程序生成和執(zhí)行的相關(guān)工作。
神經(jīng)模塊網(wǎng)絡(luò)(NMN開創(chuàng)了視覺問答(VQA)任務(wù)的模塊化和組合方法。NMN 將神經(jīng)模塊組合成端到端的可微網(wǎng)絡(luò)。雖然早期的嘗試使用現(xiàn)成的解析器 ,但最近的方法使用 REINFORCE和弱答案監(jiān)督與神經(jīng)模塊聯(lián)合學(xué)習(xí)布局生成模型。雖然 VISPROG 與 NMN 的精神相似,但它比 NMN 有幾個優(yōu)勢。
首先,VISPROG 生成高級程序,在中間步驟調(diào)用經(jīng)過訓(xùn)練的最先進(jìn)的神經(jīng)模型和其他 Python 函數(shù),而不是生成端到端神經(jīng)網(wǎng)絡(luò)。這使得合并符號化、不可微分的模塊變得很容易。其次,VISPROG 利用LLMs的上下文學(xué)習(xí)能力,通過使用自然語言指令(或視覺問題或待驗證的陳述)以及一些示例來提示LLM(GPT-3)來生成程序類似的指令及其相應(yīng)的程序,從而無需為每個任務(wù)訓(xùn)練專門的程序生成器。
針對視覺任務(wù)的LLMs的相關(guān)工作。LLMs和情境學(xué)習(xí)已應(yīng)用于視覺任務(wù)。PICa使用 LLM 來完成基于知識的 VQA任務(wù)。PICa 通過標(biāo)題、對象和屬性將圖像中的視覺信息表示為文本,并將該文本表示與問題和上下文示例一起提供給 GPT-3,以直接生成答案。蘇格拉底模型(SM),由不同模態(tài)組成預(yù)訓(xùn)練模型,例如語言(BERT、GPT-2)、視覺語言(CLIP)和音頻語言(mSLAM),執(zhí)行許多零樣本任務(wù),包括圖像字幕、視頻到文本檢索和機(jī)器人規(guī)劃。
然而,在 SM 中,每個任務(wù)的組成都是預(yù)先確定和固定的。相比之下,VISPROG 通過根據(jù)指令、問題或語句生成程序來確定如何為每個實例構(gòu)建模型。我們展示了 VISPROG 處理復(fù)雜指令的能力,這些指令涉及不同的功能(20 個模塊)和不同的輸入(文本、圖像和圖像對)、中間(文本、圖像、邊界框、分割掩模)和輸出模式(文本和圖像) 。
與 VISPROG 類似,ProgPrompt 是一項并行工作,展示了LMM從自然語言指令生成類似 python 的機(jī)器人動作計劃的能力。雖然 ProgPrompt 模塊(例如“find”或“grab”)將字符串(通常是對象名稱)作為輸入,但 VISPROG 程序更為通用。在 VISPROG 程序的每個步驟中,模塊可以接受先前步驟生成的多個參數(shù),包括字符串、數(shù)字、算術(shù)和邏輯表達(dá)式或任意 Python 對象(例如包含邊界框或分段掩碼的 list() 或 dict() 實例) 。
3 方法(Visual Programming)
在過去的幾年里,人工智能社區(qū)已經(jīng)為許多視覺和語言任務(wù)(例如對象檢測、分割、VQA、字幕和文本到圖像生成)創(chuàng)建了高性能、特定于任務(wù)的模型。雖然這些模型中的每一個都解決了一個定義明確但范圍狹窄的問題,但我們通常想要在現(xiàn)實世界中解決的任務(wù)往往更廣泛且定義松散。為了解決此類實際任務(wù),人們必須收集一個新的特定于任務(wù)的數(shù)據(jù)集,這可能會很昂貴,或者精心編寫一個調(diào)用多個神經(jīng)模型、圖像處理子例程(例如圖像調(diào)整大小、裁剪、過濾和色彩空間轉(zhuǎn)換)的程序,以及其他計算(例如數(shù)據(jù)庫查找,或算術(shù)和邏輯運(yùn)算)。
為我們每天遇到的無限長尾的復(fù)雜任務(wù)手動創(chuàng)建這些程序不僅需要編程專業(yè)知識,而且速度慢、勞動強(qiáng)度大,最終不足以覆蓋所有任務(wù)的空間。如果可以用自然語言描述任務(wù)并讓人工智能系統(tǒng)生成并執(zhí)行任務(wù)無需任何訓(xùn)練即可對應(yīng)視覺程序似乎就可以解決問題?
3.1 Large language models for visual programming-用于可視化編程的大型語言模型。
GPT-3 等大型語言模型在上下文中進(jìn)行了少量輸入和輸出演示后,已表現(xiàn)出卓越的泛化到新樣本的能力。例如,用兩個英語到法語的翻譯示例和一個新的英語短語來提示 GPT-3產(chǎn)生了法語翻譯“bonsoir”。請注意,我們不必微調(diào) GPT-3 來執(zhí)行第三個短語的翻譯任務(wù)。VISPROG 使用 GPT-3 的上下文學(xué)習(xí)能力來輸出自然語言指令的視覺程序。
good morning -> bonjourgood day -> bonne journ ?eegood evening ->與上例中的英語和法語翻譯對類似,我們用指令對和所需的高級程序提示 GPT-3。圖3顯示了這樣一個圖像編輯任務(wù)的提示。上下文示例中的程序是手動編寫的,通??梢栽跊]有隨附圖像的情況下構(gòu)建。VISPROG 程序的每一行或程序步驟均由模塊名稱、模塊的輸入?yún)?shù)名稱及其值以及輸出變量名稱組成。
VISPROG 程序通常使用過去步驟的輸出變量作為未來步驟的輸入。我們使用描述性模塊名稱(例如“Select”、“ColorPop”、“Replace”)、參數(shù)名稱(例如“image”、“object”、“query”)和變量名稱(例如“IMAGE”、“OBJ”)讓GPT-3了解各個模塊的輸入輸出類型以及功能。在執(zhí)行期間,輸出變量可用于存儲任意數(shù)據(jù)類型。例如,“OBJ”是圖像中的對象列表,其中包含與每個對象關(guān)聯(lián)的蒙版、邊界框和文本(例如類別名稱)。
圖 3.VISPROG 中的程序生成。這些上下文示例與新的自然語言指令一起被輸入到 GPT-3 中。在不觀察圖像或其內(nèi)容的情況下,VISPROG 會生成一個程序(圖 3 底部),該程序可以在輸入圖像上執(zhí)行以執(zhí)行所描述的任務(wù)。
3.2 Modules-模塊介紹
VISPROG 目前支持 20 個模塊(圖 2),用于實現(xiàn)圖像理解、圖像處理(包括生成)、知識檢索以及執(zhí)行算術(shù)和邏輯運(yùn)算等功能。
在 VISPROG 中,每個模塊都實現(xiàn)為一個 Python 類(代碼 1),該類具有以下方法:(i) 解析該行以提取輸入?yún)?shù)名稱和值以及輸出變量名稱;(ii) 執(zhí)行可能涉及經(jīng)過訓(xùn)練的神經(jīng)模型的必要計算,并使用輸出變量名稱和值更新程序狀態(tài);(iii) 使用 html 直觀地總結(jié)該步驟的計算(稍后用于創(chuàng)建視覺原理)。
向 VISPROG 添加新模塊只需實現(xiàn)并注冊一個模塊類,而使用該模塊的程序的執(zhí)行則由 VISPROG 解釋器自動處理,這將在下面介紹。
圖 2. VISPROG 當(dāng)前支持的模塊。紅色模塊使用神經(jīng)模型(OWL-ViT、DSFD、MaskForme、CLIP、ViLT和 Stable Diffusion)。藍(lán)色模塊使用圖像處理和其他 python 子例程。這些模塊在由自然語言指令生成的程序中調(diào)用。添加新模塊來擴(kuò)展 VISPROG 的功能非常簡單(代碼 1)。
classVisProgModule():
def__init__(self):
#loadatrainedmodel;movetoGPU
defhtml(self,inputs:List,output:Any):
#returnanhtmlstringvisualizingstepI/O
defparse(self,step:str):
#parsestepandreturnlistofinputvalues/variablenames
#andoutputvariablename
defexecute(self,step:str,state:Dict):
inputs,input_var_names,output_var_name=self.parse(step)
#getvaluesofinputvariablesfromstate
forvar_nameininput_var_names:
inputs.append(state[var_name])
#performcomputationusingtheloadedmodel
output=some_computation(inputs)
#updatestate
state[output_var_name]=output
#visualsummaryofthestepcomputation
step_html=self.html(inputs,output)
returnoutput,step_html
3.3 Program Execution-程序執(zhí)行
程序的執(zhí)行由解釋器處理。解釋器使用輸入初始化程序狀態(tài)(將變量名稱映射到其值的字典),并逐行執(zhí)行程序,同時使用該行中指定的輸入調(diào)用正確的模塊。執(zhí)行每個步驟后,程序狀態(tài)將使用該步驟輸出的名稱和值進(jìn)行更新。
3.4 Visual Rationale-視覺原理
除了執(zhí)行必要的計算之外,每個模塊類還實現(xiàn)了一個名為 html() 的方法,以直觀地總結(jié) HTML 片段中模塊的輸入和輸出。解釋器只需將所有程序步驟的 HTML 摘要拼接成可視化原理(圖 4),即可用于分析程序的邏輯正確性以及檢查程序的內(nèi)部結(jié)構(gòu)的中間輸出。視覺原理還使用戶能夠理解失敗的原因,并盡可能地調(diào)整自然語言指令以提高性能。
圖 4. VISPROG 生成的視覺原理。這些基本原理直觀地總結(jié)了圖像編輯(上)和 NLVR 任務(wù)(下)推理期間生成的程序中每個計算步驟的輸入和輸出。
4 Tasks-具體任務(wù)應(yīng)用
VISPROG 提供了一個靈活的框架,可應(yīng)用于各種復(fù)雜的視覺任務(wù)。我們在 4 項任務(wù)上評估 VISPROG,這些任務(wù)需要空間推理、多圖像推理、知識檢索以及圖像生成和操作等能力。圖 5 總結(jié)了用于這些任務(wù)的輸入、輸出和模塊。我們現(xiàn)在描述這些任務(wù)、它們的評估設(shè)置以及上下文示例的選擇。
圖 5.我們在一組不同的任務(wù)上評估 VISPROG。這些任務(wù)涵蓋各種輸入和輸出,并盡可能重用模塊(Loc、FaceDet、VQA)。
4.1 Compositional Visual Question Answering-組合式視覺問答
VISPROG 是組合式的,這使得它適合組合式、多步驟的視覺問答任務(wù):GQA。GQA 任務(wù)的模塊包括用于開放詞匯本地化的模塊、VQA 模塊、給定邊界框坐標(biāo)或空間介詞(例如上、左等)的裁剪圖像區(qū)域的函數(shù)、計數(shù)框的模塊以及用于計算框數(shù)量的模塊。評估 Python 表達(dá)式。例如,考慮以下問題:“小卡車是在戴頭盔的人的左邊還是右邊?”。VISPROG 首先定位“戴頭盔的人”,裁剪這些人左側(cè)(或右側(cè))的區(qū)域,檢查該側(cè)是否有“小卡車”,如果有則返回“左”,否則返回“右”。
VISPROG 使用基于 VILT 的問答模塊,但 VISPROG 不是簡單地將復(fù)雜的原始問題傳遞給 VILT,而是調(diào)用它來執(zhí)行更簡單的任務(wù),例如識別部分圖像中的內(nèi)容。因此,我們生成的 GQA VISPROG 不僅比 VILT 更容易解釋,而且更準(zhǔn)確(表 1)?;蛘?,我們可以完全消除對 ViLT 等 QA 模型的需求,并使用 CLIP 和對象檢測器等其他系統(tǒng),但我們將其留待未來研究。
評估。為了限制使用 GPT-3 生成程序所花費(fèi)的資金,我們創(chuàng)建了一個 GQA 子集用于評估。GQA 中的每個問題都標(biāo)有問題類型。為了評估不同的問題類型集(~ 100 個詳細(xì)類型),我們從平衡的 val (k = 5) 和 testdev (k = 20) 集中隨機(jī)抽取每個問題類型最多 k 個樣本。提示。我們使用所需的 VISPROG 程序手動注釋平衡訓(xùn)練集中的 31 個隨機(jī)問題。用程序注釋問題很容易,需要寫下回答該特定問題所需的推理鏈。我們向 GPT-3 提供了較小的上下文示例子集,從該列表中隨機(jī)采樣,以減少回答每個 GQA 問題的成本。
表 1.GQA 測試開發(fā)結(jié)果。我們報告原始 GQA 測試開發(fā)集的一個子集的性能
4.2 Zero-Shot Reasoning on Image Pairs-圖像對上的零樣本推理
VQA 模型經(jīng)過訓(xùn)練可以回答有關(guān)單個圖像的問題。在實踐中,人們可能需要一個系統(tǒng)來回答有關(guān)圖像集合的問題。例如,用戶可以要求系統(tǒng)解析他們的假期相冊并回答以下問題:“在我們看到埃菲爾鐵塔的第二天,我們參觀了哪個地標(biāo)?”。
我們展示了 VISPROG 使用單圖像 VQA 系統(tǒng)解決涉及多圖像的任務(wù)而無需對多圖像示例進(jìn)行訓(xùn)練的能力,而不是采集昂貴的數(shù)據(jù)集并訓(xùn)練多圖像模型。我們在 NLVRV2基準(zhǔn)測試中展示了這種能力,其中涉及驗證有關(guān)圖像對的語句。通常,應(yīng)對 NLVRV2 挑戰(zhàn)需要訓(xùn)練自定義架構(gòu),將圖像對作為 NLVRV2 訓(xùn)練集的輸入。
相反,VISPROG 通過將復(fù)雜的語句分解為有關(guān)單個圖像的簡單問題和涉及算術(shù)和邏輯運(yùn)算符的 Python 表達(dá)式以及圖像級問題的答案來實現(xiàn)此目的。VQA模型VILT-VQA用于獲取圖像級答案,并評估python表達(dá)式以驗證該語句。評估。我們通過從 NLVRV2 開發(fā)集中抽取 250 個隨機(jī)樣本來創(chuàng)建一個小型驗證集,以指導(dǎo)提示選擇,并在 NLVRV2 的完整公共測試集上測試泛化。
提示。我們針對 NLVRV2 訓(xùn)練集中的 16 個隨機(jī)語句對 VISPROG 程序進(jìn)行采樣和注釋。由于其中一些示例是冗余的(類似的程序結(jié)構(gòu)),我們還通過刪除 4 個冗余示例來創(chuàng)建 12 個示例的精選子集。
4.3 Factual Knowledge Object Tagging-事實知識對象標(biāo)記
我們經(jīng)常想要識別圖像中我們不知道名字的人和物體。例如,我們可能想要識別名人、政治家、電視節(jié)目中的人物、國家國旗、公司徽標(biāo)、流行汽車及其制造商、生物物種等等。解決這個任務(wù)不僅需要定位人、面孔和物體,還需要在外部知識庫中查找事實知識來構(gòu)建一組類別進(jìn)行分類,例如電視節(jié)目中角色的名字。我們將此任務(wù)簡稱為事實知識對象標(biāo)記或知識標(biāo)記。為了解決知識標(biāo)簽問題,VISPROG 使用 GPT-3 作為隱式知識庫,可以通過自然語言提示進(jìn)行查詢,例如“列出電視節(jié)目《生活大爆炸》中的主要角色,用逗號分隔?!?br />
然后,CLIP 圖像分類模塊可以使用生成的類別列表,該模塊對定位和人臉檢測模塊生成的圖像區(qū)域進(jìn)行分類。VISPROG 的程序生成器根據(jù)自然語言指令中的上下文自動確定是使用面部檢測器還是開放詞匯定位器。VISPROG 還估計檢索到的類別列表的最大大小。
例如,“標(biāo)記前 5 個德國汽車公司的徽標(biāo)”會生成一個包含 5 個類別的列表,而“標(biāo)記德國汽車公司的徽標(biāo)”則會生成一個由 GPT-3 確定的任意長度的列表,截止值為 20這使得用戶可以通過調(diào)整指令輕松控制分類過程中的噪聲。評估。為了評估 VISPROG 在此任務(wù)上的表現(xiàn),我們在 46 個圖像中注釋了 100 個標(biāo)記指令,這些圖像需要外部知識來標(biāo)記 253 個對象實例,包括流行文化、政治、體育和藝術(shù)領(lǐng)域的人物,以及各種對象(例如汽車、旗幟、 水果、電器、家具等)。
對于每條指令,我們通過精度(正確預(yù)測框的分?jǐn)?shù))和召回率(正確預(yù)測的地面實況對象的分?jǐn)?shù))來衡量定位和標(biāo)記性能。標(biāo)記度量要求預(yù)測的邊界框和關(guān)聯(lián)的標(biāo)簽或類標(biāo)簽都是正確的,而本地化會忽略標(biāo)簽。為了確定定位的正確性,我們使用 IoU 閾值 0.5。我們通過 F1 分?jǐn)?shù)(指令間平均精度和召回率的調(diào)和平均值)總結(jié)定位和標(biāo)記性能。提示。我們?yōu)榇巳蝿?wù)創(chuàng)建了 14 個上下文示例。請注意,這些示例的說明是幻覺的,即沒有圖像與這些示例相關(guān)聯(lián)。
4.4 Image Editing with Natural Language-使用自然語言進(jìn)行圖像編輯
文本到圖像的生成在過去幾年中通過 DALL-E、Parti 和 Stable Diffusion等模型取得了令人印象深刻的進(jìn)步。然而,這些模型仍然無法處理諸如“用 :p 隱藏 Daniel Craig 的臉部”(去識別化或隱私保護(hù))或“創(chuàng)建 Daniel Craig 的流行顏色并模糊背景”之類的提示(對象突出顯示),盡管使用面部檢測、分割和圖像處理模塊的組合以編程方式實現(xiàn)這些相對簡單。實現(xiàn)復(fù)雜的編輯,例如“用戴著墨鏡的巴拉克·奧巴馬替換巴拉克·奧巴馬”(對象替換),首先需要識別感興趣的對象,生成要替換的對象的掩模,然后調(diào)用圖像修復(fù)模型(我們使用穩(wěn)定擴(kuò)散) )與原始圖像、指定要替換的像素的掩碼以及要在該位置生成的新像素的描述。
當(dāng)VISPROG配備必要的模塊和示例程序時,可以輕松處理非常復(fù)雜的指令。評估。為了測試 VISPROG 的去識別、對象突出顯示和對象替換的圖像編輯指令,我們收集了 65 張圖像中的 107 條指令。我們手動對預(yù)測的正確性和報告準(zhǔn)確性進(jìn)行評分。請注意,只要生成的圖像在語義上正確,我們就不會懲罰使用穩(wěn)定擴(kuò)散的對象替換子任務(wù)的視覺偽影。提示。與知識標(biāo)記類似,我們?yōu)榇巳蝿?wù)創(chuàng)建了 10 個沒有關(guān)聯(lián)圖像的上下文示例。
5 實驗與分析
我們的實驗評估了提示數(shù)量對 GQA 和 NLVR 性能的影響(第 5.1 節(jié)),比較各種提示策略的 VISPROG 在四個任務(wù)上的泛化(第 5.2 節(jié)),分析每個任務(wù)的錯誤來源(圖 9),并研究視覺原理在診斷錯誤和通過指令調(diào)整提高 VISPROG 性能方面的實用性(第 5.3 節(jié))。
5.1 提示大小的影響
圖 6 顯示,隨著 GQA 和 NLVR 提示中使用的上下文示例數(shù)量的增加,驗證性能逐漸提高。每次運(yùn)行都會根據(jù)隨機(jī)種子隨機(jī)選擇帶注釋的上下文示例的子集。
我們還發(fā)現(xiàn),對隨機(jī)種子進(jìn)行多數(shù)投票所帶來的性能始終優(yōu)于運(yùn)行中的平均性能。這與數(shù)學(xué)推理問題的思想鏈推理文獻(xiàn)中的發(fā)現(xiàn)是一致的。在 NLVR 上,VISPROG 的性能在提示數(shù)少于 GQA 的情況下達(dá)到飽和。我們認(rèn)為這是因為 NLVRV2 程序比 GQA 需要更少的模塊,因此使用這些模塊的演示也更少。
圖 6. GQA 和 NLVRV2 驗證集上的上下文示例數(shù)量提高了性能。誤差線代表 5 次運(yùn)行的 95% 置信區(qū)間。來自相同運(yùn)行的預(yù)測用于多數(shù)投票。(第 5.1 節(jié))
5.2 概括
GQA。在表1中, 我們在 GQA testdev集上評估不同的提示策略。對于在驗證集上評估的最大提示大?。?4 個上下文中的示例),我們比較了由 VISPROG 在驗證集上的 5 次運(yùn)行中選擇的最佳提示組成的隨機(jī)策略(每次運(yùn)行從 31 個帶注釋的示例中隨機(jī)采樣上下文中的示例) )以及多數(shù)投票策略,該策略在 5 次運(yùn)行中對每個問題進(jìn)行最大共識預(yù)測。雖然“隨機(jī)”提示僅略微優(yōu)于 VILT-VQA,但投票帶來了 2.7 個百分點(diǎn)的顯著收益。這是因為在多次運(yùn)行中進(jìn)行投票,每次運(yùn)行都有一組不同的上下文示例,有效地增加了每個預(yù)測看到的上下文示例的總數(shù)。
我們還評估了一個手動策劃的提示,其中包含 20 個示例,其中 16 個來自 31 個帶注釋的示例,以及 4 個額外的幻覺示例,旨在更好地覆蓋驗證集中觀察到的失敗案例。精心策劃的提示的性能與投票策略一樣好,同時使用的計算量減少了 5 倍,凸顯了提示工程的前景。NLVR。表2 顯示了 VISPROG 在 NLVRV2 測試集上的性能,并比較了隨機(jī)、投票和策劃的提示策略與 GQA 的效果。雖然 VISPROG 在無需對圖像對進(jìn)行訓(xùn)練的情況下零樣本執(zhí)行 NLVR 任務(wù),但我們報告了 VILT-NLVR,這是一種在 NLVRV2 上進(jìn)行微調(diào)的 VILT 模型,作為性能上限。
雖然落后上限幾個點(diǎn),但 VISPROG 僅使用單圖像 VQA 模型進(jìn)行圖像理解和 LLM 進(jìn)行推理,顯示出強(qiáng)大的零樣本性能。請注意,VISPROG 使用 VILT-VQA 作為其 VQA 模塊,該模塊在 VQAV2 單圖像問答任務(wù)上進(jìn)行訓(xùn)練,而不是在 NLVRV2 上進(jìn)行訓(xùn)練。
表 2. NLVRV2 測試結(jié)果。VISPROG 執(zhí)行 NLVR 零樣本,即無需在圖像對上訓(xùn)練任何模塊。VILT-NLVR 是在 NLVRV2 上微調(diào)的 VILT 模型,用作上限。Knowledge Tagging。表3 顯示了知識標(biāo)記任務(wù)的本地化和標(biāo)記性能。此任務(wù)的所有指令不僅需要開放詞匯本地化,還需要查詢知識庫以獲取類別來標(biāo)記本地化對象。
這使得僅靠物體檢測器來說這是一項不可能完成的任務(wù)。使用原始指令,VISPROG 在標(biāo)記方面取得了令人印象深刻的 63.7% F1 分?jǐn)?shù),其中涉及正確本地化和命名對象,僅在本地化方面就取得了 80.6% F1 分?jǐn)?shù)。VISPROG 中的視覺原理允許通過修改指令進(jìn)一步提高性能。
表 3. 知識標(biāo)記結(jié)果。該表顯示了原始指令的性能以及在檢查視覺原理以了解特定于實例的錯誤來源后創(chuàng)建的修改指令的性能。Image Editing。
表4 顯示了語言引導(dǎo)圖像編輯任務(wù)的性能。圖 7 顯示了 VISPROG 中當(dāng)前模塊集可能進(jìn)行的廣泛操作,包括面部操作、通過顏色彈出和背景模糊等風(fēng)格效果突出顯示圖像中的一個或多個對象,以及通過替換關(guān)鍵元素來更改場景上下文 在場景中(例如沙漠)。
表 4. 圖像編輯結(jié)果。我們手動評估每個預(yù)測的語義正確性。
圖 7. 圖像編輯(頂部)和知識標(biāo)記任務(wù)(底部)的定性結(jié)果。
5.3. 視覺原理的實用性
誤差分析。
VISPROG 的可視化原理可以對故障模式進(jìn)行徹底分析。在圖 9 中,我們檢查每個任務(wù)約 100 個樣本的基本原理,以分解錯誤來源。此類分析為提高 VISPROG 在各種任務(wù)上的性能提供了明確的途徑。例如,由于不正確的程序是 GQA 錯誤的主要來源,影響了 16% 的樣本,因此可以通過提供更多類似于失敗問題的上下文示例來提高 GQA 的性能。通過將用于實現(xiàn)高錯誤模塊的模型升級為性能更高的模塊,也可以提高性能。例如,用更好的 NLVR VQA 模型替換 VILT-VQA 模型可以將性能提高高達(dá) 24%(圖 9)。同樣,改進(jìn)用于實現(xiàn)“列表”和“選擇”模塊(知識標(biāo)記和圖像編輯任務(wù)的主要錯誤來源)的模型可以顯著減少錯誤。
圖 9. VISPROG 中的誤差源。
指令調(diào)整。
為了有用,視覺原理最終必須允許用戶提高系統(tǒng)在其任務(wù)中的性能。對于知識標(biāo)記和圖像編輯任務(wù),我們研究視覺原理是否可以幫助用戶修改或調(diào)整指令以實現(xiàn)更好的性能。圖 8 顯示了通過視覺原理揭示的本地化錯誤如何使用戶能夠修改指令,以便更好地查詢本地化模塊。修改指令的其他方式包括為知識檢索提供更好的查詢或為選擇模塊提供類別名稱以將搜索限制到屬于該類別的分段區(qū)域。表 3 和表 4 顯示,指令調(diào)整可為知識標(biāo)記和圖像編輯任務(wù)帶來顯著收益。
圖 8. 使用視覺原理調(diào)整指令。通過揭示失敗的原因,VISPROG 允許用戶修改原始指令以提高性能。
5 總結(jié)
VISPROG 提出可視化編程作為一種簡單而有效的方式,將LMMs的推理能力用于復(fù)雜的視覺任務(wù)。VISPROG 展示了強(qiáng)大的性能,同時生成高度可解釋的視覺原理。我們相信,研究整合用戶反饋以提高 VISPROG 等神經(jīng)符號系統(tǒng)性能的新方法是構(gòu)建下一代通用視覺系統(tǒng)的一個令人興奮的方向。
-
人工智能
+關(guān)注
關(guān)注
1789文章
46669瀏覽量
237104 -
可視化
+關(guān)注
關(guān)注
1文章
1166瀏覽量
20858 -
計算機(jī)視覺
+關(guān)注
關(guān)注
8文章
1694瀏覽量
45901
原文標(biāo)題:?基于文本提示就可自動實現(xiàn)復(fù)雜計算機(jī)視覺任務(wù)?
文章出處:【微信號:3D視覺工坊,微信公眾號:3D視覺工坊】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論