OpenPose 版本发布全史:从 1.0.0rc1 到 1.7.1 的关键特性演进、API 变迁与性能优化解读
2026/9/19 3:17:37 网站建设 项目流程

OpenPose 版本发布全史:从 1.0.0rc1 到 1.7.1 的关键特性演进、API 变迁与性能优化解读

【免费下载链接】openposeOpenPose: Real-time multi-person keypoint detection library for body, face, hands, and foot estimation项目地址: https://gitcode.com/gh_mirrors/op/openpose

导读

本文以 OpenPose 官方发布说明(doc/08_release_notes.md)为主体,系统梳理该项目从 2017 年 4 月首个 RC 版本到 2020 年底 1.7.x 的全部版本演进脉络。你将了解到身体/人脸/手部关键点检测能力是如何逐步加入的,BODY_25 模型、3D 重建、相机标定、追踪与识别模块分别在哪个版本落地,以及--write_json--net_resolution--display等核心命令行参数在历次版本中的命名变迁与语义修正。文章同时结合仓库源码(include/openpose/flags.hpp、src/openpose/pose/poseParameters.cpp 等)对关键特性做实现级佐证,帮助读者把版本历史与当前代码库的接口一一对应起来。


一、版本总览与时间线

根据发布说明,OpenPose 共经历了 3 个候选发布(RC)版本和 8 个正式版本(1.0.0 → 1.7.1,其中 1.7.1 为文档撰写时的"当前版本")。按时间线整理如下:

版本发布日期标志性内容
1.0.0rc12017-04-24首个版本:身体关键点检测,支持图片目录/视频/摄像头输入
1.0.0rc22017-05-10渲染分辨率提升至 32k+,demo 由 rtpose 更名 openpose
1.0.0rc32017-06-08新增人脸关键点检测,Windows 10 兼容
1.0.02017-07-08新增手部关键点检测,Windows 分支合入 master
1.0.12017-07-11Windows 库改为 DLL 动态库(便携)
1.0.22017-09-03OpenCV 3.3 兼容、Caffe 转为 DLL、新增 3D 重建 demo
1.1.02017-09-19Ubuntu 下引入 CMake 安装器、IP 摄像头支持前的最后一个 RC 系版本
1.2.02017-11-03IP 摄像头支持、多尺度大幅加速、动态--net_resolution
1.2.12018-01-09新增--write_json、浮点格式热力图保存
1.3.02018-03-24移除 Boost 依赖、3D 重建模块化、--display取代--no_display
1.4.02018-09-01发布 BODY_25 模型、相机标定模块、追踪/识别模块雏形
1.5.02019-05-16CUDA 大幅加速、单人体追踪器、Unity 绑定、Pybind11 版 Python API
1.5.12019-09-033D 三角化精度提升、AppVeyor Windows 自动测试
1.6.02020-04-26多相机(3D)异步模式、Matrix/String 封装隔离三方头文件
1.7.02020-11-15CUDA 11.X/cuDNN 8.X、Ubuntu 20.04 兼容、Python API 异步模式
1.7.1(当前)--net_resolution_dynamic、依赖版本更新、文档重构

说明:发布说明末尾指出,所有历史版本均可从官方 Releases 页面下载(本文不引用外部链接,读者可直接在仓库 README.md 与 doc/00_index.md 中查看各版本对应的安装与使用方式)。


二、早期 RC 版本(1.0.0rc1 → 1.0.0rc3):身体关键点检测与跨平台起步

2.1 1.0.0rc1:核心功能的首次落地

首个版本确立了 OpenPose 的主干功能:

  • 身体关键点检测与渲染,支持 Ubuntu 14 与 16;
  • 三种输入源:图片目录(image directory)、视频、网络摄像头(webcam)
  • 结果既可实时显示,也可保存到磁盘

这三个能力沿用至今,对应到当前 include/openpose/flags.hpp 中的--image_dir--video--camera三个输入 flag,以及--write_images/--write_video/--write_json三个输出 flag。

