天天看點

VISPROG:以神經符号方式将人工智能推向更廣泛、複雜的任務領域

作者:極市平台

作者丨AI Around

來源丨AI Around

編輯丨極市平台

VISPROG:以神經符号方式将人工智能推向更廣泛、複雜的任務領域

Paper: https://openaccess.thecvf.com/content/CVPR2023/html/Gupta_Visual_Programming_Compositional_Visual_Reasoning_Without_Training_CVPR_2023_paper.html

Code: https://github.com/allenai/visprog

01導讀

VISPROG是一種神經符号方法,可利用自然語言指令解決複雜的組合式視覺任務。VISPROG避免了任何特定于任務的訓練需求。相反,它利用大型語言模型的上下文學習能力生成類似Python的可組合程式,這些程式将被執行以獲得解決方案和全面可解釋的推理結果。生成的程式的每一行可以調用多個現成的計算機視覺模型、圖像處理子程式或Python函數以生成中間輸出,後續程式部分可以使用這些中間輸出。在四項不同的任務中展示了VISPROG的靈活性:組合式視覺問答、基于圖像對的零樣本推理、實際知識對象标注和語言引導圖像編輯。類似VISPROG這樣的神經符号方法是擴充人工智能系統範圍、為人們提供執行複雜任務的有效途徑。

VISPROG:以神經符号方式将人工智能推向更廣泛、複雜的任務領域

VISPROG是一種可組合和可解釋的神經符号系統,用于進行組合式視覺推理。給定自然語言指令和高層次程式的幾個示例,VISPROG利用GPT-3的上下文學習功能針對任何新指令生成程式,并在輸入的圖像上執行程式以擷取預測結果。VISPROG還将中間輸出總結為可以解釋的視覺說明。

02子產品

VisProg目前支援20個子產品,可實作圖像了解、圖像操作(包括生成)、知識檢索和算術和邏輯操作等能力。在這裡顯示的紅色子產品是使用經過訓練的最先進神經模型實作的,而藍色子產品是使用多種Python庫(如PIL、OpenCV和AugLy)實作的非神經Python函數。

VISPROG:以神經符号方式将人工智能推向更廣泛、複雜的任務領域

在VISPROG中,每個子產品都被實作為一個Python類,見下述代碼,其具有以下方法:

(i)解析行以提取輸入參數的名稱和值以及輸出變量的名稱;

(ii)執行必要的計算,可能涉及訓練過的神經模型,并更新程式狀态以獲得輸出變量的名稱和值;

(iii)使用HTML方式以可視方式總結該步驟的計算(用于建立visual rationales)。要向VISPROG添加新子產品,隻需要實作并注冊一個子產品類,程式的執行使用該子產品将由VISPROG解釋器自動處理。

VISPROG:以神經符号方式将人工智能推向更廣泛、複雜的任務領域

03VISPROG中的程式生成

VisProg通過向LLM GPT-3提供指令及其相關的示例指令和對應程式,來生成程式。與以前的方法如神經子產品網絡(Neural Module Network)不同,VisProg利用大規模語言模型的上下文學習能力來生成程式,而不是使用預先定義的子產品。這使生成的程式更加靈活且能夠處理更多的組合式視覺任務。

VISPROG:以神經符号方式将人工智能推向更廣泛、複雜的任務領域

04可解釋性

VisProg不僅生成高度可解釋的程式,還通過将每個步驟的輸入和輸出的摘要拼接在一起生成visual rationales,以幫助了解和調試程式執行期間的資訊流。下面是兩個visual rationales的示例。

使用自然語言進行圖像編輯

VISPROG:以神經符号方式将人工智能推向更廣泛、複雜的任務領域

關于圖像對的推理(自然語言視覺推理)

VISPROG:以神經符号方式将人工智能推向更廣泛、複雜的任務領域

04結果可視化

在組合式視覺問答、基于零樣本的圖像對推理(僅使用單張圖像VQA模型)、實際知識對象标記和語言引導的圖像編輯等複雜視覺任務上展示了VisProg。下圖展示了VisProg在對象标記和圖像編輯任務上的能力。

VISPROG:以神經符号方式将人工智能推向更廣泛、複雜的任務領域

更多關于所有任務的定性結果以及相應的視覺說明,包括由于程式生成中的邏輯錯誤或子產品預測錯誤而導緻的失敗案例,請根據下面連結下載下傳查閱:https://openaccess.thecvf.com/content/CVPR2023/supplemental/Gupta_Visual_Programming_Compositional_CVPR_2023_supplemental.zip

繼續閱讀