机器之心报道,机器之心编辑部。

如果你想训练一个内容审核系统过滤不合适的信息,或用 GAN 做一些大胆的新想法,那么数据集是必不可少的。例如图像鉴黄,我们需要使用卷积神经网络训练一个分类器,以区分正常图像与限制级图像。但限制级的图像很难收集,也很少会开源。因此最近有开发者在 GitHub 上开源了一份 NSFW 图像数据集,这是不是你们想要的?

内容审核在很多领域都有非常重要的作用,它不仅需要通过分类器识别图像或其它数据不适合展示,同时还能结合语义分割模型对这些限制级图像进行处理(Mask 掉敏感部分)。这样在不过多影响内容的情况下去除掉不合适的信息。开发者 alexkimxyz 构建的这个项目大概收集了 20 多万张敏感图像,且通过 URL 的形式展示了 GitHub 中。

项目地址:github.com/alexkimxyz/…

这 20 万多张图像大概分为以下 5 个类别,它们可以用 CNN 训练不同的分类器。这里我们就保留 GitHub 中的原描述了:

其中每一个类别都是一个 Text 文本,文本中的每一行都对应一个 URL,所以读取并下载都非常方便,自己写也就几行代码。如下简单展示了 sexy 类别下文本与图像:

此外值得注意的是,有少量图像 URL 是失效的,因此在处理的过程中需要把这些情况考虑进去。一般如果 URL 是失效的,它会返回一张 161×81 的声明图像。

当然,作者同样提供了获取 URL 和下载图像的脚本,我们只需要运行就行了。目前,这些脚本仅在 Ubuntu 16.04 Linux 发行版本中进行了测试。

以下是重要脚本(位于 scripts 目录下)及它们的作用:

  • 1_get_urls.sh:遍历 scripts / source_urls 下的文本文件,下载上述 5 个类别中每个类别的图像 URL。Ripme 应用程序执行所有关键部分。源 URL 主要是链接到各种 subreddits,但可以是 Ripme 支持的任何网站。注意:作者已经运行了此脚本,其输出位于 raw_data 目录中。除非在 scripts / source_urls 下编辑文件,否则无需重新运行。

  • 2_download_from_urls.sh:下载 raw_data 目录中的文本文件中找到的 URL 的实际图像。

  • 5_create_train.sh:创建 data/train 目录并从 raw_data 将所有* .jpg 和* .jpeg 文件复制到其中。并删除损坏的图像。

  • 6_create_test.sh:创建 data/test 目录,并从 data / trainto 为每个类随机移动 N = 2000 个文件(如果需要不同的训练/测试分割,则在脚本内更改此数字)到 data / test。或者,可以多次运行它,每次它将从 data/train 到 data/test 将每个类别移动 N 个图像。

注意运行 get_urls.sh 后,生成的 URL 文本文件会覆盖 raw_data 下已有的文本文件。所以在复制 GitHub 项目后,我们也可以直接运行 2_download_from_urls.sh 从已有 raw_data 文件下载图像。

环境配置

  • Python3 环境:conda env create -f environment.yml

  • Java 运行时环境(Ubuntu linux):sudo apt-get install default-jre

  • Linux 命令行工具:wget, convert (imagemagick 工具套件), rsync, shuf

怎么运行

将工作目录转到 scripts,并按文件名中的数字指示的顺序执行每个脚本,例如:

$ bash 1_get_urls.sh # has already been run
$ find ../raw_data -name "urls_*.txt" -exec sh -c "echo Number of urls in {}: ; cat {} | wc -l" \;
Number of urls in ../raw_data/drawings/urls_drawings.txt:25732
Number of urls in ../raw_data/hentai/urls_hentai.txt:45228
Number of urls in ../raw_data/neutral/urls_neutral.txt:20960
Number of urls in ../raw_data/sexy/urls_sexy.txt:19554
Number of urls in ../raw_data/porn/urls_porn.txt:116521
$ bash 2_download_from_urls.sh
$ bash 3_optional_download_drawings.sh # optional
$ bash 4_optional_download_neutral.sh # optional
$ bash 5_create_train.sh
$ bash 6_create_test.sh
$ cd ../data
$ ls train
drawings hentai neutral porn sexy
$ ls test
drawings hentai neutral porn sexy复制代码

如上所示为脚本的执行方法,五类一共 227995 张敏感图像。这个脚本同样会把它们分割为训练集与测试集,因此直接利用它们实现 5 类别的分类任务会很简单。当然如果我们需要用于其它的任务,就没有必要直接分割了。

使用简单的卷积神经网络直接实现分类任务可以达到 91% 的准确率,这已经非常高了,因为敏感数据手动分为 5 类本来就有一些模糊性存在。以下展示了在测试集上,5 分类任务的混淆矩阵:

其中对角线表示正确预测的样本数,其它为误分类样本数。这个分类任务至少说明了 5 类别是有区分度的,不论我们用于正常内容与敏感内容的二分类,还是使用 GAN 做一些新奇的模型,类别都是很有区分度的特征。

