新聞中心
悟空鑒黃系統(tǒng)在京東上線已一年多,在京東云上提供接口也有數(shù)月,同時(shí)服務(wù)于京東主圖、曬單圖及京東公有云網(wǎng)站的圖片審核,并向外部提供通用鑒黃功能。

創(chuàng)新新互聯(lián),憑借十年的成都網(wǎng)站建設(shè)、成都做網(wǎng)站經(jīng)驗(yàn),本著真心·誠(chéng)心服務(wù)的企業(yè)理念服務(wù)于成都中小企業(yè)設(shè)計(jì)網(wǎng)站有上千案例。做網(wǎng)站建設(shè),選創(chuàng)新互聯(lián)。
其中通用鑒黃算法在大于 99.5% 準(zhǔn)確率下,可以節(jié)省 90% 以上的審核人工。主圖和曬單圖每日調(diào)用量超過(guò)千萬(wàn)次,京東云相關(guān)每日調(diào)用量達(dá)到了數(shù)百萬(wàn)次。
本篇將講解鑒黃問(wèn)題的特點(diǎn)和難點(diǎn),并為大家揭秘悟空鑒黃系統(tǒng)背后的技術(shù)。
圖像分類(lèi)和鑒黃任務(wù)
圖像分類(lèi)是計(jì)算機(jī)視覺(jué)中的基礎(chǔ)任務(wù)之一,悟空鑒黃系統(tǒng)背后的算法解決的就是一個(gè)分類(lèi)問(wèn)題,判斷待審核的圖像中包含的物體/內(nèi)容屬于哪一類(lèi):
- 色情:露點(diǎn),明顯性行為。
- 性感:非色情,但是暴露,或是帶有性暗示的肢體挑逗畫(huà)面。
- 其他:其他。
圖1:鑒黃算法流程示意
注:這里的“性感”和描述女神男神時(shí)的“性感”含義并不完全重合。
01鑒黃問(wèn)題自身特有的難點(diǎn)
雖然看上去是個(gè)簡(jiǎn)單的三分類(lèi)問(wèn)題,但是和常見(jiàn)的 MNIST/CIFAR/ImageNet 等分類(lèi)任務(wù)不同,鑒黃問(wèn)題有自身特有的難點(diǎn):
多標(biāo)簽數(shù)據(jù)
和 ImageNet 等單標(biāo)簽數(shù)據(jù)集不同,鑒黃模型面對(duì)的圖片沒(méi)有特定類(lèi)型,畫(huà)面中包含的物體也沒(méi)有限制。
比如穿著暴露的人和全裸露點(diǎn)的人物同時(shí)出現(xiàn)在畫(huà)面內(nèi),輸出的最終結(jié)果不能是色情+性感,而是判定為色情圖片。也就是說(shuō)是個(gè)帶優(yōu)先級(jí)的分類(lèi)任務(wù):色情>性感>其他。
非符號(hào)化(Non-iconic)圖像
在 ImageNet/CIFAR 等數(shù)據(jù)集中,圖像內(nèi)容往往是比較明確的,比如下圖中第一行的狗和人物肖像,圖像信息明確,主題占比通常較大。而鑒黃任務(wù)中,面向的是真實(shí)場(chǎng)景中的圖像,包含大量的非符號(hào)化數(shù)據(jù),比如下圖中第二行的例子。
在這種圖像中,哪怕是畫(huà)面中不引人注意的位置上,很小的一部分畫(huà)面出現(xiàn)了色情信息,也需要被判別為色情圖片。
圖2:Iconic 和 Non-iconic 圖片示意
數(shù)據(jù)特殊性
鑒黃任務(wù)中,色情和性感圖片在像素空間占據(jù)的只是很小的區(qū)域,其他類(lèi)別占據(jù)了絕大部分像素空間。而在模型中,我們則是期望模型學(xué)習(xí)到的特征主要是和色情和性感圖片相關(guān)的特征。
在用于分類(lèi)的特征空間中,因?yàn)槠渌?lèi)別圖片種類(lèi)非常豐富,所以和色情/性感類(lèi)別的分類(lèi)邊界是難以捉摸的,另一方面色情/性感類(lèi)別圖片因?yàn)槌3:芟嗨疲苑诸?lèi)邊界的求解非常有難度。
針對(duì)鑒黃問(wèn)題的特點(diǎn)和難點(diǎn),我們進(jìn)行了一系列技術(shù)上的嘗試和探索,下面為大家一一道來(lái)。
02卷積神經(jīng)網(wǎng)絡(luò)
在當(dāng)前,卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)已經(jīng)成為幾乎所有圖像分類(lèi)任務(wù)的標(biāo)配。
早在 1989 年,Yann LeCun 就發(fā)明了卷積神經(jīng)網(wǎng)絡(luò),并且被廣泛應(yīng)用于美國(guó)的很多銀行系統(tǒng)中,用來(lái)識(shí)別支票上的手寫(xiě)數(shù)字。
2012 年,一個(gè)加強(qiáng)版的卷積神經(jīng)網(wǎng)絡(luò) AlexNet 在 ILSVRC 比賽中的圖像分類(lèi)指標(biāo)超越了基于傳統(tǒng)算法近 10 個(gè)百分點(diǎn),自此卷積神經(jīng)網(wǎng)絡(luò)就逐漸成了識(shí)別相關(guān)的計(jì)算機(jī)視覺(jué)任務(wù)中的標(biāo)配。
圖3:AlexNet
2014 年,Network in Network 被提出,1x1 卷積和 Global Pooling 被廣泛應(yīng)用。
圖4:NIN
同年的 GoogLeNet 開(kāi)始把“并聯(lián)”卷積路徑的方式發(fā)揚(yáng)光大,并在 ILSVRC 中拿下了分類(lèi)指標(biāo)的冠軍。
圖5:GoogLeNet
2015 年,為了解決深度網(wǎng)絡(luò)隨著層數(shù)加深性能卻退化的問(wèn)題,當(dāng)時(shí)還在 MSRA 的何愷明,提出了 Residual Block 并基于此和前人經(jīng)驗(yàn)推出了 ResNet 這個(gè)大殺器,在 ISLVRC 和 COCO 上橫掃了所有對(duì)手。
圖6:Residual Block
ResNet 雖然看上去更深了,直觀來(lái)理解其實(shí)是不同深度網(wǎng)絡(luò)的一個(gè) ensemble,Cornell 的 Serge Belongie 教授專(zhuān)門(mén)用一篇論文討論了這個(gè)問(wèn)題。
圖7:Residual Block 的 Ensemble 解釋
沿著這個(gè)思路,清華、Cornell 和 FAIR 在 2016 年合作提出了 DenseNet,并獲得了 2017 年 CVPR 的最佳論文。
圖8:DenseNet
也有沿著 GoogLeNet 繼續(xù)把“并聯(lián)”卷積研究到極致的,同樣是發(fā)表在 CVPR2017 的 Xception。作者的觀點(diǎn)是,卷積核的維度和學(xué)習(xí)難度也直接相關(guān),讓卷積響應(yīng)圖之間去掉關(guān)聯(lián),既能學(xué)習(xí)到?jīng)]有相關(guān)性的特征,還能降低卷積核學(xué)習(xí)的難度。
圖9:Xeception Depthwise Convolutions
總之研究者們?cè)趦?yōu)化網(wǎng)絡(luò)結(jié)構(gòu)的道路上還在繼續(xù),不過(guò)從實(shí)用的角度看,越是復(fù)雜的網(wǎng)絡(luò),訓(xùn)練的難度也常常越高。
在鑒黃模型研發(fā)的長(zhǎng)時(shí)間摸索中,我們發(fā)現(xiàn) ResNet 是在訓(xùn)練難度和模型性能上最平衡的一種結(jié)構(gòu)。所以目前悟空鑒黃算法是在 ResNet 基礎(chǔ)上進(jìn)行了優(yōu)化和改進(jìn)的一種結(jié)構(gòu)。
03遷移學(xué)習(xí)
萬(wàn)事開(kāi)頭難,盡管網(wǎng)絡(luò)上的十八禁資源到處都是,數(shù)據(jù)的積累卻常常不是一蹴而就。在悟空系統(tǒng)的起步階段,遷移學(xué)習(xí)是快速得到可用模型的法寶之一。
具體到鑒黃算法上,我們的方法是基于其他經(jīng)過(guò)大量數(shù)據(jù)訓(xùn)練過(guò)的卷積神經(jīng)網(wǎng)絡(luò)模型基礎(chǔ)上,利用有限的數(shù)據(jù)進(jìn)行參數(shù)微調(diào)。
微調(diào)的思想是,在神經(jīng)網(wǎng)絡(luò)中,特征是分層一步步組合的。低層參數(shù)學(xué)習(xí)的一般是線條,紋理,顏色等信息,再高一些的層學(xué)習(xí)到簡(jiǎn)單圖案,形狀等,最高層的參數(shù)學(xué)習(xí)到的是由底層特征組合成的語(yǔ)義信息。
圖10:CNN 特征的分層表達(dá)示意
所以在不同任務(wù)中,低層的特征往往是差不多的,那么只需要改變高層的參數(shù)就可以在不同任務(wù)間最大化共享信息,并達(dá)到很好的泛化。
直觀來(lái)理解,色情圖片的檢測(cè)中,背景畫(huà)面部分就是一般的圖片,色情內(nèi)容其實(shí)也是人,很多信息是和一般數(shù)據(jù)集,比如 ImageNet 數(shù)據(jù)共享的。
所以只需要學(xué)習(xí)到針對(duì)色情圖片的高層語(yǔ)義信息就可以用少量數(shù)據(jù)訓(xùn)練一個(gè)良好泛化的模型。
為了實(shí)現(xiàn)微調(diào),我們首先會(huì)找一個(gè)常見(jiàn)的基礎(chǔ)模型,比如 ImageNet 預(yù)訓(xùn)練好的各種流行網(wǎng)絡(luò)結(jié)構(gòu)。然后凍結(jié)低層參數(shù)的學(xué)習(xí)率,只讓模型高層和語(yǔ)義相關(guān)的參數(shù)在少量樣本上進(jìn)行學(xué)習(xí)。
那么,怎么知道哪些層需要凍結(jié),哪些層需要學(xué)習(xí)呢?我們探索過(guò)兩種基于可視化的辦法,一種是 2013 年 ILSVRC 分類(lèi)冠軍 Matthew Zeiler 的 Deconvolution,通過(guò)從上至下的 Transposed Convolution 把響應(yīng)圖和特定圖片中的相應(yīng)區(qū)域關(guān)聯(lián)在一起,可以觀察響應(yīng)圖激活對(duì)應(yīng)的區(qū)域。
圖11:基于 Deconvolution 的卷積核可視化
不過(guò)這種方法實(shí)現(xiàn)較麻煩,而且需要對(duì)給定圖片進(jìn)行觀察,有時(shí)候難以幫助發(fā)現(xiàn)模型本身的特點(diǎn)。
另一種方法是直接在圖像空間上以最大化激活特定卷積核得到的響應(yīng)圖作為目標(biāo)(Activation Maximization),對(duì)輸入圖像進(jìn)行優(yōu)化,看最后得到的圖案,這種方法最早是 Bengio 組在 2009 年的一個(gè) Tech report:《Visualizing Higher-Layer Features of a Deep Network》,后來(lái)被用到了很多地方,包括可視化、對(duì)抗樣本生成和 DeepDream。
圖12:基于激活最大化的卷積層可視化
這個(gè)方法的優(yōu)點(diǎn)是簡(jiǎn)單易操作,缺點(diǎn)是圖像常常看不出是什么,有時(shí)需要腦補(bǔ)。所以即使有了可視化手段的輔助,決定如何微調(diào)參數(shù)仍是個(gè)經(jīng)驗(yàn)活,如果機(jī)器資源足夠可以寫(xiě)個(gè)腳本自動(dòng)訓(xùn)練所有可能情況進(jìn)行暴力搜索。
除了基于圖像分類(lèi)模型,VOC 和 COCO 等數(shù)據(jù)集訓(xùn)練出的檢測(cè)模型的網(wǎng)絡(luò)也是很好的微調(diào)基礎(chǔ)。
檢測(cè)和分類(lèi)雖然是不同的任務(wù),但關(guān)系十分緊密,尤其是鑒黃應(yīng)用中,露點(diǎn)是決定是否色情的關(guān)鍵標(biāo)準(zhǔn)之一,而露出的“點(diǎn)”是個(gè)位置屬性很強(qiáng)的信息。
在悟空鑒黃研發(fā)的過(guò)程中,我們也基于遷移學(xué)習(xí)的思想,嘗試了很多分類(lèi)和檢測(cè)結(jié)合的手段,對(duì)最終模型的效果也起到了很大的促進(jìn)。
04類(lèi)別響應(yīng)圖可視化
當(dāng)一個(gè)模型訓(xùn)練好之后,為了提升指標(biāo),我們會(huì)探索一些模型本身的特性,然后做針對(duì)性的改進(jìn),可視化是這一步驟中最常見(jiàn)的手段之一。
上一部分中,已經(jīng)提到了激活最大化的方法,在訓(xùn)練好的模型中,這也是非常有效的一個(gè)手段。
舉個(gè)例子,對(duì)于 ImageNet 訓(xùn)練出的模型,如果我們對(duì)啞鈴進(jìn)行激活最大化的可視化,會(huì)看到下面的圖像:
圖13:ImageNet 預(yù)訓(xùn)練模型中啞鈴類(lèi)別的最大激活圖像
除了啞鈴,還會(huì)出現(xiàn)手,而手并不是目標(biāo)的特征。在黃圖中,比如某類(lèi)數(shù)據(jù)中露點(diǎn)的部位 A(例:大長(zhǎng)腿)常常伴隨著一個(gè)其他特定圖案 B(例:露點(diǎn))出現(xiàn),就會(huì)發(fā)生類(lèi)似的情況。
這樣的后果是一些沒(méi)有包含露點(diǎn)部位 A 的正常圖片,因?yàn)榘颂囟▓D案 B,就會(huì)有被誤判為色情圖片的傾向。通過(guò)可視化的手段,如果發(fā)現(xiàn)了這樣的情形,就可以在數(shù)據(jù)層面進(jìn)行改進(jìn),讓真正 A 的特征被學(xué)習(xí)到。
從直觀角度講,基于激活最大化的方法并不是很好,所以更常用的一個(gè)辦法是類(lèi)別激活響應(yīng)圖(Class Activation Map,CAM)。
CAM 自從 NIN 中提出 1x1 卷積和 Global Pooling 就被很多人使用過(guò),不過(guò)第一次比較明確的探討是在 MIT 的 Bolei Zhou 的論文《Learning Deep Features for Discriminative Localization》中。
圖14:類(lèi)別激活響應(yīng)圖
這種方法的基本思想是把 Global Pooling 之后,特定類(lèi)別的權(quán)重應(yīng)用在 pooling 之前的 feature channel上,然后按照像素加權(quán)求和,得到該類(lèi)別激活在不同位置上的響應(yīng)。
這種方法非常直觀地告訴我們,當(dāng)前類(lèi)別中圖像的哪些部分是主要的激活圖案。在分析模型的漏檢和誤檢樣本的時(shí)候,我們通過(guò)這種方法分析模型對(duì)圖像中人一眼就能識(shí)別的圖案是否敏感,決定改進(jìn)模型時(shí)更新數(shù)據(jù)的策略。
05Loss Function
一般來(lái)說(shuō),我們?cè)谶M(jìn)行機(jī)器學(xué)習(xí)任務(wù)時(shí),使用的每一個(gè)算法都有一個(gè)目標(biāo)函數(shù),算法便是對(duì)這個(gè)目標(biāo)函數(shù)進(jìn)行優(yōu)化,特別是在分類(lèi)或者回歸任務(wù)中,便是使用損失函數(shù)(Loss Function)作為其目標(biāo)函數(shù),又稱為代價(jià)函數(shù)(Cost Function)。
損失函數(shù)是用來(lái)評(píng)價(jià)模型的預(yù)測(cè)值 Y^=f(X) 與真實(shí)值 Y 的不一致程度,它是一個(gè)非負(fù)實(shí)值函數(shù)。通常使用 L(Y,f(x)) 來(lái)表示,損失函數(shù)越小,模型的性能就越好。
設(shè)總有 N 個(gè)樣本的樣本集為 (X,Y)=(xi,yi),yi,i∈[1,N] 為樣本i的真實(shí)值,yi^=f(xi),i∈[1,N] 為樣本 i 的預(yù)測(cè)值,f 為分類(lèi)或者回歸函數(shù)。那么總的損失函數(shù)為:
選擇一個(gè)合適的損失函數(shù),是成功訓(xùn)練一個(gè)深度學(xué)習(xí)模型的關(guān)鍵,也是機(jī)器學(xué)習(xí)從業(yè)者研究和專(zhuān)注改進(jìn)的目標(biāo)。
各種各樣的損失函數(shù)層出不窮,其中包括:適用于訓(xùn)練回歸任務(wù)的歐式距離損失函數(shù)(Euclidean Loss),適用于 Siamese 網(wǎng)絡(luò)的對(duì)比損失函數(shù)(Contrastive loss),適用于一對(duì)多分類(lèi)任務(wù)的鉸鏈損失函數(shù)(Hinge Loss),預(yù)測(cè)目標(biāo)概率分布的 Sigmoid 交叉熵?fù)p失函數(shù)(Sigmoid Cross Entropy Loss),信息增益損失函數(shù)(InformationGain Loss),多項(xiàng)式邏輯損失函數(shù)(Multinomial Logistic Loss),Softmax損失函數(shù) (SoftmaxWithLoss) 等等。
TripletLoss 是一種基于歐式距離的損失函數(shù),自從 Google 提出后,在人臉識(shí)別等領(lǐng)域得到了廣泛應(yīng)用。
優(yōu)化 TripletLoss 時(shí),算法盡量減小正樣例對(duì)的歐氏距離,增大負(fù)樣例對(duì)的歐式距離。廣為人知的是,基于歐式距離的分類(lèi),對(duì)銳化圖像和模糊圖像缺少區(qū)分能力。
圖15:Triplet 訓(xùn)練示意
SoftmaxWithLoss 是深度學(xué)習(xí)分類(lèi)任務(wù)中最常用的損失函數(shù),softmax 采用了連續(xù)函數(shù)來(lái)進(jìn)行函數(shù)的逼近,最后采用概率的形式進(jìn)行輸出,這樣弱化了歐氏距離損失函數(shù)帶來(lái)的問(wèn)題。
對(duì)抗樣本及 GAN 在鑒黃算法中的應(yīng)用
在鑒黃算法的研發(fā)過(guò)程中,我們也做了一些在學(xué)術(shù)界前沿和熱門(mén)算法落地的嘗試,主要包括對(duì)抗訓(xùn)練和生成式對(duì)抗網(wǎng)絡(luò)。
01對(duì)抗樣本和對(duì)抗訓(xùn)練
對(duì)抗樣本是指專(zhuān)門(mén)針對(duì)模型產(chǎn)生的讓模型失敗的樣本。深度學(xué)習(xí)雖然在圖像分類(lèi)任務(wù)上大幅超越了其他各種算法,但是作為一種非局部泛化的參數(shù)模型,卻是非常容易被攻擊的模型。
比如一幅圖,加上一個(gè)針對(duì)模型產(chǎn)生的攻擊“噪聲”之后,就會(huì)被以非常高的置信度分為錯(cuò)誤的類(lèi)別。
圖16:攻擊樣本示意
對(duì)抗樣本實(shí)際上會(huì)對(duì)模型的分類(lèi)邊界進(jìn)行改善,在悟空鑒黃算法的研發(fā)中,我們引入了對(duì)抗訓(xùn)練,來(lái)提高模型的泛化性。
02生成式對(duì)抗網(wǎng)絡(luò)(GAN)簡(jiǎn)介
生成式對(duì)抗網(wǎng)絡(luò)是 2017 年視覺(jué)和機(jī)器學(xué)習(xí)領(lǐng)域的絕對(duì)熱點(diǎn)。生成式對(duì)抗網(wǎng)絡(luò)包含兩部分,一個(gè)是用于生成樣本的生成式模型 G,另一個(gè)是用于區(qū)分生成樣本和真實(shí)樣本的判別模型 D。
從思想上來(lái)說(shuō),生成模型的思路是讓一個(gè)簡(jiǎn)單分布(比如多維高斯分布)經(jīng)過(guò)模型的變換生成一個(gè)較為復(fù)雜的分布,這個(gè)分布要盡量逼近目標(biāo)數(shù)據(jù)的分布,這樣就可以利用生成模型得到目標(biāo)數(shù)據(jù)的樣本了。
圖17:生成式模型示意
所以目標(biāo)是要讓兩個(gè)分布貼近,最基礎(chǔ)的想法就是學(xué)習(xí)參數(shù)讓樣本似然最大,比如 MLE;或者變換另一個(gè)思路,讓兩個(gè)分布的差異盡量小,GAN 就屬于這一類(lèi)。
圖18:GAN 示意
GAN 中由 G 產(chǎn)生的樣本會(huì)盡量朝著數(shù)據(jù)所在的流形貼近,目標(biāo)是讓 D 分不出來(lái),而 D 也會(huì)在每次訓(xùn)練中讓自身能力提升,盡量區(qū)分哪些樣本是真實(shí)的、哪些是 G 產(chǎn)生的,相當(dāng)于一個(gè)零和博弈,這就是對(duì)抗的由來(lái)。
理想情況下,最后 D 再也無(wú)法提升,G 學(xué)習(xí)到真實(shí)的數(shù)據(jù)分布,并且和輸入分布所在空間建立一種對(duì)應(yīng)。
03半監(jiān)督學(xué)習(xí)
具體到鑒黃算法中,GAN 的作用主要體現(xiàn)在通過(guò)改善數(shù)據(jù)的分類(lèi)邊界,對(duì)少量類(lèi)型數(shù)據(jù)的提升。
吳恩達(dá)提到過(guò),深度學(xué)習(xí)中,算法是引擎,數(shù)據(jù)是燃料。雖然現(xiàn)在悟空鑒黃系統(tǒng)已經(jīng)達(dá)到千萬(wàn)級(jí)海量數(shù)據(jù),但是數(shù)據(jù)總是越多越好,并且對(duì)于有些特定類(lèi)型的數(shù)據(jù),數(shù)量未必高到可以單純訓(xùn)練就達(dá)到很好效果。這種情況下,半監(jiān)督學(xué)習(xí)是改善模型性能的一個(gè)選項(xiàng)。
2016 年,在鑒黃算法研發(fā)初期,我們就嘗試過(guò)用 GAN 學(xué)習(xí)特定類(lèi)別的數(shù)據(jù),并生成數(shù)據(jù),作為偽色情和偽性感類(lèi)別加入到模型當(dāng)中進(jìn)行更多類(lèi)別的半監(jiān)督模型訓(xùn)練,使用的時(shí)候再拋棄偽類(lèi)別。
定性來(lái)看,在數(shù)據(jù)很少的時(shí)候,每個(gè)類(lèi)別之間的分類(lèi)邊界會(huì)非常粗糙,傾向于“原理”數(shù)據(jù)所在的流形,而用 GAN 生成的數(shù)據(jù)中,和真實(shí)數(shù)據(jù)有一定的相似性(紋理,局部圖案),肉眼卻一眼就能分辨不同于真實(shí)數(shù)據(jù)(因?yàn)槟壳胺菞l件 GAN 只能生成一些簡(jiǎn)單數(shù)據(jù)比如人臉、火山、星球等)。
這相當(dāng)于產(chǎn)生了一批更靠近真實(shí)數(shù)據(jù)的偽數(shù)據(jù),讓判別器學(xué)習(xí)真實(shí)數(shù)據(jù)和這種數(shù)據(jù)之間的分類(lèi)邊界就可以讓邊界離真實(shí)數(shù)據(jù)靠的更近。數(shù)據(jù)量少的時(shí)候,這種方法能帶來(lái)非常大的泛化性能提高。
不過(guò)需要注意的是這種方法有個(gè)假設(shè):G 網(wǎng)絡(luò)不能生成很完美的圖像,否則 G 網(wǎng)絡(luò)就相當(dāng)于一個(gè)數(shù)據(jù)發(fā)生器,會(huì)導(dǎo)致分類(lèi)網(wǎng)絡(luò)崩潰。后來(lái)和我們做法類(lèi)似的方法開(kāi)始出現(xiàn)在論文里,比如NVIDIA的《Semi-Supervised Learning with Generative Adversarial Networks》。
04數(shù)據(jù)的模擬和生成
在鑒黃算法的研發(fā)中,我們也嘗試了一些看上去比較超前的算法,比如 Image-to-Image Translation。
鑒黃問(wèn)題中色情和性感類(lèi)別因?yàn)橛泻芨叩南嗨菩允欠浅ky區(qū)分的,比如一個(gè)險(xiǎn)些露點(diǎn)的圖片就是性感類(lèi)別,而一旦露點(diǎn)了,即使畫(huà)面其他部分幾乎一樣,也是色情類(lèi)別。
為了針對(duì)這種情況提高準(zhǔn)確率,我們的思路如果能生成圖片對(duì),一幅是色情一幅是性感,就可以針對(duì)這樣的圖片對(duì)進(jìn)行訓(xùn)練,達(dá)到對(duì)色情/性感類(lèi)別更強(qiáng)的分類(lèi)能力。
沿著這個(gè)思路,我們嘗試了 UC Berkeley 發(fā)表的 Pix2Pix:《Image-to-Image Translation with Conditional Adversarial Networks》和 Cycle-GAN:《Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks》。
利用 Pix2Pix,我們可以把帶馬賽克的圖片(標(biāo)注為性感)中的馬賽克去掉(標(biāo)注為色情)。Pix2Pix 其實(shí)就是一種單純的對(duì)圖像進(jìn)行變換的 CNN 結(jié)構(gòu),模型的訓(xùn)練上就是把圖片配好對(duì),訓(xùn)練輸入圖片盡量生成和輸出差不多的圖片。
傳統(tǒng)的類(lèi)似結(jié)構(gòu)中,都是用重建誤差來(lái)作為訓(xùn)練目標(biāo),不過(guò)基于重建誤差的目標(biāo)往往會(huì)導(dǎo)致重建的圖片非常模糊,而 GAN 中的 Adversarial loss 正好可以解決模糊問(wèn)題,所以被廣泛應(yīng)用于需要生成豐富細(xì)節(jié)的圖像的應(yīng)用,Pix2Pix 是其中之一。
圖19:Pix2Pix
Pix2Pix 去除馬賽克的效果大致貼出來(lái)大家感受一下(左邊是馬賽克圖片,右邊是 Ground Truth,中間是模型生成圖片):
圖20:Pix2Pix 去除馬賽克效果展示
帶馬賽克的圖片算是比較小眾的一種圖像,在實(shí)際場(chǎng)景中未必會(huì)對(duì)模型有很大幫助,如果能有穿衣服-不穿衣服的圖像對(duì),對(duì)泛化能力的提升應(yīng)該會(huì)更有意義,所以我們又嘗試了 Cycle-GAN。
Cycle-GAN 其實(shí)也只是用到了 Adversarial loss,和生成模型沒(méi)什么關(guān)系,主要的貢獻(xiàn)還是把對(duì)偶學(xué)習(xí)結(jié)合 Adversarial loss 用到了圖像翻譯上。
在 Cycle-GAN 中,每一次訓(xùn)練會(huì)把一個(gè) domain 中的圖像翻譯到另一個(gè) domain,然后在翻譯回來(lái),并檢查一致性,同時(shí)每次被翻譯的圖像是否和該 domain 真實(shí)樣本可區(qū)分,通過(guò) adversarial loss 實(shí)現(xiàn):
最后穿衣服的效果如下(左圖馬賽克為手動(dòng)加上):
圖21:Cycle-GAN 穿衣服效果展示
因?yàn)樯蓤D片的成功率較低,最后并沒(méi)有應(yīng)用到實(shí)際的訓(xùn)練中。不過(guò)隨著整個(gè) AI 領(lǐng)域技術(shù)的不斷進(jìn)步,各種開(kāi)腦洞的辦法會(huì)越來(lái)越多,我們也會(huì)持續(xù)探索和改進(jìn),讓我們的鑒黃算法更加準(zhǔn)確、高效和可靠,成為真正的“火眼金睛”。
文章名稱:高達(dá)99.5%準(zhǔn)確率,火眼金睛的“鑒黃系統(tǒng)”背后技術(shù)大揭秘
文章地址:http://fisionsoft.com.cn/article/cohidpp.html


咨詢
建站咨詢
