文章精讀篇——OMG-Seg

題目:OMG-Seg : Is One Model Good Enough For All Segmentation?

作者:Xiangtai Li1 ? Haobo Yuan1 Wei Li1 Henghui Ding1 Size Wu1 Wenwei Zhang1Yining Li2 Kai Chen2 Chen Change Loy1

代碼:OMG-Seg

會議:cvpr2024


邊讀邊記:

這里面提到,omg-seg是首個將圖像、視頻、開放詞匯、交互分割,四種結合到一起的模型。之前的unified models是有一個共享的視覺backbone,多個特定任務分枝;而本模型是共享的encoder-decoder架構,所有任務的輸出都被統一為一種“查詢表示”(Query Representation),通過這種設計,OMG-Seg 能夠用一個統一的框架處理多種任務,而無需為每個任務設計單獨的分支。

3.1節:定義了圖像分割、視頻分割、交互分割、開放詞匯分割的任務。

其中視頻分割提到了tube mask,但是我不太理解tube mask是什么樣子的。大概就是每一幀都有mask吧。

interactive segmentation中,編碼過程是將每個visual prompt(比如一個點坐標或一個矩形框)轉化為一個對象查詢向量。

Open-Vocabulary and Multi-Dataset Segmentation中,在視覺任務中使用?CLIP 文本嵌入?(CLIP?text embedding)作為掩碼分類器(mask classifier)意味著直接用文本嵌入來表示類別。

所以本篇文章是提出了?All the Things are in Queries,通過將所有實體的預測統一到查詢機制中,可以實現對多種分割任務的支持。

統一的查詢掩碼分類框架

作者提到,通過結合不同的任務設置,可以使用相同的基于查詢的掩碼分類框架來表示所有的分割實體。

  • 具體來說,每個對象查詢(object query)對應三個輸出:

    • mask掩碼(mi):表示預測的分割掩碼(即物體的像素級區域)。

    • label標簽(ci):表示預測的類別標簽(如“人”、“車”等)。

    • ID(di):表示實例的唯一標識(用于區分同一類別的不同實例,常用于實例分割任務)。

  • 不同的分割任務(如語義分割、實例分割、全景分割等)對?mi、ci、di?的格式和范圍有不同的要求。例如:

    • 在語義分割中,di?可能不需要,因為只關心類別標簽?ci?和掩碼?mi

    • 在實例分割中,di?是必需的,因為需要區分同一類別的不同實例。

  • 盡管不同任務對?mi、ci、di?的具體要求不同,但它們的格式和范圍是相似的,因此可以統一到一個框架中。

3.2 omg-seg的架構

backbone+pixel decoder+mask decoder

backbone:OpenCLIP?中的?ConvNeXt?架構作為視覺編碼器(VLM Encoder)。是凍結的

pixel decoder:作為特征適配器,因為VLM Encoder 提取的特征是凍結的,可能不完全適合特定的分割任務。那么Pixel Decoder 通過多階段的可變形注意力機制,能夠動態調整特征,使其更適合生成高質量的分割掩碼。它還能夠融合多尺度特征,增強模型對物體大小和形狀的適應性。

mask decoder:基于高分辨率特征,生成最終的掩碼和類別標簽。

Combined Object Queries(組合對象查詢):不同任務(如圖像、視頻、交互式分割)對對象查詢的需求不同,圖像任務:對象查詢關注物體級別的定位和識別;視頻任務:對象查詢需要考慮時間一致性(如跨幀的物體跟蹤);交互式分割:對象查詢需要定位用戶指定的特定區域。

  • 語義查詢(Semantic Queries,?QsobjQsobj?)

    • 用于圖像和視頻任務。

    • 這些查詢負責生成圖像掩碼(image masks)或跟蹤的管狀掩碼(tracked tube masks),并需要語義標簽。

    • 例如,在視頻任務中,語義查詢需要確保同一物體在不同幀中的掩碼具有時間一致性。

  • 位置查詢(Location Queries,?QlobjQlobj?)

    • 用于交互式分割任務。

    • 這些查詢通過?Prompt Encoder?將各種視覺提示(visual prompts)編碼為與對象查詢相同的形式。

    • 例如,用戶可以通過點擊或框選指定感興趣的區域,Prompt Encoder 將這些提示轉換為位置查詢。

  • 組合對象查詢

    • 將語義查詢?QsobjQsobj??和位置查詢?QlobjQlobj??組合在一起,共享相同的解碼器接口。

