跳至內容
AI Segmentation
GeoAI
指南

語意分割 vs 實例分割:差在哪?航照影像一次看懂

發布於 更新於

印度班加羅爾 Shivajinagar 的建物輪廓,在密集的街道網格中,每棟建物都是各自獨立的多邊形。
照片:planemad,CC BY-SA 4.0,Wikimedia Commons。

語意分割(semantic segmentation)替影像的每個像素指定一個類別:這個像素是建物,那個是道路,下一個是樹。實例分割(instance segmentation)再往前一步,把同一類別裡的物件彼此分開:這個像素屬於 12 號建物,那個屬於 13 號建物。

語意分割與實例分割的差別,一句話說完

語意分割回答「有多少面積」,實例分割回答「有幾個,是哪一個」。第三個詞全景分割(panoptic segmentation),則在同一張地圖上同時回答這兩個問題。

下面是同一張影像的兩種標註方式。語意分割把所有建物塗成同一種顏色,實例分割則給每一棟建物各自的輪廓與編號。

同樣七棟建物的三個面板:語意分割中全部是綠色,兩棟相連的房屋合成一個形狀;實例分割中每棟建物是不同顏色,編號 1 到 7;全景分割中同樣編號的建物位於灰色的地面類別上。
兩棟相連的房屋:在語意分割中是一個形狀,在實例分割與全景分割中是 1 號與 2 號物件。
語意分割實例分割全景分割
輸出每個像素一個類別每個物件一張遮罩每個像素一個類別,可數物件另加物件編號
兩棟相連的房屋一張遮罩兩個物件兩個物件
什麼算物件沒有:類別只是一片表面每片屋頂、每個樹冠、每座泳池或每輛車每個可數的東西;表面仍是表面
能不能計數不能能能,限可數的類別
典型 GIS 用途土地覆蓋、樹冠覆蓋率、不透水面、變遷偵測建物、樹木、泳池與太陽能板的清查完整場景地圖、農地地塊
典型模型U-Net、DeepLabMask R-CNN、Segment Anything 系列雙頭架構,或以全景標註訓練的單一模型
在 QGIS 中轉成向量向量化後再清理每個物件本來就是一個多邊形將類別向量化,保留物件編號
Lens 同一條連棟住宅街道顯示兩次:左邊所有建物合在同一張綠色遮罩下,右邊每間房屋是各自上色的多邊形。
Lens 的同一排連棟住宅,並排比較。左:語意分割,一張遮罩。右:實例分割,每間房屋一個多邊形。建物:OpenStreetMap 貢獻者,ODbL。正射影像:IGN,BD ORTHO,開放授權。

兩者在地圖上各給您什麼

語意模型給您可以量測的表面,實例模型給您可以計數的物件。

語意分割就像邊界清晰的土地覆蓋圖:建物遮罩、道路遮罩、植被遮罩。適合做面積統計、不透水面、樹冠覆蓋率,以及兩個日期之間的變遷。凡是需要數量的工作,它都不適用。

實例分割則是一份清查。每片屋頂、每個樹冠、每座泳池都是獨立的多邊形,在屬性表格中各占一列。您可以計數、逐一量測,也可以為每一個物件接上高度。代價是模型必須判斷一個物件在哪裡結束,這在連棟住宅上很難,而失誤也看得出來:兩間房屋被合併,或是一個樹冠被切成三塊。

這些詞從哪裡來。 兩者都是電腦視覺的術語。2014 年,Long、Shelhamer 與 Darrell 證明以「端對端、像素對像素」方式訓練的網路可以做語意分割。2017 年,Mask R-CNN 在物件偵測器上加入「預測物件遮罩的分支」,這就是實例分割。2023 年,Segment Anything 以「超過 10 億張遮罩,來自 1,100 萬張取得授權且尊重隱私的影像」訓練而成,而 QGIS 中的實例分割工具,現在執行的正是這個系列。

全景分割:第三個詞

全景分割像語意分割一樣替每個像素標上類別,也像實例分割一樣替每個可數物件給一個編號。Kirillov 等人在 2018 年提出這項任務,並定義為「統合了通常各自獨立的兩項任務:語意分割(為每個像素指定類別標籤)與實例分割(偵測並分割每一個物件實例)」。

