Google Street View 是 Google Maps 中的一項技術,提供全球眾多公共道路的街景級互動全景影像。2008 年,Google 建立了一套自動模糊人臉與車牌的系統,以保護使用者隱私。本章將設計一個類似 Google Street View 的模糊系統。

圖 3.1:Street View 影像中已模糊的車牌

需求釐清#

以下是候選人與面試官之間的典型對話:

候選人: 這個系統的商業目標是保護使用者隱私,這樣理解正確嗎?

面試官: 是的。

候選人: 我們要設計一個系統,偵測 Street View 影像中所有人臉與車牌,並在展示給使用者前進行模糊處理。使用者可以回報未正確模糊的影像,這樣假設合理嗎?

面試官: 是的,這些假設都合理。

候選人: 我們是否有標註好的資料集?

面試官: 假設我們已抽樣 100 萬張影像,其中的人臉與車牌已由人工標註。

候選人: 資料集中可能缺少特定種族的人臉,導致模型對種族、年齡、性別等屬性產生偏差,這樣假設合理嗎?

面試官: 很好的觀察。為簡化起見,今天不聚焦於公平性與偏差問題。

候選人: 我認為延遲不是主要考量,因為系統可以離線偵測物件並進行模糊處理,這樣理解正確嗎?

面試官: 是的。我們可以在處理新影像的同時,向使用者展示現有影像。

問題摘要: 設計一個 Street View 模糊系統,自動模糊車牌與人臉。訓練資料集包含 100 萬張已標註人臉與車牌的影像。系統的商業目標是保護使用者隱私

將問題框架化為 ML 任務#

定義 ML 目標#

  • 商業目標: 透過模糊 Street View 影像中可見的車牌與人臉來保護使用者隱私
  • ML 目標: 準確偵測影像中的目標物件(object detection)

若 ML 系統能準確偵測這些物件,就能在展示影像前對其進行模糊處理。

本章以「物件」(objects)統稱「人臉與車牌」,以簡化描述。

指定系統的輸入與輸出#

  • 輸入: 包含零個或多個物件的影像
  • 輸出: 物件的位置(bounding boxes)

圖 3.2:物件偵測系統的輸入與輸出

選擇合適的 ML 類別#

物件偵測系統有兩項核心任務:

  • 預測每個物件的位置 — 回歸問題(regression),因為位置以 $(x, y)$ 座標等數值表示
  • 預測每個 bounding box 的類別(如狗、貓等)— 多類別分類問題(multi-class classification)

傳統的物件偵測架構分為 one-stagetwo-stage 網路。近年基於 Transformer 的架構如 DETR 也展現出優異成果,但本章主要探討 two-stage 與 one-stage 架構。

Two-stage 網路#

Two-stage 網路使用兩個獨立模型:

  1. 區域提議網路(Region Proposal Network, RPN): 掃描影像,提議可能包含物件的候選區域
  2. 分類器(Classifier): 處理每個候選區域,將其分類為物件類別

圖 3.3:Two-stage 網路

常見的 two-stage 網路包括:R-CNNFast R-CNNFaster R-CNN

One-stage 網路#

One-stage 網路將兩個階段合而為一,使用單一網路同時生成 bounding boxes 與物件類別,無需明確的區域提議步驟。

圖 3.4:One-stage 網路

常見的 one-stage 網路包括:YOLOSSD 架構。

One-stage 與 Two-stage 比較#

特性Two-stageOne-stage
速度較慢(兩個元件依序執行)較快
準確度通常較高通常較低

本案例的資料集為 100 萬張影像,以現代標準而言並不算龐大,因此使用 two-stage 網路不會過度增加訓練成本。我們先以 two-stage 網路作為起點;當訓練資料量增加或需要更快的推論速度時,再考慮切換至 one-stage 網路。

資料準備#

資料工程#

本問題可用的資料包括:

  • 標註資料集(Annotated dataset)
  • Street View 影像

標註資料集#

根據需求,我們有 100 萬張已標註的影像。每張影像包含一組 bounding boxes 及對應的物件類別。

影像路徑物件Bounding boxes
dataset/image1.jpghuman face, human face, license plate[10,10,25,50], [120,180,40,70], [80,95,35,10]
dataset/image2.jpghuman face[170,190,30,80]
dataset/image3.jpglicense plate, human face[25,30,210,220], [30,40,30,60]

表 3.1:標註資料集的部分資料

每個 bounding box 由 4 個數值組成:左上角 X 座標、Y 座標、寬度、高度

Street View 影像#

這些是資料蒐集團隊收集的 Street View 影像,ML 系統會處理這些影像以偵測人臉與車牌。

影像路徑位置 (lat, lng)Pitch, Yaw, Roll時間戳記
tmp/image1.jpg(37.432567, -122.143993)(0,10,20)1646276421
tmp/image2.jpg(37.387843, -122.091086)(0,10,-10)1646276539
tmp/image3.jpg(37.542081, -121.997640)(10,-20,45)1646276752

表 3.2:Street View 影像的中繼資料

特徵工程#

