0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一款系統(tǒng)能識別逐漸朝你走來的老板,并且自動隱藏正在瀏覽的屏幕

zhKF_jqr_AI ? 來源:未知 ? 作者:李倩 ? 2018-06-26 16:28 ? 次閱讀

在當下網(wǎng)絡(luò)發(fā)達的時代,我們很難抵擋信息的沖擊,上班時間總想偷偷刷個微博、看個新聞啥的,才能走在潮流前線嘛!然而此時此刻,最怕老板悄咪咪出現(xiàn)在身后,恐怖指數(shù)可以和門外突然出現(xiàn)的班主任相比。

一身冷汗之后,手忙腳亂馬上切換屏幕!假裝努力工作!但是一切都太晚了,你的小動作都被老板看在眼里、記在心中……

所以,為了躲避老板的監(jiān)控,日本一程序員自制了一款系統(tǒng),能識別逐漸朝你走來的老板,并且自動隱藏正在瀏覽的屏幕。

具體來說,系統(tǒng)使用了基于Keras的神經(jīng)網(wǎng)絡(luò)學習辨認人臉,網(wǎng)絡(luò)攝像頭用于判斷目標對象是否靠近,并基于判斷切換屏幕。以下是論智對這一項目的編譯。

任務概述

這一任務的目標是當老板靠近我的時候,屏幕可以自動切換到與工作有關(guān)的內(nèi)容。我和老板的位置大致如下:

從他的座位到我的座位大約有6~7米的距離,這之間只需要4~5秒的時間。所以我必須讓系統(tǒng)在幾秒內(nèi)完成一系列動作。

制定策略

首先,讓電腦通過深度學習掌握老板的臉。然后,在我的工位上設(shè)置一個攝像頭,當捕捉到老板的臉時,屏幕可以自動切換。我將這套系統(tǒng)稱為“老板感應器(Boss Sensor)”,簡直完美!

系統(tǒng)架構(gòu)

“老板感應器”的簡單結(jié)構(gòu)如下:

攝像頭能實時拍攝圖像

經(jīng)過學習的模型從拍攝圖像中檢測并認出老板的臉

確認之后切換屏幕

簡單地說就是拍照、辨認、轉(zhuǎn)換屏幕。讓我們一步一步的解釋。

拍攝人臉照片

在這里,我用的是BUFFALO BSW20KM11BK作為拍攝工具。

你也可以用相機自帶的軟件進行拍攝,但是考慮到后期的處理,用自制的程序拍攝會更好。同樣,因為接下來會處理人臉識別,所以需要把畫面切割成只有人臉的部分。所以我用Python和OpenCV捕捉人臉圖像。代碼在這里:github.com/Hironsan/BossSensor/blob/master/camera_reader.py

結(jié)果我得到了比我想象中更清晰的照片。

認出老板的臉

接下來,我們用機器學習分三步識別出老板的面容:

收集照片

對照片進行預處理

建立機器學習模型

收集照片

首先,我需要收集大量老板的照片用作學習,其中收集方法有三種:

谷歌搜索

從Facebook搜索

視頻

前面兩種方法能找到的照片很少,所以我用拍攝視頻的方法,再將視頻分解成許多照片。

預處理照片

雖然我得到了大量面部圖片,但是學習模型并不能達到預期效果。這是因為照片中還有和面部無關(guān)的內(nèi)容,所以我們要裁剪掉無關(guān)內(nèi)容,只留下面部。這里我用到的是ImageMagick(www.imagemagick.org/script/index.php)。

最終收集到的面部照片如下:

現(xiàn)在要開始讓模型學習了!

建立機器學習模型

Keras用來建立卷積神經(jīng)網(wǎng)絡(luò)(CNN),TensorFlow用作Keras的后端。如果只用來識別面部,你可以請求類似Computer Vision API的網(wǎng)絡(luò)API進行圖片識別,但是這次我決定自己DIY。

網(wǎng)絡(luò)的框架如下所示。Keras非常方便,因為它能非常容易地輸出這一結(jié)構(gòu):

____________________________________________________________________________________________________

Layer (type) Output Shape Param # Connected to

====================================================================================================

convolution2d_1 (Convolution2D) (None, 32, 64, 64) 896 convolution2d_input_1[0][0]

____________________________________________________________________________________________________

