手勢識別實踐 | DIY應用到剪刀石頭布機器人(附代碼)

2021-02-15 計算機視覺研究院

本次所有代碼都是「深度學習DIY」博主貢獻,主要是手勢識別應用到簡單的機器人。有興趣的同學可以關注獲取原始碼!

回家看到小外甥存了很多零用錢,作為舅舅,最近手頭有點緊。於是經過幾天的籌劃,決定製作一個剪刀石頭布機器人,向小外甥挑戰。以小外甥好勝的性格,一定會欣然應答。然後憑藉神經網絡出色的性能,贏光他的零花錢不是問題。。。嘿嘿,想想還有點美呢。

首先展示下最終的成果:

上面這個是做好的成品,效果不錯,小外甥被忽悠的一愣一愣,輕鬆拿下他的存錢罐。

2. 原理介紹

主要就是一個圖像分類的神經網絡。通過攝像頭,判斷小外甥出拳一瞬間的手型,然後根據規則顯示克制他的手型即可。例如攝像頭檢測到小外甥出了剪刀,那麼機器人就出一個布,只要模型訓練的好,妥妥的百戰百勝。

——數據收集——

用過深度學習的人都知道,這貨需要訓練數據,而且越多越好,各種背景,光照,遠近最好都能擼一些圖片,這樣模型的魯棒性就會很好。我編寫了一個python代碼,配合opencv調用攝像頭來獲取手勢圖片。將剪刀的標籤設為0,石頭的標籤設為1,布的標籤設為2,每種採集1000張圖片左右。如下圖所示:

剪刀(0)對應的數據

石頭(1)對應的數據

布(2)對應的數據

此時我們已經收集好了需要訓練的數據,那麼下一步就是設計網絡了。

——網絡設計——

由於只需要判斷三種手勢,所以一個分類網絡就足夠了,考慮到電腦的CPU能力有限,為了實現實時的檢測,需要一個輕量級的分類網絡。開源的mobilent系列,shufflenet系列,efficeentlite等都是很好的選擇。這裡我選擇了shufflenetV2版本。通過實際測試,這個網絡的效果最好。shufflenetv2的結構圖如下圖所示:

shufflenetv2提供了一個通道係數來平衡速度和精度。如上面表格中的0.5X,1X,1.5X,2X所示。這裡我選擇使用0.5X的通道係數,參數量只有1.4M,計算量只有41M,在筆記本的CPU上面足夠實現實時的檢測。

下圖a展示了基本ResNet輕量級結構,這是一個包含3層的殘差單元:首先是1x1卷積,然後是3x3的depthwise convolution(DWConv,主要是為了降低計算量),這裡的3x3卷積是瓶頸層(bottleneck),緊接著是1x1卷積,最後是一個短路連接,將輸入直接加到輸出上。

下圖b展示了改進思路:將密集的1x1卷積替換成1x1的group convolution,不過在第一個1x1卷積之後增加了一個channel shuffle操作。值得注意的是3x3卷積後面沒有增加channel shuffle,按paper的意思,對於這樣一個殘差單元,一個channel shuffle操作是足夠了。還有就是3x3的depthwise convolution之後沒有使用ReLU激活函數。

下圖c展示了其他改進,對原輸入採用stride=2的3x3 avg pool,在depthwise convolution卷積處取stride=2保證兩個通路shape相同,然後將得到特徵圖與輸出進行連接(concat,借鑑了DenseNet?),而不是相加。極致的降低計算量與參數大小。

——網絡訓練——

訓練選擇使用pytorch框架,因為pytorch基於動態圖機制,調試簡單,而且訓練速度也比較快,在我的筆記本上面,訓練了半個小時,就能達到0.99的top1精度。下圖是訓練的loss和top1曲線圖。

——模型部署——

其實直接使用pytorch進行推理也是可以的,知識pytorch的推理速度一般,因為網絡沒有做優化(量化以及層的融合),所以這裡採用一種更為普遍的方式進行推理。轉換成ncnn模型,使用騰訊開源的ncnn庫進行推理。ncnn庫的官方地址為:https://github.com/Tencent/ncnn