Shared Multi-Task Decoder(共享多任務解碼器):核心操作:交叉注意力(cross-attention)。輸入:組合對象查詢(QsobjQsobj??和?QlobjQlobj?)和圖像/視頻特征?{Fjfuse}{Fjfuse?}。輸出:精煉后的對象查詢(refined object queries)。最終掩碼通過精煉后的查詢和高分辨率特征?F3fuse的點積得到。

圖像任務加入2d位置嵌入,視頻任務是要加入3d位置嵌入的:

4 實驗

數據集:coco分割的一堆等 還有視頻分割的Youtube-VIS-2021, ADE-20k [102], and DAVIS-2017 datasets 等

實現細節:

  • 實現框架:基于 MMDetection,使用 32 張 A100 GPU 進行分布式訓練。

  • 數據增強:采用大規模抖動方法。

  • 訓練步驟:統一訓練步數,確保公平比較。

  • 模型初始化:使用 OpenCLIP 初始化 backbone,并替換分類器為文本嵌入。

  • 輸入處理:將圖像輸入視為偽視頻,統一圖像和視頻任務的輸入格式。

  • 訓練策略:調整采樣率平衡數據集,報告凍結和訓練 backbone 的結果。

  • 小知識:

  • 分布式訓練總 Batch Size 是所有 GPU 上樣本的總和。每個 GPU 的 Mini-batch Size 是單個 GPU 上處理的樣本數量。

  • 在?OMG-Seg?中,每個 GPU 的 Mini-batch Size 為 1,意味著每個 GPU 每次處理 1 張圖像,32 個 GPU 一起處理 32 張圖像(總 Batch Size = 32)。


---還沒寫完 先發布 后面接著寫

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

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

相關文章

vite 開啟 gzip壓縮

使用vite 如何開啟 gzip壓縮 文章目錄 使用vite 如何開啟 gzip壓縮1. 引言為什么需要 Gzip 壓縮?Gzip 壓縮的作用 2. Vite 項目中的 Gzip 壓縮Vite 的基本概念Gzip 壓縮的原理 3. 使用 Vite 插件開啟 Gzip 壓縮安裝 vite-plugin-compression配置 vite-plugin-compre…

【Qt學習】| 如何使用QVariant存儲自定義類型

