在漫長的無意工做的「年末」裏,大家大概須要動用深度學習技能來僞裝好好工做:當老闆快要走到身後,讓電腦自動隱藏「工做不宜」的窗口。
付出這麼多努力就爲了工做時開個小差?
好像是的……
AHOGRAMMER發佈了這樣一個名爲「老闆傳感器」的製做教程:
定義任務
這個程序的任務就是當老闆接近的時候,自動隱藏「工做不宜」窗口。
老闆和個人座位距離約6-7米,若是我在看「工做不宜」的東西,當老闆離開座位,有4-5秒的時間切換界面。
策略
1.用深度學習訓練一個模型,讓電腦能認出老闆的臉。
2.在桌上安裝一個攝像頭,當攝像頭捕捉到老闆的臉,讓電腦自動隱藏「工做不宜」窗口。
老闆探測器的系統架構以下:
- Recognize:一個訓練過的模型,能識別面部特徵。
- Hide Screen:若是識別的結果是老闆,隱藏「工做不宜」窗口。
所以,這個系統須要如下能力:
咱們來逐個解決。
拍攝臉部照片
我選擇了BUFFALO BSW20KM11BK攝像頭。
攝像頭有自帶的拍照程序,可是考慮到後續的處理,須要在拍照時自動切出臉部圖片,所以我選擇用了Python和OpenCV來拍照。
獲得的臉部照片質量比我預想的要好。
識別老闆的臉
接下來,咱們用機器學習算法讓計算機認出老闆的臉。分爲如下三步:
- 收集圖片
- 處理圖片
- 創建機器學習模型
讓咱們一步一步來看。
收集圖片
首先,咱們須要收集大量照片供算法學習,我用下面的收集方法:
- Google圖片搜索
- Facebook上的相冊
- 拍視頻
起初,我經過網絡搜索和Facebook收集了圖片,可是數量不夠,因而我又拍攝了視頻,而後轉換成大量的圖片。
處理圖片
咱們收集了大量包括人臉的圖片,可是學習算法還不能直接用,由於圖片裏包含太多不是人臉的部分。所以,咱們須要把臉部剪切出來。
我主要用ImageMagick來作臉部提取的工做,獲得了下面這些臉部照片:
如今能夠開始學習了。
創建機器學習模型
咱們用Keras來創建卷積神經網絡(CNN),而後用TensorFlow來作它的後端。若是你只想識別人臉,能夠用Computer Vision API等圖像識別的Web API。可是此次我決定本身寫一個實時的識別。
這個網絡的架構以下:
如今,當老闆出如今攝像頭範圍內,就能自動被識別出來了。
切換電腦窗口
如今,當訓練過的模型識別出老闆的臉,咱們須要切換窗口來僞裝工做:做爲一個程序員,我選擇切換到這張圖片:
我用PyQt來全屏展現這張圖片。
試用效果
老闆離開座位:
OpenCV探測到人臉,把圖像放進訓練過的模型:
窗口自動切換到僞裝工做的圖片啦ヽ(‘ ∇‘ )ノ ワーイ
做者 | HIRONSAN @ AHOGRAMMER編譯 | 夏乙 @ AI100
題圖來自Unsplash