nsfw_data_scraper README

The project's README from github.com/alex000kim/nsfw_data_scraper. As one markdown file: README.md.

NSFW Data Scraper

Note: use with caution - the dataset is noisy

Description

This is a set of scripts that allows for an automatic collection of tens of thousands of images for the following (loosely defined) categories to be later used for training an image classifier:

Here is what each script (located under scripts directory) does:

Prerequisites

How to collect data

$ docker build . -t docker_nsfw_data_scraper
Sending build context to Docker daemon  426.3MB
Step 1/3 : FROM ubuntu:18.04
 ---> 775349758637
Step 2/3 : RUN apt update  && apt upgrade -y  && apt install wget rsync imagemagick default-jre -y
 ---> Using cache
 ---> b2129908e7e2
Step 3/3 : ENTRYPOINT ["/bin/bash"]
 ---> Using cache
 ---> d32c5ae5235b
Successfully built d32c5ae5235b
Successfully tagged docker_nsfw_data_scraper:latest
$ # Next command might run for several hours. It is recommended to leave it overnight
$ docker run -v $(pwd):/root/nsfw_data_scraper docker_nsfw_data_scraper scripts/runall.sh
Getting images for class: neutral
...
...
$ ls data
test  train
$ ls data/train/
drawings  hentai  neutral  porn  sexy
$ ls data/test/
drawings  hentai  neutral  porn  sexy

How to train a CNN model

Results

I was able to train a CNN classifier to 91% accuracy with the following confusion matrix:

alt text

As expected, drawings and hentai are confused with each other more frequently than with other classes.

Same with porn and sexy categories.

nsfw_data_scraper (alex000kim/nsfw_data_scraper)

Searching Database…

Что это такое?Это набор скриптов командной оболочки, которые собирают и объединяют десятки тысяч изображений из 5 категорий (порно, хентай, секси, нейтральные, рисунки) для создания размеченного датасета, на котором обучается классификатор NSFW-изображений.
Это готовая обученная модель или просто скрипты?Это не приложение и не готовая модель, а набор пронумерованных скриптов (от 1_get_urls.sh до 6_create_test.sh), которые вы запускаете по порядку, чтобы самостоятельно собрать, скачать и разложить по папкам исходный набор изображений.
Как собрать датасет?Запустите скрипты из папки scripts/ по порядку: первый получает URL изображений для каждой категории с помощью встроенного приложения Ripme, второй скачивает сами изображения, а последующие делят всё на папки train и test.
Нужно ли сначала установить Docker или Python?Для запуска конвейера сбора данных нужен Docker, а если вы хотите обучить сверточную нейросеть (CNN) на полученном датасете, понадобится fastai (устанавливается через conda).
Получившийся датасет чистый и готов к использованию?Нет, автор прямо предупреждает, что данные зашумлены, а в его собственных тестах категории рисунки/хентай и порно/секси часто путались друг с другом.
Какие есть 5 категорий изображений?Порно, хентай, секси, нейтральные и рисунки. Они охватывают откровенный контент, намекающий, но не откровенный, и две безопасные для работы категории, которые используются для сравнения при обучении.
Откуда берутся безопасные для работы изображения для сравнения?Необязательные скрипты загружают безопасные для работы (SFW) аниме-рисунки из базы Danbooru2018 и нейтральные SFW-фото из датасета Caltech256.
Что такое Ripme и зачем он нужен проекту?Ripme — это стороннее приложение для загрузки, которое скрипты вызывают, чтобы непосредственно скачивать изображения с исходных URL, большинство которых ведут на различные сабреддиты.
Нужно ли мне самому заново собирать URL?Нет. Автор уже запустил скрипт сбора URL и сохранил его результат в папке rawdata, так что повторно запускать его нужно, только если вы меняете исходные списки URL.
Creator
alex000kim
Size
8.3 MB
Stars
12.6K
Updated
CommitApr 17
Age
7y
Commits · 90 Days