vc6.0opengl绘制人物模型_BodyPix:在浏览器中使用 TensorFlow.js 进行实时人物分割

67575275bc43e04d8f8d5c6698b7409a.gif

文 / Dan Oved, 纽约大学,Tyler Zhu,Google Research

编辑 / Irene Alvarado, Google 创意实验室创意技术专家 

之前,我们发布了 BodyPix 2.0,此版本支持多人模式并且准确率更高(在 ResNet50 的基础上),同时具有全新 API 与权重量化功能,可支持不同大小的图像。欢迎在浏览器中在线试用演示版,并访问我们的 GitHub 代码库。

  • 新的演示版https://storage.googleapis.com/tfjs-models/demos/body-pix/index.html

  • GitHubhttps://github.com/tensorflow/tfjs-models/tree/master/body-pix

fb2ecdd6f9c448cb5116bb5d7c901a8c.gif

BodyPix 2.0 可支持多人模式并且准确率更高(在 ResNet50 的基础上)

我们很高兴宣布推出 BodyPix,这是一种开源的机器学习模型,可在浏览器中使用 TensorFlow.js 对人物及身体部位进行分割。默认设置下,该模型可在 2018 版 15 英寸 MacBook Pro 以及 iPhone X 上分别以 25 fps 和 21 fps 的帧率,估测及渲染人物及身体部位的分割。

  • BodyPixhttps://github.com/tensorflow/tfjs-models/tree/master/body-pix

  • TensorFlow.js
    https://tensorflow.google.cn/js

a163621c624f4897fe32ffe466cb32fc.gif

人物分割究竟是什么?在计算机视觉中,图像分割是指将图像中的像素分成几组特定语义区域的技术(通常用于确定对象和边界)。

研究期间,我们训练 BodyPix 模型对人物及 24 个身体部位(如左手、右前小腿或后背等部位)执行此项操作。换言之,BodyPix 可将图像的像素分为以下两类:

  1. 表示人物的像素

  2. 表示背景的像素

其还可将表示人物的像素进一步分类为 24 个身体部位中的任一个部位。
若您尝试实时演示版,这一切可能会更易理解。

  • 实时演示版https://storage.googleapis.com/tfjs-models/demos/body-pix/index.html


人物分割有何用途?这项技术可当作一个工具,其广泛应用于多个领域,包括增强现实、摄影编辑以及图像或视频的艺术效果等。最终具体用途由您来决定!去年,当我们推出 PoseNet(首个能够在浏览器中使用简易网络摄像头估测身体部位(这便是 Kinect 的功能)的模型)时,人们便对此项技术设想出各种应用场景。我们希望 BodyPix 同样能用于开展同样有趣的创意实验。

  • PoseNethttps://blog.tensorflow.org/2018/05/real-time-human-pose-estimation-in.html

  • 各种应用场景https://github.com/labofoz/handsfree.js


为何要在浏览器中执行此操作?与 PoseNet 的情况类似,我们过去只能借助专用硬件,或对系统要求严苛且安装难度较高的软件,才能进行实时人物分割。相比之下,采用这种方法,您无需执行安装步骤,而仅凭几行代码即可使用 BodyPix 和 PoseNet。使用这些模型时,因为其能与任何基本的网络摄像头或手机相机配合使用,所以您无需装配任何专用摄像头。除此之外,用户只需打开网址即可访问这些应用。由于所有计算均在设备上完成,数据无需离开设备,也保护了隐私。鉴于以上所有原因,我们认为,对于艺术家、创意程序员和编程新手而言,BodyPix 是一个可轻松上手的工具。

  • 设备上https://techcrunch.com/2017/08/03/edge-computing-could-push-the-cloud-to-the-fringe/

BodyPix 入门指南

让我们深入了解使用此模型的技术细节。BodyPix 可用于将图像分割为人物像素和非人物像素。人物像素又可进一步分类为 24 个身体部位中的任一部位。重要的是,此模型仅适用于单个人物,因此请确保您的输入数据不包含多个人。

第 1 部分:导入 TF.js 和 BodyPix 库

让我们回顾一下有关如何建立 BodyPix 项目的基础知识。

您可通过以下代码: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
}

您也可通过网页中的软件包将其导入,无需执行任何安装步骤:

   <
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是VC6.0使用MMSOAP向接口地址调用“MachineTrimDataUpload”方法的示例代码: ```c++ #include "stdafx.h" #include <MsSoap.h> int main(int argc, char* argv[]) { CoInitialize(NULL); // 创建SOAP客户端对象 ISoapClient *pSoapClient = NULL; HRESULT hr = CoCreateInstance(__uuidof(SoapClient30), NULL, CLSCTX_ALL, __uuidof(ISoapClient), (void**)&pSoapClient); if (FAILED(hr)) { printf("CoCreateInstance failed with error %x\n", hr); return -1; } // 设置SOAP客户端对象的服务器URL BSTR bstrUrl = SysAllocString(L"http://172.19.144.240//ResistanceWebService/ResistanceWebService.asmx"); pSoapClient->SetProperty(SOAPCLIENT_URL, bstrUrl); // 设置SOAP客户端对象的SOAPAction BSTR bstrAction = SysAllocString(L"MachineTrimDataUpload"); pSoapClient->SetProperty(SOAPCLIENT_ACTION, bstrAction); // 设置SOAP客户端对象的SOAP版本 pSoapClient->SetProperty(SOAPCLIENT_SOAPVERSION, (long)SOAPVER_1_1); // 设置SOAP客户端对象的超时时间 pSoapClient->SetProperty(SOAPCLIENT_TIMEOUT, (long)30000); // 设置SOAP客户端对象的SOAP头信息 BSTR bstrHeader = SysAllocString(L"<Header></Header>"); pSoapClient->SetProperty(SOAPCLIENT_HEADER, bstrHeader); // 设置SOAP客户端对象的SOAP正文信息 BSTR bstrBody = SysAllocString(L"<Body><MachineTrimDataUpload xmlns=\"http://tempuri.org/\"><data></data></MachineTrimDataUpload></Body>"); pSoapClient->SetProperty(SOAPCLIENT_BODY, bstrBody); // 调用SOAP接口 VARIANT varResult; VariantInit(&varResult); hr = pSoapClient->Invoke(bstrAction, &varResult); if (FAILED(hr)) { printf("Invoke failed with error %x\n", hr); return -1; } // 处理SOAP接口返回值 if (varResult.vt == VT_BSTR) { printf("%S\n", varResult.bstrVal); } // 释放资源 pSoapClient->Release(); SysFreeString(bstrUrl); SysFreeString(bstrAction); SysFreeString(bstrHeader); SysFreeString(bstrBody); VariantClear(&varResult); CoUninitialize(); return 0; } ``` 需要注意的是,以上代码的SOAP头信息和SOAP正文信息需要根据具体的接口要求进行修改。同时,需要对接口进行鉴权的情况下,还需要设置SOAP客户端对象的用户名和密码等信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值