七夕「加餐」:深度學習圖像算法在內容安全領域的應用實踐和優化

做者介紹:李雨珂博士,網易易盾資深算法專家,畢業於浙江大學信息與電子工程學系,研究方向包括數據挖掘、機器學習以及計算機視覺,目前在網易易盾主導內容安全領域多媒體信息相關人工智能算法研發。
深度學習圖像算法近年來在學術領域經歷了爆發式的發展,目前已經在工業界多個實際場景取得了較完整的應用落地,例如安防、營銷、娛樂、金融等場景。其中內容安全也是很是典型的落地案例,深度學習圖像算法在鑑黃鑑暴、廣告識別、違禁攔截、敏感人物過濾等方向都取得了不錯的應用效果。html

算法自動識別一方面能夠全面減輕人工審覈投入,另外一方面能夠更有效率、更快速地對信息進行判斷。本篇分享將會介紹如何快速搭建深度學習圖像算法服務以及易盾在圖像算法優化方面的經驗。python

1、內容安全難點ios

內容安全領域是一個相對特殊的場景,咱們面對的問題每每目標定義不明確,數據種類繁雜多變、圖像質量差距大,還會常常面臨對抗攻擊,這一場景對算法能力的要求較高。git

相比較而言,在2C營銷場景中,例如手機掃描商品/圖標,對用戶來講召回能力相對重要一些,誤判在使用過程當中不容易被發現;在門禁考勤場景中,因爲攝像頭採集到的圖像質量較高,算法須要解決的是限定圖片質量範圍內的效果問題。github

而在內容安全領域,因爲線上數據正常比例較高,且圖像類型衆多,誤判問題很是容易集中體現;另外一方面,因爲UGC圖像質量良莠不齊,圖像敏感特徵每每不夠明顯,小目標、模糊、形變等問題較常出現。算法

伴隨易盾內容安全業務的發展,咱們深刻探索了深度學習圖像算法在這個領域內的應用,在實際場景中取得了預期效果。api

2、小試牛刀:教你快速搭建深度學習圖像算法服務安全

深度學習算法已經成爲圖像算法中的重要組成部分,深度學習相關公開資源已經很是豐富,針對圖像任務建立一個簡單模型是十分容易上手的,這裏將會展現如何快速搭建一個深度學習圖像分類服務。網絡

咱們以場景識別爲例子,即根據圖像全局信息判斷拍攝場景,例如泳池、車內、公寓等。咱們能夠選取公開數據集places365用於模型訓練、數聽說明和下載連接參見[1],經過tensorflow-slim接口進行圖像分類模型訓練[2],最終使用常見服務框架將算法服務進行透出。架構

其中數據方面僅以公開數據爲例,實際應用中須要以業務數據爲主。模型訓練採用的框架能夠選擇TensorflowKeras、MxnetGluon、Pytorch、Chainer等。隨着深度學習框架的逐步發展,訓練便捷性愈來愈高,相比較而言Tensorflow-slim也不算特別友好,但其代碼組織思路和拓展性仍是很值得借鑑的。這裏咱們將以Tensorflow-slim爲例分幾個步驟完成這項工做。

2.1 數據處理

原始PLACES365數據集的標籤類別較多,爲了快速驗證代碼咱們僅挑選了其中小部分類別,用做示例。數據按以下進行組織,一個文件夾存儲一類數據,文件夾爲標籤名。

圖片描述

參考源碼中flowers數據集處理腳本download_and_convert_flowers.py,建立圖像數據到tfrecord文件轉換的腳本,原始項目中彷佛沒有一個通用的數據文件轉換工具,建議能夠本身簡單寫一個,將可變參數作成腳本入參,轉換數據便可用命令方式執行,便於後續處理其餘數據集。

圖片描述

腳本處理結束後,目標圖像數據將轉換成tfrecord文件,同時標籤描述文件label.txt會自動生成。參考源碼中flowers數據集描述腳本flowers.py,構建一個對應於場景數據的描述腳本,這裏會對數據集的一些基本信息進行定義,以下所示:

圖片描述

經過上面一系列操做,數據準備層面的工做基本完成。

2.2 模型訓練和測試

完成數據處理後,咱們將挑選一個模型進行訓練,咱們以inception-v3爲例,實際工做中模型挑選主要考慮的是性能和效果的平衡,須要經過必定量的實驗來評估。

首先咱們根據開源項目中提供的連接將IMAGENET預訓練模型下載到本地。tensorflow-slim項目已經對訓練功能進行了很是棒的上層包裝,咱們在實際使用過程當中直接調用train_image_classifier.py腳本便可。咱們首先以較大的學習率訓練最後一層全鏈接參數,其餘參數保持不動,而後以較小的學習率對全部參數進行調整。

圖片描述

訓練腳本train_image_classifier.py對數據讀取、預處理選擇、模型選擇、參數配置等都有較好的支持,建議詳細閱讀其中的代碼和組織形式。完成訓練後,咱們經過測試腳本eval_image_classifier.py完成效果評估,若是在測試集上取得比較好的效果,咱們就能夠進入下一步。

圖片描述

2.3 服務透出

完成訓練和評估後,咱們能夠簡單寫一個轉換腳本將原始模型文件處理成pb文件,這會帶來一系列好處,不但能夠只保留inference所需的網絡結構,砍掉一些訓練輔助結構,將網絡參數值進行freeze,減少模型文件大小,並且因爲pb文件和框架關聯性不大,能夠脫離tensorflow進行使用和部署。tensorflow-slim已經提供了pb文件轉換支持,但我的建議能夠參考其餘方式進行編寫[3],使用上更加直觀和簡便。

