编辑:OAK中国
来源:oakchina.cn
版权说明:转载请注明出处
前言
Hello,大家好,这里是OAK中国,我是助手君。
本期内容我们将介绍使用depthai实现人体姿势跟踪,这个示例是由geaxgx实现。示例代码在GitHub上可以找到。超级容易上手,快来试试吧!
分析项目
此项目检测人体姿态并画出身体特征点。
在全身特征点下可以画出3D骨架模型。
通过测量手臂角度来读取信号显示字母。
模型介绍
此示例使用Google推出的MediaPipe中的Pose解决方案。
MediaPipe Pose是一种用于高保真身体姿势跟踪的ML解决方案,从RGB视频帧中推断出整个身体上的33个3D特征点(或25个上身特征点)。
MediaPipe Pose利用两步走策略-检测器加跟踪器,管道首先使用人体检测器在帧中定位人体位置(ROI),跟踪器随后使用ROI裁剪帧作为输入来预测ROI中的姿势特征点坐标。
人体姿态检测模型
此模型明确预测了两个虚拟关键点,这些关键点将人体的中心,旋转和缩放牢固地描述为一个圆圈。受莱昂纳多的维特鲁威人的启发,我们预测了人的臀部的中点,外接整个人的圆的半径以及连接肩部和臀部中点的直线的倾斜角度。
人体姿态特征点模型
MediaPipe Pose中的地标模型有两个版本:可以预测33个姿势特征点坐标的全身模型,以及仅预测前25个姿势特征点的上身模型。后者主要用于下半身不可见的场景。
模型剖析
我们使用Netron工具查看模型结构。
-
pose_detection.blob
输入:
输出:
-
pose_landmark_full_body.blob
输入:
输出:
-
pose_landmark_upper_body.blob
输入:
输出:
转换模型
我们手中的神经网络模型千奇百怪,但我们depthai需要使用blob文件,不能直接使用各大神经网络框架生成的模型。因此可以先使用OpenVINO将各种模型转换为IR,再将IR转换为blob文件。
- 首先下载并安装OpenVINO
- 然后使用OpenVINO的模型下载脚本工具下载模型。
例如:
python ~/intel/openvino/deployment_tools/open_model_zoo/tools/downloader/downloader.py --name face-detection-retail-0004 --output_dir ~/open_model_zoo_downloads/
a. 此时得到的模型是OpenVINO IR,也就是.bin和.xml文件。我们还需要将IR转换为DepthAI所需要的blob文件。
将OpenVINO IR编译为blob文件:
export MYRIAD_COMPILE=$(find /opt/intel/ -iname myriad_compile)
$MYRIAD_COMPILE -m sbd_mask.xml -ip U8 -VPU_MYRIAD_PLATFORM VPU_MYRIAD_2480 -VPU_NUMBER_OF_SHAVES 4 -VPU_NUMBER_OF_CMX_SLICES 4
注:使用模型转换工具需要安装openvino,安装时要注意DepthAI对OpenVINO版本有要求。 详情请参照openvino安装。
另外:在此项目中作者贴心的为我们提供了模型转换脚本。
tflite模型转IR-convert_models.sh
cd resources/models
./convert_models.sh
IR转blob-gen_blob_shave.sh。
# Example: to generate blobs for 6 shaves
./gen_blob_shave.sh -m pd -n 6 # will generate pose_detection_sh6.blob
./gen_blob_shave.sh -m lm_full -n 6 # will generate pose_landmark_full_body_sh6.blob
./gen_blob_shave.sh -m lm_up -n 6 # will generate pose_landmark_upper_body_sh6.blob
最终效果
参考资料
https://docs.oakchina.cn/en/latest/
https://www.oakchina.cn/selection-guide/
OAK中国
| OpenCV AI Kit在中国区的官方代理商和技术服务商
| 追踪AI技术和产品新动态
戳「+关注」获取最新资讯↗↗