2.2 1.0.0rc2:渲染分辨率与命名规范化

  • 渲染最大分辨率从 720p 提升到32k 以上(这为后续 4K、8K 图像处理奠定了基础);
  • demo 可执行文件由rtpose更名为openpose
  • 修复了 demo 与部分自定义编译 OpenCV 版本的兼容问题(改用exec而非start)。

2.3 1.0.0rc3:人脸检测与 Windows 支持

rc3 是早期版本中变化最大的一次:

  • 新增人脸关键点检测
  • Windows 10 兼容
  • GPU 数量自动检测(对应现代版--num_gpu -1的语义,见 include/openpose/flags.hpp);
  • MPI 可视化风格向 COCO 靠拢;
  • 抛出异常前先打印错误描述,便于 Windows cmd 中定位问题。

值得关注的是 rc3 开启了一系列参数重命名,这些命名贯穿后续所有版本:

rc3 前rc3 后影响范围
--write_pose--write_keypoint同时适用于 face/hands
--write_pose_json--write_keypoint_json同时适用于 face/hands
--write_pose_format--write_keypoint_format同时适用于 face/hands
PoseSaverKeypointSaver保存器类名
PoseJsonCocoSaverCocoJsonSaverCOCO JSON 保存器类名

其中--write_keypoint_json在后来的 1.2.1 版本又被--write_json取代并在 1.4.0 中被移除,而CocoJsonSaver至今仍保留在 src/openpose/filestream/cocoJsonSaver.cpp 中,对应 flag 为--write_coco_json


三、正式版 1.0.0 → 1.1.0:手部检测、DLL 化与 CMake 安装器

3.1 1.0.0:手部关键点检测

1.0.0 是第一个正式版,主要新增:

  • 手部关键点检测(与 1.0.0rc3 的人脸检测一起,构成"全身关键点"能力);
  • Windows 分支合并进 master;
  • 人脸与手部检测改用Maximum而非NMS(因为人脸/手部每帧只有 1 个目标);
  • 多尺度精度提升:新增Datum::scaleRatios保存多尺度下的相对尺度比例;
  • 默认渲染切换为 GPU 渲染(CPU 渲染作为可选),整体提速约 5%;
  • 姿态、人脸、手部的渲染阈值均可配置(对应现在的--render_threshold--face_render_threshold--hand_render_threshold);
  • 新增--camera_fps控制--write_video输出视频帧率(1.5.0 中更名为--write_video_fps,默认值也从 30 改为 -1);
  • 参数解析逻辑从各 demo 抽取到utilities/flagsToOpenPose(对应 src/openpose/utilities/flagsToOpenPose.cpp)。

1.0.0 还确立了一个影响深远的 JSON 输出约定:--write_keypoint_json输出中的键名从统一的body_parts改为按部位区分的pose_keypointsface_keypointshand_left_keypointshand_right_keypoints。这一结构在 doc/02_output.md 中有完整示例,并沿用至今天的--write_json

3.2 1.0.1 与 1.0.2:Windows 便携化与 3D 重建 demo

  • 1.0.1:Windows 库转为DLL 动态库,实现跨机器便携分发;
  • 1.0.2
    • OpenCV 3.3 兼容、Caffe 转为 DLL、OpenPose 在带 Nvidia 显卡的 Windows 10 上完全便携;
    • 新增3D 重建 demo(多视角关键点三角化);
    • 摄像头索引自动检测;
    • floatPtrToUCharCvMat提速约 30%;
    • COCO 提取器改为从图片文件名中解析图片 ID(格式string_%d),使其不仅能用于验证集,也能用于测试集;
    • 头文件 include 从双引号统一改为尖括号。

3.3 1.1.0:CMake 安装器与精度微调

  • 新增Ubuntu 下 CMake 安装器(此后 CMake 逐渐取代 Makefile 成为文档默认安装方式,1.3.0 起 CMake 成为文档默认);
  • 增加-Wsign-compare警告并清理代码;
  • 通过引入耳朵-肩膀连接,验证集上 1 尺度 mAP 提升约 0.4。

四、1.2.x:动态分辨率、IP 摄像头与--write_json的诞生

4.1 1.2.0:速度与灵活性的双重跃升

