我们的案例是针对Twitch.tv格式的游戏玩家,电子竞技者和现场直播爱好者的流媒体网站。一些用户广播娱乐内容,而其他用户则观看。内容可能非常不同:游戏,现场音乐,互动,mukbang,ASMR,烹饪,播客等-原则上,除了播客的想象力之外,它不受任何限制。
以及由主持人监视的平台规则。
为什么要审核不安全的内容?有两个原因。首先是现行的俄罗斯法律,根据该法律,色情内容的分发是非法的。第二个原因是用户体验。该平台面向所有年龄段的人,我们负担不起主页上的成人内容。
当我们面对跟踪不安全内容的任务时,立即变得很明显,要区分安全内容和不安全内容并不是那么容易。首先要了解的重要一点是,色情和裸露不是完全相同的概念。
色情内容不一定与裸露内容有关:穿衣服是不安全的内容,随着时间的流逝,通常只能将其与“安全”的内容区分开。
NSFW不一定涉及裸露之处:相扑,摔跤,穿着乳胶的人-所有这些都是安全的内容,在开放式解决方案中通常无法正确制定。
基于这些考虑,我们开始研究如何解决此问题。在有趣的开源解决方案中,来自Yahoo的Open NSFW模型经过封闭数据培训,已经存在了几年(在TF上实现)。还有一个很酷的Alexander Kim nsfw数据刮板开放存储库,您可以从中从reddit,imgur和看似其他站点获得数十万张图像。这些图像分为五类:色情,无尽,色情,中性和绘画。根据这些数据,有很多模型,例如时间,两个
开放源代码解决方案都遇到了几个问题-一般来说,某些模型的质量低下,在上述复杂案例上的错误操作以及像李嘉图·米洛斯(Ricardo Milos)扭动女孩和模因这样的安全图像,以及有问题的改进,因为其中一个模型已经过时并在封闭数据上进行了训练,或数据非常嘈杂且分布不可预测。
我们得出的结论是,时间上下文对于一个好的模型很重要,即时间上下文,借助它,我们将能够捕获动力学中更复杂的情况。问题的陈述变得显而易见。
识别动作
在我们的情况下,这仍然是相同的二进制分类,但是我们提供了一系列帧作为输入,而不是一张图像。
他们如何解决这个问题?第十八年,qure.ai进行了出色的评论,自那时以来似乎在该领域没有任何根本性的进步,因此我推荐它。关于视频主题的更有趣的研究变成了理解和转播视频的更艰巨的任务。有图网格和自我监督的学习-在最后的《机器可以看到》的第二天甚至完全致力于此。
因此,对动作进行分类。神经网络模型的发展历程大致如下:首先,他们从头训练了三维卷积网络(C3D),然后他们开始尝试使用某种递归架构或注意力机制进行卷积。在某个时候,安德烈·卡帕蒂(Andrey Karpaty)提议以不同的方式合并来自不同帧的视图,甚至后来成为制作双头模型的标准,该模型将BGR / RGB中的一系列帧馈入一个输入,并将计数在它们上的密集光流馈入另一个。还有一些关于使用附加功能和特殊层(例如NetVLAD)的笑话。结果,我们研究了在UCF101基准测试中表现最佳的模型。这些视频分为101个集体诉讼。该模型原来是DeepMind的I3D架构,与我们合作得最好,所以我将向您详细介绍。
DeepMind I3D
作为基线,我们尝试训练C3D和CNN-LSTM-这两种模型都需要很长时间才能学习并逐渐收敛。然后我们开始使用I3D,生活变得更好。这是用于BGR和光流的两个二维卷积网络,但有一个特殊之处-与以前的模型不同,该模型在ImageNet及其自己的Deepmind Kinetics-700数据集中进行了预训练,其中有65万个剪辑和700个类。这样可以在几个小时内将模型快速收敛到高质量。
在生产中,我们只使用RGB头,因为它的速度快一倍,并且光通量并没有真正下降,在某些地方,由于我们主要是流式传输计算机屏幕和网络摄像头,因此甚至更糟。有时很静态。
我们将16帧输入模型,而不是64帧。之前,我们有一个方形的入口,但是考虑到平台的细节,我们将入口的宽高比更改为16:9。任务是二进制分类,其中零类不是色情,但单个是色情。在SGD的大力训练下,他的表现略胜于Adam。最小扩充-水平翻转和JPEG压缩。这里没什么特别的。
完成模型主题后-在I3D之后,仍然存在模型EVANet-搜索一系列帧的神经体系结构,SlowFast网络-具有两个帧速率不同的两个通道的网络以及Google AI的文章-时间周期一致性学习,但我们没有对其进行调查。
它教了什么?
正如我上面所写,数据非常紧张。没有人愿意发布它们,从法律和道德的角度来看,这很困难-从许可到参与内容的每个人的同意。数据集,其许可证和发布通常很有趣。如果有人想写一篇有关此的文章,我很乐意阅读。在重要的学术数据集中,只有巴西的NPDI,并且遗憾的是,它的数量小,数据分布不够多样化,由关键帧组成,并且获取过程也不是最简单的。我们还需要视频中的数据集!我必须自己组装它。
数据集包含视频,这意味着您需要从某个地方拍摄视频。有两种获取方式:抓取从色情网站和YouTube上手动收集视频。每种方法都有其优点和缺点。
报废可能会为我们提供更多的数据种类,并且说有条件的pornhub的所有视频的所有帧都不安全,而YouTube的所有视频的所有帧都安全,我们可以得到很便宜的标记。有缺点-所有这些都必须存储在某个地方,必须以某种方式从中收集数据集,最重要的是,色情影片的幼稚标记中存在噪音。这些都是直接的错误:简介,每个人穿着的场景,没有性别特征的特写镜头,无尽游戏的菜单-以及模型可以重新训练的元素:徽标,黑屏,编辑针迹。这种噪声只有百分之几,而对于TB级的视频来说,消除它是很昂贵的。我们稍后再讨论。
第二种方法是手工组装。它的优点是我们可以对数据的任何期望分布进行建模,数据更具可预测性,并且仅因为它们较少而就更容易标记它们。但是也有缺点。显然,使用这种方法,数据较少,此外,它们可能会受到收集器偏差的影响,因为它会对分布进行建模,并且可能会丢失某些内容。
我们采用了第二种方法。我们列出了可能在流媒体平台上最终出现的内容:各种游戏,动画,动漫,演奏乐器,反应,模因,流媒体精彩集锦-并尝试涵盖各种可能类型的不安全内容-从普通到to撞本着与翼手龙色情的精神。我们还提到了经常用于3D无尽游戏的计算机游戏-例如《守望先锋》。他们开始收集。因此,我可以强调两个见解。
恋物癖者是很好的数据收集者
色情网站上有很多针对每种口味的汇编,每个视频都可以包含数百个或两个完全不同的视频的摘录,这使您可以获得类似于拼版的数据集,同时对其进行标记非常便宜。
还有YouTubers
示例时间:YouTube上有一些精彩的流光集锦,有时它们涵盖单独的一年,持续数小时,并且包含不到一千次修改,即 场景。例子二:游戏/动漫/系列榜首。假设您需要向神经网络清楚地解释什么是动漫。同时,日本有大量的工作室,其风格每年都在发展。解决方案是从著名的youtuber下载具有某些动漫顶部的视频。或者,您需要涵盖流行游戏中的各种场景。去下载该游戏的视频,例如videogamedunkey。
数据迭代
我们对数据进行了多次迭代。最初,它是大约一百个视频,用天真的标记显示了大约70个小时,“色情网站上的所有帧都是色情内容,YouTube上的所有内容都是无罪的”,我们从中或多或少地均匀采样了数据集的帧序列。 结果,我们诚实地标记了数据,这些错误消失了。在抓取的情况下,出现了这样的想法:如果在手动选择视频的过程中(像黑屏一样)出现了这样的错误,那么在抓取数千个视频时,将更加难以追踪。 如前所述-对于几乎所有视频,我们都使用了OpenCV CVAT提供的工具。
以这种方式训练的模型效果很好,但是由于数据中的噪声,第一个模型在黑色皮革沙发(screen°leather͡°)上的各种徽标,黑色屏幕和衣着打扮的女孩上均出现了错误。即将到来的0.817的黑屏尤其令人困惑,但事实证明数据存在错误-在其中一个色情编辑中,作者意外地将视频渲染了比所需时间长十分钟的时间,结果,火车上出现了许多“危险”的黑屏。
关于CVAT的5美分
Computer Vision Annotation Tool. . , -. — , . XML. .
然后,在我们的工作过程中,我们收集了更多的视频,更新的游戏目录,并作为一个结果,现在我们有几百小时的视频在几十个不同的类别,我们知道,他们包括〜30000个独特的场景,再加上数据有星号哪些我们将在下面讨论。
太好了,我们有原始标记数据!我们如何从中获得良好的数据集?收集不同长度的视频,对于每个类别,收集不同时间和不同程度的视频-如何将它们结合在一起?我们可以从数据集中获取多少个样本?它的多样性在某种程度上从根本上受到限制(例如最大视频帧数),我们如何才能知道我们花了太多钱呢?
在开始工作时,我们并没有真正打扰这些问题,只是从一个单独的类的每个视频中抽取了这么多样本,以使数据集中的色情内容和非现场内容大致相等,并且样本数量是直观确定的(“好吧,几乎所有视频事情发生了根本不同,我们将提取10,000个样本”),然后根据经验使用训练后的模型的指标。
结果,我们解决了这些问题,最终得到了一个相当复杂的工具,用于从视频中组装数据集。
首先,我们想知道我们可以从视频编辑中挤出多少。顺理成章的是,我们将使用更多的剪辑来剪切剪切中的不同样本。
让我们寻找编辑胶水
可以仅使用相邻帧之间差异范数的峰值,但是我们专门使用开放网络来查找切口-TransNet。这给了我们两个结果:第一个是我们原则上了解了数据中有多少个场景,第二个是我们了解了哪些数据类别的多样性较低。完成了无尽,我的世界和其他东西。
现在我们用于切片的原子单位不是完整的视频,而是一个场景...这使我们能够收集最多样化的数据集,并按类别和类别进行平衡,并考虑到色情视频中的安全场景。将视频分组到类别文件夹中,并为每个班级从中平均采样场景。如果我们将新视频添加到数据集中,则将额外地剪切/删除不必要的样本到最小程度,因此不会从头开始重新剪切数据集。非常舒适。
我们在火车上收集了20,000个样本的数据集,在验证中收集了2000个样本,在测试中收集了2000个样本,对模型进行了训练,我们喜欢测试中的指标,并将其发送到生产中。
让我们来谈谈生产-每天我们检查成千上万个剪辑,因此即使是百分之一的误报也可能是垃圾邮件主持人,因此一段时间以来,我们在响应阈值稍低的模型上收集了各种误报,结果得到了很多真实数据。我们将其用于其他培训。
这是带有星号的数据。他们使我们能够专注于平台的各种内容并减轻主持人的负担。现在,在新游戏中大多数会出现误报-例如,一次,我们更有可能抓住“死亡搁浅”和“勇气”。
当前数据集包含30000/5000/3000个火车/ Val /测试样本。
测试中指标的演变,按类别细分以及与开放式解决方案的比较(可点击)
f1- . , precision , f1- .
f1- . , precision , f1- .
多亏了我们的检测器,主持人检查整个平台的时间减少了数倍。除了色情以外,我们还收录裸体,电视徽标和体育节目,但这是另外一段故事。
鳍。
该材料的视频版本可以在这里看到