activation_1 (Activation) (None, 32, 64, 64) 0 convolution2d_1[0][0]

____________________________________________________________________________________________________

convolution2d_2 (Convolution2D) (None, 32, 62, 62) 9248 activation_1[0][0]

____________________________________________________________________________________________________

activation_2 (Activation) (None, 32, 62, 62) 0 convolution2d_2[0][0]

____________________________________________________________________________________________________

maxpooling2d_1 (MaxPooling2D) (None, 32, 31, 31) 0 activation_2[0][0]

____________________________________________________________________________________________________

dropout_1 (Dropout) (None, 32, 31, 31) 0 maxpooling2d_1[0][0]

____________________________________________________________________________________________________

convolution2d_3 (Convolution2D) (None, 64, 31, 31) 18496 dropout_1[0][0]

____________________________________________________________________________________________________

activation_3 (Activation) (None, 64, 31, 31) 0 convolution2d_3[0][0]

____________________________________________________________________________________________________

convolution2d_4 (Convolution2D) (None, 64, 29, 29) 36928 activation_3[0][0]

____________________________________________________________________________________________________

activation_4 (Activation) (None, 64, 29, 29) 0 convolution2d_4[0][0]

____________________________________________________________________________________________________

maxpooling2d_2 (MaxPooling2D) (None, 64, 14, 14) 0 activation_4[0][0]

____________________________________________________________________________________________________

dropout_2 (Dropout) (None, 64, 14, 14) 0 maxpooling2d_2[0][0]

____________________________________________________________________________________________________

flatten_1 (Flatten) (None, 12544) 0 dropout_2[0][0]

____________________________________________________________________________________________________

dense_1 (Dense) (None, 512) 6423040 flatten_1[0][0]

____________________________________________________________________________________________________

activation_5 (Activation) (None, 512) 0 dense_1[0][0]

____________________________________________________________________________________________________

dropout_3 (Dropout) (None, 512) 0 activation_5[0][0]

____________________________________________________________________________________________________

dense_2 (Dense) (None, 2) 1026 dropout_3[0][0]

____________________________________________________________________________________________________

activation_6 (Activation) (None, 2) 0 dense_2[0][0]

====================================================================================================

Total params: 6489634

代碼在這里:github.com/Hironsan/BossSensor/blob/master/boss_train.py

目前為止,只要老板出現(xiàn)在攝像機鏡頭下,系統(tǒng)就能認出他。

切換屏幕

現(xiàn)在,學習過的模型可以認出老板的臉了,下一步就是切換屏幕。首先放一張假裝在工作時候的照片,因為我是程序員,所以以下是我的工作常態(tài):

如果想全屏顯示這張圖片,可以用PyQt,代碼在這里:github.com/Hironsan/BossSensor/blob/master/image_show.py

OK,一切準備就緒。

成品展示

把上面的技術(shù)結(jié)合在一起,我們的工作就完成了。接下來讓我們試驗一下。

老板離開了他的座位并向我走來

OpenCV檢測到了他的臉然后向模型中輸入了圖片

屏幕切換成功!

結(jié)論

目前我用OpenCV進行面部識別,但是由于OpenCV的準確性不高,我打算嘗試一下Dlib提高準確度。我還想試一下自己訓練的人臉檢測模型。另外,由于攝像頭捕捉到的畫面也并不準確,我會對此加以改進。

后記

目前知乎上有人已經(jīng)做出了該項目的Demo,加以改進后可以直接把老板來了的信息發(fā)送到手機上。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴

原文標題:摸魚神器:用深度學習實現(xiàn)老板靠近自動切屏