QVariant是Qt框架中的一個通用數據類型,可以存儲多種類型的數據,主要作用是提供一種類型安全的方式來存儲和傳遞不同類型的數據,而不需要顯示地指定數據類型。 QVariant提供了諸多構造函數可以非常方便地對基礎數據類型(如&#x…

【Python量化金融實戰】-第1章:Python量化金融概述:1.4 開發環境搭建:Jupyter Notebook、VS Code、PyCharm

在量化金融開發中,選擇合適的開發環境至關重要。本章介紹三種主流工具:Jupyter Notebook(交互式分析)、VS Code(輕量級編輯器)、PyCharm(專業IDE),并通過實戰案例展示其應…

查看 nginx 是否已經啟動

在 Ubuntu 或其他 Linux 系統上,要查看 Nginx 是否已經啟動,您可以使用以下幾種方法之一: 方法一:使用 systemctl 命令 Nginx 通常作為 systemd 服務運行,因此您可以使用 systemctl 命令來檢查其狀態。 打開終端。 …

解釋 Vue 中的虛擬 DOM,如何通過 Diff 算法最小化真實 DOM 更新次數?

1. 虛擬DOM核心原理(附代碼示例) // 簡化的VNode結構示意 class VNode {constructor(tag, data, children) {this.tag tag // 標簽名this.data data // 屬性/指令等this.children children // 子節點數組} }// 兩個新舊虛擬節點樹示例 const oldV…

Pytorch使用手冊-音頻數據增強(專題二十)

音頻數據增強 torchaudio 提供了多種方式來增強音頻數據。 在本教程中,我們將介紹一種應用效果、濾波器、RIR(房間脈沖響應)和編解碼器的方法。 最后,我們將從干凈的語音合成帶噪聲的電話語音。 import torch import torchaudio import torchaudio.functional as Fprin…

Linux-Ansible模塊擴展

文章目錄 Archive UnarchiveSetup模塊Lineinfile Replace 🏡作者主頁:點擊! 🤖Linux專欄:點擊! ??創作時間:2025年02月23日18點11分 Archive Unarchive Archive和Unarchive模塊 需求&#x…

Redhat及其衍生系統安裝python

目錄 更新包列表 安裝 Python 3 安裝特定版本的 Python 驗證安裝 安裝 pip 更新包列表 在安裝任何軟件之前,建議先更新系統的包列表,以確保安裝的是最新版本的軟件包: sudo dnf update 安裝 Python 3 RHEL 9 默認安裝了 Python 3&…

Python條件控制和循環語句

目錄 條件控制語句 1. if 語句 2. if-else 語句 3. if-elif-else 語句 循環語句 1. for 循環 2. while 循環 循環控制語句 1. break 語句 2. continue 語句 3. else 子句(與循環結合) 嵌套循環 常見應用場景 條件控制 循環語句 條件控制語…

*PyCharm 安裝教程

PyCharm 安裝教程,適用于 Windows、macOS 和 Linux 系統: 1. 下載 PyCharm 官網地址:https://www.jetbrains.com/pycharm/版本選擇: Community(社區版):免費,適合基礎 Python 開發…

Three.js 快速入門教程【二】透視投影相機

系列文章目錄 系列文章目錄 Three.js 快速入門教程【一】開啟你的 3D Web 開發之旅 Three.js 快速入門教程【二】透視投影相機 Three.js 快速入門教程【三】渲染器 Three.js 快速入門教程【四】三維坐標系 Three.js 快速入門教程【五】動畫渲染循環 Three.js 快速入門教程【六…

IntelliJ IDEA 控制臺輸出中文出現亂碼

IntelliJ IDEA 控制臺輸出中文出現亂碼通常是由于編碼設置不一致導致的。以下是常見原因及解決方法 1. 項目編碼設置 檢查路徑:File → Settings → Editor → File Encodings 確保 Project Encoding、Global Encoding 和 Default Encoding for Properties Files 均…

C#初級教程(7)——初級期末檢測

練習 1:計算圓的周長和面積 改編題目:編寫一個 C# 程序,讓用戶輸入圓的半徑,然后計算并輸出該圓的周長和面積,結果保留兩位小數。 using System;class CircleCalculation {static void Main(){const double pi 3.14…

Java 集合:單列集合和雙列集合的深度剖析

引言 在 Java 編程中,集合是一個非常重要的概念。它就像是一個容器,能夠存儲多個數據元素,幫助我們更方便地管理和操作數據。Java 集合框架主要分為單列集合和雙列集合兩大類,它們各自有著獨特的特點和適用場景。接下來&#xff0…

layui 遠程搜索下拉選擇組件(多選)

模板使用&#xff08;lay-module/searchSelect&#xff09;&#xff0c;依賴于 jquery、layui.dist 中的 dropdown 模塊實現&#xff08;所以data 格式請參照 layui文檔&#xff09; <link rel"stylesheet" href"layui-v2.5.6/dist/css/layui.css" /&g…

通俗易懂的DOM1級標準介紹

前言 在前端開發中&#xff0c;DOM&#xff08;文檔對象模型&#xff09;是我們操作網頁內容的核心工具。前面的文章我們介紹了DOM0級、DOM2級事件模型&#xff0c;沒有DOM1級事件模型這種概念&#xff0c;但有DOM1級標準。今天我們就來討論DOM1級標準&#xff0c;看看它到底做…

python~http的請求參數中攜帶map

背景 調試 http GET請求的 map 參數&#xff0c;鏈路攜帶參數一直有問題&#xff0c;最終采用如下方式攜帶map 解決 user{"demo":"true","info":"王者"}url encode之后的效果如下所示 user%7B%22demo%22:%22true%22,%22info%22:%22…

(java/Spring boot)使用火山引擎官方推薦方法向大模型發送請求

首先在maven里面引入官方依賴 <dependency><groupId>com.volcengine</groupId><artifactId>volcengine-java-sdk-ark-runtime</artifactId><version>LATEST</version></dependency>然后我們編寫測試類 package com.volcengin…

Scrum方法論指導下的Deepseek R1醫療AI部署開發

一、引言 1.1 研究背景與意義 在當今數智化時代&#xff0c;軟件開發方法論對于項目的成功實施起著舉足輕重的作用。Scrum 作為一種廣泛應用的敏捷開發方法論&#xff0c;以其迭代式開發、快速反饋和高效協作的特點&#xff0c;在軟件開發領域占據了重要地位。自 20 世紀 90 …

LeetCode 熱題 100_搜索插入位置(63_35_簡單_C++)(二分查找)(”>>“ 與 “/” 對比)

LeetCode 熱題 100_搜索插入位置&#xff08;63_35&#xff09; 題目描述&#xff1a;輸入輸出樣例&#xff1a;題解&#xff1a;解題思路&#xff1a;思路一&#xff08;二分查找&#xff09;&#xff1a; 代碼實現代碼實現&#xff08;思路一&#xff08;二分查找&#xff09…