社群計算機視覺課程文件
影像分割
並獲得增強的文件體驗
開始使用
影像分割
影像分割是將影像分割成有意義的區域。它的核心是建立遮罩,以突出圖片中的每個物件。這項任務的直覺是,_它_可以被視為對影像_每個畫素_的分類。分割模型是各個行業的核心模型,它們應用於農業和自動駕駛領域。在農業領域,這些模型用於識別不同的土地區域並評估作物的生長階段。它們也是自動駕駛汽車的關鍵組成部分,用於識別車道、人行道和其他道路使用者。

根據上下文和預期目標,可以應用不同型別的分割。最常定義的分割型別如下:
- 語義分割:這涉及將最可能的類別分配給每個畫素。例如,在語義分割中,模型不區分兩隻獨立的貓,而是關注畫素的類別。它關乎每個畫素的分類。
- 例項分割:這種型別涉及使用唯一的遮罩識別物件的每個例項。它結合了目標檢測和分割的方面,以區分同一類別的單個物件。
- 全景分割:一種混合方法,結合了語義分割和例項分割的元素。它為每個畫素分配一個類別和一個例項,有效地整合了影像的“_是什麼_”和“_在哪裡_”方面。

選擇正確的分割型別取決於上下文和預期目標。一個很酷的地方是,最近的模型允許你使用一個模型實現三種分割型別。我們建議你檢視這篇文章,它介紹了Meta的新模型Mask2former,該模型僅使用全景資料集就能實現三種分割型別。
現代方法:基於視覺Transformer的分割
你可能聽說過U-Net,一種用於影像分割的流行網路。它設計有多個卷積層,並分兩個主要階段工作:下采樣階段,用於壓縮影像以理解其特徵;上取樣階段,將影像擴充套件回其原始大小以進行詳細分割。
計算機視覺曾一度由卷積模型主導,但最近已轉向視覺Transformer方法。一個例子是_Meta AI Research, FAIR_於2023年4月推出的_Segment anything model (SAM)_,這是一個流行的基於提示的模型。該模型基於Vision Transformer (ViT) 模型,專注於建立一個可提示(即你可以提供單詞來描述你想在影像中分割的內容)的分割模型,能夠在新影像上實現零樣本遷移。該模型的優勢來自於它在最大的可用資料集上進行訓練,該資料集包含超過10億個遮罩和1100萬張影像。我建議你在幾張圖片上玩一下Meta的演示,甚至更好地,你可以在transformers中玩一下這個模型。
以下是如何在transformers中使用該模型的一個示例。首先,我們將初始化mask-generation管道。然後,我們將影像傳入管道進行推理。
from transformers import pipeline
pipe = pipeline("mask-generation", model="facebook/sam-vit-base", device=0)
raw_image = Image.open("path/to/image").convert("RGB")
masks = pipe(raw_image)有關如何使用該模型的更多詳細資訊,請參見文件。
如何評估分割模型?
現在你已經瞭解瞭如何使用分割模型,那麼如何評估它呢?如前一節所示,分割主要是一個監督學習任務。這意味著資料集由影像及其對應的遮罩組成,這些遮罩作為真實標籤。可以使用幾種指標來評估你的模型。最常見的有:
- 交併比(IoU)或Jaccard指數指標是預測遮罩與真實標籤的交集和並集之比。IoU可以說是分割任務中最常用的指標。它的優點在於對類別不平衡的敏感性較低,因此在你開始建模時通常是一個不錯的選擇。

- 畫素精度:畫素精度計算為正確分類的畫素數與總畫素數之比。雖然它是一個直觀的指標,但由於其對類別不平衡的敏感性,可能會產生誤導。
![]()
- Dice係數:它是預測遮罩與真實標籤的交集的兩倍與它們的和之比。Dice係數簡單來說就是預測與真實標籤之間的重疊百分比。當你需要對重疊之間的微小差異敏感時,這是一個很好的指標。

資源與延伸閱讀
- Segment Anything 論文
- 微調 Segformer 部落格文章
- Mask2former 部落格文章
- Hugging Face 關於分割任務的文件
- 如果你想深入瞭解這個主題,我們建議你檢視斯坦福大學關於分割的講座。