王景中,楊 源,何云華
(北方工業(yè)大學 計算機學院,北京 100144)
隨著現(xiàn)代移動互聯(lián)設備和社交網絡的迅速發(fā)展,網民每天都上傳大量的圖片到互聯(lián)網上.據統(tǒng)計超過七成的家長認為網絡娛樂內容應該盡量避免色情等不良信息,呼吁政府更加嚴格地監(jiān)管網絡娛樂內容.此外,在公司辦公場所和學校教育場所等地方,應該過濾掉這些網絡不良內容[1].如何通過更有效的技術手段來識別和過濾網絡色情圖片一直是一個重要的研究課題,其中最重要的兩個指標是識別的準確性和時間效率.
國內外學者對不良圖片的識別技術做出了許多嘗試.典型的識別方法主要基于色情圖片中往往包含有大量的裸露膚色信息這一事實,通過膚色檢測來判斷是否不良圖片.RGB顏色空間、HSV和HIS顏色空間以及亮度和色度分開存儲的YCbCr顏色空間[2]都曾被利用以檢測膚色.也有研究人員使用多重顏色空間定義膚色模型,并加入紋理檢測以更準確地提取出膚色區(qū)域,然后利用裸露膚色區(qū)域的像素比例[3]、膚色連通域的數(shù)目、位置、形狀[4]等特征作為SVM等分類器的輸入,輸出圖片是否不良圖片.這類基于膚色特征和人體檢測的方法存在的主要問題是,人工選擇的膚色特征模型總是帶有一定的偏差,在現(xiàn)實中不同種族的膚色各不相同,相同的膚色在不同的光照下也會呈現(xiàn)不同的結果,再加上自然界中存在與膚色類似的物體,這類基于低層次語義特征進行相似度匹配的方法誤檢率較高.其它方法包括結合不同的人體識別技術來提高人體檢測的準確率,如人體動態(tài)姿勢識別的多層聯(lián)合模型[5],以及在具有復雜背景的圖像中結合圖像區(qū)域檢測技術[6]進行更準確的場景分割與識別.
基于深度學習的方法把特征提取與分類器放在一個模型里統(tǒng)一起來,特征提取是通過大量的訓練數(shù)據自動學習得到.2012年文獻[7]提出AlexNext網絡結構模型,2015年文獻[8]提出的ResNet模型,都大幅提升了圖片的分類準確率.因此文獻[9]提出AGNet模型,利用卷積神經網絡(CNN)解決不良圖片的識別問題,取得了較好的效果.文獻[10]提出先通過人臉識別和膚色檢測的Coarse Detection方法過濾一部分圖片,再通過CaffeNet進行分類.文獻[11]提出將多個CNN的輸出進行加權綜合的方法.由于CNN的參數(shù)多,必須依靠大規(guī)模的訓練數(shù)據,這在色情圖片識別領域不容易獲得.這些方法通過CNN進行二分類,沒有考慮到色情圖片類別的多樣性,在面對實際應用中具有多樣性特征的色情圖片時,網絡模型的性能和識別準確率往往會下降.
本文利用深度殘差網絡算法,結合不良圖片的多樣性特征,提出一種基于多分類和ResNet的不良圖片識別框架.通過更細粒度的分類,將二分類的色情圖片識別問題轉化為多分類問題,再依據輸出分值判斷為良性或不良圖片.在訓練時采用依據測試結果反饋補充邊緣案例的訓練策略,讓模型挖掘更優(yōu)質的特征.在測試時采用一種單邊滑動窗口的方法,以降低不同圖片尺度帶來的影響.實驗結果表明該方法能夠有效提高不良圖片識別的性能.
深度學習算法能夠自動提取圖片的抽象特征和語義特征,這可以避免手動設計的特征模型與真實特征有差異的弊端.本文設計的基于多分類的ResNet不良圖片識別框架如圖1所示.首先從網上獲取良性圖片和不良圖片構建數(shù)據集,并對圖片標記正確的類別標簽,再通過單邊滑動窗口方法將圖片分為多個圖片碎片,將這些碎片送入ResNet進行分類,最后對分值進行統(tǒng)計和計算并結合合適的閾值劃分為良性圖片或不良圖片.
圖1 不良圖片識別框架圖
CNN在處理不同尺度的圖片時多采用滑動窗口機制,基于網絡模型的輸入大小(本文中為224×224)作為滑動窗口.在不良圖片識別領域,由于敏感內容只是圖片中的一小部分,將圖片直接resize到網絡的輸入大小會導致一定的尺度比例損失.而采用普通的滑動窗口機制,在兩條邊上以較小步長(一般為2)滑動會產生較多的圖片碎片,導致時間性能的下降和造成一定的誤判.本文通過一種單邊滑動窗口的機制進行數(shù)據的預處理,先將待處理圖片中最短邊resize為224,另一邊進行同比例的resize,然后用224×224的窗口在圖片上沿最長邊滑動,步長設置為50.實驗表明,大多數(shù)圖片的長寬比在1:1到2:1之間,很少有圖片超過2:1的長寬比,采用50的步長可以將滑動窗口產生的圖片碎片保持在3到5個之間,在保留了圖片的比例信息的同時有效減少數(shù)據量.在將每一個圖片碎片輸入模型處理的過程中,如果按照閾值被分類為不良圖片,則不再繼續(xù)滑動,算法流程如圖2所示.
圖2 單邊滑動窗口方法
1.2.1 深度殘差網絡
AlexNet[7]、VGGNet[12]和 GoogleNet[13]已被證明在圖像分類任務上可以獲得良好的效果.本文采用的是ResNet[8],ResNet是何凱明于2015年提出的CNN結構模型,該方法以152層的網絡模型在ILSVRC2015上獲得第一名,將錯誤率降低到了3.75%.ResNet的主要優(yōu)點是可以利用更深層次的網絡解決訓練誤差隨網絡層數(shù)的增加而增大的問題.為了解決該問題,ResNet對傳統(tǒng)的平原網絡結構進行了調整,其關鍵結構是將基本的網絡單元增加了一個恒等的快捷連接(如圖3所示).圖中H(x)為理想映射,F(x)為殘差映射,H(x)=F(x)+x.通過將擬合目標函數(shù)H(x)轉變?yōu)閿M合殘差函數(shù)F(x),把輸出變?yōu)閿M合和輸入的疊加,使得網絡對輸出H(x)與輸入x之間的微小波動更加敏感.
圖3 添加了快捷連接的殘差網絡單元
本文構建的是50層ResNet結構模型,并將每一層的參數(shù)減半,以減少訓練時間和在分類準確性與時間性能上做出平衡.本文利用深度學習框架Caffe構建網絡模型,構建的模型共有約590萬個參數(shù),網絡中的神經元連接總數(shù)約為10.68億.相比于AlexNet的約6000萬個參數(shù),該模型在網絡層數(shù)、需訓練的參數(shù)個數(shù)上優(yōu)勢明顯.由于框架分類輸出為9類,故將最后全連接層的神經元個數(shù)設置為9,并將權值學習率和偏置學習率調整為10倍.模型的輸入為224×224大小的圖片,第一個卷積層conv_1的參數(shù)是64個7×7的卷積核,卷積核的步長為2.每一個卷積層之后都設置BatchNorm層,以增加模型的容納能力.激活函數(shù)使用Relu,并通過最大池化層maxpool進行下采樣.最后一層是softmax回歸層,用于輸出圖片被分為某一類的概率.softmax回歸是logistic回歸的一般形式,其數(shù)學公式為公式(1)所示,其中k為類別數(shù),當k=2時softmax退化為logistic.本文實驗中訓練的模型有9個類別,故k=9.
1.2.2 細粒度分類方法
具有不同特征的圖片都可以稱為不良圖片,但簡單的將其劃分為同一類別會讓網絡模型在學習其高層語義特征時產生困惑,導致在處理某些圖片時分類混亂,降低網絡性能.因此基于對不良圖片多樣性特征的分析,將ResNet的輸出分為更細粒度上的9個分類,以便更準確地提取出不良圖片的高層語義特征.這些分類的定義如下:
類別0:良性圖片中的正常人物類圖片;
類別1:良性圖片中的正常類圖片(無人物);
類別2:男性下身類圖片,屬于不良圖片中特征明顯的性器官裸露類;
類別3:女性上身類圖片,屬于不良圖片中特征明顯的性器官裸露類;
類別4:女性下身類圖片,屬于不良圖片中特征明顯的性器官裸露類;
類別5:不良圖片中的性行為姿勢類圖片,一般包含大量的皮膚裸露;
類別6:包含兒童色情類的不良圖片;
類別7:包含色情信息的卡通類圖片;
類別8:不良圖片中的低俗類,包含裙底偷拍、人體內衣敏感部位特寫等.
其中良性圖片和不良圖片定義為抽象類別,不良圖片中性器官裸露類也定義為抽象類別.這種分類方法基本涵蓋了不良圖片的內容范圍,并使得同一類別內的特征盡量統(tǒng)一,增大類別間的特征差異性,以提升網絡模型的分類準確率.實驗發(fā)現(xiàn),softmax分類器在類別之間的特征互斥時效果最好,因此使用類別特征明顯的訓練圖片可以增加模型的準確率.
在網絡模型輸出各類別的分值后,分類為良性圖片和不良圖片的方法如下:
1)取分值最大的類別n和分值s;
2)如果n=0或1,分類為良性圖片;
3)如果n是 2~4,s=s×1.2;
4)如果n是 5~8,s=s×0.92;
5)如果s>=0.85,分類為不良圖片.
其中2、3、4這三類是主要的不良圖片構成部分,也是特征最明顯的類別.經過試驗分析,在統(tǒng)計分值時對這三類硬色情圖片的分值乘以系數(shù)1.2,可以增強過濾的準確率.低俗類的屬性特征相對模糊,其邊界難以與性感圖片區(qū)分開.性行為姿勢類、兒童色情類的色情標準同樣具有一定的模糊性.卡通漫畫本身的描述方法就具有夸張性,卡通色情類的判定也應比正常色情類弱.將5、6、7、8類軟色情圖片的分值乘以0.92,進行一定的弱化,可以減少定義模糊的圖片類型的干擾.將最后得到的分值與閾值0.85進行比較,當大于等于0.85時分類為不良圖片.
所有的良性圖片和不良圖片都是基于上述分類特征從網上下載得到,并被分為訓練數(shù)據集和測試數(shù)據集.由于實際中無法構建百萬級的大規(guī)模不良圖片數(shù)據集,因此首先利用ImageNet 1000數(shù)據集進行預訓練,以學習到可以在接下來的訓練中利用的參數(shù)權值,減少進一步訓練所需的時間.然后再在訓練數(shù)據集上進行訓練,并在測試數(shù)據集上測試模型的分類效果,直至網絡收斂.采用了一種反饋修正的訓練策略,在每進行20個epoch之后,從每個類別中隨機挑選100張圖片,分別測試模型的分類準確率.對準確率小于0.9的類別,定向增加其訓練樣本的容量,包括增加與測試樣本具有相似特征的圖片以及不同膚色的圖片等邊緣案例,再繼續(xù)進行訓練.多次重新設計和構建訓練數(shù)據集直到模型可以挖掘出更優(yōu)質的特征.訓練過程如圖4所示.
圖4 基于反饋修正的訓練策略
不良圖片識別具有一定的法律特殊性,大部分已有的研究都是基于研究人員自己構建的數(shù)據庫.而對這些數(shù)據庫的描述往往不夠清晰,只包含基本的色情圖片和非色情圖片的數(shù)目(如表1),圖片的來源往往都描述為從網上下載得到,對數(shù)據集中圖片的多樣性特征、難易程度、類型等可能影響識別準確率的因素往往沒有提到.目前缺少一個公開的具有一定標準的不良圖片數(shù)據庫,因而難以對不同的不良圖片識別方法進行比較和評估.
表1 不同研究方法的數(shù)據集描述
本文基于更細粒度的特征分類方法構建了相應的訓練數(shù)據集和測試數(shù)據集.在挑選圖片時,主要選擇特征突出、背景簡單或無背景的圖片,以降低過擬合問題的影響.不同于一般的圖片分類任務,不良圖片識別具有很高的主觀性和復雜多樣性.例如,同樣的圖片,不同的人可能會劃分為不同的類別(性感類或色情類),甚至同一人在不同的時間對相同圖片的分類也可能不一致.CNN的最終分類效果對訓練數(shù)據的要求較高,特征不明顯或標簽錯誤的訓練圖片將導致網絡不能提取出有效的特征.為了構建更優(yōu)質的訓練數(shù)據集,本文通過人工篩選出有效的圖片并對圖片標記正確的標簽.
篩選時在每一類別中涵蓋容易和困難部分,以覆蓋多樣化的場景和增加分類時的泛化能力.例如,正常圖片(不包含人物)類別的容易部分覆蓋了不同主題的圖片,如風景、汽車、動物、建筑物等;困難部分則包含不良圖片識別容易出錯的點,如類膚色的木頭等.而對于正常的人物圖片,其容易部分也會覆蓋膚色、種族等多樣性,困難部分則覆蓋含大片皮膚裸露的運動(游泳、拳擊、摔跤)以及哺乳、比基尼、內衣、給嬰兒或小孩洗澡等圖片.數(shù)據集的部分圖片樣例如圖5所示.
圖5 數(shù)據集的部分樣例
本文構建的數(shù)據集分布如表2所示.
表2 數(shù)據集類別分布
本文實驗主要基于一塊顯存為12 GB的GeForce GTX Titan X顯卡,實驗平臺操作系統(tǒng)為ubuntu 16.04,網絡模型通過深度學習開源工具Caffe進行搭建,編程語言使用的是Python 2.7.
從構建的數(shù)據集中隨機挑選一定的圖片分別用作訓練集和測試集,圖片數(shù)目如表3所示.為了進一步增大數(shù)據集的容量,采用多種數(shù)據增量技術.常用的隨機裁切方法可以產生較多的圖片碎片,但并不適用于不良圖片,因為這些碎片可能已經改變了其類別屬性,產生標簽錯誤.因此采用不改變其分類特征的方法,首先通過旋轉和翻轉,每次將圖片旋轉45度,再進行水平和垂直翻轉,得到32張圖片.其次向圖片增加隨機噪聲,并在0.9~1.1的范圍內隨機輕微修改圖片亮度,得到5張圖片.最后采用的方法是高斯模糊處理.
模型在ImageNet 1000數(shù)據集上預訓練之后,再在訓練集上進行訓練.權值的基礎學習率設置為0.01,動量為0.9,權值衰減為0.0005,采用前文描述的反饋修正策略訓練直至網絡收斂.
表3 構建的訓練數(shù)據集和測試數(shù)據集圖片數(shù)目
訓練好的模型文件大小約為23 MB,與CaffeNet的230 MB相比約為1/10.這是因為ResNet模型的參數(shù)數(shù)量相比CaffeNet模型少了很多.訓練好的模型的第一個卷積層conv_1的64個卷積核如圖6所示.這些卷積核可以提取到圖片的角度、邊緣和顏色等特征,再將這些特征送入高層網絡進行進一步的特征提取.一般而言,第一個卷積層的卷積核越清晰越能提取出優(yōu)質的特征.
圖6 conv_1訓練好的卷積核參數(shù)
2.3.1 識別準確率分析
本文對不良圖片識別的分類結果采用準確率AUC來表示,T為測試集上分類正確的樣本數(shù),P為測試集的總樣本數(shù)目,則AUC為:
對圖片進行測試,過濾閾值可以根據具體應用環(huán)境來設置.實驗中,通常情況下最后輸出分值s大于0.85時圖片是不良圖片的概率較大,小于0.3時是良性圖片的概率較大.在一般場景下可將閾值設定為0.85.該方法獲得了較高的識別準確率.與其他方法的準確率對比如表4所示.
表4 準確率AUC對比
基于ORB+HSV的方法利用了HSV顏色空間,結合構造的具有魯棒性的特征描述符構建詞袋模型,最后通過SVM進行分類.該方法對于膚色信息有較好的獨立性,但對圖片特征的擬合均有一定的誤差,準確率較低.CaffeNet、CNN和多示例學習(MIL)對光照、圖片尺度、清晰度和圖片類型的變化具有較強的魯棒性,可以達到較高的準確率,但這些方法忽視了色情圖片的多樣性特征.本文方法充分考慮了多樣性特征的影響,所以在類別豐富的數(shù)據集上表現(xiàn)更好.準確率波動幅度較大的原因可能是類別5~8的正樣本數(shù)目相對較少,保持訓練正樣本的類別比例約為1:1可帶來更好的效果.
2.3.2 時間效率分析
在對不良圖片的識別過濾處理中,算法的時間性能也很重要.本文方法對單張圖片的處理時間小于40 ms,與其它方法的80 ms以上相比有很大的提升.時間性能對比如表5所示.基于手動特征設計的ORB+HSV算法花費時間較多,基于深度學習的方法通過GPU進行運算,時間性能相對較高,本文方法的網絡模型參數(shù)較少,可以達到更高的時間效率.
表5 時間性能對比
本文提出一種基于多分類和ResNet的不良圖片識別框架,結合更細粒度的分類特征,將不良圖片識別轉化為多分類任務.通過反饋修正的訓練策略和單邊滑動窗口的測試方法,根據具體環(huán)境設置閾值來劃分良性和不良圖片.實驗結果表明,該方法可以以較少的測試時間獲得較高的不良圖片識別準確率.但該方法所需訓練時間仍較長,低俗類等的邊界條件仍有一定的模糊性,接下來將探討劃分更多子類的可能性,以進一步優(yōu)化算法的性能.