【De-ID】Deep learning architectures for tatto detection

Joyce Hsiao
Hsiao’s Blog
Published in
12 min readMar 16, 2020
  • 本篇為針對刺青利用深度學習進行去識別化。
  • 這是一系列針對深度學習應用於個資去識別化論文整理並google中文化。

Paper:

1. A Deep Learning Architecture for De-identification of Patient Notes : Implementation and Evaluation

2. A Recurrent Neural Network Architecture for De-identifying Clinical Records

3. DE-IDENTIFICATION OF PROTECTED HEALTH INFORMATION PHI FROM FREE TEXT IN MEDICAL RECORDS

4. An Interactive De-Identification-System

5. Deep Learning Architectures for Tattoo Detection and De-identification

6. Live Face De-Identification in Video

7. Face-deidentification in images using Restricted Boltzmann Machine

1. INRTRODUTION

  • 個資保護越來越受到重視,如果是圖像,對個資的去識別化通常會以可逆的方式混淆或刪除被拍攝者的個人身份識別特徵,以便執法人員在必要時可以存取。
  • 在諸如Google Street View之類的商業系統中使用的最廣泛的去識別技術之一是檢測和模糊記錄的人的臉部。但是這種方法沒有考慮到軟生物特徵和非生物特徵,例如紋身,衣服,頭髮的顏色等,這些特徵可以用作識別人的線索

Soft Biometrics的特徵是指物理,行為或依附的人類特徵,可分類為符合人類的預定義類別。與經典的生物特徵識別不同,這些類別是由人類建立並經過時間驗證的,目的是區分個體。

  • 我們提出了一種檢測和去識別紋身皮膚區域的方法。使用深度學習方法,探索了幾種神經網路模型,訓練它們當patch分類器(patch classifiers),將輸入圖像的每個patch標記為是否屬於紋身。檢測後,將紋身區域替換為周圍皮膚的顏色來取消標識。

2. RELATED WORK

解決無限制圖像裡的紋身檢測的研究較少,多數是去識別涉及硬生物特徵,包括臉部。對紋身檢測的研究通常不是為了身分識別而是由法醫相關應用推動的,其目的是為紋身建構一種圖像檢索系統以幫助執法。

  • Jain等人提出了一種系統其中裁剪的紋身被分割,使用了顏色、形狀和紋理特徵表示並與資料庫比對。
  • Han和Jain 通過啟用草圖到圖像sketch-to-image-matching比對來擴展這種系統的想法,其中輸入圖像是草圖而不是照片,而資料庫包含真實的紋身圖像。他們使用SIFT描述符( descriptors)對形狀和外觀進行建模,並使用基於局部特徵的稀疏表示分類方案進行匹配。

Scale-invariant feature transform(尺度不變特徵轉換)是一種機器視覺的演算法用來偵測與描述影像中的局部性特徵,它在空間尺度中尋找極值點,並提取出其位置、尺度、旋轉不變數

  • Kim等結合局部形狀範圍,SIFT descriptors和整體紋身形狀以獲取紋身圖像,實現了對部分形狀變形的穩固性(robustness)以及對平移,縮放和旋轉的不變性。
  • 赫夫林等考慮“in the wild”,即在不受約束的圖像中檢測疤痕,痕跡和紋身,該圖像可以在任何地方包含任意比例的紋身。在他們的方法中,使用基於圖形視覺顯著性去檢測紋身候選區域,然後使用GrabCut,圖像過濾和準連接組件技術獲得紋身位置的最終估計值。
  • Marˇcetic´等提出了一種用於紋身檢測和去識別的實驗系統。為了檢測紋身,首先根據膚色模型檢測未覆蓋的身體部位,然後根據幾何限制對其進行過濾。然後,基於皮膚區域中的孔和切口來定位感興趣區域。最後,為了確認紋身的存在,從感興趣區域中提取了SIFT特徵,並將其與存儲在紋身資料庫中的SIFT特徵進行了比較。然後通過用從周圍皮膚區域獲得的patch替換紋身區域來取消對紋身的識別。
  • 考慮到紋身設計之間的可變性程度以及紋身通常被有目的地設計成與許多現實世界物體相似的事實,設計使紋身與背景區別開來的手工功能非常困難。
  • 最近,卷積神經網絡(CNN)被證明在自動學習許多挑戰性分類任務的良好特徵方面是成功的。而且,它們已經成功地應用於場景標記和語義分割的問題。
  • 在成功的基礎上,這項工作中,使用深度卷積神經網絡convolutional neural network作為基於patch的紋身檢測器。

