前言

公司的事务需求大量的图片内容安全审阅,现在运用的是第三方服务可是老遇到漏判、误判、规范和事务不匹配的情况,因而常常需求和第三方:

  • 反应问题、找到他们的taskid、期望的作用
  • 描绘详细需求,给出样本

有时分样本不够还要找半天,有几回第三方还让供给几千张练习数据

  • 进行掰扯

不觉得有问题、给你一个暂时且费事的处理方案、想要他们更好的支撑

  • 想要知道怎样处理的,了解rootcase结合事务防止问题再次发生,可是对方不愿解说
  • 承认是否验证

许多时分没有验证,担心又出现类似问题还要找数据进行验证

  • 盯梢问题处理发展

或许很慢,又不想影响线上事务,需求讨价还价等

很费时刻觉得不值得,感觉再给第三方打工,不只触及技术,作用和规范还需求产品、运营、社区的参加,有些东西的推进还要领导出马。因而想尝试自己(现在CTO以为成本较低不值得花时刻投入,因而仅作为PIP,只运用闲暇时刻)去找开源完成。

图片安全检测触及色情、性感、涉政、涉暴、违禁、价值观等等,不用考虑国情和文明的就是色情、性感,因而主攻这个方向,业界称为nsfw(notsafeforwork)模型。

需求考虑

  • 广泛运用——moststarts、mostforks
  • 是否活泼——讨论的人多,issuses有人答复
  • 编程言语在该领域广泛运用

python在机器学习被科学家们广泛运用

  • 运用的结构/根底模型比较盛行,便利后边做扩展、定制化等
  • 模型本身支撑微调且便利
  • 准确率高
  • 适用范围

短期方针

  • 能快速运用,并支撑微调

长时刻方针

  • 按照事务需求练习自己的模型

模型挑选

在github中搜索下,nsfw+language:Python,运用Moststars排序:

nsfw模型的探索(一)模型的选择

运用Mostforks排序:

nsfw模型的探索(一)模型的选择

根本能够确定前面两个:yahoo/open_nsfw、GantMan/nsfw_model,下面看看是否能满意我们的需求:

模型称号 广泛运用 活泼 运用结构/根底模型 是否支撑微调 准确率 适用范围
yahoo/open_nsfw 5.7starts、1.1kforks 在2019-10-18被存档了。 updatedon2018-11-21; issues:63open(最近一个提交的时分为2019-09-14),34Closed(最近一个为2019-06-23); Caffe结构(CNN、ResNet) 支撑 没给出详细的 参考 focusesonlyononetypeofNSFWcontent:pornographicimages.TheidentificationofNSFWsketches,cartoons,text,imagesofgraphicviolence,orothertypesofunsuitablecontentisnotaddressedwiththismodel.
GantMan/nsfw_model 1.2starts、228forks 在2019-04-04发布1.0。 updatedon2020-05-16; issues107; open35(最近一个由我在6月初提交); closed72(最近一个在2023-02-26) tensortflow结构(Inceptionv3、mobilenetv2) 支撑 93%(Inceptionv3) 91%(mobilenetv2) neutral、porn、sexy

Caffe是一种深度学习结构,用于练习和部署各种类型的神经网络模型,包括:

  • 卷积神经网络(CNN),是一种深度学习的前馈神经网络,广泛应用于机估计视觉领域,运用了卷积层和池化层等特殊的结构,能够自动从数据中学习到不同等级的特征表明,并在分类、检测等使命中具有超卓的体现。
  • 残差网络(ResNet),是一种深度卷神经网络,通过将输入信息直接添加到后续层的输出中,完成了直接跨层连接的作用,防止了深度网络练习过程中梯度消失和梯度爆炸的问题,从而完成了更深的网络结构
  • 循环神经网络(RNN)等。

yahoo/open_nsfw

运用了ResNet论文中描绘的规划扩充,以防止过拟合。评价了各个体系结构,以在运行时刻与准确性之间进行平衡:

  • MS_CTC:在AlexNet的根底上进步了速度和准确性,保持了卷积层和全连接层的组合。
  • Sequeezenet:节省了参数的数量,可是精度和AlexNet一样好,仅需求6MB内存。
  • GoogLeNet:引入了初始模块并有20个卷积层阶段,还在中间层中运用悬挂损失函数来处理深度网络的梯度递减问题。
  • ResNet-50:ResNets运用快捷连接来处理梯度递减的问题。

运用

  • 输入图片,输出0-1分。小于0.2大概率是安全的,大于0.8大概率是不安全的。中等分数或许被划分为不同程度的NSFW等级。
  • 不同应用程序对NSFW的界说以及容忍程度不一样,假如运用这个模型应该依据应用程序的需求创建一个评价集,然后拟合ROC曲线来挑选一个合适的阈值。

ROC曲线是一种用于评价分类模型功能的常用工具。纵轴为真实例率,横轴为假正例率,当分类器能完美分区正例和负例时会通过左上角(0,1)的方位,因而ROC曲线越靠近左上角,分类器的功能就越好。

  • 依据应用程序对NSFW的界说对模型进行微调,从而改进成果,不确保成果的准确性。
  • 在边际情况下运用人工调理与机器学习处理方案相结合将有助于进步功能。

模型运用了pynetbuilder工具生成的,有关如何生成和练习模型的更多细节,能够参考这。

dockerquickstart

GantMan/nsfw_model

挑选

模型 优点 缺陷
yahoo/open_nsfw 更广泛的运用(早三年发布) 支撑微调 来源于大厂资料多点 Caffe首要运用C++编写,愈加专心于CNN和计算机视觉领域 现已不活泼了(感觉像是yahoo的一个demo) 没有给出详细的准确率 只适用黄图的判定 Caffe较为老牌社区生态较小
GantMan/nfsw_model 现在还在活泼(晚三年发布) 支撑微调 两个模型准确率都在90%以上 支撑neutral、porn、sexy的 Tensortflow首要运用Py和C++编写,社区巨大、有丰富的教程/示例/工具类,广泛适用于学术界和工业界 现在无法运用inceptionv3模型,现已提了issue

个人比较倾向于GantMan/nfsw_model,首要原因有:

  • 活泼
  • 准确率高,支撑neutral、porn、sexy的判定,能直接运用
  • 运用的结构盛行,便利后边参考,今后练习愈加契合自己的模型