SegGPT: 在上下文中分割一切

在這里插入圖片描述

摘要

我們提出了 SegGPT,一個在上下文中執行“分割一切”的通用模型。我們將各種分割任務統一為一個通用的上下文學習框架,通過將不同類型的分割數據轉換為相同的圖像格式來兼容這些差異。SegGPT 的訓練被建模為一個帶有隨機顏色映射的上下文著色問題。訓練目標是根據上下文完成多樣的任務,而非依賴特定的顏色。訓練完成后,SegGPT 可通過上下文推理(in-context inference)執行圖像或視頻中的任意分割任務,如實例、區域、部件、輪廓和文本等。SegGPT 在多種任務上進行了評估,包括小樣本語義分割、視頻目標分割、語義分割和全景分割。實驗結果顯示其在域內和跨域目標分割中都展現出強大的能力,無論是定性還是定量評估。

1. 引言

分割是計算機視覺中最基本的問題之一,其目標是在像素級上定位并重組有意義的概念,如前景、類別、目標實例等。近年來,針對各類分割任務(如前景分割 [41]、交互式分割 [51, 34]、語義分割 [32, 28, 54, 39]、實例分割 [18, 11, 2, 48] 和全景分割 [23, 5, 8])的算法取得了顯著進展,表現越來越精確且快速。

然而,這些專用的分割模型通常局限于特定的任務、類別、粒度和數據類型。當面臨不同場景(如分割新概念,或從圖像遷移到視頻)時,往往需要重新訓練一個新模型。這不僅代價高昂,還難以適應大量不同分割任務的需求,缺乏可持續性。

在本研究中,我們的目標是訓練一個單一模型,能夠處理多樣且無限的分割任務。這一目標面臨兩個主要挑戰:(1) 如何在訓練中融合截然不同的數據類型,如部件、語義、實例、全景、人物、醫學圖像、航空圖像等;(2) 如何設計一種可泛化的訓練機制,區別于傳統的多任務學習方式,具備任務定義的靈活性,并能處理跨領域任務(out-of-domain tasks)。

為了解決這些挑戰,我們提出了 SegGPT——一個在上下文中執行“分割一切”的通用模型。我們將分割視為一種通用的視覺感知格式,并將不同的分割任務統一到一個通用的上下文學習框架中 [46]。該框架通過將各種分割數據轉換為相同的圖像格式,使模型可以處理不同類型的數據。SegGPT 的訓練被建模為一個上下文著色問題,對每個樣本使用隨機顏色映射。模型的目標是根據上下文對類別、實例、部件等區域進行著色。通過使用隨機顏色,模型被迫依賴上下文信息來完成任務,而非依賴預定義顏色,這使訓練方式更具靈活性與泛化能力。其余訓練流程與 [46] 保持一致,使用基礎 ViT [42] 和簡單的 smooth-?1 損失函數 [17]。

訓練完成后,SegGPT 能夠在圖像或視頻中通過少量示例進行上下文推理,完成多種分割任務,如目標實例、區域、部件、輪廓、文本等。為了更有效地整合多個上下文示例,我們提出了一種簡單但有效的上下文集成策略——特征集成(feature ensemble),該策略在多示例提示設置下能提升模型性能。此外,SegGPT 在不更新模型參數的前提下,也可以作為專用模型使用,通過調整特定的提示即可適配具體場景,例如在 ADE20K 數據集上進行語義分割。

我們的主要貢獻如下

  1. 首次展示了一個通用模型,可以自動執行一系列多樣的分割任務;
  2. 無需微調,我們直接評估了預訓練的 SegGPT 在多個任務上的表現,包括小樣本語義分割、視頻目標分割、語義分割和全景分割;
  3. 實驗結果表明,SegGPT 在域內和跨域目標分割方面均具有出色的泛化能力,無論是定性還是定量。

需要指出的是,本研究的目標并不是在所有基準測試中超越已有的專用方法或達到新的 SOTA(state-of-the-art)性能,因為我們認為這并不是一個通用模型的責任所在。

