成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

在Python中使用OpenCV訓練神經網絡來檢測手勢!

在Python中使用OpenCV訓練神經網絡來檢測手勢!

10余年的四川網站建設經驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。成都全網營銷的優(yōu)勢是能夠根據(jù)用戶設備顯示端的尺寸不同,自動調整四川建站的顯示方式,使網站能夠適用不同顯示終端,在瀏覽器中調整網站的寬度,無論在任何一種瀏覽器上瀏覽網站,都能展現(xiàn)優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“四川網站設計”,“四川網站推廣”以來,每個客戶項目都認真落實執(zhí)行。

手勢→預測→行動

您可以在此處找到Github項目存儲庫中的代碼,或在此處查看最終的演示文稿幻燈片。

(github傳送門:

https://github.com/athena15/project_kojak

PPT傳送門:

https://docs.google.com/presentation/d/1UY3uWE5sUjKRfV7u9DXqY0Cwk6sDNSalZoI2hbSD1o8/edit#slide=id.g49b784d7df_0_2488)

靈感

想象一下,你正在舉辦一個生日聚會,每個人都玩的很開心,音樂也嗨到了極限,我們經常在抖音上看到的大聲呼喚天貓精靈、小米小愛等智能音響的場景,在這種時候就不起作用了,很可能它們根本聽不到你的聲音,基本上你也找不到遙控器,但如果這個時候你在談話當中張開一只手,某個手勢,你的智能家居設備就可以識別這種姿勢,關閉音樂,然后調亮燈光打到生日壽星的臉上。那確實是有點浪漫,也有點酷的。

背景

很長時間我都對手勢檢測感到好奇。我記得當?shù)谝徊课④汯inect問世的時候- 我只用一揮手就可以玩游戲并控制屏幕。慢慢地,谷歌主頁和亞馬遜Alexa等設備發(fā)布,似乎手勢檢測失去了語音的雷達的支持。不過,隨著Facebook門戶網站和亞馬遜回聲秀(Amazon Echo Show)等視頻設備的推出,我想看看是否有可能構建一個能夠實時識別我的手勢的神經網絡,并運行我的智能家居設備!

數(shù)據(jù)和我的早期模型

我對這個想法感到很興奮,并迅速采取了行動,就像我被射出大炮一樣。我開始在Kaggle.com上使用手勢識別數(shù)據(jù)庫,并探索數(shù)據(jù)。它由20,000個標記的手勢組成,如下面所示。

在Python中使用OpenCV訓練神經網絡來檢測手勢!

奇怪的圖像,但標簽豐富

當我閱讀圖像時,我遇到的第一個問題是我的圖像是黑白的。這意味著NumPy陣列只有一個通道而不是三個通道(即每個陣列的形狀是(224,224,1))。因此,我無法將這些圖像與VGG-16預訓練模型一起使用,因為該模型需要RGB的3通道圖像。這是通過在圖像列表上使用np.stack解決的,X_data:

在Python中使用OpenCV訓練神經網絡來檢測手勢!

一旦我克服了這個障礙,我就開始建立一個模型,使用一個訓練-測試分割,完全顯示照片10個人中的2個。在重新運行基于VGG-16架構的模型后,我的模型獲得了總體0.74的F1分數(shù)。這是非常好的,因為超過10個類的隨機猜測平均只能得到10%的準確率。

但是,訓練模型以識別來自同質數(shù)據(jù)集的圖像是一回事。另一個方法是訓練它以識別以前從未見過的圖像是另一種。我嘗試調整照片的光線,并使用深色背景- 模仿模特訓練過的照片。

我也嘗試過圖像增強——翻轉、傾斜、旋轉等等。雖然這些圖像比以前做得更好,但我仍然無法預測,而且在我看來是不可接受的——結果。我需要重新思考這個問題,并提出一種創(chuàng)造性的方法來使這個項目發(fā)揮作用。

要點:訓練你的模型,讓它盡可能接近真實世界中的圖像

重新思考問題

我決定嘗試新的東西。在我看來,訓練數(shù)據(jù)的奇怪外觀與我的模型在現(xiàn)實生活中可能看到的圖像之間存在明顯的脫節(jié)。我決定嘗試構建自己的數(shù)據(jù)集。

我一直在使用OpenCV,一個開源計算機視覺庫,我需要一個工程師一個解決方案,從屏幕上抓取一個圖像,然后調整大小并將圖像轉換成我的模型可以理解的NumPy數(shù)組。我用來轉換數(shù)據(jù)的方法如下:

在Python中使用OpenCV訓練神經網絡來檢測手勢!

簡而言之,一旦您啟動并運行相機,您可以抓取框架,對其進行轉換,并從模型中獲取預測:

在Python中使用OpenCV訓練神經網絡來檢測手勢!

在網絡攝像頭和我的模型之間的連接管道取得了巨大成功。我開始思考什么是理想的圖像,輸入到我的模型之中。一個明顯的障礙是很難將感興趣的區(qū)域(在我們的例子中,一只手)與背景區(qū)分開來。

提取手勢