特徵工程階段先進行標準前處理(如縮放與正規化),再透過資料增強(data augmentation)擴充資料集。

資料增強#

資料增強是將原始資料進行微幅修改以產生新樣本的技術。隨著資料集規模增加,模型能學習到更複雜的模式。此技術在資料不平衡時尤其有用,可增加少數類別的樣本數。

常見的影像增強技術包括:

  • 隨機裁切(Random crop)
  • 隨機飽和度調整(Random saturation)
  • 垂直或水平翻轉(Vertical / horizontal flip)
  • 旋轉與/或平移(Rotation / translation)
  • 仿射變換(Affine transformations)
  • 調整亮度、飽和度或對比度

圖 3.5:套用各種資料增強技術的影像(來源)

對於某些增強操作(如旋轉或翻轉),ground truth bounding boxes 也必須同步變換,否則標註資訊將與影像不一致。

資料增強可分為兩種形式:

  • 離線(Offline): 訓練前預先增強影像
  • 線上(Online): 訓練過程中即時增強影像
比較項目離線增強線上增強
訓練速度較快(無需額外增強)較慢
儲存空間需要額外空間不需額外空間

面試中更重要的是能討論不同方案的取捨,而非選擇哪一種。本案例採用離線資料增強

圖 3.6 展示資料集準備流程。經過前處理(縮放、正規化)與影像增強後,影像數量從 100 萬增加至 1000 萬。

圖 3.6:資料集準備流程

模型開發#

模型選擇#

如前文所述,我們選用 two-stage 網路。圖 3.7 展示典型的 two-stage 架構。

圖 3.7:Two-stage 物件偵測網路

架構包含以下元件:

卷積層(Convolutional Layers)#

卷積層 處理輸入影像,輸出特徵圖(feature map)。

區域提議網路(RPN)#

RPN 提議可能包含物件的候選區域:

  • 以神經網路為基礎架構
  • 輸入為卷積層產生的特徵圖
  • 輸出為影像中的候選區域

分類器(Classifier)#

分類器決定每個候選區域的物件類別:

  • 輸入為特徵圖與候選區域
  • 為每個區域指派物件類別
  • 通常基於神經網路實作

在 ML 系統設計面試中,通常不需要深入討論這些神經網路的具體架構細節。

模型訓練#

神經網路訓練通常涉及三個步驟:前向傳播(forward propagation)、損失計算(loss calculation)與反向傳播(backward propagation)。更多資訊請參考。

物件偵測模型需要在兩項任務上表現良好:

  1. 預測的 bounding boxes 與 ground truth 高度重疊 — 回歸任務
  2. 各物件類別的預測機率準確 — 分類任務

回歸損失(Regression Loss)#

衡量預測 bounding boxes 與 ground truth 的對齊程度,使用 Mean Squared Error (MSE),記為 $L_{r e g}$:

$L_{r e g}=\frac{1}{M} \sum_{i=1}^M\left[\left(x_i-\hat{x}_i\right)^2+\left(y_i-\hat{y}_i\right)^2+\left(w_i-\hat{w}_i\right)^2+\left(h_i-\hat{h}_i\right)^2\right]$

其中:

  • $M$:預測總數
  • $x_i$:ground truth 左上角 $x$ 座標
  • $\hat{x}_i$:預測左上角 $x$ 座標
  • $y_i$:ground truth 左上角 $y$ 座標
  • $\hat{y}_i$:預測左上角 $y$ 座標
  • $w_i$:ground truth 寬度
  • $\hat{w}_i$:預測寬度
  • $h_i$:ground truth 高度
  • $\hat{h}_i$:預測高度

分類損失(Classification Loss)#

衡量各偵測物件的預測機率準確度,使用 log loss(cross-entropy),記為 $L_{c l s}$:

$L_{c l s}=-\frac{1}{M} \sum_{i=1}^M \sum_{c=1}^C y_c \log \hat{y}_c$

其中:

  • $M$:偵測到的 bounding boxes 總數
  • $C$:物件類別總數
  • $y_i$:偵測 $i$ 的 ground truth 標籤
  • $\hat{y}_i$:偵測 $i$ 的預測類別標籤

最終損失函數#

結合分類損失與回歸損失,以平衡參數 $\lambda$ 加權:

$L=L_{c l s}+\lambda L_{r e g}$

評估#

Intersection Over Union (IOU)#

物件偵測模型通常需要偵測影像中 $N$ 個不同物件。為衡量整體效能,我們分別評估每個物件,再取平均。

圖 3.8:Ground truth 與偵測到的 bounding boxes

圖 3.8 顯示模型偵測了 6 個 bounding boxes,但實際僅有 2 個物件實例。如何判斷預測的 bounding box 是否正確?這需要理解 IOU 的定義。

IOU(Intersection Over Union) 衡量兩個 bounding boxes 的重疊程度:

圖 3.9:IOU 公式

  • IOU = 1 表示預測與 ground truth 完全對齊(理想情況,實務中罕見)
  • IOU 越高,預測越準確
  • 通常設定 IOU 閾值來判定偵測是否正確:高於閾值為 true positive,低於閾值為 false positive

