CVPR23最佳論文詳解!無需訓(xùn)練的組合視覺推理
來源:投稿 作者:橡皮
編輯:學(xué)姐

論文鏈接:https://arxiv.org/abs/2211.11559
項(xiàng)目主頁:https://prior.allenai.org/projects/visprog

圖 1. VISPROG 是一個(gè)用于組合視覺推理的模塊化且可解釋的神經(jīng)符號系統(tǒng)。給定一些自然語言指令的示例和所需的高級程序,VISPROG 使用 GPT-3 中的上下文學(xué)習(xí)為任何新指令生成一個(gè)程序,然后在輸入圖像上執(zhí)行該程序以獲得預(yù)測。 VISPROG 還將中間輸出總結(jié)為可解釋的視覺原理(圖 4)。我們在需要組成一組不同模塊來進(jìn)行圖像理解和操作、知識檢索以及算術(shù)和邏輯運(yùn)算的任務(wù)上演示了 VISPROG。
1.背景
對通用人工智能系統(tǒng)的追求導(dǎo)致了強(qiáng)大的端到端可訓(xùn)練模型的開發(fā),其中許多模型渴望為人工智能提供簡單的自然語言界面。用戶與模型進(jìn)行交互。構(gòu)建這些系統(tǒng)的主要方法是大規(guī)模無監(jiān)督預(yù)訓(xùn)練,然后是監(jiān)督多任務(wù)訓(xùn)練。然而,這種方法需要為每個(gè)任務(wù)提供精心策劃的數(shù)據(jù)集,這使得擴(kuò)展到我們最終希望這些系統(tǒng)執(zhí)行的復(fù)雜任務(wù)的無限長尾變得具有挑戰(zhàn)性。在這項(xiàng)工作中,我們探索使用大型語言模型來解決復(fù)雜任務(wù)的長尾問題,方法是將自然語言描述的這些任務(wù)分解為可以由專門的端到端訓(xùn)練模型或其他程序處理的更簡單的步驟。
想象一下,指示視覺系統(tǒng)“在這張圖像中標(biāo)記電視節(jié)目《生活大爆炸》中的 7 個(gè)主要角色?!睘榱藞?zhí)行此任務(wù),系統(tǒng)首先需要理解指令的意圖,然后執(zhí)行一系列步驟 - 檢測臉部,從知識庫中檢索《生活大爆炸》中的主要角色列表,使用角色列表對臉部進(jìn)行分類,并用識別出的角色的面孔和名字標(biāo)記圖像。雖然存在不同的視覺和語言系統(tǒng)來執(zhí)行每個(gè)步驟,但執(zhí)行以自然語言描述的任務(wù)超出了端到端訓(xùn)練系統(tǒng)的范圍。
我們介紹 VISPROG,它輸入視覺數(shù)據(jù)(單個(gè)圖像或一組圖像)以及自然語言指令,生成一系列步驟,如果您愿意,還可以生成可視化程序,然后執(zhí)行這些步驟以產(chǎn)生所需的輸出??梢暬绦蛑械拿恳恍卸紩{(diào)用系統(tǒng)當(dāng)前支持的各種模塊之一。模塊可以是現(xiàn)成的計(jì)算機(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)由專門的、可微分的神經(jīng)模塊組成一個(gè)特定于問題的、端到端的可訓(xùn)練網(wǎng)絡(luò)。這些方法要么使用脆弱的、現(xiàn)成的語義解析器來確定性地計(jì)算模塊的布局,要么通過 REINFORCE [30] 通過弱答案監(jiān)督來學(xué)習(xí)布局生成器。相比之下,VISPROG 使用強(qiáng)大的語言模型 (GPT-3) 和少量上下文示例來創(chuàng)建復(fù)雜的程序,無需任何培訓(xùn)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)。

