您可以使用 MediaPipe 物件偵測器工作,偵測圖片或影片中多個物件類別的存在情形和位置。舉例來說,物體偵測器可找出圖片中的狗。這項工作會使用機器學習 (ML) 模型處理圖片資料,接受靜態資料或連續影片串流做為輸入內容,並輸出偵測結果清單。每個偵測結果都代表圖片或影片中出現的物件。
開始使用
請按照下列任一實作指南的說明,開始使用這個工作:
這些平台專屬指南會逐步引導您完成這項工作的基本實作方式,包括建議的模型,以及含有建議設定選項的程式碼範例。
任務詳細資料
本節將說明此工作的功能、輸入內容和輸出內容。
功能
- 輸入圖像處理:處理作業包括圖像旋轉、大小調整、標準化和色彩空間轉換。
- 標籤對應語言代碼:設定顯示名稱所使用的語言
- 分數門檻:根據預測分數篩選結果。
- 前幾名偵測功能:篩選數字偵測結果。
- 標籤許可清單和拒絕清單:指定偵測到的類別。
工作輸入內容 | 任務輸出 |
---|---|
Object Detector API 接受下列任一資料類型的輸入內容:
|
Object Detector API 會針對偵測到的物件輸出以下結果:
|
設定選項
此工作提供下列設定選項:
選項名稱 | 說明 | 值範圍 | 預設值 |
---|---|---|---|
running_mode |
設定工作執行模式。共有三種模式: IMAGE:單一圖片輸入模式。 VIDEO:影片解碼影格模式。 LIVE_STREAM:輸入資料 (例如來自攝影機的資料) 的直播模式。在這個模式中,必須呼叫 resultListener,才能設定事件監聽器,以非同步方式接收結果。 |
{IMAGE, VIDEO, LIVE_STREAM } |
IMAGE |
display_names |
設定標籤語言,用於工作模型中繼資料中提供的顯示名稱 (如有)。預設值為英文的 en 。您可以使用 TensorFlow Lite Metadata Writer API,在自訂模型的中繼資料中新增本地化標籤。 |
語言代碼 | en |
max_results |
設定要傳回的最高分數偵測結果選用數量上限。 | 任何正數 | -1 (傳回所有結果) |
score_threshold |
設定預測分數門檻,覆寫模型中繼資料中提供的門檻 (如果有)。低於這個值的結果會遭到拒絕。 | 任何浮點 | 未設定 |
category_allowlist |
設定允許的選項類別名稱清單。如果不為空白,則偵測結果的類別名稱若不在這個集合中,就會篩除。系統會忽略重複或不明的類別名稱。這個選項與 category_denylist 互斥,如果同時使用這兩個選項,系統會傳回錯誤。 |
任何字串 | 未設定 |
category_denylist |
設定選用的不允許類別名稱清單。如果不為空白,系統會篩除偵測結果中類別名稱屬於這個集合的結果。系統會忽略重複或不明的類別名稱。這個選項與 category_allowlist 互斥,如果同時使用這兩個選項,會導致錯誤。 |
任何字串 | 未設定 |
模型
Object Detector API 需要下載物件偵測模型,並儲存在專案目錄中。如果您還沒有模型,請先採用預設的建議模型。本節介紹的其他模型會在延遲時間和準確度之間取得平衡。
EfficientDet-Lite0 模型 (建議使用)
EfficientDet-Lite0 模型使用 EfficientNet-Lite0 骨幹,具有 320x320 輸入大小和 BiFPN 特徵網路。這個模型是使用 COCO 資料集訓練的,這是大規模物件偵測資料集,內含 150 萬個物件例項和 80 個物件標籤。請參閱完整清單,瞭解支援的標籤。EfficientDet-Lite0 可用於 int8、float16 或 float32。我們建議您使用這個模型,因為它可在延遲時間和準確度之間取得平衡。它既準確又輕巧,適合多種用途。
模型名稱 | 輸入形狀 | 量化類型 | 版本 |
---|---|---|---|
EfficientDet-Lite0 (int8) | 320 x 320 | int8 | 最新 |
EfficientDet-Lite0 (float 16) | 320 x 320 | float 16 | 最新 |
EfficientDet-Lite0 (float 32) | 320 x 320 | None (float32) | 最新 |
EfficientDet-Lite2 模型
EfficientDet-Lite2 模型採用 EfficientNet-Lite2 骨幹,具有 448x448 輸入大小和 BiFPN 特徵網路。這個模型是使用 COCO 資料集訓練的,這是大規模物件偵測資料集,內含 150 萬個物件例項和 80 個物件標籤。請參閱支援的標籤完整清單。EfficientDet-Lite2 可做為 int8、float16 或 float32 模型使用。這個模型通常比 EfficientDet-Lite0 更準確,但速度較慢且記憶體用量較高。這個模型適合用於準確度比速度和大小更重要的用途。
模型名稱 | 輸入形狀 | 量化類型 | 版本 |
---|---|---|---|
EfficientDet-Lite2 (int8) | 448 x 448 | int8 | 最新 |
EfficientDet-Lite2 (浮點 16) | 448 x 448 | float 16 | 最新 |
EfficientDet-Lite2 (浮點 32) | 448 x 448 | None (float32) | 最新 |
SSD MobileNetV2 模型
SSD MobileNetV2 模型會使用 MobileNetV2 主幹,其輸入大小為 256x256,並使用 SSD 特徵網路。這個模型是使用 COCO 資料集訓練的,這是大規模物件偵測資料集,內含 150 萬個物件例項和 80 個物件標籤。請參閱支援的標籤完整清單。SSD MobileNetV2 可做為 int8 和 float 32 模型使用。這個模型比 EfficientDet-Lite0 更快、更輕,但準確度通常較低。這個模型適合需要快速、輕量化模型的用途,但會犧牲部分準確度。
模型名稱 | 輸入形狀 | 量化類型 | 版本 |
---|---|---|---|
SSDMobileNet-V2 (int8) | 256 x 256 | int8 | 最新 |
SSDMobileNet-V2 (浮點 32) | 256 x 256 | None (float32) | 最新 |
模型需求和中繼資料
如果您決定建構要與此工作搭配使用的模型,請參閱本節說明的自訂模型相關規定。自訂模型必須採用 TensorFlow Lite 格式,且必須包含描述模型運作參數的metadata。
設計需求
輸入 | 圖案 | 說明 |
---|---|---|
輸入圖像 | 形狀為 [1, height, width, 3]的 Float32 張量 | 經過標準化的輸入圖片。 |
輸出 | 圖案 | 說明 |
---|---|---|
detection_boxes |
形狀為 [1, num_boxes, 4] 的 Float32 張量 | 每個偵測到的物件框位置。 |
detection_classes |
形狀為 [1, num_boxes] 的 Float32 張量 | 每個偵測到的物件類別名稱的索引。 |
detection_scores |
形狀為 [1, num_boxes] 的 float32 張量 | 每個偵測到的物件預測分數。 |
num_boxes |
大小為 1 的 Float32 張量 | 偵測到的方塊數量。 |
中繼資料規定
參數 | 說明 | 說明 |
---|---|---|
input_norm_mean |
輸入張量規格化時使用的平均值。 | 經過標準化的輸入圖片。 |
input_norm_std |
輸入張量正規化中使用的欄位規範。 | 每個偵測到的物件框位置。 |
label_file_paths |
類別張量標籤檔案的路徑。如果模型沒有任何標籤檔案,請傳遞空白清單。 | 每個偵測到的物件類別名稱的索引。 |
score_calibration_md |
分類張量中的分數校正作業資訊。如果模型未使用分數校正,則不需要這個參數。 |
每個偵測到的物件預測分數。 |
num_boxes |
大小為 1 的 Float32 張量 | 偵測到的方塊數量。 |
工作基準
以下是上述預先訓練模型的工作基準。延遲時間結果是 Pixel 6 使用 CPU / GPU 的平均延遲時間。
模型名稱 | CPU 延遲時間 | GPU 延遲時間 |
---|---|---|
EfficientDet-Lite0 float32 模型 | 61.30 毫秒 | 27.83 毫秒 |
EfficientDet-Lite0 float16 模型 | 53.97 毫秒 | 27.97 毫秒 |
EfficientDet-Lite0 int8 模型 | 29.31 毫秒 | - |
EfficientDet-Lite2 float32 模型 | 197.98 毫秒 | 41.15 毫秒 |
EfficientDet-Lite2 float16 模型 | 198.77 毫秒 | 47.31 毫秒 |
EfficientDet-Lite2 int8 模型 | 70.91 毫秒 | - |
SSD MobileNetV2 float32 模型 | 36.30 毫秒 | 24.01 毫秒 |
SSD MobileNetV2 float16 模型 | 37.35 毫秒 | 28.16 毫秒 |