1.2.0 在性能与输入灵活性上均有重要突破:

  • 不同宽高比图像处理提速:约 3.7k 张 COCO 验证图、1 尺度下提速约 20%;
  • 多尺度处理大幅提速降内存:4 尺度下总耗时从约 770 秒降至约 450 秒(约 40%),每 GPU 内存从约 8.9 GB 降至约 6.7 GB;
  • 新增 IP 摄像头支持(对应--ip_camera,支持 RTSP/HTTP 协议);
  • 输出分辨率动态化:输出图像不再要求固定尺寸,--resolution更名为--output_resolution,FrameDisplayer/OpOutputToCvMat 等组件改为从每帧图像自行推断尺寸;
  • 网络分辨率动态化:新增-1选项用于--net_resolution,自动选择与输入最匹配的宽高比;网络分辨率可在运行中动态改变(例如逐帧处理不同尺寸图片);
  • 新增独立的人脸检测器(基于 OpenCV face detector,更快的--face_detector 1模式);
  • 人脸与手部检测器支持返回逐关键点热力图;
  • 构建系统重构:USE_CUDNN不再必需,CPU_ONLY更名为USE_CUDA,且USE_CAFFE/USE_CUDA仅编译期需要,运行期 OpenPose 头文件不再包含 Boost/Caffe 依赖,只要求 OpenCV;
  • 新增--disable_multi_thread以降低延迟(适合实时 webcam 场景);
  • 新增--number_people_max-1自动选择模式及后续的--number_people_max能力(该 flag 在 1.3.0 正式加入)。

这些动态分辨率能力如今沉淀在 include/openpose/wrapper/wrapper.hpp 与 include/openpose/core/scaleAndSizeExtractor.hpp 等类中。

4.2 1.2.1:--write_json与热力图浮点格式

  • 热力图支持浮点格式保存,并新增--heatmaps_scale选项(0 表示 [-1,1] 区间、1 表示 [0,1]、2 表示取整到 [0,255]、3 表示不缩放,见 include/openpose/flags.hpp);
  • 新增--write_json,作为--write_keypoint_json的新版本:额外包含**身体部件候选(part candidates)**及后续新增的扩展信息(如 person ID);
  • GPU 数量检测考虑用户指定的起始 GPU 索引;
  • 修复 >4K 图像的渲染问题;
  • PoseParameters拆分为PoseParametersPoseParametersRender,常量改为函数形式以增强可读性——这正是当前 include/openpose/pose/poseParameters.hpp 中getPoseDefaultNmsThreshold()getPoseDefaultConnectInterThreshold()等函数的由来。

五、1.3.0:3D 重建模块化与依赖精简

1.3.0 是一个面向模块化与跨平台的分水岭:

  • 移除 Boost 依赖;Caffe 改为 submodule;CMake 安装器兼容 Windows;新增 freeglut 下载脚本(Windows 3D 重建 demo 用);
  • 3D 重建从 demo 升级为 OpenPose 正式模块(include/openpose/3d/ 目录下的poseTriangulationjointAngleEstimation等),可配合不同相机品牌或自定义图像源使用;
  • 新增--3d_views(配合--image_dir/--video加载立体图像)、--3d_min_views(3D 重建所需最少相机数);
  • 3D 重建模块强制number_people_max 1,以避免多人场景下的重建歧义;
  • Flir 相机参数改为运行时从磁盘读取而非编译期硬编码;
  • --write_json纳入 3D 关键点;新增*_keypoints_2d命名以区分 3D 关键点;
  • 新增--number_people_max--camera_resolution
  • VideoSaver 兼容多相机设置,多视角画面拼接保存;
  • GUI 改进:显示原始帧号而非线程内帧 id;小窗 GUI 自适应缩放提示文本;l/k快捷键功能互换;
  • --no_display更名为--display,可选值扩展为NoDisplay/Display2D/Display3D/DisplayAll(当前语义见 include/openpose/flags.hpp 中display的注释:-1 自动选择、0 无显示、1 同时 2D+3D、2 仅 2D、3 仅 3D)。

