使用臉部偵測器預設尋找和修訂 (模糊) 臉部

媒體服務標誌 v3


警告

Azure 媒體服務將於 2024 年 6 月 30 日淘汰。 如需詳細資訊,請參閱 AMS淘汰指南

重要

Microsoft 負責任 AI 標準 概述,Microsoft 致力於 AI 系統的公平性、隱私權、安全性和透明度。 為了符合這些標準,Azure 媒體服務會在 2023 年 9 月 14 日淘汰影片分析器預設。 此預設目前可讓您從視訊檔案擷取多個視訊和音訊深入解析。 客戶可以使用 Azure 影片索引器所提供的更進階功能集來取代其目前的工作流程。

Azure 媒體服務 v3 API 包含臉部偵測器預設,在雲端提供可調式臉部偵測和修訂 (模糊)。 臉部修訂可讓您修改視訊,以模糊所選人物的臉部。 在公共安全和新聞媒體案例中,您可能會想要使用臉部修訂服務。 若要手動修訂包含多個臉部的幾分鐘影片,可能要花上數小時的時間,若使用此預設,則只需要幾個簡單的步驟就能完成臉部修訂程序。

合規性、隱私權和安全性

重要提示:您必須遵循在 Azure 媒體服務中使用分析功能的所有適用法律規範。 您不得以違反其他人權利的方式,使用 Azure 媒體服務或任何其他 Azure 服務。 將任何影片 (包括任何生物特徵辨識資料) 上傳至 Azure 媒體服務以進行處理和儲存之前,您必須擁有所有適當的權限,包括向影片中個人徵得所有必要的同意。 若要了解 Azure 媒體服務中的合規性、隱私權和安全性,請參閱 Azure 認知服務條款。 如需 Microsoft 的隱私權義務和您的資料處理方式,請參閱 Microsoft 的 隱私權聲明線上服務條款 (OST) 和 資料處理增補 ("DPA")。 OST 中提供更多隱私權資訊,包括數據保留、刪除/解構。 一旦使用 Azure 媒體服務,即表示您同意受到認知服務條款、OST、DPA 和隱私權聲明的規範

臉部修訂模式

臉部修訂的運作方式是,偵測視訊中每個畫面內出現的臉部,並及時向前及向後追蹤臉部物體,讓同一個人在其他角度也可以變得模糊。 自動化修訂流程很複雜,而且不一定保證會 100% 模糊每張臉。 基於這個原因,預設可以使用雙階段模式,在提交最終模糊階段之前,透過編輯暫存改善模糊的品質和精確度。

除了完全自動結合模式之外,雙階段工作流程還可讓您透過臉部識別碼清單來選擇想要模糊 (或不要模糊) 的臉。 若要對每個畫面進行任意調整,預設會使用 JSON 格式的中繼資料檔案作為第二階段的輸入。 此工作流程分割成分析修訂模式。

您還可以將這兩種模式輕鬆結合成單一階段,以在一個作業中執行這兩項工作,我們將這個模式稱為結合。 在本文中,範例程式碼將顯示如何在範例程式碼檔案上使用經過簡化的單一階段結合模式。

結合模式

這會在單一階段中產生已修訂的 MP4 視訊檔案,而不需要手動編輯 JSON 檔案。 作業資產資料夾中的輸出將會是單一 .mp4 檔案,其中包含使用選定模糊效果的模糊臉部。 使用設定為 SourceResolution 的解析屬性,以達到最佳修訂結果。

階段 檔案名稱 備註
輸入資產 "ignite-sample.mp4" WMV、MOV 或 MP4 格式的視訊
預設設定 臉部偵測器設定 modeFaceRedactorMode.Combined、blurTypeBlurType.Med、resolution: AnalysisResolution.SourceResolution
輸出資產 "ignite-redacted.mp4 在臉部套用模糊效果的視訊

分析模式

兩階段工作流程的分析階段會接受視訊輸入,然後產生臉部位置、臉部識別碼清單的 JSON 檔案,以及每個偵測到臉部的 jpg 影像。 請注意,在後續執行分析階段時,不保證會維持相同的臉部識別碼。

階段 檔案名稱 備註
輸入資產 "ignite-sample.mp4" WMV、MPV 或 MP4 格式的視訊
預設設定 臉部偵測器設定 mode:FaceRedactorMode.Analyze、resolution:AnalysisResolution.SourceResolution
輸出資產 ignite-sample_annotations.json JSON 格式的臉部位置註解資料。 在後續執行分析階段時,不保證會維持相同的臉部識別碼。 使用者可編輯此資料以修改模糊處理的邊框。 請參閱以下範例。
輸出資產 foo_thumb%06d.jpg [foo_thumb000001.jpg, foo_thumb000002.jpg] 所偵測到之每個臉部的已裁剪 jpg,數字表示臉部的 labelId

輸出範例