圖 2. VISPROG 當(dāng)前支持的模塊。紅色模塊使用神經(jīng)模型(OWL-ViT、DSFD、MaskFormer、CLIP 、ViLT和 Stable Diffusion)。藍(lán)色模塊使用圖像處理和其他 python 子例程。這些模塊在由自然語言指令生成的程序中調(diào)用。添加新模塊來擴(kuò)展 VISPROG 的功能非常簡單。
VISPROG 也具有高度可解釋性。首先,VISPROG 生成易于理解的程序,用戶可以驗(yàn)證其邏輯正確性。其次,通過將預(yù)測分解為簡單的步驟,VISPROG 允許用戶檢查中間步驟的輸出以診斷錯(cuò)誤,并在需要時(shí)干預(yù)推理過程??偠灾哂兄虚g步驟結(jié)果(例如文本、邊界框、分割掩模、生成的圖像等)的執(zhí)行程序鏈接在一起以描述信息流,作為預(yù)測的視覺原理。
為了展示其靈活性,我們使用 VISPROG 執(zhí)行 4 個(gè)不同的任務(wù),這些任務(wù)共享一些通用技能(例如圖像解析),同時(shí)還需要一定程度的專業(yè)推理和視覺操作能力。這些任務(wù)是: (i) 組合視覺問答; (ii) 對圖像對進(jìn)行零樣本自然語言視覺推理(NL VR); (iii)來自自然語言指令的事實(shí)知識對象標(biāo)記; (iv) 語言引導(dǎo)的圖像編輯。
我們強(qiáng)調(diào),語言模型和任何模塊都沒有以任何方式進(jìn)行微調(diào)。讓 VISPROG 適應(yīng)任何任務(wù)非常簡單,只需提供一些由自然語言指令和相應(yīng)程序組成的上下文示例即可。雖然易于使用,但 VISPROG 在組合 VQA 任務(wù)上比基本 VQA 模型提高了 2.7 個(gè)點(diǎn),在 NL VR 上的零樣本準(zhǔn)確率高達(dá) 62.4%,無需對圖像對進(jìn)行訓(xùn)練,并且在知識方面取得了令人愉快的定性和定量結(jié)果標(biāo)記和圖像編輯任務(wù)。
2.主要貢獻(xiàn)
本文的主要貢獻(xiàn)包括:
(i) VISPROG - 一個(gè)使用語言模型的上下文學(xué)習(xí)能力從自然語言指令生成視覺程序的系統(tǒng),用于組合視覺任務(wù)(第 3 節(jié));
(ii) 展示 VISPROG 在復(fù)雜視覺任務(wù)上的靈活性,例如事實(shí)知識對象標(biāo)記和語言引導(dǎo)圖像編輯(第 4.3 和 4.4 節(jié)),這些任務(wù)在單一端到端模型中未能實(shí)現(xiàn)或取得有限成功;
(iii) 為這些任務(wù)提供可視化原理,并展示它們在錯(cuò)誤分析和用戶驅(qū)動(dòng)指令調(diào)整方面的實(shí)用性,以顯著提高 VISPROG 的性能(第 5.3 節(jié))。
3.視覺編程
在過去的幾年里,人工智能社區(qū)已經(jīng)為許多視覺和語言任務(wù)(例如對象檢測、分割、VQA、字幕和文本到圖像生成)創(chuàng)建了高性能、特定于任務(wù)的模型。雖然這些模型中的每一個(gè)都解決了一個(gè)定義明確但范圍狹窄的問題,但我們通常想要在現(xiàn)實(shí)世界中解決的任務(wù)往往更廣泛且定義松散。
為了解決此類實(shí)際任務(wù),人們必須收集一個(gè)新的特定于任務(wù)的數(shù)據(jù)集,這可能會很昂貴,或者精心編寫一個(gè)調(diào)用多個(gè)神經(jīng)模型、圖像處理子例程(例如圖像調(diào)整大小、裁剪、過濾和色彩空間轉(zhuǎn)換)的程序,以及其他計(jì)算(例如數(shù)據(jù)庫查找,或算術(shù)和邏輯運(yùn)算)。為我們每天遇到的無限長尾的復(fù)雜任務(wù)手動(dòng)創(chuàng)建這些程序不僅需要編程專業(yè)知識,而且速度慢、勞動(dòng)強(qiáng)度大,最終不足以覆蓋所有任務(wù)的空間。如果我們可以用自然語言描述任務(wù),并讓人工智能系統(tǒng)生成并執(zhí)行相應(yīng)的視覺程序,而無需任何訓(xùn)練,結(jié)果會怎樣呢?
用于可視化編程的大型語言模型。 GPT-3 等大型語言模型在上下文中進(jìn)行了少量輸入和輸出演示后,已表現(xiàn)出卓越的泛化到新樣本的能力。例如,用兩個(gè)英語到法語的翻譯示例和一個(gè)新的英語短語來提示 GPT-3:

產(chǎn)生了法語翻譯“bonsoir”。請注意,我們不必微調(diào) GPT-3 來執(zhí)行第三個(gè)短語的翻譯任務(wù)。 VISPROG 使用 GPT-3 的上下文學(xué)習(xí)能力來輸出自然語言指令的視覺程序。
與上例中的英語和法語翻譯對類似,我們用指令對和所需的高級程序提示 GPT-3。圖3顯示了這樣一個(gè)圖像編輯任務(wù)的提示。上下文示例中的程序是手動(dòng)編寫的,通??梢栽跊]有隨附圖像的情況下構(gòu)建。 VISPROG 程序的每一行或程序步驟均由模塊名稱、模塊的輸入?yún)?shù)名稱及其值以及輸出變量名稱組成。 VISPROG 程序通常使用過去步驟的輸出變量作為未來步驟的輸入。我們使用描述性模塊名稱(例如“Select”、“ColorPop”、“Replace”)、參數(shù)名稱(例如“image”、“object”、“query”)和變量名稱(例如“IMAGE”、“OBJ”)讓GPT-3了解各個(gè)模塊的輸入輸出類型以及功能。在執(zhí)行期間,輸出變量可用于存儲任意數(shù)據(jù)類型。例如,“OBJ”是圖像中的對象列表,其中包含與每個(gè)對象關(guān)聯(lián)的蒙版、邊界框和文本(例如類別名稱)。

圖 3.VISPROG 中的程序生成。
這些上下文示例與新的自然語言指令一起被輸入到 GPT-3 中。在不觀察圖像或其內(nèi)容的情況下,VISPROG 會生成一個(gè)程序(圖 3 底部),該程序可以在輸入圖像上執(zhí)行以執(zhí)行所描述的任務(wù)。

代碼 1.VISPROG 模塊的實(shí)現(xiàn)。
模塊。 VISPROG 目前支持 20 個(gè)模塊(圖 2),用于實(shí)現(xiàn)圖像理解、圖像處理(包括生成)、知識檢索以及執(zhí)行算術(shù)和邏輯運(yùn)算等功能。在 VISPROG 中,每個(gè)模塊都實(shí)現(xiàn)為一個(gè) Python 類(代碼 1),該類具有以下方法: (i) 解析該行以提取輸入?yún)?shù)名稱和值以及輸出變量名稱; (ii) 執(zhí)行可能涉及經(jīng)過訓(xùn)練的神經(jīng)模型的必要計(jì)算,并使用輸出變量名稱和值更新程序狀態(tài); (iii) 使用 html 直觀地總結(jié)該步驟的計(jì)算(稍后用于創(chuàng)建視覺原理)。向 VISPROG 添加新模塊只需實(shí)現(xiàn)并注冊一個(gè)模塊類,而使用該模塊的程序的執(zhí)行則由 VISPROG 解釋器自動(dòng)處理,這將在下面介紹。
程序執(zhí)行。 程序的執(zhí)行由解釋器處理。解釋器使用輸入初始化程序狀態(tài)(將變量名稱映射到其值的字典),并逐行執(zhí)行程序,同時(shí)使用該行中指定的輸入調(diào)用正確的模塊。執(zhí)行每個(gè)步驟后,程序狀態(tài)將使用該步驟輸出的名稱和值進(jìn)行更新。
視覺原理。 除了執(zhí)行必要的計(jì)算之外,每個(gè)模塊類還實(shí)現(xiàn)了一個(gè)名為 html() 的方法,以直觀地總結(jié) HTML 片段中模塊的輸入和輸出。解釋器只需將所有程序步驟的 HTML 摘要拼接成可視化原理(圖 4),即可用于分析程序的邏輯正確性以及檢查中間輸出。視覺原理還使用戶能夠理解失敗的原因,并盡可能地調(diào)整自然語言指令以提高性能。更多詳細(xì)信息請參見第 5.3 節(jié)。

圖 4. VISPROG 生成的視覺原理。這些基本原理直觀地總結(jié)了圖像編輯(上)和 NLVR 任務(wù)(下)推理期間生成的程序中每個(gè)計(jì)算步驟的輸入和輸出。
掃碼添加小享,回復(fù)“CVPR最佳”
免費(fèi)領(lǐng)取近5年CVPR最佳論文合集

