機器之心報道,機器之心編輯部。linux
若是你想訓練一個內容審覈系統過濾不合適的信息,或用 GAN 作一些大膽的新想法,那麼數據集是必不可少的。例如圖像鑑黃,咱們須要使用卷積神經網絡訓練一個分類器,以區分正常圖像與限制級圖像。但限制級的圖像很難收集,也不多會開源。所以最近有開發者在 GitHub 上開源了一份 NSFW 圖像數據集,這是否是大家想要的?git
內容審覈在不少領域都有很是重要的做用,它不只須要經過分類器識別圖像或其它數據不適合展現,同時還能結合語義分割模型對這些限制級圖像進行處理(Mask 掉敏感部分)。這樣在不過多影響內容的狀況下去除掉不合適的信息。開發者 alexkimxyz 構建的這個項目大概收集了 20 多萬張敏感圖像,且經過 URL 的形式展現了 GitHub 中。github
項目地址:github.com/alexkimxyz/…bash
這 20 萬多張圖像大概分爲如下 5 個類別,它們能夠用 CNN 訓練不一樣的分類器。這裏咱們就保留 GitHub 中的原描述了:網絡
其中每個類別都是一個 Text 文本,文本中的每一行都對應一個 URL,因此讀取並下載都很是方便,本身寫也就幾行代碼。以下簡單展現了 sexy 類別下文本與圖像:app
此外值得注意的是,有少許圖像 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 下編輯文件,不然無需從新運行。ui
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 作一些新奇的模型,類別都是頗有區分度的特徵。
最後,各位請懷着敬畏之心嚴肅使用,且僅供研究使用(不要舉報)……