2. 相關工作

2.1. 圖像分割

分割是計算機視覺中的一個基礎問題,其目標是在像素級別定位和組織有意義的概念。分割任務的類型根據概念的定義而異,例如foreground、category或object instance。例如,semantic segmentation [55] 涉及對圖像進行像素級的語義分類,而instance segmentation [30] 則旨在識別不同的object instance及其類別。video object segmentation [52, 37, 12] 的任務是:在給定視頻第一幀中目標mask的情況下,在整個視頻序列中對特定目標進行分割。

以往的分割方法 [32, 28, 54, 39, 18, 11, 2, 48, 23, 5, 8] 通常是針對特定任務設計的,不能靈活地切換任務或更換類別。本文提出了一個通用接口,該接口與所有分割任務兼容,通過恰當的訓練方案,一個單一的通用模型就能在in-domain和out-of-domain的分割任務上都獲得良好的性能,無論是從定性還是定量的角度看。

2.2. 通用視覺模型

近年來,人們嘗試使用基于Transformer的模型來統一視覺領域中的不同任務,從而誕生了一些通用視覺模型(vision generalists)[6, 7, 56, 33, 24]。DETR [5] 是最早使用Transformer [42] 作為目標檢測任務特定head的模型之一。Pix2Seq系列 [6, 7] 將視覺任務的輸出空間定義為離散的token序列,并以自回歸方式執行目標檢測、instance segmentation、關鍵點估計以及圖像描述等任務。Unified-IO [33] 和 OFA [45] 采用sequence-to-sequence方式對視覺、視覺-語言和NLP任務進行聯合建模,其中輸入和輸出都被定義為離散token的序列。UViM [24] 將panoptic segmentation、深度估計、圖像著色等像素標注任務統一到一起,但為每種任務單獨訓練模型。

盡管這些工作看起來是在將不同任務統一到相似的空間中,實際上它們仍通過某種形式的硬指示符(如特殊token)來完成每個任務,從而難以推廣到新任務。與之相對,本文提出的方法使用in-context框架,保持了任務定義的靈活性,并利用隨機上色方案來避免模型退化為多任務學習解決方案,而是通過引用上下文信息來完成指定任務。另一個區別在于任務范圍:本工作主要聚焦于視覺感知中的一個核心類別,即圖像分割。

在這里插入圖片描述

2.3. In-Context視覺學習

GPT-3 [3] 將in-context learning引入深度學習,使得一系列NLP任務可以在給定prompt和示例的條件下被表述為文本補全問題。在計算機視覺領域,[1] 首次提出一種使用離散token進行圖像修復的in-context訓練框架,訓練數據來自視覺論文中的圖表和信息圖,展示了其在前景分割、單目標檢測和圖像著色方面的能力。Painter [46] 采用基于連續像素的masked image modeling方法,在七個多樣且具有挑戰性的視覺任務上進行in-context訓練,使用有監督數據集,并在這些任務上取得了競爭性的結果。

我們的工作構建在Painter框架之上,但專注于分割任務,因為其在視覺感知中扮演著核心角色。因此,本工作統一了多樣的分割數據,包括semantic segmentation、instance segmentation、part segmentation,甚至是特殊場景(如航空圖像)下的分割數據。此外,我們設計了一種隨機上色方案,迫使模型必須引用上下文信息才能完成任務,從而避免退化為多任務解法。由于分割任務和數據集的變化性小于深度/姿態估計,因此更容易共享內部結構以實現對in-domain任務的有效訓練,同時保持對out-of-domain分割任務的泛化能力。

3. 方法

SegGPT 是 Painter [46] 框架的一個特殊版本,它能夠通過一個通用的Painter對一切進行分割,因此命名為SegGPT。該訓練框架將視覺任務的輸出空間重新定義為“圖像”,并將不同任務統一為同一種圖像修復問題,即:隨機遮蓋任務輸出圖像并重建缺失像素。為了保持簡潔性與通用性,我們對架構與損失函數不作修改,即使用原始的ViT [13] 和簡單的smooth-?1 [17] 損失,但在in-context訓練中設計了一種新的隨機上色方案,以提升模型的泛化能力。