騰訊優圖ncnn是騰訊社交網絡事業群公布的首個AI開源項目,也是騰訊優圖實驗室第一次對外公開深度學習的研究成果。ncnn於2017年7月正式開源,作為一個為手機端極致優化的高性能神經網絡前向計算框架,在設計之初便將手機端的特殊場景融入核心理念,是業界首個為移動端優化的開源神經網絡推斷庫。ncnn無第三方依賴,跨平臺,在手機端cpu運算速度在開源框架中處於領先水平。基於該平臺,開發者能夠輕鬆將深度學習算法移植到手機端,輸出高效的執行,進而產出人工智慧APP,將AI技術帶到用戶指尖。

不同框架間的模型轉換是目前AI項目應用落地的一大痛點。ONNX是Facebook主推的開放文件格式,pytorch/caffe2原生支持。作為目前已知同類框架中CPU運算最快的ncnn,不僅具有最小的安裝包體積,還擁有最佳的跨平臺兼容性。在ncnn支持ONNX格式轉換後,pytorch/caffe2訓練的模型便能通過平臺輕鬆部署到手機端。與此同時,ncnn也能藉助ONNX良好的項目生態,對眾多框架和運行庫的高兼容性,以及結構定義清晰的ONNX格式,進一步降低各框架間的轉換成本,促進AI移動端生態的創新和部署。

據統計,目前Googleplay商店已有QQ、微信、微視、京東、支付寶、愛奇藝、美顏相機、快手短視頻、LIKE短視頻、玩美彩妝等超過30款APP,選用ncnn作為手機CNN推斷庫,實現包括人臉檢測跟蹤、人臉配準、人臉識別、人體檢測跟蹤、人體姿態估計、圖像分類、圖像美化、目標分割、風格畫生成、物體檢測、文本檢測和識別等AI場景應用。


京東APP使用ncnn


支付寶APP使用ncnn

騰訊一直以來秉承「開放」戰略,不斷推動技術研發向共享、復用和開源邁進。截至目前,騰訊正式發布的開源項目共計58個。今年3月,憑藉在AI開源領域卓越的技術影響,騰訊受邀成為LF深度學習基金會初始白金會員,與基金會共同維護、支持和推動人工智慧領域的技術開源和革新。

