幫你偷懶的“老闆探測器”,簡直是機器學習年底最佳應用

AI科技大本營發表於2017-07-20
幫你偷懶的“老闆探測器”,簡直是機器學習年底最佳應用在漫長的無心工作的“年底”裡,你們大概需要動用深度學習技能來假裝好好工作:當老闆快要走到身後,讓電腦自動隱藏“工作不宜”的視窗。

付出這麼多努力就為了工作時開個小差?

好像是的……

AHOGRAMMER釋出了這樣一個名為“老闆感測器”的製作教程:

定義任務


這個程式的任務就是當老闆接近的時候,自動隱藏“工作不宜”視窗。

幫你偷懶的“老闆探測器”,簡直是機器學習年底最佳應用


老闆和我的座位距離約6-7米,如果我在看“工作不宜”的東西,當老闆離開座位,有4-5秒的時間切換介面。


策略


1.用深度學習訓練一個模型,讓電腦能認出老闆的臉。

2.在桌上安裝一個攝像頭,當攝像頭捕捉到老闆的臉,讓電腦自動隱藏“工作不宜”視窗。

幫你偷懶的“老闆探測器”,簡直是機器學習年底最佳應用


老闆探測器的系統架構如下:

幫你偷懶的“老闆探測器”,簡直是機器學習年底最佳應用


  • Camera:一個實時捕捉影像的攝像頭。
  • Recognize:一個訓練過的模型,能識別面部特徵。
  • Hide Screen:如果識別的結果是老闆,隱藏“工作不宜”視窗。

因此,這個系統需要以下能力:

  • 拍攝臉部照片
  • 識別臉部照片
  • 切換電腦視窗
我們來逐個解決。

拍攝臉部照片


我選擇了BUFFALO BSW20KM11BK攝像頭。

幫你偷懶的“老闆探測器”,簡直是機器學習年底最佳應用


攝像頭有自帶的拍照程式,但是考慮到後續的處理,需要在拍照時自動切出臉部圖片,因此我選擇用了Python和OpenCV來拍照。

得到的臉部照片質量比我預想的要好。


識別老闆的臉


接下來,我們用機器學習演算法讓計算機認出老闆的臉。分為以下三步:

  1. 收集圖片
  2. 處理圖片
  3. 建立機器學習模型

讓我們一步一步來看。

收集圖片


首先,我們需要收集大量照片供演算法學習,我用下面的收集方法:

  • Google圖片搜尋
  • Facebook上的相簿
  • 拍視訊

起初,我通過網路搜尋和Facebook收集了圖片,但是數量不夠,於是我又拍攝了視訊,然後轉換成大量的圖片。

處理圖片


我們收集了大量包括人臉的圖片,但是學習演算法還不能直接用,因為圖片裡包含太多不是人臉的部分。因此,我們需要把臉部剪下出來。

我主要用ImageMagick來做臉部提取的工作,得到了下面這些臉部照片:

幫你偷懶的“老闆探測器”,簡直是機器學習年底最佳應用


現在可以開始學習了。


建立機器學習模型


我們用Keras來建立卷積神經網路(CNN),然後用TensorFlow來做它的後端。如果你只想識別人臉,可以用Computer Vision API等影像識別的Web API。但是這次我決定自己寫一個實時的識別。

這個網路的架構如下:

幫你偷懶的“老闆探測器”,簡直是機器學習年底最佳應用


現在,當老闆出現在攝像頭範圍內,就能自動被識別出來了。

切換電腦視窗


現在,當訓練過的模型識別出老闆的臉,我們需要切換視窗來假裝工作:作為一個程式設計師,我選擇切換到這張圖片:

幫你偷懶的“老闆探測器”,簡直是機器學習年底最佳應用


我用PyQt來全屏展示這張圖片。

試用效果


老闆離開座位:

幫你偷懶的“老闆探測器”,簡直是機器學習年底最佳應用


OpenCV探測到人臉,把影像放進訓練過的模型:

幫你偷懶的“老闆探測器”,簡直是機器學習年底最佳應用


視窗自動切換到假裝工作的圖片啦ヽ(‘ ∇‘ )ノ ワーイ

幫你偷懶的“老闆探測器”,簡直是機器學習年底最佳應用


作者 | HIRONSAN @ AHOGRAMMER編譯 | 夏乙 @ AI100


題圖來自Unsplash


相關文章