該論文把類別分成兩種。Things 是可數的:建物、車輛、樹木。Stuff 是沒有固定形狀的:草地、水體、路面。全景地圖替 things 計數,替 stuff 量測,全部放在同一個圖層裡,沒有空隙,也沒有重疊。同一篇論文還提出一個同時適用兩者的評分,全景品質(PQ),適用於「所有類別(stuff 與 things)」。

GIS 在哪裡用到它。 農地是最明顯的例子。法國的基準資料集 PASTIS 包含 124,422 塊農地地塊,分布在 2,433 組 Sentinel-2 時間序列中,解析度為每像素 10 m,涵蓋法國約 4,000 km²。每個像素同時帶有作物類型與地塊索引。語意模型在這份資料上只會說「這裡是小麥」,全景模型則會說「小麥,57 號地塊」,所以您能數出有幾塊田,也能量測每一塊。其背後的論文稱地塊的像素級全景分割是一項具有「重大經濟與環境意義」的任務。

實務上,GIS 團隊很少真的需要全景模型。用實例分割工具處理 things,用語意分割工具處理 stuff,再把兩個圖層疊在 QGIS 中,兩個步驟就能得到同樣的地圖。

語意遮罩數得出什麼?法國三塊圖幅的實測

把語意建物遮罩向量化,您數到的是連通區塊,不是建物:在 Lens 市中心 1 km² 的範圍內,IGN 以 20 cm 航照影像製作的 AI 土地覆蓋圖給出 269 個建物連通區塊,而全國建物登記資料中有 3,006 棟建物。我們在 2026 年 9 月 23 日量測了三塊各 1 km² 的圖幅,每一塊都對照 IGN 的 BD TOPO 建物資料檢查。

每塊 1 km² 圖幅Lens 市中心Liévin 礦業城鎮住宅巴黎 11 區
BD TOPO 中的建物(20 m² 以上)3,0069521,759
20 cm AI 遮罩中的連通區塊(IGN CoSIA)26955895
與其他建物共用同一連通區塊的已找到建物97.5%63%99.5%
該連通區塊內建物數的中位數30231
10 m 土地覆蓋中的連通區塊(ESA WorldCover)1291
面積,AI 遮罩/建物輪廓/10 m「建成區」40.5/36.3/87.2 ha14.4/12.3/46.3 ha58.4/54.7/96.3 ha

遮罩更精細,也不會讓數量變準。遮罩在每塊圖幅上找到了 96% 至 97% 的建物,但連棟住宅或公寓大樓共用牆壁,任何一個背景像素都不會出現在兩間房屋之間,不論解析度是 20 cm 還是 2 cm。在 Lens 與巴黎,遮罩找到的建物以中位數來看,位於約 30 棟建物合成的連通區塊裡。

Lens 市中心同一個 420 乘 300 m 視窗的三個面板:BD TOPO 建物各自一種顏色;CoSIA 建物遮罩幾乎全部落在十棟以上建物組成的連通區塊中;WorldCover 的建成區類別則是一整塊實心區塊。
Lens 市中心。左:BD TOPO 建物。中與右:建物遮罩向量化後的結果,每個連通區塊依其包含的建物數上色。IGN BD TOPO 與 CoSIA 2021-2023,ESA WorldCover 2021,2026 年 9 月 23 日量測。

Liévin 則顯示語意遮罩在哪裡數得對。獨棟住宅各自成為一個連通區塊,在那裡找到的 926 棟建物中,有 344 棟獨占一個連通區塊。舊礦區社區的雙拼住宅與連棟住宅,每一組合成一個連通區塊,這就是為什麼建物的中位數落在兩棟一組的區塊裡。

Liévin 一個視窗的三個面板:獨棟住宅各是一塊綠色連通區塊;雙拼與連棟住宅是橘色與紅色的連通區塊;10 m 土地覆蓋則把整個社區合併在一起。
Liévin,Cité Pasteur。獨棟住宅數得正確,雙拼與連棟住宅則數不對。資料來源與日期相同。

至於面積,語意遮罩相當接近。AI 遮罩比建物輪廓的總和高出 7% 至 17%,這在預期之內:它看到的是屋頂,屋頂會凸出 BD TOPO 所描繪的牆面,也包含小型附屬建築。10 m 的「建成區」類別是建物輪廓面積的 1.8 至 3.8 倍,因為一個 10 m 像素若同時含有屋頂、院子與人行道,就會被標成建成區。它量測的是都市肌理,不是建物。