3. DETECTING AND DE-IDENTIFYING THE TATTOO AREA

■ Tattoo detection

提出的紋身檢測方法是使用卷積神經網絡進行圖像patch標記。

藉由使用大小為N×N的小滑動窗口遍歷圖像,可以得知每個窗口中patch的類別是否屬於紋身。

我們方法的最終輸出是一組遮罩圖像區域,此區域代表候選紋身位置。

由於沒有確切規則去針對特定問題設計深度神經網路,因此我們考慮了最近在其他分類任務中被證明成功的幾種深度學習架構。特別是以下架構:

  1. 僅由多個完全連接層(fully connected layers)組成,完全沒有捲積層的架構,類似於Ciresan等人提出的架構。
  2. 受Krizhevsky等人的AlexNet啟發的架構。 其第一部分由幾個卷積層組成,在每個卷積層之後都有一個最大池層(max-pooling layer ),然後是幾個完全連接層;
  3. 一種由幾對非常規則的捲積層組成的架構,每對之間有最大池層,然後是幾條完全連接層(圖1),這受Simonyan and Zisserman最近提出的VGGNet的啟發。

網路的輸入是一個N×N彩色圖像塊(我們假設是RGB顏色模型)。根據patch的中心是否位於劃定紋身的多邊形內,去判斷patch是否屬於紋身。

■ Tattoo de-identification

紋身的去識別過程如下:

  1. 首先以滑動窗口的方式,在圖像的不同位置上使用訓練過的捲積神經網路,在圖像中找到紋身(圖2a)。為了加快速度,將跨度K滑動窗口(此實驗設K為8)。
  2. 根據網路的輸出,在每個位置上會根據patch的中心位置來判斷是否為紋身
  3. 若判定是紋身,會將其周圍局部正方形中的像素標記為屬於紋身區域。
  4. 為了消除噪聲,我們應用了開運算(morphological opening),消除了一些誤報,然後進行了閉運算(morphological closing),填補了紋身區域內的小間隙。所描述的步驟讓二進制遮罩大致對應於紋身區域(圖2(b))。
  5. 去識別的方式是將屬於紋身區域的像素顏色替換成周圍皮膚的顏色。因為陰影、光罩條件、皮膚狀況等因素,紋身不同側的皮膚會有不同顏色,所以僅用相同顏色去替換整個紋身是不合適的。
  6. 透過所有周遭皮膚像素值來進行插值計算未標示區域的新顏色。為了找到所有周遭皮膚的像素,在形態上擴展了先前發現和紋身區域相對應的二進制遮罩,並找到了所得斑點的輪廓(contour of the resulting blob)
  7. 因為紋身可以位於皮膚邊緣(即和背景相連),因此輪廓的某些像素克能不屬於皮膚。而根據Jones和Regh 提出的膚色模型,我們將每個像素分為皮膚和非皮膚。分類為非皮膚的輪廓像素就不再考慮(圖2(e))。
  8. 然後,使用反距離權重插值( inverse distance weighing interpolation),將分類為屬於皮膚的輪廓像素顏色進行插值,所得到的顏色拿來和紋身中對應的斑點內的每個像素進行替換。這代表新像素值是為皮膚輪廓值的加權總和,其中每個輪廓點的權重與它與要替換的像素的距離成反比。(距離越短,權重越高)

4. Experiments

以下括弧數字為原論文參考文獻

■ The employed dataset

資料庫每張圖像都包含一或一個以上的紋身,每個紋身都利用連接線段做標記,如圖三可知這種基於線逼近的固有局限性(the inherent limitations of a line-based approximation),可以非常精確地捕獲每個紋身的輪廓。

