Python识别色情图片这波神操作,背后原理竟是这样!

简介: Python

移动互联网时代

每天在社交平台、长短视频、直播平台、新闻资讯等内容平台产生了数以亿计的图片和视频,这些数据的内容审核面临严峻的挑战。

如果靠人工进行清查、效率不高且成本昂贵;此外,人工审核在一定程度上对人们的心理、生理会造成有一定的不良影响。并且,网络监管也越来越严格,所以该如何解决这些问题呢?

随着技术的发展,融合文本、图片、视频内容的多模态软色情识别模型也应运而生。

如何检测?思路在此!

(皮肤区域检测法)

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

遍历图片每一个像素,进行颜色分区、并记录是否为肤色;皮肤区域小于 3 个,不是色情;如果皮肤区域与整个图像的比值小于 15%,那么不是色情图片;如果最大皮肤区域小于总皮肤面积的 45%,不是色情图片;皮肤区域数量超过 60个,不是色情图片;其它情况为色情图片。这些规则可以尝试更改和调整,直到程序效果满意为止。

所需知识

Python 3 模块的安装

Python 3 基础知识

肤色像素检测与皮肤区域划分算法

Pillow 模块的使用

argparse 模块的使用

image.png

关键代码

分析区域

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

其它情况为色情图片

self.message = "色情图片"

self.result = True

return self.result

初识Python,想学从来不是说说而已。

相关文章
|
6天前
|
Python
【Python操作基础】——帮助文档
【Python操作基础】——帮助文档
|
6天前
|
Python
【Python操作基础】——字典,迭代器和生成器
【Python操作基础】——字典,迭代器和生成器
|
6天前
|
Python
【Python操作基础】——集合
【Python操作基础】——集合
|
6天前
|
Python
【Python操作基础】——字符串
【Python操作基础】——字符串
|
1天前
|
数据采集 数据安全/隐私保护 Python
2024年最新【Python】如何用Python来操作PDF文件,收藏(2),2024年最新阿里p7Python面试题
2024年最新【Python】如何用Python来操作PDF文件,收藏(2),2024年最新阿里p7Python面试题
2024年最新【Python】如何用Python来操作PDF文件,收藏(2),2024年最新阿里p7Python面试题
|
1天前
|
XML 数据格式 Python
python挑出训练集里图片对应的xml文件,方便统计标签框的类别与数目_python 统计voc2007xml中某一类别框个数(1)
python挑出训练集里图片对应的xml文件,方便统计标签框的类别与数目_python 统计voc2007xml中某一类别框个数(1)
|
3天前
|
关系型数据库 Java 分布式数据库
实时计算 Flink版操作报错合集之在使用 Python UDF 时遇到 requests 包的导入问题,提示 OpenSSL 版本不兼容如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
21 5
|
5天前
|
监控 调度 开发者
Python 中的异步编程:理解 asyncio 库的基本原理与应用
本文将深入探讨 Python 中的异步编程技术,重点介绍 asyncio 库的基本原理与应用。通过解释事件循环、协程和 Future 对象的概念,读者将能够理解异步编程的工作原理,并学会如何利用 asyncio 库提高程序的性能和效率。本文还将通过实际示例演示如何使用 asyncio 库来处理 I/O 密集型任务和 CPU 密集型任务,以及如何避免常见的陷阱和错误。
|
5天前
|
调度 UED Python
Python 中的异步编程:理解 asyncio 库的基本原理与应用
本文探讨了 Python 中的异步编程,重点介绍了 asyncio 库的基本原理与应用。通过分析事件循环、协程以及异步/await 关键字的作用机制,读者将能够深入理解异步编程的工作方式,并学会如何利用 asyncio 库构建高效的异步应用程序。同时,本文还介绍了一些实际案例,帮助读者更好地掌握 asyncio 库的实际应用。
|
6天前
|
存储 JSON 安全
Python中的文件操作与文件IO操作
【5月更文挑战第14天】在Python中,文件操作是常见任务,包括读取、写入和处理文件内容。`open()`函数是核心,接受文件路径和模式(如&#39;r&#39;、&#39;w&#39;、&#39;a&#39;、&#39;b&#39;和&#39;+&#39;)参数。本文详细讨论了文件操作基础,如读写模式,以及文件IO操作,如读取、写入和移动指针。异常处理是关键,使用`try-except`捕获`FileNotFoundError`和`PermissionError`等异常。进阶技巧涉及`with`语句、`readline()`、`os`和`shutil`模块。数据序列化与反序列化方面,介绍了
18 0