3.1. In-Context Coloring

在傳統的Painter框架中,每個任務的顏色空間是預定義的,這會導致模型的解法退化為多任務學習。例如,對于semantic segmentation,會預先定義一組顏色,并為每個語義類別分配固定的顏色。同樣地,在instance segmentation中,實例目標的顏色是根據其空間位置類別分配的,即顏色的數量等于空間位置的數量,這導致模型只依賴顏色本身來判斷任務,而不是利用不同segment之間的關系。

在這里插入圖片描述

為了解決上述限制,我們提出了一種用于in-context coloring的隨機著色方案。我們首先隨機采樣另一張與輸入圖像具有相似上下文的圖像,例如具有相同的語義類別或object instance。接著,從目標圖像中隨機采樣一組顏色,并將每種顏色映射為一個隨機顏色,從而對對應像素進行重新著色。由此我們獲得兩對圖像,定義為一個in-context pair。

此外,我們引入了mix-context training方法,通過使用混合樣例對模型進行訓練。這一方法將多張具有相同顏色映射的圖像拼接在一起,然后對拼接后的圖像進行隨機裁剪和縮放,從而生成一個mixed-context訓練樣本。通過這種方式,模型學會關注圖像的上下文信息,而不是僅依賴特定的顏色信息來判斷任務。

這種統一方式使我們能夠以一致的方式利用所有segmentation數據集,僅根據具體任務調整數據采樣策略。我們根據不同的數據類型定義不同的上下文。例如,對于semantic segmentation,我們隨機采樣類別;對于instance segmentation,我們以隨機數量采樣object instances。同一圖像的不同視角,例如通過一組圖像增強方式變換而得的視角,也被視為上下文中的圖像。在實現中,采樣完全基于顏色,例如相同的顏色可表示相同的類別或相同的instance。

在這里插入圖片描述

3.2. 上下文集成(Context Ensemble)

一旦訓練完成,SegGPT在推理過程中能夠釋放出其全部潛力。SegGPT支持在上下文中進行任意的分割任務,例如,使用單張圖像及其目標圖像的例子。目標圖像可以是單一顏色(不包括背景),也可以是多種顏色,例如在一次分割中分割多個類別或感興趣的對象。具體而言,給定一張待測試的輸入圖像,我們將其與示例圖像拼接,并將其輸入到SegGPT中,以獲得相應的in-context預測。

為了提供更準確和具體的上下文,可以使用多個示例。例如,可以使用相同語義類別的多個示例,或視頻中的前幾幀。為了有效地利用多個示例,我們提出了兩種上下文集成方法。一種是叫做空間集成(Spatial Ensemble),將多個示例按n × n網格拼接,然后重新采樣至與單個示例相同的大小。這種方法與in-context著色的直覺一致,多個示例的語義信息幾乎不增加額外成本就可以被提取到上下文中。另一種方法是特征集成(Feature Ensemble)。多個示例在批次維度上合并并獨立計算,唯一不同的是,在每個注意力層之后,查詢圖像的特征會被平均。通過這種方式,在推理過程中,查詢圖像可以從多個示例中收集信息。

3.3. 上下文調優(In-Context Tuning)

SegGPT能夠在不更新模型參數的情況下,適應特定的使用案例。我們凍結整個模型,并初始化一個可學習的圖像張量作為輸入上下文。在訓練過程中,只有這個可學習的圖像張量會被更新,其余部分的訓練保持不變,例如使用相同的損失函數。調優完成后,我們可以將學習到的圖像張量提取出來,并將其作為特定應用的即插即用鍵。例如,給定一個固定對象類別集的數據集,如ADE20K,我們可以為該數據集訓練一個定制的提示,而不會損害模型的通用性。或者,我們可以為特定場景(如你的公寓)或特定人物(如Bert的面部)優化一個提示圖像。這為廣泛的應用場景開辟了機會。

