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

背景

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

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

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

思路

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

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

遍历图片每一个像素,进行颜色分区、并记录是否为肤色;皮肤区域小于 3 个,不是色情;如果皮肤区域与整个图像的比值小于 15%,那么不是色情图片;如果最大皮肤区域小于总皮肤面积的 45%,不是色情图片;皮肤区域数量超过 60个,不是色情图片;其它情况为色情图片

关键代码

# 分析区域

def _analyse_regions(self):

# 如果皮肤区域小于 3 个,不是色情

if len(self.skin_regions) < 3:

self.message = "Less than 3 skin regions ({_skin_regions_size})".format(

_skin_regions_size=len(self.skin_regions))

self.result = False

return self.result

# 为皮肤区域排序

self.skin_regions = sorted(self.skin_regions, key=lambda s: len(s),

reverse=True)

# 计算皮肤总像素数

total_skin = float(sum([len(skin_region) for skin_region in self.skin_regions]))

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

if total_skin / self.total_pixels * 100 < 15:

self.message = "Total skin percentage lower than 15 ({:.2f})".format(total_skin / self.total_pixels * 100)

self.result = False

return self.result

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

if len(self.skin_regions[0]) / total_skin * 100 < 45:

self.message = "The biggest region contains less than 45 ({:.2f})".format(len(self.skin_regions[0]) / total_skin * 100)

self.result = False

return self.result

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

if len(self.skin_regions) > 60:

self.message = "More than 60 skin regions ({})".format(len(self.skin_regions))

self.result = False

return self.result

# 其它情况为色

运行效果

好了,今天就分享到这边,大家有什么想法,欢迎给我留言讨论。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值