文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    DIY一款基于arduino的自動澆花系統(tǒng)

    DIY一款既有創(chuàng)意,又實用的基于arduino的自動澆花系統(tǒng)
    的頭像 發(fā)表于 11-25 18:31 ?7.6w次閱讀

    怎用設(shè)置任務欄自動隱藏,并在“開始”菜單顯示小圖標

    `<p>步驟:任務欄-》右鍵-》屬性-》在任務欄選中<font face="Verdana">自動隱藏
    發(fā)表于 06-28 10:57

    你熟悉的十大另類瀏覽

    :18.0.1025.162  支持系統(tǒng):Windows XP和Windows 7  五、Swiftfox  這是一款經(jīng)過優(yōu)化火狐瀏覽器后形成的瀏覽器,
    發(fā)表于 07-08 11:10

    怎么在labview中實現(xiàn)靠邊自動隱藏效果??

    在labview中實現(xiàn)靠邊自動隱藏效果,就是類似于QQ界面靠近電腦的屏幕的邊上就是自動隱藏這樣子的個功能,謝謝了。。。
    發(fā)表于 11-02 21:43

    布爾控件鼠標進入自動隱藏名稱.rar

    鼠標移動到布爾控件上方自動隱藏它的標題和標簽,移出后又顯示
    發(fā)表于 07-11 09:00

    多種方式減輕瀏覽器的資源占用   

    ,讓它們在使用的時候可以輕裝前進了呢?   首先下載一款名為speedyfox的小工具,并且退出正在運行的瀏覽器等軟件。該工具運行以后會自動
    發(fā)表于 06-28 14:54

    請問Altium Designer19畫原理圖時怎么隱藏componets中的PCBLIB封裝?

    Altium designer19畫原理圖時如何隱藏componets中的PCBLIB封裝哦?18是自動隱藏,19怎么隱藏哦?H:\Desktop\1.png
    發(fā)表于 09-29 01:10

    AD18 原理圖生成PCB元件標號自動隱藏,是什么原因?

    AD18原理圖生成PCB文件后,元件位號都自動隱藏了。不知道是什么原因,可能動了什么設(shè)置了,直恢復不過來。
    發(fā)表于 09-19 08:10

    怎樣設(shè)計研發(fā)一款高性能的智能太陽飲水機控制系統(tǒng)

    取之不盡、用之不竭,其次干凈無污染又是大特點,因此積極推廣太陽的應用具有重大意義。本設(shè)計將研發(fā)一款高性能的智能太陽飲水機控制系統(tǒng),產(chǎn)品
    發(fā)表于 12-08 08:00

    基于語音識別一款識別語音的App

    最近做了一款語音識別的App,想著利用手機控制arduino實現(xiàn)RGB的調(diào)節(jié),開發(fā)思路:基于訊飛語音識別一款
    發(fā)表于 03-01 07:05

    InletexEMC_一款小巧的屏幕共享軟件

    電子發(fā)燒友網(wǎng)站提供《InletexEMC_一款小巧的屏幕共享軟件.rar》資料免費下載
    發(fā)表于 05-15 14:26 ?2次下載

    Mozilla正在打造一款專門針對VR/AR頭盔上網(wǎng)用的瀏覽

    Mozilla,家以開發(fā)Firefox在線瀏覽器出名的軟件廠商,近日公布他們正在打造一款專門針對VR/AR頭盔上網(wǎng)用的瀏覽器 - Fire
    發(fā)表于 08-23 14:23 ?870次閱讀

    Mozilla正在開發(fā)一款用于VR、AR和MR設(shè)備的Firefox瀏覽

    Mozilla 在今年 4 月透露,他們正在開發(fā)一款用于 VR、AR 和 MR 設(shè)備的 Firefox 瀏覽器,現(xiàn)在,F(xiàn)irefox Reality 正式推出,用戶可以通過 Viveport、Oculus、Daydream 的應
    發(fā)表于 09-25 11:11 ?1101次閱讀

    新版火狐瀏覽器:一款專為VR開發(fā)的網(wǎng)絡(luò)瀏覽

    今年早些時候,火狐瀏覽器Firefox的開發(fā)者Mozilla宣布,他們正在開發(fā)一款新版本的火狐瀏覽器,這款瀏覽器專為VR和AR頭戴設(shè)備設(shè)計
    發(fā)表于 10-01 16:30 ?3646次閱讀

    繼綠光瀏覽器、Tuber瀏覽器后,小編又發(fā)現(xiàn)一款神級APP

    現(xiàn)如今最受年輕人喜歡的莫過于瀏覽軟件,隨意的打開手機都可以看到琳瑯滿目的APP。都2021年了,一款真正好用的APP瀏覽器是什么樣的呢?繼綠光瀏覽器,Tuber
    發(fā)表于 09-30 11:22 ?2.1w次閱讀
    繼綠光<b class='flag-5'>瀏覽</b>器、Tuber<b class='flag-5'>瀏覽</b>器后,小編又發(fā)現(xiàn)<b class='flag-5'>一款</b>神級APP