騰訊優圖ncnn(https://github.com/Tencent/ncnn)作為騰訊代表性的AI開源項目之一,將持續為人工智慧發展助力,促進深度學習研究成果的落地應用。

轉入正題:

將ncnn模型封裝成一個動態庫,這樣可以使用python直接調用。然後結合pyqt,opencv來實現最終的剪刀石頭布機器人。opencv負責讀取攝像頭並解碼,ncnn庫負責對解碼後的攝像頭畫面進行圖像分類,然後根據分類結果,找到克制手勢,例如檢測到「剪刀」,就出「石頭」,然後將圖像展示在pyqt上面。

我們開創「計算機視覺協會」知識星球一年有餘,也得到很多同學的認可,我們定時會推送實踐型內容與大家分享,在星球裡的同學可以隨時提問,隨時提需求,我們都會及時給予回復及給出對應的答覆。

如果想加入我們「計算機視覺研究院」,請掃二維碼加入我們。我們會按照你的需求將你拉入對應的學習群!
計算機視覺研究院主要涉及深度學習領域,主要致力於人臉檢測、人臉識別,多目標檢測、目標跟蹤、圖像分割等研究方向。研究院接下來會不斷分享最新的論文算法新框架,我們這次改革不同點就是,我們要著重」研究「。之後我們會針對相應領域分享實踐過程,讓大家真正體會擺脫理論的真實場景,培養愛動手編程愛動腦思考的習慣!

相關焦點

  • 從心理學角度看《王牌對王牌》中的「剪刀石頭布」遊戲
    不過,遊戲環節的「剪刀石頭布」但是引起了我的興趣。這不是個新遊戲,甚至不是賈玲和沈騰在旁邊插科打諢,大家甚至會覺得很無聊(花花、曉彤和丫丫的大長腿也功不可沒)。剪刀石頭布通常被當作一種概率隨機的遊戲,遊戲規則非常簡單,布能包住石頭,石頭可以砸剪刀,而剪刀是布的剋星。但是這個遊戲真的像人們想像的那樣隨機嗎?
  • 乘風破浪姐姐們的石頭、剪刀、布
    本文只供娛樂~石頭、剪刀、布出了很多理論,類似的有&34;、《進化心理學》、《教父》、《邪惡的力量》、娃學……理論千變萬化,以往鑑來,各有千秋。第一次三個姐姐為了十號牌,來了一次石頭剪刀布的決斷。,是用一種雖然我想要,但我也能謙讓的心態,在意自己的風度;海陸直挺挺出了拳頭,不管從手勢還是姿勢,都說明了她是一個表裡如一的人,心裡想什麼,外在就表露什麼;相比起其他兩個姐姐,她也沒有比她們來得更想要十號,而是她在意的是比拼的目的,其他兩個姐姐在意的是風度;所以她贏了。
  • 剪刀石頭布
    成都街頭一輛私家車與計程車發生剮蹭,兩名司機對賠償金額產生爭議,隨後用剪刀石頭布來解決問題。最終,計程車司機勝出,私家車司機也爽快兌現承諾。看到這個視頻和相關報導時,不禁莞爾。有多少人在童年時代玩過這個遊戲啊!「躲貓貓」、「官兵捉強盜」,兄弟姐妹吃好夜飯啥人汏碗筷,一本「小人書」借來後你我同桌誰先看,不必嚕囌不許賴,只靠剪刀石頭布,這樣的片段多了去了。
  • 經典的「剪刀」、「石頭」、「布」,猜拳的日文說法
    如果你的日文老師是個日本人,很有可能你曾在上課中作為趣味日語學習到,沒錯,日文裡的猜拳就叫じゃんけんぽん,一般我們都簡稱它為じゃんけん。(我們猜拳時,不是都會講剪刀、石頭、布後才出手勢嗎?日本的話他們則是講じゃんけんぽん後才出手勢,這個吆喝聲在日文裡就叫掛け聲(かけごえ))
  • 剪刀石頭布家居深入分析2020奢品家具大賞
    關於2020年度奢品家具大賞,剪刀石頭布家居從全球TOP5最受歡迎家居大牌的品牌實力分析,到熱銷家具單品TOP10的設計鑑賞,一睹義大利進口家具的奢華風採。 剪刀石頭布家居 | 2020年度最受歡迎家居大牌TOP5 01、ARMANI CASA 時尚家居大牌ARMANI CASA尤為注重簡約和優雅的設計表達,品牌善於將不同材質
  • 兒歌學英語主題6 - 剪刀石頭布
    好了,回到今天的兒歌學英語主題- 剪刀石頭布。歌詞:Rock, scissors, paper. Rock, scissors, paper. One, two, three. Play with me. Right hand PAPER! Left hand PAPER!
  • 潛水底打麻將避暑奇招 剪刀石頭布取代擲骰子(圖)
    潛水底打麻將避暑奇招 剪刀石頭布取代擲骰子(圖) 字號:小大 2013-08-14 10:44作者:張曉穎 來源:新華報業網 我要評論()
  • 剪刀、石頭、布中的愛情密碼
    純真的回憶     青澀的童年     美好的愛情     ··· ···     從小玩到大的剪刀石頭布     剪刀、石頭、布中的愛情密碼!再次回望,不由得感覺時光飛逝。那時候的我們,愛笑愛玩,你總出剪刀、我出布讓你~
  • 石頭——剪刀——布,《賭博默示錄》中的博弈論
    -剪刀-布的遊戲。、剪刀、布每種各4張牌和三顆星星。、石頭,本局就很可能用多出來的布。這局的心理戰是,上一局開司故意落敗,對方發現開司已經連出兩張剪刀,認為剩下的兩張絕不可能是剪刀(他以自己均衡的習慣揣摩開司),而是一張石頭一張布,或者兩張石頭,或兩張布。那麼他只要出布就立於不敗之地。結果對方出布,開司繼續出剪刀,開司贏。
  • 剪刀石頭布其實是一場智力對抗
    你造嗎?這個看似簡單公平的遊戲其實暗藏玄機!1.從習慣來看出於睪丸激素選擇,男性更習慣於掌控,所以在第一輪出象徵掌握、抓住的「石頭」的機率很大,而「布」代表接納、放手,喜歡出布的人很少。所以,在第一輪對決中,女性要贏,出布是首選。
  • 「石頭,剪刀,布」!宏碁全球發布會,產品線全面升級
    2020年6月23日晚9點,「石頭,剪刀,布」2020宏碁全球新品發布會雲召開,眾多新品驚豔亮相!
  • 剪刀石頭布家居-Fendi Casa帝幔旗艦店開業
    剪刀石頭布家居因其一流的設施環境、極致尊榮的優質服務以及良好的口碑,屢次榮獲「全國五星級家紡布藝零售商場」稱號,並蟬聯「上海市著名商標」。作為家居行業翹楚而深受消費者喜愛,更贏得眾多國際一流家居廠商青睞。剪刀石頭布家居以客制化的貴賓服務為經營理念,定位於中高檔消費群體,致力於高品位的消費環境,甄選優質品牌與產品。
  • 剪刀!石頭!布!「猜拳遊戲」首發
    猜拳,大家都不陌生了,就是小候玩的剪刀石頭布,也有地方叫做虎棒雞蟲令,既老虎吃雞,雞吃蟲,蟲吃虎,三者相剋。不倒翁,也是兒時常見的玩具,推它一把就能搖上許久,足夠吸引小朋友的注意力。「猜拳遊戲」 玩具規格:高度:5.5-6cm材質:sofubi塗裝:手工上色售價:220RMB /套(含3個不倒翁,內附一張神秘卡片)發售方式1:2020年4月3日14:00,
  • FENDI CASA首款電動沙發登陸剪刀石頭布家居
    上海2018年6月1日電 /美通社/ -- 2018年6月,剪刀石頭布家居帝幔進口家具奢品館引領全球潮流,發布FENDI CASA兼具極致奢華和舒適體驗的首款功能型家具 -- ABBRACCIO電動沙發,這也是FENDI CASA首次涉足智能家居領域所推出的產品,實現了奢侈品家居界「智能化」突破,佔據業界領導地位,具有重要的歷史意義
  • 贏得「剪刀石頭布」的簡單方法
    01石頭剪刀布想要贏得「剪刀、石頭、布」遊戲的方法很簡單。只要在玩之前問對方一個問題,然後立刻開始喊「剪刀、石頭、布」的口號,對方幾乎都會出剪刀。07密碼一般人的密碼不會超過3個,即使他有過很多個,最後也會縮小到2、3個的。08魔力價格一個比整數稍低的價格,叫做「魔力價格」。
  • 《紺青之拳》最新海報:三位主角,剪刀石頭布,誰在上?誰在下?
    《名偵探柯南》2019年劇場版《紺青之拳》又公開最新視覺海報,這一次是橫版,怪盜基德、江戶川柯南、京極真,三位角色分別比出:剪刀、布、石頭的手勢。以你玩剪刀石頭布的遊戲規則,誰在上?誰在下?(最二次元:本文為百家號獨家內容,禁止以任何形式轉載到其他平臺。)
  • 2020 PANTONE流行色趨勢,剪刀石頭布家居帶來「最in」經典藍
    近期,全新經典藍奢品家具已進駐剪刀石頭布家居·帝幔進口家具奢品館,想追隨2020年流行色趨勢、打造全新居家風情,就看剪刀石頭布家居這抹最in經典藍,如何為居家空間帶來沉靜效果,實現新一年的全屋煥新。而剪刀石頭布家居這些「藍調」元素的加入,讓「坐臥隨性,靜躺隨心」有了終極意義。
  • 小朱灣丨陽光下的剪刀石頭布,定格在美好時光
    2016年12月09日,武漢沃田生態的部分同志一起前往小朱灣,來了一場剪刀石頭布的大比拼。
  • "剪刀石頭布"的尷尬,黃奕版《回家的誘惑》尬出天際
    "剪刀石頭布"的尷尬,黃奕版《回家的誘惑》尬出天際想必大家都知道黃奕這個演員吧!她是一個非常優秀的老演員,出道多年也有不少的代表作,《上錯花轎嫁對郎》中的李玉湖,靈動活潑,《還珠格格三》中的小燕子,更讓大家認識到了一個新的小燕子,她的演技是沒的說的,更是不少人的童年女神,不過後來因為一些原因她退出來演藝圈,很多年都未曾在螢屏上看到她的作品,如今卻在綜藝《演員請就位2》見識她的演技。
  • 親子英語,小時候玩的剪刀石頭布、捉迷藏、過家家用英文是這麼說
    剪刀石頭布我們來玩剪刀石頭布吧。Let's play rock,paper,scissors.剪刀,石頭,布!Rock,paper,scissors,go!石頭只要這樣握住拳頭就可以了。You make a fist for rock like this.伸出兩根手指就是剪刀了。You put two fingers out, and that's scissors.