在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

如何實現基于SSD神經網絡構建實時手部檢測

zhKF_jqr_AI ? 來源:未知 ? 作者:佚名 ? 2017-12-22 08:00 ? 次閱讀

來源:Victor Dibia編譯:weakish

編者按:傳統的追蹤檢測物體方法大多基于規則,面對一些復雜情況時(光照、遮蔽、視角)表現不佳。而快速神經網絡的興起,使神經網絡應用于實時物體追蹤檢測成為可能。IBM研究院研究員(Research Staff Member)Victor Dibia在本月初發文介紹了如何使用Tensorflow框架基于SSD神經網絡構建實時手部檢測器。

本文記錄了使用Tensorflow(Object Detection API)訓練一個手部檢測器的步驟和代碼。我主要感興趣的是實時檢測桌子上的手。我希望本文能夠展示如何將神經網絡應用于追蹤手部(第一人稱視角和其他視角),并取得良好的結果。

可以從Github獲取所有的代碼(包括訓練好的模型)。

下圖是檢測器的實時演示:

和任何基于DNN/CNN的任務一樣,流程中成本最高的(也是風險最大的)部分是尋找或創建正確的(標注過的)數據集。我首先嘗試了牛津手部數據集進行了實驗(結果不好)。我接著嘗試了Egohands數據集,這個數據集更符合我的需求(第一人稱視角、高質量圖像、手部標注)。

一些fps數字:

21 FPS使用320 * 240圖像,運行時無可視化結果。

16 FPS使用320 * 240圖像,運行時可視化結果

11 FPS使用640 * 480圖像,運行時可視化結果(上圖)

以上數據是在MacBook ProCPU(i7,2.5GHz,16GB)上測試的結果。

動機——為什么使用神經網絡追蹤/檢測手部?