性能与正确性修复方面:NMS 只对身体部件热力图通道执行(不再作用于 PAF 通道),获得约 1% 加速;修复 PoseRenderer 切换渲染元素时的 core dump 与 3D 可视化退出崩溃。


六、1.4.0:BODY_25 模型、相机标定与追踪雏形

1.4.0 是特性最密集的版本之一。

6.1 BODY_25 模型发布

发布说明明确指出 BODY_25 模型"包含 COCO 的 17 个关键点 + 脖子 + 髋部中点 + 6 个脚部关键点",且比原 COCO 模型准确率约高 3%、速度快约 30%。其完整关键点映射定义于 src/openpose/pose/poseParameters.cpp 的POSE_BODY_25_BODY_PARTS

{0,"Nose"}, {1,"Neck"}, {2,"RShoulder"}, {3,"RElbow"}, {4,"RWrist"}, {5,"LShoulder"}, {6,"LElbow"}, {7,"LWrist"}, {8,"MidHip"}, {9,"RHip"}, {10,"RKnee"}, {11,"RAnkle"}, {12,"LHip"}, {13,"LKnee"}, {14,"LAnkle"}, {15,"REye"}, {16,"LEye"}, {17,"REar"}, {18,"LEar"}, {19,"LBigToe"}, {20,"LSmallToe"}, {21,"LHeel"}, {22,"RBigToe"}, {23,"RSmallToe"}, {24,"RHeel"}, {25,"Background"}

BODY_25 由此成为默认模型(include/openpose/flags.hpp 中--model_pose默认值为"BODY_25"),并衍生出 BODY_25E、BODY_25D、BODY_25B、BODY_19、BODY_23、BODY_135、CAR 等模型族(见 include/openpose/pose/enumClasses.hpp)。其模型 prototxt 存放于 models/pose/body_25/pose_deploy.prototxt。

6.2 相机标定模块

新增基于 OpenCV 的内参/外参相机标定工具箱,对应 include/openpose/calibration/ 与 examples/calibration/calibration.cpp。标定细节可参考 doc/advanced/calibration_module.md。

6.3 3D 重建精度与多 GPU 策略

  • 引入非线性最小化进一步优化三角化(仅 Ubuntu),精度提升约 5%;
  • 重投影误差低于阈值时跳过优化(速度优先)、高于离群阈值时剔除离群点;
  • ≥3 视角剔除离群点、≥4 视角应用 RANSAC;
  • 多 GPU 场景下每个 GPU 处理一个相机视角(替代原先按时间片切分),大幅降低延迟;
  • 3D 关键点与相机参数单位从毫米改为,以降低数值误差。

6.4 追踪与识别模块雏形

新增初始 alpha 版本的trackingidentification模块(源码中可见但默认禁用),包括PersonIdExtractor(含贪心矩阵 OP-LK 匹配)与PersonTracker(include/openpose/tracking/)。此设计随后在 1.5.0 演变为可用的--tracking单人体追踪器。

6.5 性能与体验优化

  • 平均延迟减半;CMake 默认未开启 Release 模式的问题修复后整体提速约 15%;
  • 从 bodyPartConnectorBase 热循环中移除checkEQ(其耗时随人数指数增长),身体检测对人数变化更稳定;
  • Datum::outputData从 C×H×W 改为H×W×C,与cv::Mat互拷大幅提速;
  • 新增WITH_OPENCV_WITH_OPENGL编译选项加速 GUI 显示;
  • 队列空/满时最小化 CPU 占用,避免整机卡顿、过热与功耗问题;
  • GUI 渲染通道快捷键改为更直观的映射:1 骨架、2 背景热力图、3 全部热力图叠加、4 PAF 叠加、5+ 各部位热力图;
  • 移除弃用的--write_keypoint_json(1.2.1 起由--write_json等价替代)。

七、1.5.x:CUDA 全面加速、追踪器与新一代 Python API

7.1 1.5.0:CUDA 性能跃升

1.5.0 对 CUDA 路径做了系统性优化,发布说明给出了量化收益:

优化点收益
贪心身体部件连接器移植到 CUDA默认配置下提速约 30%,最大精度配置下约 10%,且默认配置下精度小幅提升 0.5%
身体部件连接器二次优化额外提速 5–30%
NMS提速约 2–4 倍
图像 resize 与多尺度 resize各提速约 2 倍
渲染提速约 25–30%
CvMatToOpOutput/OpOutputToCvMat 的 resize 移至 CUDA延迟下降,且线性加速对更多 GPU 泛化更好

对应的 CUDA 实现可在 src/openpose/net/bodyPartConnectorBase.cu(greedy connector)、src/openpose/net/nmsBase.cu(NMS)、src/openpose/net/resizeAndMergeBase.cu(resize)中查看。其中身体部件连接器阈值已在 1.5.1 中改为使用defaultNmsThreshold(取代硬编码的 0.15),见 src/openpose/net/bodyPartConnectorBase.cu 中getPoseDefaultNmsThreshold()的调用。

7.2 单人体追踪器与--tracking

新增初始单人体追踪器(--trackingflag),用于进一步提速或视觉平滑。对应实现位于 src/openpose/tracking/personTracker.cpp 与 src/openpose/tracking/pyramidalLK.cpp。

7.3 新增命令行参数

1.5.0 集中新增了一批仍在使用的重要 flag(全部定义见 include/openpose/flags.hpp):

  • --frame_step:帧间隔抽样,如--frame_step 5处理第 0、5、10… 帧;
  • --maximize_positives:将原硬编码的COCO_CHALLENGE变为用户可配置,降低人体候选阈值(提升召回、可能降低精度);
  • --verbose(后演进为--cli_verbose):打印处理进度;
  • --fps_max:限制最大处理帧率,便于慢速观察 GUI 结果;
  • --prototxt_path/--caffemodel_path:自定义网络结构与权重路径;
  • --face_detector/--hand_detector:选择人脸/手部矩形检测器(0=OpenPose 身体检测器、1=OpenCV 人脸检测器、2=用户自供、3=开启手部追踪);原--hand_tracking被并入--hand_detector 3
  • --upsampling_ratio:贪心关联解析前对帧执行的上采样比例;
  • --body:取代--body_disable,可关闭姿态网络但仍运行贪心关联解析(作用于用户提供的热力图)。

7.4 API 重构与 Python 生态

  • Wrapper 简化为模板类WrapperT,并新增非模板等价类Wrapper(include/openpose/wrapper/wrapper.hpp 中typedef WrapperT<BASE_DATUM> Wrapper);
  • 新增统一头文件flags.hpp,避免各示例重复粘贴 flag 定义;
  • 示例目录重构:tutorial_wrappertutorial_api_cpptutorial_pythontutorial_api_pythontutorial_threadtutorial_api_thread、删除tutorial_pose(新示例见 examples/tutorial_api_cpp/ 与 examples/tutorial_api_python/);
  • 旧 Python wrapper 被Pybind11 版 wrapper取代,覆盖 C++ API 全部功能(python/openpose/openpose_python.cpp);
  • Array为 Pybind11 兼容新增getStride()getPybindPtr()pData绑定与指针构造接口;
  • 为几乎所有类添加虚析构函数(性能敏感的 Array、Point、Rectangle、CvMatToOpOutput、OpOutputToCvMat 除外),便于继承扩展;
  • errorAndLog中的辅助类改为命名空间,checkX()系列函数保留为类;
  • Wrapper 新增预处理能力(WorkerType::PreProcessing)与可配置线程队列上限;
  • Datum新增poseNetOutput,允许用户注入自定义网络输出;
  • 输出 JSON 升级到version 1.3,可包含 person ID。

7.5 视频保存与相机相关改进

  • --write_video可从图片序列(--image_dir)生成视频;
  • 新增--write_video_3d保存 3D 输出视频、write_video_with_audio(需.mp4+ ffmpeg);
  • --camera_fps更名为--write_video_fps(语义更准确:只影响输出视频帧率,默认值改为 -1);
  • --frame_keep_distortion反转为--frame_undistort(默认不矫正);
  • --camera_parameter_folder更名为--camera_parameter_path(支持直接指定 XML 文件路径);
  • 帧去畸变不再限于 FLIR 相机,可作用于所有输入源。