4.任務(wù)
VISPROG 提供了一個(gè)靈活的框架,可應(yīng)用于各種復(fù)雜的視覺任務(wù)。我們在 4 項(xiàng)任務(wù)上評估 VISPROG,這些任務(wù)需要空間推理、多圖像推理、知識檢索以及圖像生成和操作等能力。圖 5 總結(jié)了用于這些任務(wù)的輸入、輸出和模塊。我們現(xiàn)在描述這些任務(wù)、它們的評估設(shè)置以及上下文示例的選擇。

圖 5.我們在一組不同的任務(wù)上評估 VISPROG。這些任務(wù)涵蓋各種輸入和輸出,并盡可能重用模塊(Loc、FaceDet、VQA)。
4.1組合式視覺問答
VISPROG 是組合式的,這使得它適合組合式、多步驟的視覺問答任務(wù):GQA。 GQA 任務(wù)的模塊包括用于開放詞匯定位的模塊、VQA 模塊、給定邊界框坐標(biāo)或空間介詞(例如上、左等)的裁剪圖像區(qū)域的函數(shù)、計(jì)數(shù)框的模塊以及用于計(jì)算框數(shù)量的模塊。評估 Python 表達(dá)式。例如,考慮這個(gè)問題:“小卡車是在戴頭盔的人的左邊還是右邊?”。 VISPROG 首先定位“戴頭盔的人”,裁剪這些人左側(cè)(或右側(cè))的區(qū)域,檢查該側(cè)是否有“小卡車”,如果有則返回“左”,否則返回“右”。 VISPROG 使用基于 VILT的問答模塊,但 VISPROG 不是簡單地將復(fù)雜的原始問題傳遞給 VILT,而是調(diào)用它來執(zhí)行更簡單的任務(wù),例如識別圖像補(bǔ)丁中的內(nèi)容。因此,我們生成的 GQA VISPROG 不僅比 VILT 更容易解釋,而且更準(zhǔn)確(表 1)?;蛘?,我們可以完全消除對 ViLT 等 QA 模型的需求,并使用 CLIP 和對象檢測器等其他系統(tǒng),但我們將其留待未來研究。
評估。 為了限制使用 GPT-3 生成程序所花費(fèi)的資金,我們創(chuàng)建了一個(gè) GQA 子集用于評估。 GQA 中的每個(gè)問題都標(biāo)有問題類型。為了評估不同的問題類型集(~ 100 個(gè)詳細(xì)類型),我們從平衡的 val (k = 5) 和 testdev (k = 20) 集中隨機(jī)抽取每個(gè)問題類型最多 k 個(gè)樣本。
提示。 我們使用所需的 VISPROG 程序手動(dòng)注釋平衡訓(xùn)練集中的 31 個(gè)隨機(jī)問題。用程序注釋問題很容易,需要寫下回答該特定問題所需的推理鏈。我們向 GPT-3 提供了較小的上下文示例子集,從該列表中隨機(jī)采樣,以減少回答每個(gè) GQA 問題的成本。
4.2圖像對上的零樣本推理
VQA 模型經(jīng)過訓(xùn)練可以回答有關(guān)單個(gè)圖像的問題。在實(shí)踐中,人們可能需要一個(gè)系統(tǒng)來回答有關(guān)圖像集合的問題。例如,用戶可以要求系統(tǒng)解析他們的假期相冊并回答以下問題:“在我們看到埃菲爾鐵塔的第二天,我們參觀了哪個(gè)地標(biāo)?”。我們展示了 VISPROG 使用單圖像 VQA 系統(tǒng)解決涉及多圖像的任務(wù)而無需對多圖像示例進(jìn)行訓(xùn)練的能力,而不是組裝昂貴的數(shù)據(jù)集并訓(xùn)練多圖像模型。
我們在 NLVRV2基準(zhǔn)測試中展示了這種能力,其中涉及驗(yàn)證有關(guān)圖像對的語句。通常,應(yīng)對 NLVRV2 挑戰(zhàn)需要訓(xùn)練自定義架構(gòu),將圖像對作為 NLVRV2 訓(xùn)練集的輸入。相反,VISPROG 通過將復(fù)雜的語句分解為有關(guān)單個(gè)圖像的簡單問題和涉及算術(shù)和邏輯運(yùn)算符的 Python 表達(dá)式以及圖像級問題的答案來實(shí)現(xiàn)此目的。 VQA模型VILT-VQA用于獲取圖像級答案,并評估python表達(dá)式以驗(yàn)證該語句。
評估。 我們通過從 NLVRV2 開發(fā)集中抽取 250 個(gè)隨機(jī)樣本來創(chuàng)建一個(gè)小型驗(yàn)證集,以指導(dǎo)提示選擇,并在 NLVRV2 的完整公共測試集上測試泛化。
提示。 我們針對 NLVRV2 訓(xùn)練集中的 16 個(gè)隨機(jī)語句對 VISPROG 程序進(jìn)行采樣和注釋。由于其中一些示例是冗余的(類似的程序結(jié)構(gòu)),我們還通過刪除 4 個(gè)冗余示例來創(chuàng)建 12 個(gè)示例的精選子集。
4.3事實(shí)知識對象標(biāo)記
我們經(jīng)常想要識別圖像中我們不知道名字的人和物體。例如,我們可能想要識別名人、政治家、電視節(jié)目中的人物、國家國旗、公司徽標(biāo)、流行汽車及其制造商、生物物種等等。解決這個(gè)任務(wù)不僅需要定位人、面孔和物體,還需要在外部知識庫中查找事實(shí)知識來構(gòu)建一組類別進(jìn)行分類,例如電視節(jié)目中角色的名字。我們將此任務(wù)簡稱為事實(shí)知識對象標(biāo)記或知識標(biāo)記。
為了解決知識標(biāo)簽問題,VISPROG 使用 GPT-3 作為隱式知識庫,可以通過自然語言提示進(jìn)行查詢,例如“列出電視節(jié)目《生活大爆炸》中的主要角色,用逗號分隔?!比缓螅珻LIP 圖像分類模塊可以使用生成的類別列表,該模塊對定位和人臉檢測模塊生成的圖像區(qū)域進(jìn)行分類。 VISPROG 的程序生成器根據(jù)自然語言指令中的上下文自動(dòng)確定是使用面部檢測器還是開放詞匯定位器。 VISPROG 還估計(jì)檢索到的類別列表的最大大小。例如,“標(biāo)記前 5 個(gè)德國汽車公司的徽標(biāo)”會生成一個(gè)包含 5 個(gè)類別的列表,而“標(biāo)記德國汽車公司的徽標(biāo)”則會生成一個(gè)由 GPT-3 確定的任意長度的列表,截止值為 20這使得用戶可以通過調(diào)整指令輕松控制分類過程中的噪聲。
評估。 為了評估 VISPROG 在此任務(wù)上的表現(xiàn),我們在 46 個(gè)圖像中注釋了 100 個(gè)標(biāo)記指令,這些圖像需要外部知識來標(biāo)記 253 個(gè)對象實(shí)例,包括流行文化、政治、體育和藝術(shù)領(lǐng)域的人物,以及各種對象(例如汽車、旗幟、水果、器具、家具等)。對于每條指令,我們通過精度(正確預(yù)測框的分?jǐn)?shù))和召回率(正確預(yù)測的地面實(shí)況對象的分?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 個(gè)上下文示例。請注意,這些示例的說明是幻覺的,即沒有圖像與這些示例相關(guān)聯(lián)。
4.4使用自然語言進(jìn)行圖像編輯
文本到圖像的生成在過去幾年中通過 DALL-E、Parti和 Stable Diffusion等模型取得了令人印象深刻的進(jìn)步。然而,這些模型仍然無法處理諸如“用 :p 隱藏 Daniel Craig 的臉部”(去識別化或隱私保護(hù))或“創(chuàng)建 Daniel Craig 的流行顏色并模糊背景”之類的提示(對象突出顯示),盡管使用面部檢測、分割和圖像處理模塊的組合以編程方式實(shí)現(xiàn)這些相對簡單。實(shí)現(xiàn)復(fù)雜的編輯,例如“用戴著墨鏡的巴拉克·奧巴馬替換巴拉克·奧巴馬”(對象替換),首先需要識別感興趣的對象,生成要替換的對象的掩模,然后調(diào)用圖像修復(fù)模型(我們使用穩(wěn)定擴(kuò)散) )與原始圖像、指定要替換的像素的掩碼以及要在該位置生成的新像素的描述。當(dāng)VISPROG配備必要的模塊和示例程序時(shí),可以輕松處理非常復(fù)雜的指令。
評估。 為了測試 VISPROG 的去識別、對象突出顯示和對象替換的圖像編輯指令,我們收集了 65 張圖像中的 107 條指令。
我們手動(dòng)對預(yù)測的正確性和報(bào)告準(zhǔn)確性進(jìn)行評分。請注意,只要生成的圖像在語義上正確,我們就不會懲罰使用穩(wěn)定擴(kuò)散的對象替換子任務(wù)的視覺偽影。
提示。 與知識標(biāo)記類似,我們?yōu)榇巳蝿?wù)創(chuàng)建了 10 個(gè)沒有關(guān)聯(lián)圖像的上下文示例。
5.實(shí)驗(yàn)與分析
我們的實(shí)驗(yàn)評估了提示數(shù)量對 GQA 和 NL VR 性能的影響(第 5.1 節(jié)),比較各種提示策略的 VISPROG 在四個(gè)任務(wù)上的推廣(第 5.2 節(jié)),分析每個(gè)任務(wù)的錯(cuò)誤來源(圖 9) ),并研究視覺原理在診斷錯(cuò)誤和通過指令調(diào)整提高 VISPROG 性能方面的實(shí)用性(第 5.3 節(jié))。
5.1提示大小的影響
圖 6 顯示,隨著 GQA 和 NL VR 提示中使用的上下文示例數(shù)量的增加,驗(yàn)證性能逐漸提高。每次運(yùn)行都會根據(jù)隨機(jī)種子隨機(jī)選擇帶注釋的上下文示例的子集。我們還發(fā)現(xiàn),對隨機(jī)種子進(jìn)行多數(shù)投票所帶來的性能始終優(yōu)于運(yùn)行中的平均性能。這與數(shù)學(xué)推理問題的思想鏈推理的發(fā)現(xiàn)是一致的。在 NLVR 上,VISPROG 的性能在提示數(shù)少于 GQA 的情況下達(dá)到飽和。我們認(rèn)為這是因?yàn)?NLVRV2 程序比 GQA 需要更少的模塊,因此使用這些模塊的演示也更少。