計算機視覺領域現在有若干追蹤方法。湊巧的是,其中許多方法是基于規則的(例如,基于紋理和邊界特征來提取背景,使用色彩直方圖和HOG分類器來區分手和背景等),因而它們的魯棒性不是非常好。例如,如果背景不同尋常,或者照明條件的急劇變化導致了膚色的急劇變化或追蹤物被遮蔽,這些算法可能會很困惑。(可以參考這篇關于HCI領域估計手部姿態的綜述:https://www.cse.unr.edu/~bebis/handposerev.pdf)。

快速移動或者手部角度比較特殊時會出現檢測不到的情況

有了足夠大的數據集,神經網絡提供了訓練表現良好的模型的機會,同時應對了現有對象追蹤/檢測算法的挑戰——多樣化的/差的照明條件,多化的視角甚至遮蔽。神經網絡用于實時跟蹤/檢測的主要缺陷是,它們可能是很復雜的,與僅作追蹤的算法比相對較慢,并且收集一個精良的數據集成本可能相當高。但隨著神經網絡的快速發展,情況正在改變。

此外,深度學習框架(例如tensorflow的Object Detection API)簡化了針對自定義物體檢測的模型的訓練過程,使這個領域的工作變得更加容易上手。更重要的是,ssd、faster r-cnn、rfcn等快速神經網絡模型如ssd,更快的r-cnn,rfcn(見這里)等的出現使神經網絡成為實時檢測(和追蹤)應用的有吸引力的候選者。在HCI領域(如輸入設備等),有很多像這樣的魯棒性很強的手部追蹤應用。

如果你對訓練檢測器的過程不感興趣,你可以直接跳到應用模型檢測手部的那節。

噪雜背景和遮蔽

訓練模型是一個多階段過程(匯總數據集、清洗,分割訓練、測試集并生成推理圖)。雖然我簡要描述了這些部分的細節,但還有其他一些教程更詳細地介紹如何使用tensorflow Object Detection API。如果對從頭開始訓練一個定制的檢測器感興趣,我建議你通讀這些教程。

Tensorflow的數據預備和網絡訓練

Egohands數據集

手部檢測器模型使用了Egohands數據集中的數據的。這個數據集效果不錯的原因有幾個。 它包含優質的像素級別標注(> 15000個摳像標注),其中有4800張圖像包含手部。所有的圖像都是基于第一人稱視角(Google glass)拍攝的,這些圖像取自48個不同的環境(室內,室外)和活動(玩紙牌,下國際象棋,搭積木,解決謎題等)。如果你將使用Egohands數據集,可以按如下方式引用它:

Bambach, Sven, et al. “Lending a hand: Detecting hands and recognizing activities in complex egocentric interactions.” Proceedings of the IEEE International Conference on Computer Vision. 2015.

Egohands數據集用多邊形(白點)圈出了每只手

Egohands數據集(包含標注數據的zip文件)包含48個文件夾,每個文件夾對應于視頻采集的地點(每個文件夾包含100張圖片)。


— LOCATION_X

— frame_1.jpg

— frame_2.jpg

— frame_100.jpg

— polygons.mat // 標注

— LOCATION_Y

— frame_1.jpg

— frame_2.jpg

— frame_100.jpg

— polygons.mat // 標注

轉換數據至Tensorflow格式

首先需要將Egohands數據集轉換為適用于Tensorflow的格式(tfrecord)。Github 倉庫中包含一個egohands_dataset_clean.py腳本,它可以幫助生成這些csv文件。

下載egohands數據集

重命名所有文件,在文件名中包含其目錄名稱,以確保每個文件名都是唯一的

將數據集分成訓練(80%)和測試(20%)兩個文件夾。

讀入每個文件夾中的“polygons.mat”,生成包圍盒,并將其可視化以確保正確。

一旦腳本運行完畢,你應該有一個包含訓練和測試文件夾的圖像文件夾。每個文件夾中還應該包含一個用于生成tfrecords的csv標注文件,文件名分別為train_labels.csv和test_labels.csv。

接著,將數據集和csv文件轉換為tfrecord。請參考Harrison提供的教程了解如何轉換(https://pythonprogramming.net/creating-tfrecord-files-tensorflow-object-detection-api-tutorial/)。如果你在本地訓練,這個教程還介紹了如何在本地啟動培訓進程。如果你使用GCP之類的服務在云端訓練,請參考這個教程(https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/running_on_cloud.md)。

注意:雖然egohands數據集為手部提供了四個單獨的標簽(自己的左手、自己的右手、他人的左手、他人的右手),但本文只對一般的“手”感興趣,因此上面的腳本將所有的訓練數據都標記為“手”。你可以修改訓練腳本以生成支持4個標簽的tfrecord。

訓練手部檢測模型

預備好數據集后,接下來的任務就是在這個數據集上訓練模型。我們可以使用遷移學習來縮短訓練整個模型所需的時間。這意味著我們可以找一個已經在相關的領域(這里是圖像分類)訓練過的現有模型,并重新訓練它最后一層或幾層網絡來檢測手部。棒!考慮到神經網絡有時候有幾千甚至幾百萬參數,這些參數可能需要幾周或幾個月的時間來訓練,遷移學習有助于縮短訓練時間,可能縮短到幾小時。實際上,Tensorflow就提供了一些模型(在tensorflow model zoo),我選擇ssd_mobilenet_v1_coco模型作為起點,因為它是目前最快的機型(之一,參見SSD研究論文),訓練過程可以在你本地的CPU機器上完成,這可能需要一段時間,或者在(云)GPU機器上訓練,這樣快很多(我正是這么做的)。作為參考,在我的MacBook Pro(從源碼編譯tensorflow以充分利用mac的cpu架構的特性)上,我取得的最大訓練速度是每步5秒,而在GPU上則是每步 0.5秒。也就是說,在我的mac(i7,2.5GHz,16GB)上運行20萬步需要約12天,而在GPU上需要約5小時。

隨著訓練過程的進展,我預期總損失(錯誤)會降低到可能的最小值(大約為1或更低)。通過觀察tensorboard圖形上顯示的總損失(見下圖),應該可以了解到訓練過程何時完成(總損失不會因更多迭代/步驟而下降)。我運行了20萬步訓練(花了大約5小時),在總損失(錯誤)值2.575處停止訓練。(現在反思一下,我本可以在大約5萬步處停止訓練,總損失值也差不多)。使用tensorflow,你還可以并發運行評估,評估你的模型在測試數據上的表現。衡量表現的常用指標是平均精確率(mean average precision,mAP),它是一個總結精度-召回曲線下面積的數字。mAP是衡量模型表現的度量,模型的表現指生成與我們的測試數據集中的摳像包圍盒至少有50%重疊區域的包圍盒。對于這里訓練的手部檢測器,mAP值為0.9686@0.5IOU。mAP取值范圍為0-1,越高越好。

最終的損失值為2.275,mAP為0.9686

訓練完成后,導出訓練好的推理圖(frozen_inference_graph.pb)(具體步驟參見前文提到的教程),將其保存在hand_inference_graph文件夾中。現在是時候做一些有趣的檢測了。

使用檢測器檢測和追蹤手部

將檢測器應用到Youtube視頻

如果你還沒有安裝好Tensorflow,請依照這個教程安裝Tensorflow及其object detection api(https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/installation.md)。

檢測手部的一般步驟如下:

加載frozen_inference_graph.pb

讀取輸入圖像(來自實時視頻流、視頻文件或靜態圖像)

檢測手部并可視化包圍盒

GitHub倉庫中有兩個腳本,整合了以上步驟:

detect_multi_threaded.py:讀取攝像頭視頻輸入并進行檢測的多線程實現。

detect_single_threaded.py: 和上面的腳本一樣,只不過它是單線程的。適用于視頻文件。

最重要的,代碼倉庫中的frozen_inference_graph.pb包含了一個基于SSD訓練好的模型,你能很容易地將它導入你的tensorflow應用來檢測手部。

一些優化的想法

顯著提升表現的因素:

線程:從攝像頭讀取圖像是一個負擔很重的I/O事件,如果在主應用線程上運行它,可能會減慢程序。我實現了Adrian Rosebuck的一些在多個工作線程上并行捕捉圖像的好想法。基本上,這增加了約5 FPS。

新接觸OpenCV的人可能沒考慮到cv2.read()方法返回BGR格式的圖像。 確保在檢測之前將其轉換為RGB(否則的話,精確率會大大降低)。

保證你的輸入圖像使用較小的尺寸將增加fps,同時不會帶來任何顯著的精確率下降(我使用了約320×240的圖像,而不是我的攝像頭默認提供的1280×720圖像)。

組合效果不錯的追蹤算法也能提升表現,我仍在嘗試這方面的優化。如果你有優化的想法,歡迎分享!

有很多手的隨機圖片顯示了檢測器的一些局限

注意:檢測器確實反映了與訓練集相關的一些限制。包括非第一人稱視角、非常嘈雜的背景(手山手海),有時甚至是膚色。使用更多的數據有機會改善這方面的表現。

集成多DNN

讓事情變得更有趣的一種方式是將我們對“手”的位置的新知識與經訓練用于識別其他物體的檢測器整合起來。不幸的是,雖然我們的手部檢測器確實可以檢測到手部,但它不能檢測到其他物體。 要創建一個可以分類多個不同對象的檢測器,意味著要為每個類預備一個數據集并進行訓練,這一過程將十分漫長。

因此,一個潛在的替代策略是探索允許我們高效地交錯用于多種物體的多個預訓練模型的結構,并讓它們檢測單個圖像上的多個物體。

舉例來說,我有興趣了解桌子上的物體相對于同一張桌子上的手的位置。我目前正在研發一個多線程應用,該應用加載多個檢測器,在一張圖像上輸出多個包圍盒。很快我會在后續的文章中介紹這方面的內容。

致謝

這個成果對我而言也是一次緊張的學習Python和Tensorflow的周末課程。沒有Egohands數據集的話,這一切都是不可能的,非常感謝作者們![Harrison][pythongramming]和Dat Tran的tensorflow自定義對象檢測教程對這個學習過程極有幫助。當然,非常感謝Tensorflow的作者們!它是一個很棒的框架!

引用本教程

如果你打算引用本教程:

Victor Dibia, Real-time Hand-Detection using Neural Networks (SSD) on Tensorflow, (2017), GitHub repository。


@misc{Dibia2017,

author = {Victor, Dibia},

title = {Real-time HandTrackingUsing SSD on Tensorflow },

year = {2017},

publisher = {GitHub},

journal = {GitHub repository},

howpublished = {url{https://github.com/victordibia/handtracking}},

commit = {b523a27393ea1ee34f31451fad656849915c8f42}

}

歡迎通過Twitter、Github和Linkedin與作者交流。

參考文獻

Bambach, S., Lee, S., Crandall, D. J., and Yu, C. 2015.“Lending A Hand: Detecting Hands and Recognizing Activities in Complex Egocentric Interactions,”in ICCV, pp. 1949–1957

Erol, A., Bebis, G., Nicolescu, M., Boyle, R. D., and Twombly, X. 2007. “Vision-based hand pose estimation: A review,” Computer Vision and Image Understanding (108:1–2), pp. 52–73 (doi: 10.1016/j.cviu.2006.10.012).

Liu, W., Anguelov, D., Erhan, D., Szegedy, C., Reed, S., Fu, C. Y., and Berg, A. C. 2016. “SSD: Single shot multibox detector,” in European conference on computer vision (Vol. 9905 LNCS), Springer Cham, pp. 21–37 (doi: 10.1007/978-3-319-46448-0_2).

Betancourt, A., Morerio, P., Regazzoni, C. S., and Rauterberg, M. 2015. “The Evolution of First Person Vision Methods: A Survey,” IEEE Transactions on Circuits and Systems for Video Technology (25:5), pp. 744–760 (doi: 10.1109/TCSVT.2015.2409731)

GitHub地址:https://github.com/victordibia/handtracking

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 神經網絡
    +關注

    關注

    42

    文章

    4771

    瀏覽量

    100766
  • SSD
    SSD
    +關注

    關注

    21

    文章

    2862

    瀏覽量

    117423
  • tensorflow
    +關注

    關注

    13

    文章

    329

    瀏覽量

    60536

原文標題:基于SSD神經網絡實時檢測手部

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

收藏 人收藏

    評論

    相關推薦

    如何構建多層神經網絡

    構建多層神經網絡(MLP, Multi-Layer Perceptron)模型是一個在機器學習和深度學習領域廣泛使用的技術,尤其在處理分類和回歸問題時。在本文中,我們將深入探討如何從頭開始構建一個多層
    的頭像 發表于 07-19 17:19 ?863次閱讀

    如何構建三層bp神經網絡模型

    能力。本文將介紹如何構建三層BP神經網絡模型。 神經網絡基礎知識 2.1 神經元模型 神經元是神經網絡
    的頭像 發表于 07-11 10:55 ?494次閱讀

    遞歸神經網絡實現方法

    (Recurrent Neural Network,通常也簡稱為RNN,但在此處為區分,我們將循環神經網絡稱為Recurrent RNN)不同,遞歸神經網絡更側重于處理樹狀或圖結構的數據,如句法分析樹、自然語言的語法結構等。以下將從遞歸
    的頭像 發表于 07-10 17:02 ?329次閱讀

    如何在FPGA上實現神經網絡

    隨著人工智能技術的飛速發展,神經網絡作為其核心組成部分,已廣泛應用于圖像識別、語音識別、自然語言處理等多個領域。然而,傳統基于CPU或GPU的神經網絡計算方式在實時性、能效比等方面存在諸多挑戰。現場
    的頭像 發表于 07-10 17:01 ?2000次閱讀

    BP神經網絡和人工神經網絡的區別

    BP神經網絡和人工神經網絡(Artificial Neural Networks,簡稱ANNs)之間的關系與區別,是神經網絡領域中一個基礎且重要的話題。本文將從定義、結構、算法、應用及未來發展等多個方面,詳細闡述BP
    的頭像 發表于 07-10 15:20 ?1071次閱讀

    PyTorch神經網絡模型構建過程

    PyTorch,作為一個廣泛使用的開源深度學習庫,提供了豐富的工具和模塊,幫助開發者構建、訓練和部署神經網絡模型。在神經網絡模型中,輸出層是尤為關鍵的部分,它負責將模型的預測結果以合適的形式輸出。以下將詳細解析PyTorch中
    的頭像 發表于 07-10 14:57 ?502次閱讀

    神經網絡預測模型的構建方法

    神經網絡模型作為一種強大的預測工具,廣泛應用于各種領域,如金融、醫療、交通等。本文將詳細介紹神經網絡預測模型的構建方法,包括模型設計、數據集準備、模型訓練、驗證與評估等步驟,并附以代碼示例。
    的頭像 發表于 07-05 17:41 ?666次閱讀

    rnn是遞歸神經網絡還是循環神經網絡

    RNN(Recurrent Neural Network)是循環神經網絡,而非遞歸神經網絡。循環神經網絡是一種具有時間序列特性的神經網絡,能夠處理序列數據,具有記憶功能。以下是關于循環
    的頭像 發表于 07-05 09:52 ?577次閱讀

    遞歸神經網絡是循環神經網絡

    遞歸神經網絡(Recurrent Neural Network,簡稱RNN)和循環神經網絡(Recurrent Neural Network,簡稱RNN)實際上是同一個概念,只是不同的翻譯方式
    的頭像 發表于 07-04 14:54 ?759次閱讀

    神經網絡的基本原理及Python編程實現

    神經網絡作為深度學習算法的基本構建模塊,模擬了人腦的行為,通過互相連接的節點(也稱為“神經元”)實現對輸入數據的處理、模式識別和結果預測等功能。本文將深入探討
    的頭像 發表于 07-03 16:11 ?666次閱讀

    卷積神經網絡實現原理

    卷積神經網絡(Convolutional Neural Networks,簡稱CNN)是一種深度學習模型,廣泛應用于圖像識別、視頻分析、自然語言處理等領域。本文將詳細介紹卷積神經網絡實現原理、結構
    的頭像 發表于 07-03 10:49 ?551次閱讀

    卷積神經網絡的原理與實現

    1.卷積神經網絡(Convolutional Neural Networks,簡稱CNN)是一種深度學習模型,廣泛應用于圖像識別、視頻分析、自然語言處理等領域。 卷積神經網絡是一種前饋神經網絡,其
    的頭像 發表于 07-02 16:47 ?576次閱讀

    使用PyTorch構建神經網絡

    PyTorch是一個流行的深度學習框架,它以其簡潔的API和強大的靈活性在學術界和工業界得到了廣泛應用。在本文中,我們將深入探討如何使用PyTorch構建神經網絡,包括從基礎概念到高級特性的全面解析。本文旨在為讀者提供一個完整的、技術性的指南,幫助理解并實踐PyTorch
    的頭像 發表于 07-02 11:31 ?713次閱讀

    基于神經網絡算法的模型構建方法

    神經網絡是一種強大的機器學習算法,廣泛應用于各種領域,如圖像識別、自然語言處理、語音識別等。本文詳細介紹了基于神經網絡算法的模型構建方法,包括數據預處理、網絡結構設計、訓練過程優化、模
    的頭像 發表于 07-02 11:21 ?542次閱讀

    構建神經網絡模型方法有幾種

    構建神經網絡模型是深度學習領域的核心任務之一。本文將詳細介紹構建神經網絡模型的幾種方法,包括前饗神經網絡、卷積
    的頭像 發表于 07-02 10:15 ?353次閱讀
    主站蜘蛛池模板: 色婷婷影视 | 亚洲成人午夜影院 | 免费性网站 | 黄色字幕网 | 亚欧色视频在线观看免费 | 免费高清一级欧美片在线观看 | 天天摸夜班摸天天碰 | 黄视频网站在线 | 国产人成精品香港三级古代 | 午夜影视在线观看 | 初恋视频黄色 | 亚洲影视久久 | 亚洲午夜免费 | 久久天天综合 | 奇米888在线看奇米999 | 久久99国产精品久久99 | 97人人模人人揉人人捏 | 天天久久影视色香综合网 | 国产精品午夜在线观看 | 日韩一级欧美一级在线观看 | 欧美日韩视频综合一区无弹窗 | 亚洲伊人久久大香线蕉结合 | 天堂中文资源在线地址 | 日韩美毛片 | 亚洲卡5卡6卡7国色天香 | 国产午夜精品福利 | 亚洲综合校园春色 | 亚洲天堂h| a天堂在线观看 | 亚洲成人在线网站 | 1024 cc香蕉在线观看看中文 | 牛仔裤美女国产精品毛片 | 很黄很污的视频网站 | 播五月综合 | 日本精品视频四虎在线观看 | 国产精品高清久久久久久久 | 国产美女亚洲精品久久久久久 | 天天涩综合 | 欧美一区二区三区综合色视频 | 久久怡红院国产精品 | 夜干夜夜 |