例如 IOU 閾值設為 0.7,表示與 ground truth 重疊達 0.7 以上的偵測視為正確偵測。

離線指標#

模型開發是迭代過程,我們使用離線指標快速評估新模型效能。常用指標包括:

  • Precision(精確率)
  • Average Precision(AP)
  • Mean Average Precision(mAP)

Precision#

所有影像中,正確偵測佔全部偵測的比例。高 precision 代表系統的偵測結果更可靠。

$\text{Precision}=\frac{\text{Correct detections}}{\text{Total detections}}$

計算 precision 需要先選定 IOU 閾值。以圖 3.10 為例:

圖 3.10:Ground truth bounding boxes 與偵測到的 bounding boxes

以三個不同 IOU 閾值計算 precision:

  • IOU 閾值 = 0.7: 6 個偵測中有 2 個 IOU 超過 0.7 $\text{Precision}_{0.7}=\frac{2}{6}=0.33$
  • IOU 閾值 = 0.5: 3 個偵測的 IOU 超過 0.5 $\text{Precision}_{0.5}=\frac{3}{6}=0.5$
  • IOU 閾值 = 0.1: 4 個正確偵測 $\text{Precision}_{0.1}=\frac{4}{6}=0.67$

Precision 隨 IOU 閾值變化而不同,難以用單一閾值的 precision 來衡量模型整體效能。Average Precision 可解決此限制。

Average Precision (AP)#

計算多個 IOU 閾值下的 precision 並取平均:

$AP=\int_0^1 P(r) dr$

其中 $P(r)$ 為 IOU 閾值 $r$ 下的 precision。

上述公式可用離散求和近似。例如在 Pascal VOC2008 基準 中,AP 以 11 個均勻分布的閾值計算:

$AP=\frac{1}{11} \sum_{n=0}^{n=10} P(n)$

AP 總結了模型對特定物件類別(如人臉)的整體 precision。若要衡量模型在所有物件類別的整體 precision,則需使用 mAP。

Mean Average Precision (mAP)#

所有物件類別的 AP 平均值,總結模型整體效能:

$mAP=\frac{1}{C} \sum_{c=1}^C AP_c$

其中 $C$ 為模型偵測的物件類別總數。

mAP 是物件偵測系統常用的評估指標。標準基準所使用的閾值可參考。

線上指標#

根據需求,系統需要保護個人隱私。衡量方式包括:

  • 使用者回報與投訴數量
  • 由人工標註員抽樣檢查未正確模糊的影像比例
  • 衡量偏差與公平性的指標(如不同種族和年齡群組的人臉模糊效果是否一致),但此項超出本次範圍

離線指標: 使用 mAP(整體 precision)與 AP(各類別 precision)。 線上指標: 主要指標為使用者回報數

服務部署#

重疊的 Bounding Boxes#

物件偵測演算法經常產生重疊的 bounding boxes,因為 RPN 會在每個物件周圍提議多個高度重疊的候選框。推論時需要將這些候選框縮減為每個物件一個 bounding box

常用解決方案為 Non-Maximum Suppression(NMS) 演算法。

NMS#

NMS 是一種後處理演算法,用於選擇最合適的 bounding boxes:

  • 保留高信心度的 bounding boxes
  • 移除重疊的 bounding boxes

圖 3.11:套用 NMS 前後的比較

NMS 是 ML 系統設計面試中常見的考題,建議深入理解其原理與實作。

ML 系統設計#

圖 3.12 展示模糊系統的整體 ML 系統設計。

圖 3.12:ML 系統設計

批次預測管線(Batch Prediction Pipeline)#

根據需求,延遲不是主要考量,因此可採用批次預測(batch prediction)預先計算物件偵測結果。

前處理(Preprocessing)

對原始影像進行前處理(縮放、正規化等),詳見特徵工程章節。

模糊服務(Blurring Service)

對每張 Street View 影像執行以下操作:

  1. 提供影像中偵測到的物件列表
  2. 透過 NMS 元件精煉偵測結果
  3. 對偵測到的物件進行模糊處理
  4. 將模糊後的影像儲存至物件儲存(Object Storage)

前處理與模糊服務分離設計的原因:

  • 前處理傾向於 CPU-bound 處理
  • 模糊服務依賴 GPU 運算
  • 分離後可獨立擴展各服務,並更有效利用 CPU 與 GPU 資源

資料管線(Data Pipeline)#

負責處理使用者回報、產生新的訓練資料,並準備訓練資料供模型使用。

Hard Negative Mining: 從模型預測錯誤的範例中刻意建立負樣本,加入訓練資料集。重新訓練後,模型對這類困難案例的表現應會提升。

其他討論主題#

若時間允許,可進一步討論:

  • Transformer-based 物件偵測架構與 one-stage / two-stage 模型的差異及優缺點
  • 分散式訓練技術以處理更大規模的資料集
  • 歐洲 GDPR(General Data Protection Regulation)對系統的影響
  • 評估人臉偵測系統的偏差
  • 如何持續微調模型
  • 如何使用 Active LearningHuman-in-the-Loop ML 選擇訓練資料