在這里插入圖片描述

溫馨提示:
閱讀全文請訪問"AI深語解構" SegGPT: 在上下文中分割一切

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/913217.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/913217.shtml
英文地址,請注明出處:http://en.pswp.cn/news/913217.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【網絡】Linux 內核優化實戰 - net.core.busy_read

目錄 核心功能工作原理與優勢配置方式1. 臨時配置(重啟失效)2. 永久配置(重啟生效) 與 net.core.busy_poll 的協同作用適用場景與注意事項適用場景:注意事項: 總結 net.core.busy_read 是 Linux 內核中與網…

alpine安裝及配置nodejs開發測試環境

在Alpine Linux上安裝和使用Node.js,打造開發和測試的環境。 apk倉庫打開社區的源。 先在命令行中使用命令apk search nodejs npm yarn對倉庫源進行搜索,,看看nodejs、yarn、npm的版本情況。 localhost:~# apk search nodejs npm yarn nod…

Apache Commons Pool中的GenericObjectPool詳解

GenericObjectPool 是 Apache Commons Pool 庫中的核心類,用于實現對象的池化管理,適用于數據庫連接、HTTP 客戶端、線程等昂貴資源的復用。以下從核心概念、工作原理、參數配置、使用場景及最佳實踐等方面詳細解析: ?? 一、核心概念與組成…

攻防世界CTF題目解析系列————(1)