7.6 1.5.1:三角化与稳定性修正

  • 修复 >3 相机时的 3D 三角化小 bug,精度显著提升;
  • 增加 Nvidia NVCaffe 社区支持;
  • --3d_min_views默认值从 -1(要求全部视角)改为max(2, min(4, #cameras-1)),在召回与精度间取得更好平衡;
  • CPU 版本精度提升约 0.2%(对彼此很近的关键点赋予最小可能 PAF 分数);
  • 修复06_face_from_image.cpp07_hand_from_image.cpp09_keypoints_from_heatmaps在 1.5.0 中因 GPU resize 导致的失效问题;
  • 新增 Windows AppVeyor 自动测试(appveyor.yml)。

八、1.6.0:多相机异步模式与三方依赖隔离

1.6.0 的重点是可移植性与依赖解耦

  • 多相机(3D)异步模式WrapperT::waitAndEmplace()tryEmplace()支持TDatums尺寸 >1;新增createMultiviewTDatum()从单张拼接图像与相机参数矩阵自动生成多视角TDatums;配套示例 examples/tutorial_api_cpp/11_asynchronous_custom_input_multi_camera.cpp;
  • 创建Matrix(cv::Mat 容器)与 String(std::string 容器),替换头文件中的三方类型,使 OpenPose 导出时不再要求三方库头文件与静态库(动态库如dll/so仍需要),用户可用自己版本的 OpenCV、Eigen 而不冲突;
  • 新增openpose_private目录收纳需要三方头文件/静态库的内部头文件(include/openpose_private/);
  • 新增ScaleMode::ZeroToOneFixedAspectPlusMinusOneFixedAspect(在保持各轴宽高比的同时归一化坐标);
  • 内部函数改名以避免与其他库的宏冲突:dLog()opLogIfDebug()log()opLog()check()checkBool()及全部checkX()系列(include/openpose/utilities/check.hpp);
  • 修复多人+高分辨率场景下骨架渲染缺失问题(如 4K 下约 32 人的视频);
  • Debug 版本正确链接三方库的 debug 库,不再在启动时打印 Caffe 网络巨量日志。

九、1.7.x:新硬件兼容与当前版本能力

9.1 1.7.0:CUDA 11 与 Ubuntu 20.04

  • 兼容CUDA 11.X 与 cuDNN 8.X,支持 Nvidia 30XX 系列显卡;
  • 兼容Ubuntu 20.04,移除 GCC/Clang 编译警告;
  • Python API 支持异步模式
  • CMake 新增DOWNLOAD_SERVER变量,指定模型与三方库的下载源;
  • USE_MKL在 Ubuntu 默认禁用(与 Intel CPU 绑定的 MKL 在非 Intel CPU 或 Ubuntu 20 上不兼容);
  • 修复 90°/270° 图像旋转。

9.2 当前版本(未来 1.7.1):--net_resolution_dynamic与文档重构

发布说明中"Current version - Future OpenPose 1.7.1"一节记录了截至仓库当前快照的最新改动:

  • 新增--net_resolution_dynamic(默认 1,仅作用于图片与自定义输入):避免低显存 GPU 在--net_resolution -1x368时出现 out-of-memory;设置为 0 则恢复 1.7.0 之前"尽可能大"的行为(大显存追求最大精度时建议 0)。其具体裁剪规则在 include/openpose/flags.hpp 中有完整注释:-1宽度会被裁剪为net_resolution_dynamic × 656(368 高度对应的 16:9 基准宽度);
  • 第三方依赖更新:Windows 下 OpenCV 4.2→4.5、Eigen 3.3.4→3.3.8、wget 1.19.1→1.20.3;
  • AppVeyor 改为直接测试 OpenPoseDemo.exe;
  • 文档重构:README 大幅简化,doc 按advanceddeprecatedinstallation等子目录重组(即当前 doc/ 目录结构);标定文档链接到仓库自带的棋盘格 PDF(doc/advanced/Chessboard_in_PDF/pattern.pdf);
  • tutorial_add_moduletutorial_api_thread移入deprecated(仍可编译,但不再维护);
  • CI 从 Travis 迁移至 GitHub Actions。

十、跨版本核心接口变迁总结

10.1 输出与保存类 flag 的演进链

原始 flag演进过程当前状态
--write_poserc3 →--write_keypoint已弃用(推荐--write_json
--write_pose_jsonrc3 →--write_keypoint_json→ 1.2.1 由--write_json取代1.4.0 移除
--write_pose_formatrc3 →--write_keypoint_format已弃用(--write_json默认 JSON)
--no_display1.3.0 →--display(NoDisplay/Display2D/Display3D/DisplayAll)使用中
--camera_fps1.5.0 →--write_video_fps使用中
--frame_keep_distortion1.5.0 →--frame_undistort(语义反转)使用中
--camera_parameter_folder1.5.0 →--camera_parameter_path使用中
--hand_tracking1.5.0 并入--hand_detector 3已移除
--write_coco_foot_json1.5.0 →--write_coco_json_variants使用中

10.2 JSON 输出格式的版本化

JSON 输出从 1.0.0 的body_parts单一键,演进为按部位区分的pose_keypoints_2d/face_keypoints_2d/hand_left_keypoints_2d/hand_right_keypoints_2d(1.3.0 起加_2d后缀以区分 3D),并逐步加入part_candidates(1.2.1)、3D 关键点(1.3.0)、person ID(1.5.0,JSON version 1.3)。当前完整格式示例见 doc/02_output.md,底层实现可查看 src/openpose/filestream/peopleJsonSaver.cpp。

10.3 关键点模型的语义稳定性

尽管版本迭代频繁,关键点索引语义保持稳定:BODY_25、COCO、MPI 的部件映射仍可通过getPoseBodyPartMapping()从 C++/Python API 获取(include/openpose/pose/poseParameters.hpp),并可直接在 Python 中验证:

poseModel = op.PoseModel.BODY_25 print(op.getPoseBodyPartMapping(poseModel)) print(op.getPoseNumberBodyParts(poseModel)) print(op.getPosePartPairs(poseModel)) print(op.getPoseMapIndex(poseModel))

十一、从发布历史看项目演进规律

纵观 1.0.0rc1 到 1.7.1,可以提炼出几条清晰的演进主线,这也是阅读本仓库代码时的最佳路线图:

  1. 检测能力扩展:body(rc1)→ face(rc3)→ hand(1.0.0)→ 脚部关键点并入 BODY_25(1.4.0)→ 3D 关键点(1.2.x–1.4.0);
  2. 速度与内存:CPU 渲染(1.0.0)→ 多尺度优化(1.2.0)→ 移除热循环 checkEQ(1.4.0)→ CUDA 全链路加速(1.5.0)→ H×W×C 数据布局(1.4.0);
  3. 模块化与依赖解耦:flagsToOpenPose 抽取(1.0.0)→ 移除 Boost(1.3.0)→ net/ 模块(1.3.0)→ WrapperT/Wrapper(1.5.0)→ Matrix/String 与 openpose_private(1.6.0);
  4. 跨平台:Ubuntu(rc1)→ Windows(rc3/1.0.0)→ Mac OpenCL(1.5.0)→ Ubuntu 20.04(1.7.0);
  5. 生态:Python API(2018)→ Pybind11 重写(1.5.0)→ Unity 绑定(1.5.0)→ 训练代码与数据集(2019,另见 doc/10_community_projects.md)。

如需核对每个版本的完整改动清单,可直接阅读仓库内的 doc/08_release_notes.md;各版本对应的安装方式与前置条件见 doc/installation/0_index.md 与 doc/installation/1_prerequisites.md;而查看当前全部可用命令行参数的最快捷方式,是编译后运行build/examples/openpose/openpose.bin --help,并按 include/openpose/flags.hpp 头部注释的指引,只关注Flags from examples/openpose/openpose.cpp:之后的 OpenPose 自身参数。

【免费下载链接】openposeOpenPose: Real-time multi-person keypoint detection library for body, face, hands, and foot estimation项目地址: https://gitcode.com/gh_mirrors/op/openpose

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询