圖片區隔指南

MediaPipe 圖片區隔工作可讓您根據預先定義的類別,將圖片分為不同的區域。您可以使用此功能來識別特定物件或紋理,然後套用背景模糊等視覺效果。這項工作包含數個專門訓練的模型,用來區隔圖片資料中的人物及其特徵,包括:

  • 人物和背景
  • 只有人頭髮
  • 某人的頭髮、臉部、肌膚、服裝和配件

這項工作會搭配單一圖片或連續影片串流的機器學習 (ML) 模型對圖片資料運作。這會輸出區隔區域清單,代表圖片中的物件或區域,視您選擇的model而定。

試試看!

開始使用

如要開始使用這項工作,請按照目標平台適用的任一實作指南操作。下列平台專用指南將逐步引導您完成這項工作的基本實作方式,包括建議的模型,以及含有建議設定選項的程式碼範例:

任務詳細資料

本節說明這項工作的功能、輸入、輸出和設定選項。

功能

  • 輸入圖片處理 - 處理包括圖像旋轉、大小調整、正規化及色域轉換。
工作輸入內容 工作輸出內容
輸入內容可以是下列任一資料類型:
  • 靜態圖片
  • 經解碼的影格數
  • 直播影片動態饋給
「圖片區隔」會輸出經過區隔的圖片資料,可根據您設定的設定選項,納入下列其中一或兩種資料:
  • CATEGORY_MASK:包含區隔遮罩的 uint8 格式圖片清單。每個像素值都會指出該值是否屬於模型支援的特定區隔類別。
  • CONFIDENCE_MASK:包含已區隔遮罩的管道清單,並以 float32 格式表示。每個像素值代表該值屬於模型支援特定類別的信心程度。

設定選項

這項工作有以下設定選項:

選項名稱 說明 值範圍 預設值
running_mode 設定工作的執行模式。共有三種模式:

IMAGE:單一圖片輸入的模式。

影片:影片已解碼影格的模式。

LIVE_STREAM:輸入資料串流 (例如攝影機) 的直播模式。在這個模式下,必須呼叫 resultListener 才能設定事件監聽器,以非同步方式接收結果。
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
output_category_mask 如果設為 True,輸出結果會包含 uint8 圖片的區隔遮罩,其中每個像素值都代表勝出類別值。 {True, False} False
output_confidence_masks 如果設為 True,輸出結果會包含以浮點值圖片形式的區隔遮罩,其中每個浮點值都代表該類別的可信度分數對應關係。 {True, False} True
display_names_locale 設定標籤語言,用於工作模型中繼資料內的顯示名稱 (如有)。英文的預設值是 en。您可以使用 TensorFlow Lite Metadata Writer API,在自訂模型的中繼資料中加入本地化標籤。語言代碼 en
result_callback 在圖片區隔處於直播模式時,設定結果監聽器以非同步方式接收區隔結果。只能在執行模式設為 LIVE_STREAM 時使用 不適用 不適用

模型

圖片區隔工具可與多個機器學習模型搭配使用。下列大部分的區隔模型都需要經過建構和訓練,才能根據人物圖片執行區隔。不過,DeepLab-v3 模型的建構是一般用途的圖片區隔器。選取最適合您應用程式的型號。

自拍區隔模型

這個模型可以分割人物的肖像,並可用於取代或修改圖片中的背景。模型會輸出兩個類別: 索引為 0 的背景和索引 1 的人這個模型具有不同輸入形狀的版本 (包括方形版本和橫向版本),如果應用程式的輸入內容始終是該形狀 (例如視訊通話),使用起來會更有效率。

模型名稱 輸入形狀 量化類型 Model Card 版本
SelfieSegmenter (正方形) 256 x 256 浮點值 16 資訊 最新
SelfieSegmenter (橫向) 144 x 256 浮點值 16 資訊 最新

髮型

這個模型會擷取一個人的圖片、找出頭髮的頭髮,並輸出頭髮的圖片區隔圖。你可以使用這個模型改變頭髮或套用其他美髮效果。模型會輸出下列區隔類別:

0 - background
1 - hair
模型名稱 輸入形狀 量化類型 Model Card 版本
髮型區隔512 x 512 無 (float32) 資訊 最新

多類別自拍區隔模型

這個模型會擷取人物的圖片,找出髮型、皮膚和衣物等不同區域的區域,然後輸出這些項目的圖片區隔地圖。您可以使用這個模型,對圖像或影片中的人物套用各種效果。模型會輸出下列區隔類別:

0 - background
1 - hair
2 - body-skin
3 - face-skin
4 - clothes
5 - others (accessories)
模型名稱 輸入形狀 量化類型 Model Card 版本
SelfieMulticlass (256 x 256) 256 x 256 無 (float32) 資訊 最新

DeepLab-v3 模型

這個模型用於辨識多種類別的片段,包括背景、人物、貓、狗和盆栽。模型使用特羅斯空間金字塔集區擷取較長的範圍資訊。詳情請參閱「DeepLab-v3」。

模型名稱 輸入形狀 量化類型 版本
DeepLab-V3 257 x 257 無 (float32) 最新

工作基準

以下為整個管道根據上述預先訓練模型所產生的工作基準。延遲時間結果是 Pixel 6 使用 CPU / GPU 的平均延遲時間。

模型名稱 CPU 延遲時間 GPU 延遲時間
自拍區隔 (正方形) 33.46 毫秒 35.15 毫秒
自拍區隔 (橫向) 34.19 毫秒 33.55 毫秒
HairSegmenter 57.90 毫秒 52.14 毫秒
SelfieMulticlass (256 x 256) 217.76 毫秒 71.24 毫秒
DeepLab-V3 123.93 毫秒 103.30 毫秒