題目來源:攻防世界wife_wife 打開題目之后,發現登錄界面,然后嘗試弱口令,sql二次注入,xss發現都沒有,然后看見下面go register(去注冊)按鈕 成功注冊(username和password隨便搞&…

楚存科技SD NAND貼片式T卡—高性能存儲解決方案、賦能AI智能硬件

楚存科技SD NAND貼片式T卡—高性能存儲解決方案、賦能AI智能硬件應用 在 AIoT 技術重構產業生態的時代浪潮中,智能硬件正從單一功能終端向數據樞紐演進 —— 智能家居設備日均產生 TB 級交互數據,工業物聯網傳感器需實時存儲生產參數,車載智…

Python[數據結構及算法 --- 查找]

一.順序查找&#xff08;無序表&#xff09;&#xff1a; def sequentialSearch(alist, item):pos 0found Falsewhile pos < len(alist) and not found:if alist[pos] item:found Trueelse:pos pos 1return foundtestlist [1, 2, 32, 8, 17, 19, 42, 13, 0] print(s…

Seata Saga模式實戰:Java微服務中的分布式事務管理

在分布式系統中&#xff0c;Saga模式是一種用于管理跨多個服務的事務的柔性事務解決方案。它通過將長事務拆分為多個本地事務&#xff08;每個事務對應一個服務的操作&#xff09;&#xff0c;并通過補償機制保證最終一致性。以下是Java中Saga模式的詳細介紹&#xff0c;包括實…

若依學習筆記1-validated

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- 保證 Spring AOP 相關的依賴包 --><dependency><groupId>org.springframework.boot<…

Excel 如何處理更復雜的嵌套邏輯判斷?

處理復雜的嵌套邏輯判斷&#xff0c;是Excel進階路上必然會遇到的一道坎。當簡單的IF函數“套娃”變得冗長、難以閱讀和維護時&#xff0c;我們就需要更高級、更清晰的工具。 這里介紹三種從基礎到高級的處理方法&#xff1a; 傳統的 IF 函數嵌套 (經典&#xff0c;但容易混亂)…

使用Claude和MCP增強Selenium

1.配置MCP服務器打開Claude Desktop—>Settings—>Developer—>Edit Config{"mcpServers": {"selenium": {"command": "npx","args": ["-y", "angiejones/mcp-selenium"]}} }配置完成后重啟Cl…

數據倉庫錨點建模方法的前世今生

數據倉庫錨點建模方法&#xff08;Anchor Modeling&#xff09;作為一種面向復雜數據環境的創新方法論&#xff0c;其發展歷程與技術演進深刻反映了數據管理從結構化到動態化的轉型需求。以下從起源、發展、核心思想、技術演進及未來趨勢五個維度&#xff0c;系統梳理錨點建模的…

<三>Sping-AI alibaba 文生圖

環境和配置請看&#xff1c;二&#xff1e;Sping-AI alibaba 入門-記憶聊天及持久化 源代碼&#xff1a;https://github.com/springaialibaba/spring-ai-alibaba-examples/blob/main/spring-ai-alibaba-image-example/dashscope-image/src/main/java/com/alibaba/cloud/ai/exam…

vue組件和模板

好的&#xff0c;我們來詳細解釋一下在 Vue&#xff08;以及現代前端開發&#xff09;中兩個最核心的概念&#xff1a;組件 (Component) 和 模板 (Template)。 理解了它們&#xff0c;就等于掌握了現代 Web 應用開發的基石。 一個核心比喻&#xff1a;樂高積木 在開始前&…

python學習打卡:DAY 18 推斷聚類后簇的類型

浙大疏錦行 聚類后的分析&#xff1a;推斷簇的類型 知識點回顧&#xff1a; 推斷簇含義的2個思路&#xff1a;先選特征和后選特征通過可視化圖形借助ai定義簇的含義科研邏輯閉環:通過精度判斷特征工程價值 作業&#xff1a;參考示例代碼對心臟病數據集采取類似操作&#xff0c;…

Ubuntu for ARM 更換為阿里云鏡像源

1. 簡介 該鏡像適用于配置 ARM, PowerPC 等其他架構的 ubuntu系統&#xff0c;不適用 x86 &#xff01;&#xff01;&#xff01; 各種版本的Ubuntu for ARM下載地址&#xff1a;https://cdimage.ubuntu.com/releases 2. 配置方法 打開 sources.list 文件。 vim /etc/apt/s…

HTML與JavaScript:構建動態交互式Web頁面的基石

HTML與JavaScript&#xff1a;構建動態交互式Web頁面的基石 在現代Web開發中&#xff0c;HTML和JavaScript是不可或缺的兩位主角。HTML負責頁面的結構和內容&#xff0c;而JavaScript則賦予頁面生命&#xff0c;使其能夠響應用戶交互、動態更新內容&#xff0c;并與后端服務進…

Python數據分析基礎03:探索性數據分析

相關文章&#xff1a; 《python數據分析基礎02&#xff1a;數據可視化分析》 《Python數據分析基礎01&#xff1a;描述性統計分析》 探索性數據分析&#xff08;Exploratory Data Analysis, EDA&#xff09; 的深度解析&#xff0c;涵蓋核心目標、方法論框架、關鍵技術及可視…

D3 面試題100道之(41-60)

這里是D3的面試題,我們從第 41~60題 開始逐條解答。一共100道,陸續發布中。 ?? 面試題(第 41~60 題) 41. D3 中如何添加圖例? 圖例可以通過手動創建 SVG 元素或使用 D3 的輔助函數來實現。常見做法是結合 d3.scaleOrdinal() 和 .range() 創建顏色映射圖例。 示例: c…

Spring Boot事件驅動模型深度解析

目錄 一、什么是Spring事件機制&#xff1f; 與傳統方法調用的對比&#xff1a; 二、四大核心組件解析 1. ApplicationEvent&#xff1a;事件對象 2. ApplicationEventPublisher&#xff1a;事件發布器 3. ApplicationListener&#xff1a;事件監聽接口 4. EventListener…

Python gmssl.SM4使用案例

Python gmssl.SM4使用案例 摘要:在異構計算系統驗證中,通常會有數據加解密的要求,例如用戶數據、權重參數等,本文將詳細介紹在UVM驗證環境中,調用Python的gmssl庫,用SM4實現加解密的驗證方案。 一、Python gmssl 庫介紹 gmssl 是一個開源的、純Python實現的國密算…