接下來是算法模型服務化的工做,這一部分能夠選擇的方案也比較多,可使用基於tensorflow的tf-serving進行完整的服務管理,也能夠只經過Flask、Tornado等通用框架建立HTTP服務,還能夠選擇跨語言RPC框架構建服務。其中Flask方案能夠參考[3]。咱們須要寫一個服務腳原本啓動服務,同時須要建立客戶調用腳本對服務進行調用測試。若是有服務併發評估需求,建議能夠經過Locust,使用上很是便捷[4]。

以上工做完成後,咱們就基本上完成深度學習圖像服務的簡單構建,若是有移動端方面的部署需求能夠參考tensorflow官方iOS的例子[5]。以上內容以場景識別爲例子進行簡單說明,實際上模型使用框架、服務使用框架選擇的空間都是比較大的,我的比較建議算法模型部分能夠按需求靈活挑選,服務部署部分須要有統一的規範進行約束。

3、重裝上陣:易盾實際優化經驗分享

以上工做很是容易實現,也僅僅是算法工做的小開端,離算法應用到實際場景還有很是遙遠的距離。

哪怕經歷了業務數據擴充、負樣本收集、參數調優、模型結構改造等大量工做以後,算法應用到線上數據後的實際效果仍會很是糟糕,不但會出現大量解釋性較差的誤判,並且存在困難樣例不能召回的困境。

在實際工做中,網易易盾每每會從如下幾個角度着手來提高算法真實效果:

  • 標籤訂義:明確識別範圍,建議先縮小識別範圍,再逐步加強召回能力,按照這種方式,效果測試相對容易進行。在場景識別中,總結出全局特徵類似、具備分類意義的標籤是很是關鍵的;
  • 數據有效收集:隨着數據量的不斷累積,數據收集的重點每每不是數量,而是收集效率和質量。咱們在實際工做過程當中採起了一些主動學習機制,既能保證數據有效性,又能儘量減少標註成本。在場景識別中,咱們利用初始數據訓練一個簡單模型後,就能夠用於業務數據的過濾,挑選有效數據進行擴充。
  • 測試集定義:挑選足夠表明線上實際狀況的測試集,主要關注數據量和覆蓋範圍兩個方面,而且針對特殊問題收集特定類型測試集,測試的有效性對線上算法效果起決定性做用。
  • 算法方案:結合多模型融合、目標檢測和斷定策略,擴充算法方案。場景識別相對來講使用全局特徵爲主,但若是遇到小目標、多尺度、模糊等問題,FPN、Attention等結構就可能發揮必定的做用。
  • 線上閉環:服務上線後迴流數據,造成閉環迭代,對模型能力不斷進行矯正。

圖片描述

嘗試新算法、學習新知識每每是很是愉快的,但上述這部分的工做倒是枯燥和痛苦的。真正對線上優化起到最直接幫助的每每不是模型調參,而是枯燥乏味的事前數據工做,以及竭盡全力的過後測試工做。

基於明肯定義、重視大規模測試、造成數據閉環的算法優化思路,易盾圖像算法在業務算法上取得了必定的突破,核心算法模塊效果在過去的幾年中持續穩步提高,基礎能力愈來愈厚重,定向優化也取得進展,不斷提高識別精準度,並逐漸擴大識別範圍。

4、將來展望

易盾內容安全圖像算法服務通過多年發展,已經造成了一系列服務,形式多、範圍廣,維護成本也會逐漸增長。咱們在這些項目經驗的基礎上凝練出最佳實踐方案(平臺方向),爲快速搭建服務知足客戶新需求提供了條件。固然,因爲內容安全場景效果要求相對苛刻,解決特定業務問題每每須要經過特殊路徑(定製方向),進行長期投入,平臺化和定製化之間須要作到必定平衡。

另外一方面,隨着業務量不斷增長,易盾團隊在性能和效果平衡方面也作了很是多的嘗試,經過網絡剪枝量化、圖像預處理優化、模型級聯等方法不斷減少服務響應時間,算法吞吐能力也會是咱們長期追求的重點目標。

以上分享是網易易盾算法團隊在深度圖像領域落地探索方面的一些初淺分享,實際上網易易盾在背後作了不少的工做,好比網易易盾人工智能實驗室方正研究員在2018年研發出了一種對多視角多模態特徵信息進行有效融合的自編碼器神經網絡,在準確率、NMI、Purity、ARI等各項性能指標上,較當下多項國際先進的多視角多模態信息融合技術有顯著性的領先。再好比今年,網易易盾人工智能工程師姚益武在全球計算機多媒體頂級會議ICME 2019展現int8量化新算法,有助於構建端到端的純整數運算通路,且統一表示層的設計簡化了網絡結構的拓撲設計,應用於易盾內容安全圖像識別上,則在確保業務模型推理精度的前提下,其服務的響應時間能獲得顯著下降。

展望將來,網易易盾算法團隊還將不斷研究、創造和創新,持續提高易盾在內容安全服務上的效果,幫助合做夥伴和客戶解決其遇到的內容安全問題。

文中資源彙總:

[1].PLACES365數據集說明和下載:http://places2.csail.mit.edu/...

[2].tensorflow-slim官方地址:https://github.com/tensorflow...

[3].模型轉換和Flask服務編寫:https://blog.metaflow.fr/tens...

[4].壓力測試:https://locust.io/

[5].IOS端部署:https://github.com/tensorflow...

點擊免費體驗網易易盾安全解決方案。

相關文章
相關標籤/搜索