谷歌釋出人體影像分割工具BodyPix 2.0,可在iPhone上流暢執行
今天,Google官方推出了使用TensorFlow.js的人體影像分割工具 BodyPix 2.0,對該工具進行了一次重大升級,加入多人支援,並提高了準確率。
BodyPix能將影像分割為屬於人的和不屬於人的畫素,屬於人的部分可以進一步分類為二十四個身體部位之一。
BodyPix可以直接在瀏覽器中執行,開發者只需加入幾行程式碼,即可與電腦或手機的攝像頭配合使用。
在使用預設設定的情況下,BodyPix可以在15寸MacBook Pro上以 25 fps的速度估計,並渲染人和身體部位的分割。而在iPhone X上,BodyPix能以 21 fps的速度進行估計。
BodyPix於今年2月推出,本次2.0版的主要更新有:對多人影像的支援、增加基於ResNet-50的模型、新的API、權重量化以及對不同尺寸影像的支援。
功能演示
在專案的GitHub主頁上,TensorFlow給出了BodyPix 2.0軟體的一些基本用法演示,還有網頁版Demo供使用者體驗。
人像分割
對於給定具有一個或多個人的影像,人像分割可預測所有人的分割。 segmentPerson返回PersonSegmentation,對應於影像中人物分割的物件。
segmentPerson預設不會在不同的個人之間消歧義。因此如果您需要對不同的人進行區分,請使用segmentMultiPerson,不過引入此方法會導致執行速度變慢。
以上結果返回的是一組0和1的陣列,用於表示該畫素點是否屬於人。
身體部位細分
BodyPix的 segmentPersonParts方法可以預測所有人的24個身體部位分割。
PartSegmentation會所有合併的人,返回值是每個畫素與身體部位相對應的編碼。同樣的,如果需要區分多人,請使用segmentMultiPersonParts。
身體不同部位對應的編碼如下表所示:
把結果輸出到影像上
BodyPix還包含其他實用程式功能,可以將輸出結果與原始影像合成,得到你所需的渲染影像。
bodyPix.toMask可以給人和背景加上一層蒙版,指定渲染畫素的顏色和不透明度。
bodyPix.toColoredPartMask可以給人體部位分割加上一個24色的顏色陣列,每個身體部位都對應著陣列中的一個顏色。
以上是BodyPix的基礎功能的用法。
既然BodyPix可以區分出人體和背景 ,我們就可以用它實現實時的背景虛化,呼叫的API方法是 bodyPix.drawBokehEffect。
利用BodyPix識別出身體不同部位的功能,可以呼叫 bodyPix.blurBodyPart給人臉打上馬賽克。
此外還有更多的影像繪製API,在此就不一一列舉了。
安裝方法
BodyPix使用非常簡便,使用者可以將其與指令碼標籤一起嵌入HTML使用:
<html>
<body>
<!-- Load TensorFlow.js -->
<script src="
<!-- Load BodyPix -->
<script src="
bodypix.load().then(function(net) {
// BodyPix model loaded
});
</script>
</body>
</html>
或者透過npm方式安裝:
npm install @tensorflow-models/body-pix
然後使用es6模組匯入:
import * as bodyPix from '@tensorflow-models/body-pix';
async function loadAndUseBodyPix() {
const net = await bodyPix.load();
// BodyPix model loaded
}
如何讓BodyPix執行更快
BodyPix帶有不同尺寸的模型,具有不同的效能。透過設定模型的大小和輸出步長,可以在執行速度和準確性之間進行權衡。
預設情況下,BodyPix載入的是0.75倍的 MobileNetV1架構,適合中低端GPU的計算機使用,而匯入0.50倍的模型可以用於移動裝置。
const net = await bodyPix.load({
architecture: 'MobileNetV1',
outputStride: 16,
multiplier: 0.75,
quantBytes: 2
});
倍率的數值越大,神經網路中層的尺寸也越大,準確率更高、推理速度更慢。不同倍率模型的效能對比如下:
對於具有更強大GPU的計算機,官方建議使用 ResNet架構, 這一部分也是2.0版加入的新功能。
const net = await bodyPix.load({
architecture: 'ResNet50',
outputStride: 32,
quantBytes: 2
});
原理簡介
BodyPix的核心是執行人體分割的演算法,對輸入影像的每個畫素執行二進位制決策,以估計該畫素是否屬於某個人。
影像透過MobileNet網路饋送,並且使用S型啟用函式將輸出轉換為0到1之間的值。
為了估計身體部位的分割,BodyPix使用相同的MobileNet表示,但是這次透過預測額外的24個通道輸出張量P來重複上述過程,其中二十四是身體部位的數量。每個通道編碼身體某部位是否存在的機率。
輸出張量P中有24個通道,因此需要在24個通道中找到最佳部分。在推斷期間,對於輸出身體部位張量P的每個畫素位置(u,v),body_part_id使用以下公式選擇屬於第i個部位機率最高的畫素:
這將產生一個二維影像,每個畫素都包含一個整數,該整數表示該畫素屬於哪個身體部位。透過將值設定為-1,可以把不屬於人體的部分剔除掉。
傳送門
試玩Demo:
官方部落格:
https://blog.tensorflow.org/2019/11/updated-bodypix-2.html
GitHub地址:
— 完 —
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946223/viewspace-2664942/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 安卓教育應用如何在linux上流暢執行安卓Linux
- 比OpenAI快8倍的新AI影像生成器,可在廉價硬體上執行OpenAI
- 谷歌開發者工具執行JavaScript程式碼谷歌JavaScript
- 如何使用Mask RCNN模型進行影像實體分割?CNN模型
- 剛剛,Llama 3.2 來了!支援影像推理,還有可在手機上執行的版本
- 歐盟釋出人工智慧行動計劃人工智慧
- TCPCopy 線上流量複製工具TCP
- 物體檢測、影像分割技術概述
- 谷歌開源最新語義影像分割模型DeepLab-v3+谷歌模型
- 谷歌子公司釋出計算機韌體分析工具谷歌計算機
- 【影像分割】基於四叉樹影像分割matlabMatlab
- 分割槽 執行計劃
- 谷歌挖出 iMessage 新漏洞,執行舊系統的 iPhone 只能重置修復谷歌iPhone
- 演算法影像崗-影像分類與影像分割演算法
- java虛擬機器執行時記憶體分割槽Java虛擬機記憶體
- 谷歌工具模擬列印媒體谷歌
- 數字影像處理day_12 影像分割
- 康佳釋出人臉識別電視 未來電視體驗更智慧
- Android 效能測試工具- Emmagee 2.0 釋出Android
- oracle分割槽表執行計劃Oracle
- .NET 編譯執行or解釋執行?編譯
- 業界 | 谷歌開源DeepLearn.js:可在網頁上實現硬體加速的機器學習谷歌JS網頁機器學習
- 對刪除分割槽的分割槽表執行TSPITR
- 對分割槽表的部分分割槽執行TSPITR
- 可在廣域網部署執行的QQ高仿版 -- GG嘰嘰V2.0,增加網盤和遠端磁碟功能(原始碼)原始碼
- NSF釋出人-技關係前沿專案指南
- 我寫了一個指令碼,可在“任意”伺服器上執行命令!指令碼伺服器
- 不甘落後於微軟,谷歌推出人工智慧安全工作臺微軟谷歌人工智慧
- 體素科技:深鑽小資料下的醫學影像分割
- 影像分割中的深度學習:U-Net 體系結構深度學習
- 史丹佛大學釋出人工智慧發展指數人工智慧
- VR遊戲玩家的福音,1499美元即可在家暢玩ViveVR遊戲
- 全新體驗的飛冰 2.0 正式釋出
- Steam前100熱門遊戲中有80%可在Linux平臺上執行遊戲Linux
- 可在廣域網部署執行的QQ高仿版 -- GG嘰嘰(原始碼)原始碼
- Flutter 2.0釋出,全平臺執行已就緒,寫個Demo紀念一下!Flutter
- win10怎樣讓我的世界執行更流暢_win10系統如何執行我的世界更流暢Win10
- 開源軟體需順暢執行 開源專案要怎樣實施(轉)