樹木也會合在一起

在巴黎圖幅上,市府清查的 1,583 棵樹中,有 1,296 棵落在 AI 遮罩的樹冠內(距樹幹 2 m 以內),其中 89% 與另一棵清查樹木共用同一個樹冠連通區塊。Richard-Lenoir 大道沿線的行道樹步道是單一一個連通區塊,裡面有 254 棵清查樹木。從樹冠遮罩計算樹冠數量,對孤立的樹木行得通,沿著行道樹的街道就行不通。

我們如何量測

圖幅是以 Lens(50.432 N, 2.832 E)、Liévin 的 Cité Pasteur(50.433 N, 2.762 E)與 Richard-Lenoir 大道(48.860 N, 2.370 E)為中心、採 Lambert 93 的 1 km 見方範圍。連通區塊是指相接的遮罩像素組成、面積 20 m² 以上的群組,這正是 QGIS 以預設設定向量化時產生的結果;建物有一半輪廓位於遮罩之下,就算找到。CoSIA 只以套色地圖的形式發布,所以我們以約 0.4 m 讀取,再把每種顏色對應回它的類別。以這個方式損失的少數邊緣像素會把連通區塊切開,因此上面的比例即使有偏差,也是偏低。CoSIA 所依據的航照影像比我們拿來對照的登記資料更早。BD TOPO 有時會把雙拼住宅畫成一棟建物。巴黎的清查資料不含私有樹木。三塊圖幅代表三個地方,不是全國數字。

在 QGIS 中從遮罩到多邊形

語意遮罩需要三到四個處理步驟才能變成可用的多邊形,實例分割工具則直接給您多邊形。以下是兩條路徑,以及各自用到的 QGIS 工具。

從語意遮罩開始

  1. 清除雜點。 執行 Sieve(篩濾,位於「影像」選單的分析群組)。它會「移除小於所設閾值大小(以像素計)的網格多邊形」,並以最大的相鄰區塊的值填補,出自 QGIS 使用手冊。預設閾值是 10 個像素。在 20 cm 的解析度下,10 個像素只有 0.4 m²,所以請調高到與您在意的最小物件相符。
  2. 向量化。 執行「影像」→「轉換」→「影像向量化(影像轉向量)」。它會「為網格中共用相同像素值的所有相連區域建立向量多邊形」,數值預設存在名為 DN 的欄位,出自使用手冊。請不要勾選「Use 8-connectedness」。勾選後,只在角落相接的兩個像素也會連在一起,於是只在一個角相接的兩棟建物會變成一個多邊形。
  3. 留下類別。 背景像素同樣會形成多邊形。選取 "DN" = 1(或您的類別值),把選取範圍另存為新圖層。
  4. 決定一個圖徵代表什麼。 若要得到類別表面,執行「向量」→「地理運算工具」→「融合」且不指定欄位:您會得到一個多部件圖徵和一個面積數字。若要得到連通區塊,勾選「保持不相交的結果分離」(QGIS 3.32 或更新版本),或從空間運算工具箱執行「多部件轉單部件」,每個連通區塊就會各占一列。
  5. 整理邊緣。 像素邊緣會變成階梯狀。網格轉向量指南介紹了簡化、平滑與面積篩選。

做完第 4 步,您得到的是每個連通區塊一個多邊形,而不是每個物件一個。上面 Lens 的表格就是這個差距的樣子:3,006 棟建物,只有 269 個連通區塊。

大型建物輪廓資料集也是這樣做出來的。Microsoft 的全球建物輪廓分兩個階段建立:「語意分割」,用深度神經網路辨識建物像素;接著是「向量化」,把這些像素轉成多邊形。像素的機率高於 0.5 就算建物。把建物彼此分開,是在多邊形這一步發生的,而這是語意模型留給您自己的額外工作。

從實例分割工具開始

  1. 在一個區域上執行工具。 每個物件都是自己的多邊形,在屬性表格中占一列。
  2. 檢查多部件。 有些工具會把一個物件分成好幾塊回傳。用「多部件轉單部件」把它們拆開,計數之前再檢查被拆開的那些。
  3. 逐一量測。 在欄位計算器中新增一個使用 $area 的欄位,並濾掉小於最小真實物件的碎片。
  4. 接上您已知的資料。 每個多邊形都可以用空間連結接上高度、地址或登記編號,類別表面做不到這一點。