圖 6. GQA 和 NLVRV2 驗(yàn)證集上的上下文示例數(shù)量提高了性能。誤差線代表 5 次運(yùn)行的 95% 置信區(qū)間。來自相同運(yùn)行的預(yù)測用于多數(shù)投票。 (第 5.1 節(jié))
5.2泛化性
GQA ?在表 1 中,我們在 GQA 測試開發(fā)集上評估了不同的提示策略。對于在驗(yàn)證集上評估的最大提示大?。?4 個(gè)上下文中的示例),我們比較了由 VISPROG 在驗(yàn)證集上的 5 次運(yùn)行中選擇的最佳提示組成的隨機(jī)策略(每次運(yùn)行從 31 個(gè)帶注釋的示例中隨機(jī)采樣上下文中的示例) )以及多數(shù)投票策略,該策略在 5 次運(yùn)行中對每個(gè)問題進(jìn)行最大共識預(yù)測。雖然“隨機(jī)”提示僅略微優(yōu)于 VILT-VQA,但投票帶來了 2.7 個(gè)百分點(diǎn)的顯著收益。這是因?yàn)樵诙啻芜\(yùn)行中進(jìn)行投票,每次運(yùn)行都有一組不同的上下文示例,有效地增加了每個(gè)預(yù)測看到的上下文示例的總數(shù)。我們還評估了一個(gè)手動(dòng)策劃的提示,其中包含 20 個(gè)示例,其中 16 個(gè)來自 31 個(gè)帶注釋的示例,以及 4 個(gè)額外的幻覺示例,旨在更好地覆蓋驗(yàn)證集中觀察到的失敗案例。精心策劃的提示的性能與投票策略一樣好,同時(shí)使用的計(jì)算量減少了 5 倍,凸顯了提示工程的前景。
NLVR 表 2 顯示了 VISPROG 在 NLVRV2 測試集上的性能,并比較了隨機(jī)、投票和策劃提示策略與 GQA 的效果。雖然 VISPROG 執(zhí)行 NL VR 任務(wù)零樣本而無需對圖像對進(jìn)行訓(xùn)練,但我們報(bào)告了 VILT-NLVR,這是一種在 NLVRV2 上進(jìn)行微調(diào)的 VILT 模型,作為性能上限。雖然落后上限幾個(gè)點(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)練。
Knowledge Tagging 表 3 顯示了知識標(biāo)記任務(wù)的本地化和標(biāo)記性能。此任務(wù)的所有指令不僅需要開放詞匯本地化,還需要查詢知識庫以獲取類別來標(biāo)記本地化對象。這使得僅靠物體檢測器來說這是一項(xiàng)不可能完成的任務(wù)。使用原始指令,VISPROG 在標(biāo)記方面取得了令人印象深刻的 63.7% F1 分?jǐn)?shù),其中涉及正確本地化和命名對象,僅在本地化方面就取得了 80.6% F1 分?jǐn)?shù)。 VISPROG 中的視覺原理允許通過修改指令進(jìn)一步提高性能。參見第 2 節(jié)。有關(guān)指令調(diào)整的更多詳細(xì)信息,請參見 5.3。
Image Editing 表 4 顯示了語言引導(dǎo)圖像編輯任務(wù)的性能。圖 7 顯示了 VISPROG 中當(dāng)前模塊集可能進(jìn)行的廣泛操作,包括面部操作、通過顏色彈出和背景模糊等風(fēng)格效果突出顯示圖像中的一個(gè)或多個(gè)對象,以及通過替換圖像中的關(guān)鍵元素來更改場景上下文。場景(例如沙漠)。

