Google今年发布的BodyPix2可以在浏览器中进行人体各部位的检测和分割,在不借助于GPU的情况下,就达到较好的检测速度。考虑到node.js内嵌了v8引擎,可以在此环境中运行javascript,实现非浏览器环境下的人体检测和分割。另外,用于分割和检测的深度神经网络模型都是存放在google的网站上的,每次运行都需要下载,如果能在本地离线运行,运行的速度将得到大大提高。
由于从没有用过node.js, javascipt的使用也是好多年前的事,所以在实现上述目标的过程碰到的一些问题对其他人来说就显得很可笑。包括加载本地图片文件,获取模型和权重文件,同步回调函数的执行,tensorflow模型的离线装载等等
1.环境
window10 + node.js v13.3
最初在ubuntu32上装node.js 9.0,但是装完后,在node环境中无法使用 import , 查后发现要高版本node才可能支持,而高版本的只有64位,需要再装64位ubuntu版本实在麻烦,故转而在64为win10宿主机上装node.js . 但是即使v13版本,依然无法在node的交互环境下用import模块 , 最终使用require()方式引入模块。
2.安装
主要安装 tensorflow.js及bodypix2
npm install @tensorflow/tfjs
npm install @tensorflow/tfjs-node 或 @tensorflow/tfjs-node-gpu
npm install @tensorflow-models/body-pix
3.模型
BodyPix2可以使用mobilenet和resnet模型,每个模型又根据前端设备的性能细分成了