当前位置:   article > 正文

内容审核:用python实现内容鉴黄_python 鉴黄

python 鉴黄

​背景

随着网络监管越来越严格,UGC网站都需要针对用户生产的内容,进行审核。

目前大家一般是机器和人工审核的双重过滤。针对大型的UGC网站,如果全部人工审核是不现实的,需要花费大量的人工成本,所以机器审核尤其重要。

废话不多说,给大家介绍下怎么利用python进行鉴黄。

思路

下面给大家说明下图片审核的思路。

视频审核与图片审核是通用的。视频内容实则由音频内容、视频画面内容两个对象组成,视频画面内容的机器审核,业界目前常采用截取画面帧上传识别,最终复用的是图片识别通道对场景、人物、物品进行判断是否违规。

  1. 遍历图片每一个像素,进行颜色分区、并记录是否为肤色;

  2. 皮肤区域小于 3 个,不是色情;

  3. 如果皮肤区域与整个图像的比值小于 15%,那么不是色情图片;

  4. 如果最大皮肤区域小于总皮肤面积的 45%,不是色情图片;

  5. 皮肤区域数量超过 60个,不是色情图片;

  6. 其它情况为色情图片。

关键代码

  1. # 分析区域
  2. def _analyse_regions(self):
  3. # 如果皮肤区域小于 3 个,不是色情
  4. if len(self.skin_regions) < 3:
  5. self.message = "Less than 3 skin regions ({_skin_regions_size})".format(
  6. _skin_regions_size=len(self.skin_regions))
  7. self.result = False
  8. return self.result
  9. # 为皮肤区域排序
  10. self.skin_regions = sorted(self.skin_regions, key=lambda s: len(s),
  11. reverse=True)
  12. # 计算皮肤总像素数
  13. total_skin = float(sum([len(skin_region) for skin_region in self.skin_regions]))
  14. # 如果皮肤区域与整个图像的比值小于 15%,那么不是色情图片
  15. if total_skin / self.total_pixels * 100 < 15:
  16. self.message = "Total skin percentage lower than 15 ({:.2f})".format(total_skin / self.total_pixels * 100)
  17. self.result = False
  18. return self.result
  19. # 如果最大皮肤区域小于总皮肤面积的 45%,不是色情图片
  20. if len(self.skin_regions[0]) / total_skin * 100 < 45:
  21. self.message = "The biggest region contains less than 45 ({:.2f})".format(len(self.skin_regions[0]) / total_skin * 100)
  22. self.result = False
  23. return self.result
  24. # 皮肤区域数量超过 60个,不是色情图片
  25. if len(self.skin_regions) > 60:
  26. self.message = "More than 60 skin regions ({})".format(len(self.skin_regions))
  27. self.result = False
  28. return self.result
  29. # 其它情况为色情图片
  30. self.message = "色情图片"
  31. self.result = True
  32. return self.result

运行效果

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/1014818
推荐阅读
相关标签
  

闽ICP备14008679号