我采用的方法是任何熟悉Photoshop的人都熟悉的方法- 背景減法。從本質上講,如果你在你的手進入場景中先拍了一張照片,你可以創(chuàng)建一個“蒙版”,除了你的手之外,它將刪除新圖像中的所有內容。

在Python中使用OpenCV訓練神經網絡來檢測手勢!

背景掩蔽和二進制圖像閾值

一旦我從我的圖像中減去背景,然后我使用二進制閾值使目標手勢完全變白,背景完全變黑。我選擇這種方法有兩個原因:它使手的輪廓清晰明了,這使得模型更容易在不同膚色的用戶之間進行推廣。這創(chuàng)造了我最終訓練模型的照片“輪廓”般的照片。

構建新數(shù)據(jù)集

現(xiàn)在我可以準確地檢測到我的手中的圖像,我決定嘗試新的東西。我的舊模型沒有很好地概括,我的最終目標是建立一個能夠實時識別我的手勢的模型- 所以我決定建立自己的數(shù)據(jù)集!

我選擇專注于5個手勢:

在Python中使用OpenCV訓練神經網絡來檢測手勢!

我策略性地選擇了4個手勢,這些手勢也包含在Kaggle數(shù)據(jù)集中,所以我可以在以后對這些圖像交叉驗證我的模型。

從這里開始,我通過設置我的網絡攝像頭來構建數(shù)據(jù)集,并在OpenCV中創(chuàng)建一個點擊綁定來捕獲和保存具有唯一文件名的圖像。我試圖改變幀中手勢的位置和大小,這樣我的模型就會更完善。很快,我建立了一個每個包含550個輪廓圖像的數(shù)據(jù)集。是的,你沒看錯,我拍攝了超過2700張圖片。

訓練新模型

然后我使用Keras和TensorFlow構建了一個卷積神經網絡。我開始使用優(yōu)秀的VGG-16預訓練模型,并在頂部添加了4個密集層和一個drop層。

然后,我采取了不尋常的步驟,選擇在我之前嘗試過的原始Kaggle數(shù)據(jù)集上交叉驗證我的模型。這是關鍵,如果我的新模型無法概括為之前沒有訓練過的其他人的手的圖像,那么它并不比我原來的模型好多少。

為了做到這一點,我將相同的變換應用到我應用于訓練數(shù)據(jù)的每個Kaggle圖像——背景減法和二進制閾值處理。這給了他們一個類似我的模型熟悉的“外觀”。

在Python中使用OpenCV訓練神經網絡來檢測手勢!

L,好吧,Palm轉換后的Kaggle數(shù)據(jù)集手勢

結果

該車型的性能超出了我的預期。它幾乎可以對測試集中的每個手勢進行正確分類,最終獲得98%的F1分數(shù),以及98%的精確度和準確度分數(shù)。這是個好消息!

正如任何經驗豐富的研究人員所知道的那樣,在實驗室中表現(xiàn)良好而在現(xiàn)實生活中表現(xiàn)不佳的模型價值不大。在我的初始模型遇到同樣的失敗后,這個模型在實時手勢上表現(xiàn)良好。

智能家居集成

在測試我的模型之前,我想補充一點,我一直都是一個智能家居愛好者,我的愿景一直是用我的手勢控制我的Sonos(無線wifi音箱)和飛利浦Hue燈。為了方便地訪問Philips Hue和Sonos API,我分別使用了phue和SoCo庫。它們都非常簡單易用,如下所示:

在Python中使用OpenCV訓練神經網絡來檢測手勢!

使用SoCo通過Web API控制Sonos可以說更容易:

在Python中使用OpenCV訓練神經網絡來檢測手勢!

然后,我為不同的手勢創(chuàng)建了綁定,以便使用我的智能家居設備執(zhí)行不同的操作:

在Python中使用OpenCV訓練神經網絡來檢測手勢!

當我最終實時測試我的模型時,我對結果非常滿意。模型在絕大部分時間都準確地預測了我的手勢,并且我能夠使用這些手勢來控制燈光和音樂。有關演示,請參閱:

在Python中使用OpenCV訓練神經網絡來檢測手勢!

來源:https://towardsdatascience.com/training-a-neural-network-to-detect-gestures-with-opencv-in-python-e09b0a12bdf1

分享名稱:在Python中使用OpenCV訓練神經網絡來檢測手勢!
文章起源:http://jinyejixie.com/article46/psipeg.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供手機網站建設、企業(yè)網站制作、域名注冊、網站建設、網站收錄虛擬主機

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

手機網站建設
远安县| 吉木乃县| 平陆县| 黄大仙区| 宾阳县| 化州市| 昭觉县| 隆尧县| 彭泽县| 淮北市| 油尖旺区| 察隅县| 新乡县| 无极县| 白朗县| 黑山县| 驻马店市| 宁阳县| 新晃| 无锡市| 光山县| 阿拉善左旗| 安溪县| 灯塔市| 莲花县| 赣榆县| 大邑县| 苍梧县| 桃园市| 西乌| 穆棱市| 延吉市| 博白县| 清新县| 封开县| 石狮市| 辉县市| 玉田县| 高雄市| 桂阳县| 霍州市|