自2012年起,谷歌在內(nèi)部的多個(gè)產(chǎn)品和服務(wù)中使用了它。它最初是為了實(shí)時(shí)分析YouTube上的視頻和音頻而開(kāi)發(fā)的。漸漸地,它被整合到更多的產(chǎn)品中,比如
- NestCam的感知系統(tǒng)
- 谷歌鏡頭的目標(biāo)檢測(cè)
- 增強(qiáng)現(xiàn)實(shí)廣告
- 谷歌圖片
- 谷歌Home
- Gmail
- 云視覺(jué)API等。
MediaPipe為我們?nèi)粘J褂玫母锩援a(chǎn)品和服務(wù)提供動(dòng)力。與資源消耗型的機(jī)器學(xué)習(xí)框架不同,MediaPipe只需要最少的資源。它是如此微小和高效,甚至嵌入式物聯(lián)網(wǎng)設(shè)備都可以運(yùn)行它。2019年,MediaPipe公開(kāi)發(fā)布后,為研究人員和開(kāi)發(fā)人員開(kāi)辟了一個(gè)全新的機(jī)會(huì)世界。
1. MediaPipe是什么?
MediaPipe是一個(gè)用于構(gòu)建機(jī)器學(xué)習(xí)管道的框架,用于處理視頻、音頻等時(shí)間序列數(shù)據(jù)。這個(gè)跨平臺(tái)框架適用于桌面/服務(wù)器、Android、iOS和嵌入式設(shè)備,如Raspberry Pi和Jetson Nano。
2. MediaPipe工具包
MediaPipe工具包包括框架和Solutions。下圖顯示了MediaPipe Toolkit的組件。
2.1框架
框架是用c++、Java和Obj-C編寫(xiě)的,包含以下api。
- Calculator API (C++).
- Graph construction API (Protobuf).
- Graph Execution API (C++, Java, Obj-C).
Graphs
MediaPipe感知管道稱(chēng)為Graph。讓我們以第一個(gè)solution為例,漢茲。我們輸入一串圖像作為輸入,然后在圖像上呈現(xiàn)手的landmarks。
下面的流程圖代表MP(簡(jiǎn)稱(chēng)MediaPipe)hand solution graph。
在計(jì)算機(jī)科學(xué)術(shù)語(yǔ)中,圖由邊連接的節(jié)點(diǎn)組成。在MediaPipe Graph內(nèi)部,節(jié)點(diǎn)稱(chēng)為Calculators,邊緣稱(chēng)為Streams。每個(gè)流都攜帶一個(gè)時(shí)間戳遞增的數(shù)據(jù)包序列
在上圖中,我們用矩形塊表示Calculators,用箭頭表示Streams。
Calculators(計(jì)算單元)
這些是用c++編寫(xiě)的特定計(jì)算單元,有分配的任務(wù)要處理。數(shù)據(jù)包(視頻幀或音頻段)通過(guò)計(jì)算單元的端口進(jìn)入和離開(kāi)。初始化計(jì)算器時(shí),它聲明將遍歷端口的數(shù)據(jù)包有效負(fù)載類(lèi)型。每當(dāng)圖形運(yùn)行時(shí),框架都會(huì)在計(jì)算器中實(shí)現(xiàn)Open、Process和Close方法。Open啟動(dòng)計(jì)算器;當(dāng)數(shù)據(jù)包進(jìn)入時(shí),這個(gè)過(guò)程重復(fù)運(yùn)行。整個(gè)圖形運(yùn)行后,進(jìn)程關(guān)閉。
例如,考慮上圖中顯示的第一個(gè)計(jì)算單元。計(jì)算單元ImageTransform在輸入端口獲取圖像,并在輸出端口返回轉(zhuǎn)換后的圖像。另一方面,第二個(gè)計(jì)算單元imageto張量,將圖像作為輸入,并輸出一個(gè)張量。
MediaPipe中的計(jì)算器類(lèi)型
上面顯示的所有計(jì)算單元都內(nèi)置在MediaPipe中。我們可以把它們分成四類(lèi)。
- 預(yù)處理計(jì)算單元是圖像和媒體處理計(jì)算單元族。上圖中的ImageTransform和imagetotensor就屬于這一類(lèi)
- 推理計(jì)算單元允許與Tensorflow和Tensorflow Lite進(jìn)行ML推理的本地集成。
- 后處理計(jì)算單元執(zhí)行ML后處理任務(wù),如檢測(cè)、分割和分類(lèi)。TensorToLandmark是一個(gè)后處理計(jì)算單元。
- 計(jì)算單元工具是執(zhí)行任務(wù)(如圖像注釋)的一類(lèi)計(jì)算單元
計(jì)算單元api允許您編寫(xiě)自己的自定義計(jì)算器。
2.2 MediaPipe Solutions
Solutions是基于特定的預(yù)訓(xùn)練TensorFlow或TFLite模型的開(kāi)源預(yù)構(gòu)建示例。您可以在這里查看Solutions方案特定的模型。MediaPipe Solutions構(gòu)建在框架之上。目前,它提供了16個(gè)Solutions,如下所示。
- 人臉檢測(cè)
- Face Mesh
- 虹膜
- 手
- 姿態(tài)
- 人體
- 人物分割
- 頭發(fā)分割
- 目標(biāo)檢測(cè)
- Box Tracking
- Instant Motion Tracking
- 3D目標(biāo)檢測(cè)
- 特征匹配
- AutoFlip
- MediaSequence
- YouTube-8M
3. 依賴(lài)
MediaPipe依賴(lài)OpenCV來(lái)處理視頻,F(xiàn)FMPEG來(lái)處理音頻數(shù)據(jù)。它還有其他依賴(lài)項(xiàng),如OpenGL/Metal、Tensorflow、Eigen等。
4. 開(kāi)始使用MediaPipe
我們建議您在開(kāi)始使用MediaPipe之前先對(duì)OpenCV有一個(gè)基本的了解。查看這個(gè)關(guān)于OpenCV入門(mén)的簡(jiǎn)化系列文章。
MediaPipe Python解決方案對(duì)于初學(xué)者來(lái)說(shuō)是最簡(jiǎn)單的,因?yàn)樵O(shè)置過(guò)程很簡(jiǎn)單,而且Python編程語(yǔ)言很流行。MediaPipe框架的模塊化支持定制。但在開(kāi)始定制之前,我們建議使用各種預(yù)構(gòu)建的解決方案。理解與它們相關(guān)的內(nèi)部api,然后調(diào)整輸出以創(chuàng)建令人興奮的應(yīng)用程序。
5.MediaPipe可視化工具
MediaPipe Visualizer提供了一種嘗試所有solutions的簡(jiǎn)單方法。
在MediaPipe中,protobuf (.pbtxt)文本文件定義了一個(gè)圖形。MediaPipe Visualizer歡迎頁(yè)面會(huì)向您顯示一個(gè)包含空白圖形單元的protobuf文件。它有不同解決方案的各種預(yù)構(gòu)建圖形,你可以從右上方的New按鈕加載。
在預(yù)先構(gòu)建的MediaPipe的桌面版本中,您可以享受調(diào)整和創(chuàng)建應(yīng)用程序的樂(lè)趣。您可以使用一個(gè)命令來(lái)安裝MediaPipe。
pip install mediapipe
MediaPipe solutions提供了易于學(xué)習(xí)的文檔
6. 它真的是實(shí)時(shí)的嗎?
MediaPipe解決方案并不總是實(shí)時(shí)工作
解決方案建立在MediaPipe框架之上,該框架提供計(jì)算單元API (c++),
Graph construction API (Protobuf)和Graph Execution API (c++, Java, Obj-C)。有了這些api,我們就可以構(gòu)建圖表并編寫(xiě)自定義計(jì)算單元。
工具非常出色,但它的性能取決于底層硬件。下面的示例顯示了HD(1280×720)和Ultra HD(3840×2160)視頻上的并排推理比較。
您可以嘗試從頭構(gòu)建MediaPipe解決方案,當(dāng)然可以看到性能上的飛躍。但是,您可能仍然無(wú)法實(shí)現(xiàn)實(shí)時(shí)推理。
注意:MediaPipe框架支持bezel 構(gòu)建。因此,要充分利用MediaPipe的潛力,就需要對(duì)c++和bezel 相當(dāng)熟悉。文檔也不容易上手,因?yàn)樗窃诜e極的開(kāi)發(fā)階段。
總結(jié)
MediaPipe solutions很簡(jiǎn)單,您可以在一兩天內(nèi)介紹掌握。
另一方面,c++ MediaPipe框架的學(xué)習(xí)曲線可能非常陡峭。別擔(dān)心;我們將一步一步地走到那一步。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-454193.html
總的來(lái)說(shuō),它是一個(gè)漂亮的、快速增長(zhǎng)的庫(kù),提供了有前途的結(jié)果。在項(xiàng)目中實(shí)現(xiàn)MediaPipe消除了我們?cè)谔幚鞰L項(xiàng)目時(shí)通常面臨的大多數(shù)麻煩。不需要擔(dān)心同步和繁瑣的設(shè)置。它允許你專(zhuān)注于實(shí)際的開(kāi)發(fā)部分。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-454193.html
到了這里,關(guān)于MediaPipe介紹的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!