“Question”為網易易盾的問答欄目,將會解答和呈現安全領域大家常見的問題和困惑。如果你有什麼疑惑,也歡迎通過郵件(zhangyong02@corp.netease.com)提問。
問題背景
近日看到有網友發出疑問,有些平臺是如何識別出我那些私藏的小電影的。除了這位網友外,也有人在知乎上提出問題,詢問影像識別的技術原理是什麼?XX是如何過濾色情內容的?影像識別很難嗎,到底難在哪裡?也有人“靈魂拷問”,你們人工智慧鑑黃的原理到底是什麼?
基於這些疑問,網易易盾實驗室的工程師寫了篇“智慧鑑黃”的科普文章,以下是相關內容。
正文
智慧鑑黃作為內容安全的核心訴求,一直吸引著學術界和工業界的無數攻堅者來挑戰,正如深度學習入門容易精通難,智慧鑑黃領域也容易出現從入門到放棄的過程。雖然網上爬一批資料標註一下,訓練一個模型就能實現初步的效果,但是商業級別的應用真的這麼簡單嗎?
這篇文章將以易盾的智慧鑑黃產品為例,從演算法層面介紹智慧鑑黃相關的背景和難點。作為演算法愛好者的你,一定是因為對演算法的濃厚興趣而不只是為了看某些影像而看這篇文章的。
現狀目前大部分公司的智慧鑑黃產品都將輸出標籤設計為色情、性感和正常三大類,如下所示,顯示細分類結果的比較少,一方面原因是細標籤定義的難度較大,另一方面是識別效果很難把握,識別效果做得不好,那就是搬起石頭砸自己的腳,因此目前大部分產品還是統一輸出色情這一大類。
早期的鑑黃大部分是簡單粗暴的人工稽核,是勞動密集型工種。但是隨著影像數量的增加,人工稽核成本越來越高,因此採用機器+人工的方式鑑黃就成為了主流。機器+人工的方式一般是先通過機器過濾出大部分一定正常和一定有問題的影像,剩下的再交給人工進行稽核,這樣可以大幅度降低人力成本,而且機器識別效果越好,人工稽核成本越低。
機器鑑黃其實是比較寬泛的概念,可以是通過規則系統來實現,比如基於MD5、基於使用者的IP等資訊設定黑名單庫,直接基於規則進行攔截。當然大部分還是會採用演算法模型,也就是用演算法模型判斷一張影像中是否包含色情資訊,本質上就是影像識別。影像識別作為人工智慧熱潮下的寵兒,這幾年的發展可謂日新月異,主要經歷了深度學習興起前手工設計特徵到深度學習時代通過網路學習特徵的過程,目前在部分任務上的效果甚至超越了人類。
影像識別中最常見的就是影像分類演算法,從AlexNet到VGG,從ResNet到DenseNet,目前的影像分類演算法可以較為準確地區分ImageNet的1000類資料,鑑黃本身也是對輸入影像做分類,因此採用影像分類演算法就是順其自然的事。其次,目標檢測演算法可以用來檢測色情影像中的露點部位,也是比較可靠的手段。此外,還有基於業務層面構造的特徵和邏輯,比如是否有人、皮膚的面積等,用來輔助判斷,在一些情況下確實是有效的。
除了影像層面的鑑黃外,視訊層面的鑑黃可以有更多樣的解決方案,最基礎的是通過視訊截幀依靠成熟的影像鑑黃演算法實現,其次還可以直接基於視訊做分類、行為分析等,藉助時序特徵實現更加可靠的識別。除此之外,音訊層面的特徵也是非常有用的,正常視訊中應該很少會聽到嬌喘的聲音。
其實不管是基於影像層面還是視訊層面做智慧鑑黃,只要有一定的資料積累和恰當的解決方案,基本上對於明顯的露點色情或者明顯性行為影像都可以有不錯的召回能力,那難點到底在哪?我這裡大致列舉了幾個。
對於智慧鑑黃而言,色情這個概念太大了,比如敏感部位、性行為、色情挑逗等,大致上可以分為露點的和不露點的,露點的大家都比較熟悉,識別起來也相對容易。不露點的除了部分性行為比較容易外,其他的比如姿勢極其挑逗,衣著極度暴露(丁字褲、情趣內衣等)等型別其實在特徵上和性感是很接近的,識別起來有一定難度——請看圖。
這種型別的圖和真人還是有一定差異的(如下圖),試想你看到一張漫畫裸女和一張真人高清裸女的反應肯定是不一樣的,模型也是人訓的,所以道理是一樣的。卡通、漫畫和簡筆畫主要的兩個特點就是誇張和簡單,誇張的話特徵就和真人存在一定差異,比如把敏感器官畫得超級大;簡單的話特徵就很少,尤其當影像中只是黑色線條時,可提取的有效特徵很難支撐模型做出準確的識別,在這種情況下,那些計算皮膚面積的演算法顯然無能為力了。
特徵較小(可以自行腦補一張遠遠拍攝的裸女~)其實是目前影像識別中較為普遍的難題,本質上是大面積的背景噪聲和小面積有效特徵之間的矛盾。常規的影像分類演算法和目標檢測演算法都是針對全域性影像進行特徵提取的,在這種情況下這些小區域的色情特徵很可能就被大面積的正常特徵所掩蓋,這就大大增加了識別難度。
這方面也不是沒有解決方案,比如可以:
- 藉助attention思想讓分類網路在訓練過程中將注意力放在對分類輸出最有利的區域,直接從單模型層面提升效果,實現上既可以從網路結構設計上來做,比如像SENet自動學習特徵權重;
- 從監督資訊角度來做,畢竟常規的影像分類演算法一般只有一個全域性的分類監督資訊,網路結構上的attention也是基於全域性的分類監督資訊進行訓練的,有點粗暴學習的感覺,但其實這不一定是最優的,假如針對區域性區域還有額外的監督資訊,或許會讓網路的訓練更有針對性;
- 藉助目標檢測、人體關鍵點檢測等演算法來輔助鑑黃,比如檢測出人體或肢體(動植物色情暫不考慮~),裁剪出最有可能包含色情資訊的區域進行識別。
非通用色情中最直觀的例子是情趣用品,比如震動棒、跳蛋等,相信大家都不陌生。直觀上情趣用品的危害程度上可能不及通用的色情,但假如一個面向青少年的APP每天都在傳播各種情趣用品影像,顯然不能袖手旁觀。
這種型別的難點在於難以平衡好誤漏判,看看下面這2張震動棒和跳蛋的例圖就知道了。一方面和情趣用品外形相似的物體太多了,比如一些兒童玩具;另一方面線上資料中情趣用品的佔比太少了(可能百萬級別的資料才會出現幾張),所以大部分情況下,可能為了召回情趣用品影像就會帶來較多的誤判。
影像攻擊
只要某個行業有利可圖,就會不斷有人湧入,色情相關的行業也是如此。色情影像、電影等需求的增長和國家對色情的明令禁止之間的矛盾,誕生了越來越多的黑產組織,這些組織人員千方百計地要將色情廣告資訊藉助各種媒介傳輸出去,而易盾作為內容安全服務提供商,則是要想方設法攔截這樣的資訊,這就是一場影像攻防的持久戰。我們可以大致將黑產組織的影像攻擊分為非演算法攻擊和演算法攻擊兩種。
大部分的黑產組織人員都是採用PS軟體對色情廣告影像做一定的處理後,企圖繞過鑑黃服務,常見的處理操作包括對色情特徵做一定程度的掩蓋(馬賽克)、將色情影像縮小後貼到另一張正常圖上(特徵小)、影像模糊處理等,這些其實對模型來說是比較難的,需要有一定的資料積累和演算法層面的優化,才可以在一定程度上攔截掉這些資料。
俗話說不怕流氓耍無賴,就怕流氓有文化,採用演算法攻擊的黑產組織,簡直就是有文化的流氓。試想一個黑產組織招了一個演算法工程師,通過影像對抗攻擊演算法,往色情影像加入少量噪聲就能左右鑑黃模型的識別結果,輕輕鬆鬆攻破你的防線,頓時有種後背發涼的感覺。
影像對抗攻擊是比較活躍的一個研究領域,目前許多演算法都是基於梯度來實現的,包括最經典的FGSM演算法。FGSM演算法的核心就是下面這張熊貓圖,在一張正常的熊貓影像上加一點攻擊噪聲得到一張肉眼看起來還是熊貓的影像,但是模型卻將其識別為長臂猿。
總結
整體來看,經過多年的資料積累和演算法沉澱,目前智慧鑑黃的識別效果可以做到非常準確了,今後需要做的更多的是針對邊界資料的識別優化,比如色情挑逗、極度暴露、情趣用品等。
同時,智慧鑑黃也將慢慢往精細化分類發展,除了區分不同的部位、行為外,還可能區分成人和幼兒,真人和卡通等。易盾演算法團隊在上述這些方面也已經做了充分的技術挖掘,取得了很不錯的實際效果,並且演算法識別能力還在穩步上升。
最後,智慧鑑黃路還很長,需要不斷進化。