消息24

  • 娛樂
  • 體育
  • 職場
  • 愛情
  • 美食
  • 科技
  • 財經
  • 時尚
  • 健康
  • 科學
  • 汽車
  • 歷史
  • 文化
  • 電玩遊戲
  • 動漫
  • 社會
  • 旅遊
  • 教育
  • 育兒
  • 國際
  • 家居
  • 運勢占卜
  • 軍事
  • 房地產
  • 時事政經
  • 搞笑

一網打盡「小黃圖」!手把手教你造一隻AI鑒黃神器(內附代碼及數據集)

2019-04-13/ 由大數據文摘發表。

...

大數據文摘出品

作者:蔣寶尚

鑒黃師是一個因為「掃黃打非」的需要而設立的特殊崗位。

在互聯網色情內容暴增的情況下其在凈化網絡的任務中扮演着非常重要的角色。

然而長期面對大量色情內容的刺激使這類工作者往往要承受心理、生理的雙重壓力。

機器學習和深度學習發展到了今天,造出的AI已經可以在下棋方面狂虐人類。設計個識別不雅圖片的算法也不難實現。

GitHub 上開源了一款鑑定不雅內容的js庫NSFW JS,你可以根據他的教程,搭建屬於你自己的鑒黃客戶端,甚至都不需要讓文件離開用戶的電腦。

NSFW:不適合在工作場合出現的內容(英語:Not Safe/Suitable For Work,縮寫:NSFW)是一個網絡用語,多指裸露、暴力、色情或冒犯等不適宜公眾場合的內容。在給出含有上述內容的超連結旁標註 NSFW,用於警告觀看者。

...

貢獻者的背景非常複雜,例如Gant Laborde是Infinite Red的首席技術戰略家,Jamon Holmgren是Infinite Red的聯合創始人。Frank von Hoven III是Infinite Red的軟件工程師,Sean Nam和Gilbert Emerson則都是計算機專業的學生。

懶得動手的小夥伴,作者也給出了網頁版的AI,只需要把圖片上傳到網頁,只需幾秒就能出來識別結果。

先給出github項目地址和網頁地址:

網頁地址:

項目地址:

打開網頁是這樣的☟

...

輸入圖片後的表現是這樣的☟

...

嗯,算法還算準確,兩個人物露了這麼多的肉,還能準確識別這不屬於不雅內容。

注意這五個標籤的意思是:繪畫(Drawing):無害的藝術,或藝術繪畫。變態(Hentai):色情藝術,不適合大多數工作環境下觀看。中立(Neutral):一般,無害的內容。色情(Porn):不雅的內容和行為,通常涉及生殖器。性感(Sexy):不合時宜的挑釁內容。

那我們再來一張,升級一下難度☟

...

不錯不錯,竟然能識別出來裸體的思考者不屬於不雅內容,可以說厲害極了。

那....再來一張☟

...

色情藝術和繪畫藝術幾乎五五開,這讓人有點摸不着頭腦了!

數據

準確率如此優秀的模型,怎麼可能少了優質的數據做支撐。

根據項目github的介紹,這個算法的訓練來自一位名叫Alexander Kim的數據科學家貢獻的數據集。

數據集地址:

數據集一共將內容分為5類,分別是:hentai、sexy、neutral、drawings、porn,代表的含義和上文介紹的一樣。

...

除此之外,還有每個腳本的作用也做了解釋,使用者可以做到心中有數!

...

這些數據集可以用來訓練圖像分類器,使用CNN做出來的分類器,分辨上述的5種圖像準確度可以達到91%。

...

數據集中,一共有227995張圖片。其中,hentai類別中有45228張;sexy類別19554張;neutral有20960張、drawings有25732張;porn類別最多,有116521張。而這些圖片,都以txt格式的形式存儲圖片的網頁連結,以drawings類別為例:

...

注意:注意有少數圖片的網址已經失效

另外,這個數據集的github項目,也對運行環境和以及運行方式做了介紹,需要的小夥伴可以去github地址查看:

如何使用

...

根據網站給出的博客文章,只有三個步驟:1.獲取代碼;2.在客戶端加載模型;3.對圖像進行分類。

博客主要展示的是node風格的用法,首先引入NSFW JS,當然,需要事先獲取ensorflowJS。

...

// Load files from the server to the client!
const model = await nsfwjs.load('/model/')

// or just use require('nsfwjs')

然後在客戶端加載模型,這個「模型」是用來評價函數的。模型的文件可以下載,而且這些文件是 4MB 大小的分片,便於在客戶端進行緩存。在示例中,作者將它們放在 public/model/ 文件夾中。

...

加載模型的路徑要注意,如果你的目錄也和作者一樣,可以☟

現在,模型已經在客戶端的內存當中了,接下來做的是對頁面上的圖像元素進行分類。

// Gimme that image
const img = document.getElementById('questionable_img')

// Classify the image
const predictions = await model.classify(img)
// Share results
console.log('Predictions: ', predictions)

預測在默認情況下將返回 5 個分類結果,按照概率的大小進行排序!例如:

...

所有概率的加起來等於1 。在使用的過程中,你可以標記關注概率超過 0.6分類,或者僅關注概率值最高的那個。

另外,模型可以會出現一定概率的誤報,原因可能是標記的數據存在偏差,隨着對數據的校正,誤報會逐漸減少,當然,這是一個漸進的過程。但是對於不雅內容,出現識別誤差要比漏報好很多。

因為是開源的,模型一直在改進,你也可以加入算法改進的隊列當中去喲~

最後,作者建議在做一些項目的過程中要打開你的想像力,正如下面的幻燈片說說的那樣☟

"Machine Learning does things a human can do ;trained with a lot of time and a lot of examples."

...

相關報道:

實習/全職編輯記者招聘ing

加入我們,親身體驗一家專業科技媒體采寫的每個細節,在最有前景的行業,和一群遍佈全球最優秀的人一起成長。坐標北京·清華東門,在大數據文摘主頁對話頁回復「招聘」了解詳情。簡歷請直接發送至[email protected]

點「在看」的人都變好看了哦

© 2019 消息24。 All Rights Reserved | Design by W3layouts