用Python拯救鑑黃師
作者:Kaiser
來源:https://jizhi.im/blog/post/asciiart
曾經被無數人嚮往的神祕職業“專業鑑黃師”,要被人工智慧替代了!
人工智慧是怎麼鑑黃的?
對於一張影象,我們可以廣義地定義為3類:“正常”、“性感”、“色情”。因此,可以利用機器學習的方法來對訓練集影象進行訓練,將訓練後的模型用於預測。
鑑黃師們每天面對著海量的資料進行判斷分類,根據膚色裸露程度、姿勢、肢體輪廓判斷是否涉及色情元素。海量資料標註之後便是對機器的訓練。其通常邏輯是:鑑黃師輸入海量資料,將各類資料進行標籤化訓練,告訴機器,ABC是色情,DEF非色情,機器通過監督學習,提取ABCDEF的特徵來判斷G是不是色情。
在提高鑑黃的準確度上,目前還有采用的路徑是深度卷積神經網路CNNs的多GPU並行框架,通過小樣本目標的學習,快速準確地理解影象內容,並從影象中自動識別指定目標。網路直播平臺可以進行內容自定義,對視訊中靜態和動態的物體、人物資訊進行實時分析識別,最終綜合處理視訊中採集到的敏感資訊,對視訊中的場景進行事件分析,鑑定其涉黃與否。
今天帶來的是一篇趣味專案——Python繪製畫素圖。
一、ASCII藝術
ASCII 的全稱是 American Standard Code for Information Interchange,即美國資訊交換標準碼。是由軍用電報編碼發展而來,併成為最通用的現代計算機編碼系統。
在顯示卡還不能摧毀航母戰鬥群的年代,計算機還主要用來計算導彈彈道和衛星軌道,其圖形處理能力是非常弱的,甚至還不如今天高階一點的示波器。但這並不能阻止人類對美的追求,正如四萬年前的莽荒也沒有耽誤拉斯科洞窟壁畫的誕生。
拉斯科洞窟壁畫
在我剛上網那陣(暴露年齡?),有個流傳很廣的帖子,是教你觀看命令列裡的《星球大戰》,而這部星戰正是由ASCII編碼中的字元構成的,這被稱作ASCII art。
這不大番薯和老夫子嗎?
在鬥圖代替打字、點播變成直播甚至VR/AR的今天,圖形的處理已經不再是瓶頸,反而成為了新的增長點。道高一尺魔高一丈,技術的進步也帶來了有害資訊,比如廣大家長朋友們特別關注的色情資訊。剛開始色情的鑑定是由人工完成的,李迪同志就是在《暴走大事件》中扮演鑑黃師唐馬儒而一炮走紅。
但是,基於人工智慧的影象識別也在飛速進步,自動鑑黃已經投入實用,鑑黃師的職業前景就面臨著嚴重的威脅!你想想,你在家裡吃著火鍋鑑著黃,突然間,工作都要丟了,這誰受得了。救救鑑黃師!
二、字元畫
把一張照片轉換為字元畫,大致需要三步:
將圖片尺寸壓縮到字元畫所能接受的量級;
彩色圖轉換為灰度圖,灰度是一個0-255的數值;
建立灰度值與字符集之間的對映關係。
早年間以上步驟還需要專門做一個小軟體來完成,而現在只需要簡單的程式碼就可以直接在瀏覽器中實現。
熟悉這個視窗邊框的同學應該也不年輕了
因為字元畫的本質是“字元”,可以用文字編輯器開啟,對於計算機來說,他們和其他的字元沒有任何區別,“畫”的性質只是由人類的想象力後天賦予的。所以,如果你用字元畫的形式傳播春宮圖,還是需要唐馬儒。
小馬聽了美滋滋
三、Python擴充套件庫
針對字元畫生成的基礎功能,Python已經內建了很多優秀的擴充套件庫,可以在此基礎上直接呼叫,而無需重複製造輪子。
相簿PIL(Python Imaging Library)基本的影象處理功能。
網庫urllib 獲取網路資源,如下載網上的圖片。
沒有必要把0-255的灰度值一一對應為不同的字元,一般十幾個也就足夠了。這裡做如下定義:
這裡將最低的灰度段對映為' '(空格),也就是原圖中空白或接近空白的部分,在字元畫中也會會變成空白;而原圖的黑點則變成@。
四、圖片預處理
4K屏已經逐漸普及,現在差不多的電腦顯示器也能支援2K解析度,如果把每個畫素點都變成一個字元,那出來的圖片實在是太大了。
所以首先要對源圖片進行壓縮,再轉換為灰度模式,即丟擲色彩資訊。
五、圖片到字元
然後是建立圖片(壓縮後)畫素點到字符集的對映關係。
最後綜合前面幾個函式,以文字形式輸出字元畫。
六、圖源採集
接下來我們可以為所欲為將任意圖片轉換為字元畫看看效果,為了充分發揚網際網路精神,目前僅支援具有網路地址的圖片(其實是圖片上傳系統還沒做好)。
下面來看一個例項,將一張QQ企鵝的圖示轉換為字元畫。
七、開放空間
上節的例子仍然保留了預設的字符集和預設影象寬度60,接下來的部分留給讀者自由發揮,可以通過修改如下引數獲得自己的字元畫:
new_width:字元畫的尺寸(寬的字元數)
ASCII_CHARS:字符集
image_url:網路圖片地址,就是你想要轉換的圖片
操作示例:
當你在網上看到一張圖片,右鍵-複製圖片地址。
將圖片地址賦值予變數image_url,點選執行即可。
替換相應變數
摘掉眼鏡看效果更佳。
Sublime編輯器裡的成像效果
【今日思考題】
請簡要介紹下SVM
(點選下方空白處獲取答案)
SVM,全稱是support vector machine,中文名叫支援向量機。SVM是一個面向資料的分類演算法,它的目標是為確定一個分類超平面,從而將不同的資料分隔開。 擴充套件:這裡有篇文章詳盡介紹了SVM的原理、推導,《支援向量機通俗導論(理解SVM的三層境界)》(連結:http://blog.csdn.net/v_july_v/article/details/7624837)。此外,這裡有個視訊也是關於SVM的推導:《純白板手推SVM》(連結:http://www.julyedu.com/video/play/18/429)。
後臺回覆“SVM”,獲取以上地址
機器學習九期開始報名,BAT + Google的一線技術大咖親自授課
點選閱讀原文,抓住轉入人工智慧行業的契機~
相關文章
- 如何挽救鑑黃師的職業生涯 - Python繪製畫素圖Python
- “AI鑑黃師”資料解決方案 | 景聯文科技AI
- Python_16 session、cookie 鑑權PythonSessionCookie
- 使用Pyenv拯救Ubuntu混亂的Python版本UbuntuPython
- 拯救Python新手的幾個專案實戰Python
- 一對好基友用邏輯拯救世界
- python使用選擇結構鑑別合法日期Python
- python--介面自動化鑑權例項Python
- 告別單調工作系列——利用python再次拯救漂亮妹子Python
- Python裝飾器:python真正入門的鑑定標準Python
- IMS AKA鑑權及應用流程詳解
- 如何拯救工作列
- 拯救chmod -R 000 /*
- 粗心小編被雲拯救,那雲上資料誰來拯救?
- 楊超越“拯救”獨立遊戲?遊戲
- 拯救你的程式碼
- 採用 SOA 最佳實踐,借鑑經驗教訓
- 拯救你的Go程式碼Go
- 誰來拯救數字遊戲?遊戲
- 拯救Linux系統(轉)Linux
- 亞馬遜將如何拯救美國郵政亞馬遜
- 理解JWT鑑權的應用場景及使用建議JWT
- 忘了Python關鍵語句?這份備忘錄拯救你的記憶Python
- 怎麼鑑別蘋果耳機真假 蘋果耳機鑑別真假方法蘋果
- Node.js 應用:Koa2 使用 JWT 進行鑑權Node.jsJWT
- 拯救不會函式的我!!函式
- 低程式碼如何“拯救”企業?
- 拯救 Java Code Style 強迫症Java
- 如何鑑別“好遊戲”?遊戲
- vue元件級鑑權Vue元件
- .net core jwt 鑑權JWT
- .net core cookie 鑑權Cookie
- [譯] 設計不會拯救世界
- 裁員真能拯救中國網際網路?
- 社群討論:開源能否拯救.NET?
- 大資料如何拯救你的品牌?大資料
- 網際網路拯救了婚姻嗎?
- 拯救老電影——詳解愛奇藝ZoomAI視訊增強技術的應用OOMAI