不单是涉黄图片评价标准的不一致,不同paper中,使用的涉黄图片识别数据集也各不相同【1】【2】。原因一方面在于,涉黄图片本身比较敏感,因法律法规问题通常不能公开在互联网中传播。另一方面,开源数据集对于涉黄图片的判别标准以及数据集本身的标注质量,数据质量都不尽如人意。这就使得不同识别方法之间不具有可比性。
如【图1】所示,在对涉黄图片进行识别时,当前所有的公开方法中,都是将涉黄图片的识别问题当作是图片分类问题来处理(这点于违规图片识别的方法一致)。但要注意到,相对于一般的分类问题(如:ILSVRC挑战赛中1k类的识别问题),涉黄图片分类时,类内之间样本的差异性要更为复杂。直接将一般的图片分类方法往涉黄图片识别领域迁移,能否得到好的结果,有待探究。
目前,国内外都已经出现比较成熟的商用的图片审核系统,如:腾讯云,网易云,阿里云上都有图片审核的API可供调用。开源的方法目前只看到有亚马逊开源的open_nsfw【3】
涉黄图片判别标准
比较早的时候,特别是互联网还未普及时,图片涉黄的评价指标非常简单。只需要看图片中是否出现人的裸体就可以了【5】。随着互联网的普及,图片数量越来越多,种类也越来越丰富。简单的看图片中是否出现裸体这样的指标已经不能有效的解决图片涉黄鉴定的问题。
目前,找不到公开的,或者是一致的定量标准来判定图片是否涉黄。所有关于图片是否涉黄的判断都是定性的描述。所有的paper在谈到自己所用数据集的评价标准时,无一例外都是一笔带过,没有详细的解释,确实非常令人困扰。
先给出两个色情的定义,自行体会:
Wiki上对Pornography的定义
Pornography(oftenabbreviatedporn)istheportrayalofsexualsubjectmatterfortheexclusivepurposeofsexualarousal.
百度词典对“色情”的定义
色情(拼音:sèqíng),是一个汉语词语,是指能挑起或激发起性欲的东西。本指色欲、情欲。后引申为透过文字、视觉、语言描绘或表现裸体、性器官、性交等,与性有关的形象,使观赏者产生性兴趣和性兴奋的事物。
通过对当前公开的资料和论文整理,我认为图片涉黄判定标准可以归纳为以下几方面:
表1
从【表1】中的信息可以看到,涉黄图片里包含的内容非常丰富。不同类别之间的差异性也非常大。一部分标准涉及人体器官,一部分标准涉及人的动作和行为,一部分标准涉及人与人之间的关系,还有涉及物品甚至于文本信息的。很显然,如果简单的将鉴黄理解成简单的porn/nonporn的二分类问题,显然不能很好的解决图片鉴黄的任务。
这几个标准中,关于性暗示的描述最为模糊。比如,如何定量“性诱惑”,“性挑逗”。这些往往是非常主观而且在不同国家地区差异性非常大的。因此,想要得到理想的图片涉黄识别数据集,需要训练一批经验丰富的数据标注人员。并且需要合理的设置正样本(SFW)。
涉黄图片识别开源项目和数据集
涉黄图片识别开源项目
目前,开源项目只有一个,来自yahoo的open_nsfw【3】:
该项目的数据集没有公开。将涉黄图片识别看作是一个二分类的任务(NSFW/SFW)。仅仅给出一个预训练好的模型(目前,只开源了阉割版本resnet50这一个模型),提供给爱好者们去做实验。官方建议是在预训练好的模型的基础上做finetune实现不同场景下的应用。
结论,参考意义不大。
涉黄图片识别开源数据集
PornographyDataset
这个数据集的作者来自UniversityofCampinas,Brazil(坎皮纳斯州立大学)。他们的研究组研究方向在于视频的理解。从2014年开始,他们有一系列的涉黄图像(包括图片和视频)识别的工作发表【1】。
图2Pornographydataset样本示例
“Non-Porn”又分成两部分,留意其中“difficult”部分。作者将"beach","wrestling","swimming"这3个不同场景下的视频视为hardexample。作者认为这些场景中出现的裸体,或者多人场景很容易被误认为是色情场景。
图3Pornographydataset数据构成(1)
在挑选“Porn”这一类型的视频时,作者有意识的选择不同肤色种族的人,以便数据集更具有代表性。
图4Pornographydataset数据构成(2)
这个数据集可以免费下载,但是需要签一个协议并且邮件作者来获取真正的数据地址。并且作者回复邮件速度非常快lol。
GithubProject:nsfw_data_scrapper
数据集一共划分为5个不同的类别,每个类别的判别标准如下:
作者在项目开始就有强调:“Disclaimer:thedataisnoisy-donotusetotrainaproductionmodelunlessyouwantnegativemediacoverage!”
这里透露出几个信息:(1)数据没有经过人工标注。(2)每个类别的图片多半是通过关键字检索得到的,精度不高。
因为数据集质量问题,后面给出的所谓acc这些指标其实没有多大的参考价值。而且,从【图5】可以看出,porn这个类别的图片数量要远远大于其他类别,类别间样本不均衡问题也比较显著。
图5每个类别图片数量
涉黄图片识别方法
涉黄图片识别方法的发展经历了以下3个阶段:
图6涉黄图片识别方法的发展
我们可以同时对比图像识别领域的方法演进(【图7】修改自【7】):
图7图像识别领域的方法演进
最早从事涉黄图片识别的工作,就是判断图片中是否出现人的裸体,而人的裸体最显著的特征就是图片色调偏暖(应该忽略了肤色问题)【图8】【6】,而且人体肤色占据图片大部分。所以,最早是以颜色特征作为识别涉黄图片特征【5】。后来,发现光颜色这一特征不够稳定,在颜色的基础上增加纹理特征来识别图片中是否出现人的躯体。通过识别颜色和人体两个维度判断图片是否涉黄。同时期在图像识别领域,识别图像基本上也是依靠如颜色,纹理这样的全局特征来对图像进行特征提取,载构造分类器对图片分类。
图8Flickr所有图片统计颜色直方图(左),Porn图片统计颜色直方图(右)
2003年出现的BOVW(BagofVisualWord)【9】以及2004年出现SIFT【8】使得图像的handcrafted特征由全局特征向局部特征演进。通过图像局部特征构建更为抽象的全图BOVW或者VLAN特征,再结合SVM分类器,成为这个时期图像识别领域的标准方法。这个时期的涉黄图像识别也是这个思路,具体的pipeline如下【图9】:
图9涉黄图像识别pipeline
不同的工作在于不同的提特征的方法和分类器之间的组合。看哪种组合能够获得更好的结果。
2012年大放异彩的CNN方法也同样惠及这个领域。2012年以后,基本上所有涉及涉黄图像识别的工作都在使用CNN方法来实现。
1996-FindingNakedPeople【5】
将涉黄图片检测分成两个步骤实现【图10】:(1)利用颜色信息,将图像中表示人体肤色的像素分割出来;(2)对于(1)中分割出来的部分,利用纹理信息构建人体躯干。利用人体躯干的拓扑结构识别分割部分像素是否是人体。是,则图片是涉黄图片;否则,是正常图片。
图10
2006-Largescaleimage-basedadult-contentfiltering【10】
Google出品,一般来说必属精品。采用了标准的涉黄图片识别pipeline【图9】来实现。
FeatureExtractor部分:
总共提取了18个特征作为一张图片的特征。
Classifier部分:
使用标准LIBSVM库搭建分类器,实现porn/nonporn的二分类。
2008-Bag-of-Visual-WordsModelsforAdultImageClassificationandFiltering【11】
图11数据集类别和每个类别标注标准
DOG+randompatch+PCA来代替SIFT(sift用灰度图,丢失颜色信息,而作者认为颜色信息对鉴黄极度重要,不然干嘛把“nudeperson”作为标注指标)。构建BOVW特征。
SVM或者log-linearmodels实现1vs.rest的分类。
2015-AComparativeStudyofLocalFeatureExtractionAlgorithmsforWebPornographicImageRecognition
图12
图13
2015-Applyingdeeplearningtoclassifypornographicimagesandvideos【13】
使用CNN做图片鉴黄最早的paper之一。只做porn/nonporn的二分类。数据集使用的是开源数据集【1】。
具体实现上,将imagenet数据集预训练好的AlexNet和GoogleNet直接在自己的数据集上做finetune。测试的时候,将两个模型的输出结果做投票得到最终的分类结果【图14】。
图14AGNet结构
如【图14】,所谓ANet就是AlexNet,而GNet就是GoogleNet。这两个模型分别finetune。
2016-BootstappingDeepFeatureHierarchyForPornographicImageRecognition【14】
图15
图16
而且在训练的时候,增加了在线的hardnegativemining,增强模型的训练。
可以从【图17】看到,融合的中间层越多,识别的效果越好;
图17
2017-AdultImageandVideoRecognitionbyaDeepMulticontextNetworkandFine-to-CoarseStrategy【15】
图18SensitiveDataset示例
网络结果如【图19】,最底层是一般的分类网络结构;最上层是经典的物体检测网络Faster-RCNN,中间部分有点SSD的影子在。总之,就是结合local和global的信息,实现图片鉴黄。模型最终输出3个类别:
图19
所谓“fine-to-coarse”就体现在losslayer到最终输出的这部分。网络的每一个branch都是单独训练的,先训练globalcontext部分获得basemodel。然后再训练其他两个branch。训练local和cross-context这两个branch,只针对一部分类别(性器官,敏感部位)做detection的训练。
最终输出类似一个一层的maxout的网络【图20】,直接将3个branch的输出做了融合,完成“fine-to-coarse”操作:
图20
挑战
图片鉴黄最大的挑战还是在于数据集和数据集评价指标的统一问题。到目前为止,各个不同的方法比较来比较去,都是在不同的数据集上进行,几乎不具备可比性。而且,不同研究者之间的数据也不公开。所以,在这个方向想要找到或者产出特别好的paper挺不容易。
参考文献
4.Moreira,Det.al.,“Pornographyclassification:Thehiddencluesinvideospace-time”.(2016)
5.MargaretFleck,“FindingNakedPeople”.(1996)
6.RiesChristianXet.al.,“Asurveyonvisualadultimagerecognition”.(2012)
7.LiangZhenget.al.,“SIFTMeetsCNN-Adecadesurveyofinstanceretrieval”,(2017)
8.D.G.Loweet.al.,“Distinctiveimagefeaturesfromscale-invariantkeypoints”,(2004)
9.J.SivicandA.Zisserman,“Videogoogle:Atextretrievalapproachtoobjectmatchinginvideos”,(2003)
10.HenryA.Rowleyet.al.,“Largescaleimage-basedadult-contentfiltering”,(2006)
11.ThomasDeselaerset.al.,“Bag-of-Visual-WordsModelsforAdultImageClassificationandFiltering”,(2008)
12.ZhenGenget.al.,“AComparativeStudyofLocalFeatureExtractionAlgorithmsforWebPornographicImageRecognition”,(2015)
13.MohamedN.Moustafaet.al.,“Applyingdeeplearningtoclassifypornographicimagesandvideos”,(2015)
14.KaiLiet.al.,“BootstappingDeepFeatureHierarchyForPornographicImageRecognition”,(2016)
15.Ou,Xinyuet.al.,“AdultImageandVideoRecognitionbyaDeepMulticontextNetworkandFine-to-CoarseStrategy”,(2017)
16.YiHuanget.al.,“UsingaCNNEnsembleforDetectingPornographicandUpskirtImages”,(2016)