厲害了,我用“深度學習”寫了個老闆探測器(附原始碼)
【“七月線上實驗室”公眾號回覆“探測器”,獲取原始碼】
如果上班的時候想放鬆一下,或者直說想偷偷懶,看點和工作無關的網頁,這時候萬一老闆突然出現在背後,會不會感到很難堪呢?
有的瀏覽器設定了boss按鍵,手快的人還可以切換螢幕,不過總會顯得不自然,而且經常搞的手忙腳亂的。
一個日本程式設計師決定自己動手,編寫一個一勞永逸的辦法,我們來看看他是怎麼實現的吧~
思路很直接:用網路攝像頭自動識別在工位通道走過的人臉,如果確認是老闆的話,就用一張寫滿了程式碼的截圖覆蓋到整個螢幕上。
整個工程中應用了Keras深度學習框架來建立識別人臉的神經網路,和一個網路攝像頭用來捕捉老闆的人臉。
任務是這樣的當老闆接近我的工位時,電腦就會自動切換螢幕
辦公室的情況如下:
從老闆的座位到我的座位大約6~7米,他會在離開座位後4到5秒鐘到達我的座位,因此,需要在這之前隱藏螢幕,所以時間比較緊迫。
策略首先需要讓電腦完成對老闆面部的深度學習。然後在我的辦公桌上擺上一個網路攝像頭,讓攝像頭對著通道,當網路攝像頭捕捉到老闆的臉時就切換螢幕。
嗯,這是一個完美的專案。先取一個好名字,就叫Boss Sensor(老闆探測器)好了。
Boss Sensor的簡單結構圖如下:
處理過程分為三步:
網路攝像頭實時拍攝影象
學習模型檢測和識別所拍攝影象的人臉
如果識別結果是老闆則切換螢幕
所需要的技術實現只有三項:
拍攝人臉影象
識別人臉影象
切換螢幕
一步步完成之後整合就可以了。
拍攝人臉影象首先找一個網路攝像頭,我用的是BUFFALO BSW20KM11BK攝像頭,大家隨便找個清晰度夠的就可以了。
最好不要用相機自帶的識別軟體裁剪人臉,因為後面的深度學習過程還需要處理。所以,我用Python和OpenCV編寫了一段裁剪人臉影象的指令碼,程式碼在這裡下載:
https://github.com/Hironsan/BossSensor/blob/master/camera_reader.py
偷拍到的人臉影象比我之前設想的更清楚▼
識別人臉影象接下來,要用機器學習教會電腦識別老闆的臉。
我們需要以下三個步驟:
採集影象
影象預處理
建立機器學習模型
讓我們一個接一個看一下。
採集影象首先,需要收集大量的圖片供電腦學習。一般來說有三種大量收集圖片的方法:
谷歌圖片搜尋
Facebook的影象採集
從視訊裡截圖
一開始,我像電影裡的特工一樣收集了各種搜尋引擎上的老闆照片,還有Facebook上老闆自己上傳的照片,但說實話,沒有收集到足夠的影象。所以,反正老闆就在身邊,我就簡單粗暴的拍攝了一段他的視訊,然後把視訊分解成大量的影象。
現在我有很多人臉影象了,但還不能拿它們來建立學習模型,必須要裁剪掉與臉部不相關的部分。
我使用ImageMagick來提取人臉,你可以用別的影象軟體來做。
總之,最後我收集了大量的人臉影象,就像這樣: ▼
估計我是全世界擁有最多老闆頭像的人了,肯定比他爸爸媽媽要多的多。
現在可以準備機器學習了。
Keras框架用來建立卷積神經網路和神經網路培訓。Tensorflow用來寫Keras的後端。如果只識別臉部的話,可以呼叫一些Web API比如微軟的Computer Vision API,但這次我決定自己來實現,因為這個專案需要確保實時性。
網路體系結構大體如下,Keras非常方便,它可以很輕鬆的輸出這樣的結構: ▼
程式碼在這裡下載:
https://github.com/Hironsan/BossSensor/blob/master/boss_train.py
至此,只要老闆出現在攝像頭中,我就可以識別出他來了。
切換螢幕最後一步,很簡單,學習模型識別出老闆的臉之後,把電腦螢幕換掉就好了。
我是程式設計師,所以我準備了這樣一張圖:▼
電腦上只顯示這張圖片,這樣就可以假裝我在認真工作了。
這張圖需要全屏顯示,所以我呼叫了PyQt庫,程式碼在這裡下載:
https://github.com/Hironsan/BossSensor/blob/master/image_show.py
一切工作都完成了。
成品最後把分別實現的技術整合起來並驗證,真的成功了!
“現在老闆離開了座位,正走向我的工位。”▼
“OpenCV已經檢測出人臉,將人臉影象傳送給學習模型。”▼
“學習模型認出了他,螢幕自動切換。ヽ(‘ ∇‘ )ノ”▼
總結
結合網路攝像頭的實時影象採集和Keras深度學習框架,確實可以完成人臉識別。
在實踐過程中,我發現OpenCV的影象精度不夠高,雖然不影響識別,但我準備改用Dlib來提高精度,另外我想自己編寫人臉檢測訓練模型。
網路攝像頭獲取的影象不夠清晰,我準備換個攝像頭。
在本公眾號「七月線上實驗室」回覆以下關鍵詞獲取AI乾貨
PPT--《1天搞懂深度學習》資料
小抄--機器學習常用庫小抄表
題庫-- 人工智慧面試題庫
資料集--人工智慧各行業資料彙總
思維導圖--Python學習必備思維導圖電子版
量化交易--量化投資程式設計課程與資料
相關文章
- 老闆畫了個餅,我信了
- 為了預測股票,我用TensorFlow深度學習了股市資料深度學習
- 老闆防止我上班摸魚,給我裝了個chrome外掛Chrome
- 利用深度學習和機器學習預測股票市場(附程式碼)深度學習機器學習
- 老闆說“把系統升級到https”,我用一個指令碼實現了,而且永久免費!HTTP指令碼
- 厲害了,一個更智慧的 JavaScript 對映器:array.flatMap()JavaScript
- 太厲害了!解決了我對編譯的絕大部分問題!編譯
- 厲害了!AWS 這個獎,助力中國與全球一起促進機器學習的科研落地!機器學習
- 微服務基礎——厲害了!API閘道器微服務API
- 厲害了!用 Python 製作出來的地球儀!Python
- 一個不像老闆的好老闆
- 太厲害了!用了這個影片剪輯SDK,PR就可以拜拜了!
- 52 個深度學習目標檢測模型彙總,論文、原始碼一應俱全!(附連結)深度學習模型原始碼
- 帶你用深度學習虛擬機器進行文字遷移學習(附程式碼)深度學習虛擬機遷移學習
- 老闆讓我 7 天研究一個 Plausible 統計
- 深度學習03-sklearn.LinearRegression 原始碼學習深度學習原始碼
- 厲害了,一個自動掃雷遊戲專案!遊戲
- 這個應用魔方厲害了,讓軟體開發者效率提升10倍
- 51 個深度學習目標檢測模型彙總,論文、原始碼一應俱全!深度學習模型原始碼
- 52 個深度學習目標檢測模型彙總,論文、原始碼一應俱全!深度學習模型原始碼
- 厲害了,JavaScript 新提案:array.groupBy()JavaScript
- 厲害了,ECMAScript 新提案:JSON模組JSON
- 技術部落格丨我用深度學習做個視覺AI微型處理器!深度學習視覺AI
- 深度學習論文和開原始碼深度學習原始碼
- 每一個工程師都要學的安全測試,老闆再也不用擔心伺服器被黑工程師伺服器
- 厲害了!100多個API介面分享!熱門、常用的都有API
- 【Vue原始碼學習】響應式原理探祕Vue原始碼
- 【老師見打系列】:我只是寫了一個自動回覆討論的指令碼~指令碼
- 手寫一個Promise,附原始碼分析Promise原始碼
- 同時在多個 Git 分支上工作,老闆要榨乾我Git
- 我寫了一個TypeScript虛擬機器。TypeScript虛擬機
- 厲害了,Laravel-china 開通部落格了 快來圍觀下Laravel
- 我用Vue寫了個部落格園WebAppVueWebAPP
- elementui原始碼學習之仿寫一個el-buttonUI原始碼
- 厲害了網頁掃碼,所有方法都給你總結到這了!趕緊收藏網頁
- 老闆要我開發一個簡單的工作流,15 次需求變更,我幹到禿了。。
- 用Python進行機器學習(附程式碼、學習資源)Python機器學習
- Spring原始碼深度解析(郝佳)-學習-原始碼解析-Spring MVCSpring原始碼MVC