■ Training the network

  1. 卷積神經網路的訓練集是通過從資料集裡每個紋身圖像中隨機採樣patch,並將其分類為正或負的方式集合而成的,分類方式是利用標記具體取決於它們的位置。如圖4所示。
  2. 利用優化均方誤差損失函數( optimizing the mean squared error loss function)來訓練網絡。
  3. 使用了動量設置momentum set為0.9,最小批次mini-batch為32的隨機梯度下降法。學習率learning rate設為0.1。
  4. 我們最多進行了40個時期的訓練,如果3個時期的驗證損失沒有改善,就要儘早停止訓練。
  5. 訓練的持續時間取決於patch的大小,範圍從最小patch的10分鐘到最大patch的17小時以上。
  6. 用Python實現了所描述的網路體系結構,其中使用了Theano [2], [3] and Keras [5] libraries。

■ Detection performance evaluation

  1. 一共提取了36820個patch圖像,其中有18400個正例和18420個負例。將patch分為訓練集(包含27616例:13800陽性和13815陰性),驗證集(3068例:1533陽性和1535陰性)和測試集(6136例:3077陽性和3070陰性)。屬於同一圖像的patch全部加到同一集合中。
  2. 使用具大小變化的patch(8×8、16×16、24×24、32×32和40×40)訓練網路,以確定最佳patch大小。儘管較大的patch有望提供有關上下文的更多資訊,但在訓練和測試方面利用它們的網路卻較慢
  3. 在這三種經過測試的體系結構中(請參閱第III.A節),體系結構(i)和(ii)的性能較低,其準確度範圍為61.9%至77.3%。架構(iii)(如圖1所示)獲得了最佳結果,該架構的精準度達到80%-83%。在表一中總結了第三種體系結構針對不同patch大小獲得的結果。正如我們所看到的,隨著圖像patch大小的增加,結果在準確性方面有所提高,但是,準確性差異並不十分明顯。即我們可以說所有patch大小的結果都是相似的。

■ Blob and contour detection

斑點和輪廓檢測的結果被定性評估,並作為去識別的準備。 圖5中可以看到幾個成功的結果(前三列)和不成功的結果(最後一列)。

如我們所見,紋身的大部分區域都是由訓練好的CNN成功找到的,但是紋身區域內部仍然留有一些縫隙,在紋身區域之外還發現了一些誤判,利用數學形態學方法(mathemathical morphology)成功地消除了這兩種情況。 以這種方式獲得的結果可按第III.B節所述使用。 圖6顯示了這種去識別的例子。雖然仍有一些因紋身的某些邊界部分未被檢測到而殘存的問題,但在大多數情況下,紋身都會被去除。

5. Conclusion and outlook

  1. 我們提出了一種用於尋找和去識別紋身皮膚區域的方法。
  2. 我們使用了深度卷積神經網絡將圖像patch標記為是否屬於紋身。
  3. 通過用從周圍皮膚進行插值獲得的值替換其顏色,來消除以這種方式找到的紋身區域的標識。
  4. 我們的發現表明,所提出的方法可用於檢測和去識別圖像中的候選紋身區域。
  5. 該過程中最關鍵的部分是紋身檢測。
  6. 我們估計,具有捲積層的深度學習方法有良好潛力去學習檢測紋身區域。
  7. 但是,在我們進行的實驗中,假陽性和假陰性的問題仍然很明顯。
  8. 該模型通常學會區分膚色和其他色,因此在背景中導致許多誤判,或者學會僅將與膚色相鄰的patch算作紋身patch,進而在同質紋身區域內造成假陰性(false negative)。
  9. 推測上述問題解決方式可以在現有資料集中使用較大patch(例如64×64、128×128甚至256×256)學習模型並利用加數少量修正(平移,旋轉,噪聲等)跟顯著擴大訓練集的大小
  10. 這些解決方式這在許多關於深度神經網絡的著作中都提到過。我們計劃在將來研究這些可能性。
  11. 另一個可能的改進將包括將該方法與去識別管道的其他階段相結合,即行人檢測和分割,以解決false positive的問題。正如我們的定性分析表明,大多數false positive都在周圍而不是在人身上,一種可能性是僅在人檢測器的輸出上使用該方法。最後,為了提高未識別區域的自然度,還可以沿顏色將周圍皮膚的紋理加入考慮。

--

--