{
  "version": 1,
  "timescale": 24000,
  "offset": 0,
  "framerate": 23.976,
  "width": 1280,
  "height": 720,
  "fragments": [
    {
      "start": 0,
      "duration": 48048,
      "interval": 1001,
      "events": [
        [],
        [],
        [],
        [],
        [],
        [],
        [],
        [],
        [],
        [],
        [],
        [],
        [],
        [
          {
            "index": 13,
            "id": 1138,
            "x": 0.29537,
            "y": -0.18987,
            "width": 0.36239,
            "height": 0.80335
          },
          {
            "index": 13,
            "id": 2028,
            "x": 0.60427,
            "y": 0.16098,
            "width": 0.26958,
            "height": 0.57943
          }
        ],

    ... truncated

修訂 (模糊) 模式

工作流程的第二個階段會接受必須結合成單一資產的較大量輸入。

這包括要模糊處理的識別碼清單、原始視訊和註解 JSON。 這個模式會使用註解在輸入視訊上套用模糊處理。

分析階段的輸出不包含原始視訊。 視訊必須上傳到修訂模式工作的輸入資產並選取做為主要檔案。

階段 檔案名稱 備註
輸入資產 "ignite-sample.mp4" WMV、MPV 或 MP4 格式的視訊。 和步驟 1 相同的視訊。
輸入資產 "ignite-sample_annotations.json" 如果您想要變更模糊的臉部,請加註第一階段的中繼資料檔案,然後進行選擇性修改。 此編輯作業必須在外部應用程式、程式碼或文字編輯器中執行。
輸入資產 "ignite-sample_IDList.txt" (Optional) 要修訂之臉部 ID 的選擇性換行分隔清單。 如果保留空白,則來源中的所有臉部都會套用模糊。 您可以使用清單,選擇是否不要模糊特定臉部。
臉部偵測器預設 預設設定 mode:FaceRedactorMode.Redact、blurType:BlurType.Med
輸出資產 "ignite-sample-redacted.mp4" 已根據註解套用模糊處理的視訊

範例輸出

這是選取了一個識別碼的 IDList 輸出。 在後續執行分析階段時,不保證會維持相同的臉部識別碼。

Example foo_IDList.txt

1
2
3

模糊類型

在 [結合] 或 [修訂] 模式中,您可以透過 JSON 輸入設定從五種不同的模糊模式中進行選擇:[低]、[中]、[高]、[方塊] 和 [黑色]。 預設會使用 [中]

您可以在下面找到模糊類型的範例。

低解析模糊設定範例。

中解析模糊設定範例。

高解析模糊設定範例。

Box

用於偵錯輸出的 Box 模式。

黑色

黑箱模式涵蓋所有使用黑箱功能的臉部。

輸出 JSON 檔案的元素

修訂 MP 能提供高精確度的臉部位置偵測和追蹤功能,可在單一視訊畫面中偵測到最多 64 個人類臉部。 正面的臉部能提供最佳結果,而側面的臉部和較小的臉部 (小於或等於 24x24 像素) 則頗具挑戰性。

此作業會產生 JSON 輸出檔案,其中包含有關偵測到並進行追蹤之臉部的中繼資料。 中繼資料包括指出臉部位置的座標,以及指出正在追蹤該個人的臉部識別碼。 臉部識別碼很容易在正面臉部長時間於畫面中遺失或重疊的情況下重設,導致某些人員被指派多個識別碼。

輸出 JSON 包括下列元素:

根 JSON 元素

元素 描述
version 這是指影片 API 的版本。
timescale 影片每秒的「刻度」數目。
Offset 這是時間戳記的時間位移。 在版本 1.0 的影片 API 中,這永遠會是 0。 在我們於未來將支援的案例中,此值可能會變更。
width、hight 輸出視訊畫面的高度和高度 (以像素為單位)。
framerate 影片的每秒畫面格數。

Fragments JSON 元素

元素 描述
start 第一個事件的開始時間 (以「刻度」為單位)。
duration 片段的長度 (以「刻度」為單位)。
索引 (僅適用於 Azure Media Redactor) 定義目前事件的畫面索引。
interval 片段內每個事件項目的間隔 (以「刻度」為單位)。
活動 每個事件皆包含在該持續時間內所偵測到並進行追蹤的臉部。 它是包含事件的陣列。 外部陣列代表一個單位的時間間隔。 內部陣列包含在那個時間點所發生的 0 或多個事件。 空白的括號 [] 代表沒有偵測到臉部。
識別碼 正在被追蹤之臉部的識別碼。 如果該臉部變成無法被偵測,這個號碼可能會在無意中變更。 特定的人員在整個影片中應該要擁有相同的識別碼,但由於偵測演算法的限制 (例如受到阻擋等情況),使我們無法保證識別碼相同。
x, y 標準化縮放 (0.0 到 1.0) 中臉部週框方塊左上角的 X 和 Y 座標。
-X 和 Y 座標總是相對於橫向方向,因此如果您的影片是直向影片 (或在 iOS 的情況下為上下顛倒),便需要相對應地轉換座標。
寬度,高度 標準化縮放 (0.0 到 1.0) 中臉部週框方塊的寬度和高度。
facesDetected 這是位於 JSON 結果的末端,並能摘要說明演算法在影片期間所偵測到的臉部數目。 由於識別碼可能會在臉部變成無法被偵測時 (例如臉部離開螢幕、轉向別處) 於無意中重設,所以此數字不會總是和影片中的實際臉部數目相同。

取得說明及支援

您可以連絡媒體服務並詢問問題,或依照下列其中一種方法追蹤我們的更新: