摘要:沒(méi)有顯卡也沒(méi)有關(guān)系,可以看看我前面發(fā)布的兩篇文章谷歌云計(jì)算平臺(tái),免費(fèi)又好用上安裝本文采用的深度學(xué)習(xí)模型是雅虎開(kāi)源的深度學(xué)習(xí)色情圖片檢測(cè)模型,這里的代表,該項(xiàng)目基于框架。你還可以讀利用人工智能檢測(cè)色情圖片谷歌云計(jì)算平臺(tái),免費(fèi)又好用上安裝
隨著互聯(lián)網(wǎng)的快速發(fā)展,越來(lái)越多的圖片和視頻出現(xiàn)在網(wǎng)絡(luò),特別是UCG產(chǎn)品,激發(fā)人們上傳圖片和視頻的熱情,比如微信每天上傳的圖片就高達(dá)10億多張。每個(gè)人都可以上傳,這就帶來(lái)監(jiān)管問(wèn)題,如果沒(méi)有內(nèi)容審核,色情圖片和視頻就會(huì)泛濫。前不久,一向以開(kāi)放著稱(chēng)的tumblr,就迫于壓力,開(kāi)始限制人們分享色情圖片。更別提國(guó)內(nèi),內(nèi)容審核是UCG繞不過(guò)去的坎。還記得前幾年出現(xiàn)的職業(yè)鑒黃師這一職業(yè)么?傳說(shuō)百萬(wàn)年薪,每天看黃片看得想吐,但最近又很少有人提及這一職業(yè),這個(gè)應(yīng)監(jiān)管而生的職業(yè),因人工智能的出現(xiàn)又快速消亡。(當(dāng)然也不是完全消亡,畢竟判斷是否色情圖片是一個(gè)主觀的事情,有些藝術(shù)和色情之間的邊界比較模糊,需要人工加以判斷)
之前寫(xiě)過(guò)一篇文章利用人工智能檢測(cè)色情圖片,也曾經(jīng)嘗試過(guò)在瀏覽器中加入色情圖片過(guò)濾功能,但實(shí)驗(yàn)下來(lái),推理速度太慢(當(dāng)時(shí)使用的Google Nexus 4做的測(cè)試,檢測(cè)一張圖片需要幾秒鐘),沒(méi)法做實(shí)時(shí)過(guò)濾。最近在研究nvidia的Jetson Nano以及推理加速框架TensorRT,因此想嘗試一下,看能否應(yīng)用一些加速方法,加速推理。
雖然我的最終目標(biāo)是應(yīng)用到Jetson Nano,但是TensorRT其實(shí)適用于幾乎所有的Nvidia顯卡,為了方便起見(jiàn),我還是先在PC端進(jìn)行嘗試。沒(méi)有Nvidia顯卡?也沒(méi)有關(guān)系,可以看看我前面發(fā)布的兩篇文章:
谷歌GPU云計(jì)算平臺(tái),免費(fèi)又好用
Google Colab上安裝TensorRT
本文采用的深度學(xué)習(xí)模型是雅虎開(kāi)源的深度學(xué)習(xí)色情圖片檢測(cè)模型open_nsfw,這里的NSFW代表Not Suitable for Work,該項(xiàng)目基于caffe框架。由于我主要研究的是Tensorflow,所以在網(wǎng)上找到該模型的Tensorflow實(shí)現(xiàn)版本,fork了一份,并添加了TensorRT框架的處理腳本,你可以使用如下命令獲得相關(guān)代碼:
git clone https://github.com/mogoweb/tensorflow-open_nsfw.git
在 model.py 中,我們可以看到open_nsfw的模型定義,data/open_nsfw-weights.npy 是采用工具從yahoo open_nsfw的cafee權(quán)重轉(zhuǎn)換得到的Tensorflow權(quán)重,這樣我們無(wú)需訓(xùn)練模型,直接用于推理過(guò)程。classify_nsfw.py 腳本可用于單張圖片的推理:
python classify_nsfw.py -m data/open_nsfw-weights.npy test.jpg
注意:腳本提供了兩種解碼圖片文件的方式,一種是采用PIL.image、skimage進(jìn)行圖片處理,也就是所謂的yahoo_image_loader,一種是采用tensorflow中的圖片處理函數(shù)進(jìn)行處理。因?yàn)樵嫉膐pen_nsfw模型是采用PIL.image、skimage進(jìn)行預(yù)處理而訓(xùn)練的,而不同的庫(kù)解碼出來(lái)的結(jié)果存在細(xì)微的差異,會(huì)影響最終結(jié)果,一般優(yōu)選選擇yahoo_image_loader。當(dāng)然,如果你打算自己訓(xùn)練模型,那選擇哪種圖片處理庫(kù)都可以。
tools 目錄下有一些腳本,可以將模型導(dǎo)出為frozen graph、saved model以及tflite等格式,這樣我們可以方便的在服務(wù)器端部署,還可以應(yīng)用到手機(jī)端。
opt是我編寫(xiě)的采用TensorRT框架加速的代碼,在下面我將詳細(xì)說(shuō)明。
目前TensorRT作為T(mén)ensorflow的一部分得到Google官方支持,其包位于tensorflow.contrib.tensorrt,在代碼中加入:
import tensorflow.contrib.tensorrt as trt
就可以使用TensorRT,因?yàn)橛蠫oogle的支持,導(dǎo)出到TensorRT也就相當(dāng)簡(jiǎn)單:
trt_graph = trt.create_inference_graph(
input_graph_def=frozen_graph_def,
outputs=[output_node_name],
max_batch_size=1,
max_workspace_size_bytes=1 << 25,
precision_mode="FP16",
minimum_segment_size=50
)
graph_io.write_graph(trt_graph, export_base_path, "trt_" + graph_name, as_text=False)
其中:
input_graph_def 為需要導(dǎo)出的Tensorflow模型圖定義
outputs 為輸出節(jié)點(diǎn)名稱(chēng)
max_batch_size 為最大的batch size限制,因?yàn)镚PU存在顯存限制,需要根據(jù)GPU memory大小決定,一般情況可以給8或者16
precision_mode 為模型精度,有FP32、FP16和INT8可選,精度越高,推理速度越慢,也要依GPU而定。
graph_io.write_graph 將圖寫(xiě)入到文件,在后續(xù)的代碼中可以加載之。
完整的代碼請(qǐng)參考 opt/export_trt.py 文件。
因?yàn)橐恍┱叻ㄒ?guī)的限制,并沒(méi)有公開(kāi)數(shù)據(jù)集可提供下載,不過(guò)在github上有一些開(kāi)源項(xiàng)目,提供腳本,從網(wǎng)絡(luò)上進(jìn)行下載。我使用的是 github.com/alexkimxyz/… 這個(gè)開(kāi)源項(xiàng)目中的腳本。這個(gè)項(xiàng)目提供drawings、hentai、neutral、porn、sexy四種類(lèi)別圖片,可以劃分為訓(xùn)練集和測(cè)試集,并檢查圖片是否有效(因?yàn)閺木W(wǎng)絡(luò)爬取,有些鏈接不一定能訪問(wèn)到)。
注意這個(gè)圖片下載量非常大,需要注意別把硬盤(pán)撐滿(mǎn)。雖然這個(gè)數(shù)據(jù)量夠大(幾萬(wàn)張),可以自行進(jìn)行模型訓(xùn)練,但和yahoo訓(xùn)練open_nsfw模型的圖片量相比,還是小巫見(jiàn)大巫,據(jù)說(shuō)yahoo訓(xùn)練這個(gè)模型用了幾百萬(wàn)張的圖片。
在opt目錄下,我針對(duì)兩種模型的加載和推理添加了兩個(gè)腳本,分別是 benchmark_classify_nsfw.py 和 benchmark_classify_trt.py,細(xì)心的同學(xué)可能會(huì)發(fā)現(xiàn),這兩個(gè)腳本幾乎一模一樣,是的,除了 benchmark_classify_trt.py 多了一行代碼:
import tensorflow.contrib.tensorrt as trt
加入這行import語(yǔ)句,告訴tensorflow使用TensorRT框架,否則的話(huà),會(huì)出現(xiàn)如下錯(cuò)誤:
tensorflow.python.framework.errors_impl.NotFoundError: Op type not registered "TRTEngineOp" in binary running on alex-550-279cn. Make sure the Op and Kernel are registered in the binary running in this process. Note that if you are loading a saved graph which used ops from tf.contrib, accessing (e.g.) `tf.contrib.resampler` should be done before importing the graph, as contrib ops are lazily registered when the module is first accessed.
取2000張測(cè)試圖片進(jìn)行測(cè)試,在我的GTX 960上,推理速度如下:
未優(yōu)化模型: 53 s 使用TensorRT優(yōu)化模型: 54 s
如果你下載更大的數(shù)據(jù)集,可以多測(cè)試一些圖片,看看優(yōu)化效果。
在Google Colab上,我放了一份Jupter Notebook,有興趣的同學(xué)可以借助Google Colab嘗試一下,文件地址:colab.research.google.com/drive/1vH-G… ,當(dāng)然你也可以訪問(wèn)我github上完整的腳本及Notebook:
github.com/mogoweb/ten…
點(diǎn)擊閱讀原文,可以跳轉(zhuǎn)到該項(xiàng)目。
題外話(huà):
微信公眾號(hào)流量主的門(mén)檻已經(jīng)大大降低,我在公眾號(hào)文章底部開(kāi)通了廣告,希望沒(méi)有影響大家的閱讀體驗(yàn)。我一直很好奇,這種廣告會(huì)有人點(diǎn)擊么,過(guò)一段也許我會(huì)得到答案。
你還可以讀:
利用人工智能檢測(cè)色情圖片
谷歌GPU云計(jì)算平臺(tái),免費(fèi)又好用
Google Colab上安裝TensorRT
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/7315.html
摘要:阿里巴巴集團(tuán)安全部今年在直播管控中的特色在于大量采用人工智能和深度學(xué)習(xí)等技術(shù),配合優(yōu)化后的高性能多媒體計(jì)算集群,大幅度降低人工審核成本的同時(shí),提升了對(duì)內(nèi)容風(fēng)險(xiǎn)的防控能力。 阿里巴巴直播內(nèi)容風(fēng)險(xiǎn)防控中的AI力量 直播作為近來(lái)新興的互動(dòng)形態(tài)和今年阿里巴巴雙十一的一大亮點(diǎn),其內(nèi)容風(fēng)險(xiǎn)監(jiān)控是一個(gè)全新的課題,技術(shù)的挑戰(zhàn)非常大,管控難點(diǎn)主要包括業(yè)界缺乏成熟方案和標(biāo)準(zhǔn)、主播行為、直播內(nèi)容不可控、峰值...
閱讀 3808·2021-11-24 09:39
閱讀 3614·2019-08-30 15:56
閱讀 1432·2019-08-30 15:55
閱讀 1107·2019-08-30 15:53
閱讀 2006·2019-08-29 18:37
閱讀 3672·2019-08-29 18:32
閱讀 3197·2019-08-29 16:30
閱讀 3074·2019-08-29 15:14