使用 AI Segmentation,第 1 到第 3 步合而為一:輸入「建物」或「游泳池」,選一個區域,找到的每個物件就會以獨立多邊形回到新圖層中。使用 AI Agent,上面的語意路徑只要在 QGIS 內的對話面板輸入一句話就能執行:您描述想要的圖層,它會執行同樣的 QGIS 工具,Sieve、向量化與融合,並在回答之前檢查地圖。

QGIS 工具各自產出哪一種

多數建立在土地覆蓋模型上的 QGIS 外掛是語意分割,建立在 Segment Anything 上的工具則是實例分割。

  • 語意分割: Deepness 與其模型庫中的大多數模型、Semi-Automatic Classification Plugin、Mapflow 的土地覆蓋模型。
  • 實例分割: Segment Anything 系列,也就是 Geo-SAM、samgeo 與 QGIS 的 SAM 外掛。每點一下得到一個物件。
  • AI Segmentation, 我們 TerraLab 為 QGIS 開發的外掛,屬於實例分割工具。您輸入物件名稱,例如建物、樹木或游泳池,或是畫出一個範例,它就會為區域內找到的每個物件回傳一個多邊形。建物輪廓指南展示了它在密集街區上的樣子。若建物已有現成的圖資,免費的建物輪廓下載工具不必執行任何偵測,就能把這些實例多邊形以 GeoJSON 提供給您。

大家常問的問題

以下簡短回答,涵蓋人們在搜尋這兩個詞時接著會查的內容。

語意分割、實例分割與全景分割有什麼差別?

語意分割為每個像素指定一個類別。實例分割把同一類別中的每個物件分成各自的遮罩。全景分割兩者同時做到:每個像素都有類別,每個可數物件,例如建物或車輛,還有自己的編號。

GIS 專案該用哪一種?

答案是面積或占比時用語意分割:樹冠覆蓋率、不透水面、淹水土地。答案是數量或每個物件的屬性時用實例分割:建物、樹木、泳池、太陽能板。兩者都需要時,各跑一次,再把圖層疊起來。

物件偵測就是實例分割嗎?

不是。物件偵測會在每個物件外圍框出一個矩形,實例分割則逐像素回傳它的輪廓。做地圖時,幾乎都需要輪廓。

語意遮罩可以轉成實例嗎?

有時可以。先把遮罩向量化,再在多邊形變窄的地方切開。這對彼此分開的東西有效,例如果園裡的樹冠。對連棟住宅就行不通,因為那裡沒有可以下刀的窄處。

影像的解析度會改變答案嗎?

會,但影響比人們預期的小。在 10 m 的解析度下,一間房屋只有一兩個像素,沒有東西可以分開,所以衛星土地覆蓋只能是語意分割。在 20 cm 下,一間房屋有數千個像素,實例分割才變得可行,但 20 cm 的語意遮罩仍然會把共用牆壁的房屋全部合併:在 Lens 市中心,它找到的建物有 97.5% 與其他建物共用連通區塊。

為什麼我向量化的遮罩,整個街區只得到一個多邊形?

因為那個街區的房屋共用牆壁,遮罩中沒有任何背景像素把它們隔開。向量化會把所有相連且數值相同的像素合成一個多邊形。只有實例模型會逐一畫出每個物件,才能把它們分開。

Segment Anything 是實例分割嗎?

就輸出而言是:它對您指向的每個物件回傳一張遮罩,所以兩片相連的屋頂會得到兩張遮罩。不過原始模型不給類別標籤。它把物件分開,但不替它們命名,建立在它之上的 QGIS 工具則是從您的點擊或 prompt 取得類別。

語意分割與實例分割都屬於更廣的 GeoAI 範疇。GeoAI 是什麼說明了這兩者所屬的概念。樹冠覆蓋製圖在樹木上展示了兩邊:用遮罩得到樹冠覆蓋,或是每個樹冠一個多邊形。QGIS AI 總覽彙整了 AI 在 QGIS 內能做與不能做的事。