演算法警告!該圖片涉嫌違規不予顯示

AI科技大本營發表於2019-02-24

640?wx_fmt=png

 

作者 | 一一

出品 | AI科技大本營(ID:rgznai100)

60s測試:你是否適合轉型人工智慧?

https://edu.csdn.net/topic/ai30?utm_source=cxrs_bw

 

 

一般看到頭圖,“老司機”立馬心領神會,就會猜到這篇文章的主題大致與什麼相關。

 

沒錯,今天的內容就跟“不可描述”的圖片有關,但請別激動,也許沒有福利:)

 

要介紹的專案名稱叫 NSFW.JS,英文全稱是 Not Safe/Suitable For Work,也就是說不適合工作場所使用。

 

這其實是一個基於 TensorFlow.js 的色情圖片識別專案,說白了就是“審查”色情圖片,它的好處是在本地即可識別,即使是那些你無法控制的網路不雅內容,也可以提前幫助進行防禦,尤其在保護未成年人健康上網這一點上很有益處。

 

比如有的網站、或者 App 上,有使用者總想嘗試上傳色情圖片,而通過使用 NSFW.JS 則可以提前警告使用者禁止上傳,如果強行上傳,則需要再通過人工稽核。

 

又比如像微博、微信等 App 上賣片的殭屍賬號比較氾濫,NSFW.JS 則可以對將要收到該資訊的人發出警告,告知他們要檢視的內容可能不合適,需要澄清一點,這並不需要伺服器處理即可完成操作。

 

預設情況下,該 JS 庫對影像進行分為了以下 5 類:

 

  • Drawing - 無害的藝術圖畫,包括動漫

  • Hentai - 色情藝術圖,不適合大多數工作環境

  • Neutral - 安全、中性圖片

  • Porn - 色情圖片,性行為,通常涉及生殖器

  • Sexy - 性感圖片,而非色情圖片,包括乳頭

 

以下是 Demo 展示,如果預設開啟模糊保護,只有當 NSFW.JS 識別圖片為 Drawing 和 Neutral 時的比例更高時,意味著可以通過稽核進行展示,而將圖片識別成其它三類圖片的比例更高,圖片則自動遮蔽。

 

640?wx_fmt=gif

 

當然,這是理想狀態下的呈現結果,實際上,專案建立者也坦陳,NSFW.JS 現在並不完美,如果你進行測試就會發現,有一些顯而易見的誤識圖片。

 

用於訓練 NSFW 影像分類器的影像資料指令碼集合,目前已在 GitHub 獲得 8397 個 Star。

 

喏,資料集地址你:https://github.com/alexkimxyz/nsfw_data_scraper,還請善加利用:)

 

專案建立者認為,雖然目前的識別結果中會出現少量偏差,但通常還是很有趣。對於像 NSFW 這樣的專案,他覺得目前召回率比精確度更重要,”誤識率高一點也比讓更危險的東西漏掉要好”。

 

話雖如此,但還是有掩飾識別準確度不高的嫌疑。建立者此前測試 15,000 個影像集的準確率大約 90%,不過,根據 AI科技大本營親自測試,整體感覺是誤識率較高。對於顯而易見的色情圖片,該專案識別時非常明瞭,不過介於“性感”和“色情”的黑色地帶,就不太靠譜了,很容易誤傷。

 

其中,以 AI科技大本營測試的二十多張 Monica Bellucci 圖片為例,有很多明顯不涉及色情的圖片都被錯誤分類,將“性感照”甚至是普通照片分到了“色情”檔。

 

640?wx_fmt=png

 

相較而言,第一張圖片明顯漏胸面積更大,第二張明顯是很普通的圖片,卻被分類為“Porn”了。

 

640?wx_fmt=png

 

這兩張圖怎麼就是“Porn”了......

 

640?wx_fmt=png

 

更令人難以接受的或許是這樣的圖片被識別為“Porn”,臉都不能漏了?

 

目前來看,該專案的分類器模型還有很大的提升空間,尤其隨著 data scraper 的改進,如果未來識別率有大幅提升,它應該會成為很有潛力的應用專案。這是一個緩慢但卻是值得期待的過程。

 

 

如何使用 NSFW.JS?

 

最後附上 NSFW.JS 的操作步驟,簡單來說只需三步:

1、獲取程式碼到位

2、在客戶端上載入模型

3、對影像進行分類

 

專案建立者也在 GitHub 中給出了詳細說明:

 


 

import * as nsfwjs from 'nsfwjs'

const img = document.getElementById('img')

// Load model from my S3.
// See the section hosting the model files on your site.
const model = await nsfwjs.load()

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

       

 

API

 

載入模型。出於多種原因,你應該使用可選引數並從你的網站載入模型。

 


 

const model = nsfwjs.load('/path/to/model/directory/')

 

 

引數

  • 可選的 URL model.json

 

 

返回

  • 準備使用 NSFWJS 模型物件

 

 

對影像進行分類

 

此函式可以使用任何基於瀏覽器的影像元素(,),並返回最可能的預測陣列及其置信度。

 


 

// Return top 3 guesses (instead of all 5)
const predictions = await model.classify(img, 3)

       

 

引數

  • 要檢查的張量(Tensor)、影像資料、影像元素、視訊元素或畫布元素

  • 要返回的結果數(預設全部都是 5)

     

 

 

返回

  • 物件陣列包含 className 和 probability。陣列大小由 classify 函式中的第二個引數確定。

 

安裝

 

NSFWJS 由 Tensorflow.JS 提供支援,作為peer dependency(同級依賴)。如果你的專案還沒有 TFJS,則需要進行新增。

 


 

# peer dependency
$ yarn add @tensorflow/tfjs
# install NSFWJS
$ yarn add nsfwjs

 

你也可以進行下載和託管專案:

https://s3.amazonaws.com/nsfwdetector/min_nsfwjs.zip

 

相關連結:

github 連結:https://github.com/infinitered/nsfwjs

demo 測試地址: https://nsfwjs.com/ 

 

如果你對該專案感興趣,可以安裝試用,歡迎在評論區交流使用體驗。

 

(本文為AI科技大本營原創文章,轉載請微信聯絡 1092722531)

 

5G之後,中國的人工智慧發展趨勢如何?

https://edu.csdn.net/topic/ai30?utm_source=cxrs_bw

 

 

群招募

 

掃碼新增小助手微信,回覆:公司+研究方向(學校+研究方向),邀你加入技術交流群。技術群稽核較嚴,敬請諒解。

640?wx_fmt=jpeg

 

推薦閱讀:

                         640?wx_fmt=png

點選“閱讀原文”,檢視歷史精彩文章。

相關文章