最后,各位请怀着敬畏之心严肃使用,且仅供研究使用(不要举报)……

一个22万张NSFW图片的鉴黄数据集?我有个大胆的想法……相关推荐

  1. c语言 将url图片存到本地_一个22万张NSFW图片的鉴黄数据集?我有个大胆的想法……...

    如果你想训练一个内容审核系统过滤不合适的信息,或用 GAN 做一些大胆的新想法,那么数据集是必不可少的.例如图像鉴黄,我们需要使用卷积神经网络训练一个分类器,以区分正常图像与限制级图像.但限制级的图像 ...

  2. 厉害了!一本正经地为单身狗推荐这个158万张图像的鉴黄数据集

    本文转自"机器之心"(almosthuman2014) 如果你想训练一个内容审核系统过滤不合适的信息,或用 GAN 实现一些大胆的想法,那么数据集是必不可少的.但限制级图像很难收集 ...

  3. 158万张图像的鉴黄数据集

    机器之心报道 如果你想训练一个内容审核系统过滤不合适的信息,或用 GAN 实现一些大胆的想法,那么数据集是必不可少的.但限制级图像很难收集,也很少会开源.在这个项目中,作者构建了一个大型高质量图像鉴黄 ...

  4. iOS开发-图片离线鉴黄 基于TensorFlow nsfw oc版

    iOS开发-图片离线鉴黄 基于TensorFlow nsfw oc版 前言-基于TensorFlow鉴黄 效果 首先要引入Firebase 鉴黄类的封装 OC版本的鉴黄demo Swift版本的鉴黄 ...

  5. 重新标注128万张ImageNet图片:多标签,全面提升模型性能

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 来自:机器之心 自发布以来,ImageNet 数据集逐渐成为机器学习社区最流行的图像分 ...

  6. 重新标注128万张ImageNet图片:多标签,提升模型性能

    2021-01-28 14:47:13 机器之心报道 作者:杜伟.魔王 自发布以来,ImageNet 数据集逐渐成为机器学习社区最流行的图像分类基准,但 ImageNet 自身存在着标签噪声,以及单标 ...

  7. 图片实测:智能鉴黄,哪家强?

    当下,UGC内容量的爆发超出所有人的想象.据粗略统计,每天上传到YouTube的视频可以连续播放98年,Facebook每天发布的照片量堆起有80个埃菲尔铁塔那么高,有200万篇文章在网上发布,相当于 ...

  8. 10万人的1000万张图像,微软悄然删除最大公开人脸数据集

    作者 | 神经小姐姐 转载自HyperAI超神经(ID:HyperAI) 前几日,微软静悄悄地删除了一个公开的名人图片数据集.这个本为世界上最大的公开人脸识别数据集,现在已经不能通过微软的渠道访问. ...

  9. 图像鉴黄的数据集及相关算法汇总

    前方高能预警,非战斗人士请火速撤离-- 数据集1:https://github.com/EBazarov/nsfw_data_source_urls/tree/master/raw_data 在 ra ...

最新文章

  1. 基于Sharding Sphere实现数据“一键脱敏”
  2. 把python语言翻译出来_Python语言实现翻译小工具(Python打包成exe文件)
  3. RNA-seq【分析记录】
  4. 通过工具SecureCRTPortable将项目部署到服务器上
  5. 不聋不哑,不做当家之解
  6. arduino光敏+LED+数码管+蜂鸣器综合实验
  7. FireFox不能直接调用event对象,FireFox需要通过函数参数传递事件对象
  8. arm linux 蜂鸣器qt,Qt 程序中使用蜂鸣器 ioctl()
  9. 螺旋进刀非法平面选择_进刀方法、刀片类型、术语...螺纹加工重点知识你都知道吗?...
  10. 2021年 RSA 大会:产品发布概览(第1天)
  11. vue项目部署iis后 乱码_vue项目的自动化部署
  12. 浅析C++游戏开发工程师的工作职责以及任职资格
  13. 具有system权限的进程无法访问sdcard
  14. swagger 参数
  15. android恢复微信好友,安卓微信删除好友怎么找回 找回好友详细方法
  16. 基于java五子棋游戏设计与实现
  17. 天勤数据结构——绪论
  18. 十大气势背景音乐(适合战队,广告招商会场用)
  19. c语言系统垃圾清理软件,c语言中加入“一键清理系统垃圾”的代码怎么实现?...
  20. 鲁东大学linux试题,大学体育试题库

热门文章

  1. 正则表达式匹配浮点数
  2. quartus ii 的安装和破解注意事项
  3. 操作系统过程考核读书报告:浅谈计算机操作系统
  4. 使用Visio2003绘制E-R图
  5. 2021 RoboCom 世界机器人开发者大赛-本科组(初赛)java题解
  6. RK3399驱动开发 | 21 -Marvell交换机芯片88E6390X调试(基于linux主线5.4.32内核)
  7. 牛人总结!22条机房电源常识
  8. python命令数字雨_用Python实现黑客帝国代码雨效果(3种方式)
  9. FFmpeg常用推流命令
  10. php文件上传学习记录