表 1.GQA 測試開發(fā)結(jié)果。我們報(bào)告原始 GQA 測試開發(fā)集的子集的性能,如第 4.1 節(jié)所述。

表 2. NLVRV2 測試結(jié)果。 VISPROG 執(zhí)行 NLVR 零樣本,即無需在圖像對上訓(xùn)練任何模塊。 VILT-NLVR 是在 NLVRV2 上微調(diào)的 VILT 模型,用作上限。

表 3. 知識標(biāo)記結(jié)果。該表顯示了原始指令的性能以及在檢查視覺原理以了解特定于實(shí)例的錯(cuò)誤來源后創(chuàng)建的修改指令的性能。

表 4. 圖像編輯結(jié)果。我們手動(dòng)評估每個(gè)預(yù)測的語義正確性。
5.3視覺原理的實(shí)用性

圖 7. 圖像編輯(頂部)和知識標(biāo)記任務(wù)(底部)的定性結(jié)果。

圖 8. 使用視覺原理調(diào)整指令。通過揭示失敗的原因,VISPROG 允許用戶修改原始指令以提高性能。
誤差分析。 VISPROG 的可視化原理可以對故障模式進(jìn)行徹底分析。在圖 9 中,我們檢查每個(gè)任務(wù)約 100 個(gè)樣本的基本原理,以分解錯(cuò)誤來源。此類分析為提高 VISPROG 在各種任務(wù)上的性能提供了明確的途徑。例如,由于不正確的程序是 GQA 錯(cuò)誤的主要來源,影響了 16% 的樣本,因此可以通過提供更多類似于失敗問題的上下文示例來提高 GQA 的性能。通過將用于實(shí)現(xiàn)高錯(cuò)誤模塊的模型升級為性能更高的模塊,也可以提高性能。例如,對于 NL VR,用更好的 VQA 模型替換 VILT-VQA 模型可以將性能提高高達(dá) 24%(圖 9)。同樣,改進(jìn)用于實(shí)現(xiàn)“列表”和“選擇”模塊(知識標(biāo)記和圖像編輯任務(wù)的主要錯(cuò)誤來源)的模型可以顯著減少錯(cuò)誤。

圖 9. VISPROG 中的誤差源。
指令調(diào)整。 為了使之變得有用,視覺原理最終必須允許用戶提高系統(tǒng)在其任務(wù)中的性能。對于知識標(biāo)記和圖像編輯任務(wù),我們研究視覺原理是否可以幫助用戶修改或調(diào)整指令以實(shí)現(xiàn)更好的性能。圖 8 顯示了通過視覺原理揭示的本地化錯(cuò)誤如何使用戶能夠修改指令,從而更好地查詢本地化模塊。修改指令的其他方式包括為知識檢索提供更好的查詢或?yàn)檫x擇模塊提供類別名稱以將搜索限制到屬于該類別的分段區(qū)域。表 3 和表 4 顯示,指令調(diào)整可為知識標(biāo)記和圖像編輯任務(wù)帶來顯著收益。
掃碼添加小享,回復(fù)“CVPR最佳”
免費(fèi)領(lǐng)取近5年CVPR最佳論文合集
