OpenPose Demo 命令行实战指南:从图像、视频到 3D 重建的完整上手指南
【免费下载链接】openposeOpenPose: Real-time multi-person keypoint detection library for body, face, hands, and foot estimation项目地址: https://gitcode.com/gh_mirrors/op/openpose
OpenPose 是面向人体、人脸、手部与脚部关键点检测的实时多人姿态估计库。本文以仓库 doc/01_demo.md 为骨架,完整讲解如何直接运行官方 Demo(无需改动任何源码):覆盖图像目录、视频、摄像头、IP 摄像头等多输入源的切换,JSON/图片/视频/界面多种输出方式,多 GPU 并行、最高精度配置、3D 重建与帧间跟踪,以及内存不足等常见问题的排查方案。读完本文,你将能够独立使用openpose.bin(Windows 下为OpenPoseDemo.exe)跑通任意输入源,并依据业务场景自由组合参数。
准备工作:可执行程序与示例素材
官方 Demo 的启动方式有三种,任选其一即可:
- Windows 便携版:直接使用
bin\OpenPoseDemo.exe,详见 doc/installation/0_index.md 中的 Windows Portable Demo 小节,无需编译; - 源码编译产物:在项目根目录执行 CMake 构建后,使用
build/examples/openpose/openpose.bin(Windows 下为build\x64\Release\OpenPoseDemo.exe); - Visual Studio 调试运行:若使用 Visual Studio 构建,需要先把
bin/*.dll拷贝到最终的 DLL 输出目录(见 doc/installation/0_index.md 的 Windows 小节),或直接修改 include/openpose/flags.hpp 中的默认 flag 值。
运行任何命令时,请务必确认当前处于项目根目录(即 OpenPose 文件夹本身,而不是build/、windows/或bin/)。仓库自带的示例素材已就绪:examples/media/video.avi(示例视频)与examples/media/(约 20 张示例图片),因此无需修改任何代码即可直接体验。
从源码层面看,Demo 的程序入口在 examples/openpose/openpose.cpp:main()首先调用gflags::ParseCommandLineFlags解析命令行 flag,随后进入openPoseDemo(),由 configureWrapper 把全部 flag 依次映射到WrapperStructPose、WrapperStructFace、WrapperStructHand、WrapperStructExtra、WrapperStructInput、WrapperStructOutput、WrapperStructGui等配置结构体,最终通过opWrapper.exec()启动线程流水线。
快速开始:跑通第一个 Demo
在项目根目录执行以下命令,预期可视化结果与 doc/02_output.md 的 UI and Visual Output 小节展示的效果一致:
# Ubuntu 和 Mac ./build/examples/openpose/openpose.bin --video examples/media/video.avi:: Windows - Portable Demo bin\OpenPoseDemo.exe --video examples/media/video.avi如果你使用 Visual Studio 构建并已正确拷贝 DLL,则可以这样运行:
:: Windows - Library - 前提:已按 doc/installation/0_index.md#windows 小节拷贝 DLL build\x64\Release\OpenPoseDemo.exe --video examples/media/video.avi如果运行失败,按以下顺序排查:
- 报错为内存不足(out of memory)时,参见后文「改善内存与速度(牺牲精度)」小节;
- 使用 Mac 时,先确认「Mac OSX 附加步骤」小节;
- 其余错误先查阅 doc/05_faq.md 中的 FAQ。
切换输入源:图像目录、视频与摄像头
OpenPose 支持三种最常见的输入源,对应三个互斥的输入 flag。
图像目录(--image_dir {目录路径}):
# Ubuntu 和 Mac ./build/examples/openpose/openpose.bin --image_dir examples/media/:: Windows - Portable Demo bin\OpenPoseDemo.exe --image_dir examples/media/视频文件(--video {视频路径}):
# Ubuntu 和 Mac ./build/examples/openpose/openpose.bin --video examples/media/video.avi:: Windows - Portable Demo bin\OpenPoseDemo.exe --video examples/media/video.avi摄像头(默认输入源):不指定--image_dir或--video时默认使用摄像头;机器上有多台摄像头时用--camera {编号}指定:
# Ubuntu 和 Mac ./build/examples/openpose/openpose.bin ./build/examples/openpose/openpose.bin --camera 0 ./build/examples/openpose/openpose.bin --camera 1:: Windows - Portable Demo bin\OpenPoseDemo.exe bin\OpenPoseDemo.exe --camera 0 bin\OpenPoseDemo.exe --camera 1此外,include/openpose/flags.hpp 中还有--ip_camera用于读取支持 RTSP / HTTP 协议的流媒体摄像头。输入源的选择逻辑集中在 examples/openpose/openpose.cpp:flagsToProducer会依据--image_dir、--video、--ip_camera、--camera、--flir_camera的组合决定最终的ProducerType。摄像头分辨率由--camera_resolution控制,默认-1x-1即使用 OpenCV 的默认 1280x720。
一键开启人脸与手部关键点检测
在任意命令后追加--face和/或--hand即可:
# Ubuntu 和 Mac ./build/examples/openpose/openpose.bin --image_dir examples/media/ --face --hand ./build/examples/openpose/openpose.bin --video examples/media/video.avi --face --hand ./build/examples/openpose/openpose.bin --face --hand:: Windows - Portable Demo bin\OpenPoseDemo.exe --image_dir examples/media/ --face --hand bin\OpenPoseDemo.exe --video examples/media/video.avi --face --hand bin\OpenPoseDemo.exe --face --hand源码层面的对应关系:--face与--hand分别控制 examples/openpose/openpose.cpp 中的WrapperStructFace与WrapperStructHand。开启后人脸与手部网络会共享--model_folder指定的模型目录(对应仓库中的models/face/pose_deploy.prototxt与models/hand/pose_deploy.prototxt)。需要留意的是:
- 开启后人脸/手部检测速度与图中人数强相关,人数越多越慢;
- 手部网络的分辨率由
--hand_net_resolution(默认368x368,需为 16 的倍数且为正方形)控制;官方实测--hand_scale_number 6 --hand_scale_range 0.4组合精度最佳; - 人脸网络分辨率由
--face_net_resolution(默认368x368)控制,多人脸场景下320x320通常可在几乎不掉精度的前提下显著提速。
输出配置:JSON、图片、视频与界面可以自由组合
OpenPose 的各类输出相互独立、互补叠加:是否在界面显示骨架与是否把结果写入磁盘互不影响。
保存 JSON 关键点数据(--write_json {输出目录}),JSON 格式说明见 doc/02_output.md:
# Ubuntu 和 Mac(Windows 下 flag 相同) ./build/examples/openpose/openpose.bin --image_dir examples/media/ --write_json output_jsons/ ./build/examples/openpose/openpose.bin --video examples/media/video.avi --write_json output_jsons/ ./build/examples/openpose/openpose.bin --write_json output_jsons/每个 JSON 文件对应一帧画面,包含people数组,每人包含pose_keypoints_2d、face_keypoints_2d、hand_left_keypoints_2d、hand_right_keypoints_2d,以及开启--3d后的*_keypoints_3d(格式为x,y,z,c),还可在开启--part_candidates时额外输出组装为人体之前的部位候选。具体字段样例见 doc/02_output.md 的 JSON Output Format 小节。坐标的归一化范围由--keypoint_scale决定(0=原始输入分辨率,1=网络输出分辨率,2=最终输出分辨率,3=[0,1],4=[-1,1])。
把带骨架的渲染结果保存为视频或图片(--write_video {视频路径}/--write_images {输出目录}):
# Ubuntu 和 Mac(Windows 下 flag 相同) ./build/examples/openpose/openpose.bin --video examples/media/video.avi --write_video output/result.avi ./build/examples/openpose/openpose.bin --image_dir examples/media/ --write_video output/result.avi ./build/examples/openpose/openpose.bin --video examples/media/video.avi --write_images output_images/ ./build/examples/openpose/openpose.bin --video examples/media/video.avi --write_images output_images/ --write_images_format jpg ./build/examples/openpose/openpose.bin --image_dir examples/media/ --write_images output_images/ ./build/examples/openpose/openpose.bin --image_dir examples/media/ --write_images output_images/ --write_images_format jpg--write_images_format默认png,可改为jpg、bmp等 OpenCVcv::imwrite支持的扩展名;--write_video内部使用cv::VideoWriter,输出路径必须以.avi结尾(motion JPEG 编码)。
关闭 GUI 窗口(--display 0):适合服务器环境或轻微提速。但注意:关闭显示后必须指定至少一种磁盘输出(--write_json、--write_video、--write_images三选一),否则程序无输出可写:
# Ubuntu 和 Mac(Windows 下 flag 相同) ./build/examples/openpose/openpose.bin --video examples/media/video.avi --write_images output_images/ --display 0进一步提速:--display 0且不使用--write_video/--write_images时,可追加--render_pose 0跳过骨架叠加渲染,节省渲染开销:
# Ubuntu 和 Mac(Windows 下 flag 相同) ./build/examples/openpose/openpose.bin --video examples/media/video.avi --write_json output_jsons/ --display 0 --render_pose 0另外提醒:--write_keypoint已被官方标记为废弃(源码 include/openpose/flags.hpp 中注明 "Deprecated, usewrite_json"),examples/openpose/openpose.cpp 在检测到该 flag 时也会打印弃用警告,新项目请一律使用--write_json。
纯骨架渲染:去掉背景图像
追加--disable_blending后,渲染结果(骨架或热力图)将绘制在纯黑背景上,而不是叠加到原始图像:
# Ubuntu 和 Mac(Windows 下 flag 相同) # 仅人体骨架 ./build/examples/openpose/openpose.bin --video examples/media/video.avi --disable_blending该 flag 的定义见 include/openpose/flags.hpp,与--part_to_show、--alpha_pose、--alpha_heatmap相互关联:--part_to_show选择可视化通道(0=全部部位,1=背景热力图,2=热力图叠加,3=PAF 叠加,之后依次为各部位热力图与各部位对 PAF),--alpha_pose与--alpha_heatmap控制 GPU 渲染下的混合透明度。
多 GPU 并行:控制使用哪些显卡
默认情况下 OpenPose 会使用机器上所有可用 GPU。--num_gpu指定使用的 GPU 总数,--num_gpu_start指定起始 GPU 编号。例如--num_gpu 2 --num_gpu_start 1表示使用 GPU ID 1 和 2、跳过 GPU ID 0(需机器至少有 3 块 GPU):
:: Windows - Portable Demo(Ubuntu 和 Mac 下 flag 相同) bin\OpenPoseDemo.exe --video examples/media/video.avi --num_gpu 2 --num_gpu_start 1对应源码 include/openpose/flags.hpp:--num_gpu为负数时自动使用全部 GPU;--num_gpu_start默认 0。
最高精度配置
以下命令是目前官方在人体、手部、人脸关键点检测上能达到的最高精度配置:
# Ubuntu 和 Mac:仅人体 ./build/examples/openpose/openpose.bin --net_resolution "1312x736" --scale_number 4 --scale_gap 0.25 # Ubuntu 和 Mac:人体 + 手 + 人脸 ./build/examples/openpose/openpose.bin --net_resolution "1312x736" --scale_number 4 --scale_gap 0.25 --hand --hand_scale_number 6 --hand_scale_range 0.4 --face:: Windows - Portable Demo:仅人体 bin\OpenPoseDemo.exe --net_resolution "1312x736" --scale_number 4 --scale_gap 0.25 :: Windows - Portable Demo:人体 + 手 + 人脸 bin\OpenPoseDemo.exe --net_resolution "1312x736" --scale_number 4 --scale_gap 0.25 --hand --hand_scale_number 6 --hand_scale_range 0.4 --face硬件与模型硬性要求:
- 必须使用
BODY_25(默认模型,定义于 include/openpose/flags.hpp);COCO精度略低但仍可用;MPI不支持该配置(精度与速度都会下降); - 需要至少 16 GB 显存的 Nvidia GPU,具体分档如下:
BODY_25(人体 + 脚,默认模型):约 10.5 GB,如 Titan X(P)、部分 Quadro、P100、V100;BODY_25+ 人脸 + 手:约 16 GB,如 V100;COCO人体 + 人脸 + 手:约 6.7 GB,如 2070、2080;
- CPU / OpenCL 模式无法运行该配置,唯一替代方案是手动裁剪每个人、缩放后喂入默认 OpenPose。
补充信息:
- 官方文档记载:该配置在 Titan X 上约 2 FPS(
BODY_25),COCO约 1 FPS; - 盲目增大
--net_resolution会大幅降低速度,且不保证精度提升,因此官方建议只使用这里给出的确切 flag 与取值; --maximize_positives(不推荐,风险自负)会降低人体候选的接受阈值,牺牲视觉/定性精度以换取 COCO 挑战的数值精度。其底层实现在 src/openpose/pose/poseParameters.cpp:开启后 NMS 阈值由 0.05 降至 0.02、连接筛选阈值由 0.95 降至 0.75、部位连接阈值由 0.05 降至 0.01、最小子集数量由 3 降至 2、最小子集得分由 0.4 降至 0.05,直观表现是同时增加假阳性与真阳性(最大化平均召回率、可能损害平均精度),视觉上明显变差但挑战数值提升;- Ubuntu 用户可查看官方用于精度测试的实验脚本(非官方支持,可能随时变动):
scripts/tests/pose_accuracy_coco_test_dev.sh与scripts/tests/pose_accuracy_coco_val.sh。
附加模型:更高精度(BODY_25B)
官方论文中的精度数字与默认模型并不一致——论文发布时释放的是当时的最佳模型,之后又找到了更好的模型。如需更高精度的BODY_25B预训练模型,可从 OpenPose 训练仓库下载「Option 1(最大精度、较慢)」版本。该模型精度更高,但更慢、占用更多显存,且必须使用 Nvidia GPU 版本。
附加模型:更少假阳性(BODY_25B)
若需要假阳性更少、但运行性能与显存要求不变的模型,可从 OpenPose 训练仓库下载BODY_25B预训练模型的「Option 2(推荐)」版本。同样必须使用 Nvidia GPU 版本。
3D 重建:多视角立体视觉实战
3D 重建依赖多相机系统(如 FLIR/Point-Grey 立体相机),并把同一人体的关键点在多个视角间三角化。以下按官方文档的五个步骤展开。
1. 实时 3D Demo
# Ubuntu 和 Mac ./build/examples/openpose/openpose.bin --flir_camera --3d --number_people_max 1 # 带人脸与手部 ./build/examples/openpose/openpose.bin --flir_camera --3d --number_people_max 1 --face --hand:: Windows - Portable Demo bin\OpenPoseDemo.exe --flir_camera --3d --number_people_max 1 :: 带人脸与手部 bin\OpenPoseDemo.exe --flir_camera --3d --number_people_max 1 --face --hand注意:--3d模式只显示 1 个人,画面中存在多人时会失败,因此必须搭配--number_people_max 1。该模式对应 examples/openpose/openpose.cpp 中WrapperStructExtra的--3d与--3d_min_views配置。
2. 保存 3D 关键点与视频
# Ubuntu 和 Mac(Windows 下 flag 相同) ./build/examples/openpose/openpose.bin --flir_camera --3d --number_people_max 1 --write_json output_folder_path/ --write_video_3d output_folder_path/video_3d.avi--write_json会把 3D 关键点以x,y,z,c形式写入 JSON(c为 1 或 0 表示 3D 重建是否成功);--write_video_3d保存 3D 可视化结果视频(对应 flag 定义见 include/openpose/flags.hpp)。
3. 快速保存立体相机原始图像(不做关键点检测),供后续离线处理:
# Ubuntu 和 Mac(Windows 下 flag 相同) # 保存视频(注意:保存 PNG 相比 JPG 画质更好,但会降低 FPS,具体取决于硬盘写入速度与相机数量) ./build/examples/openpose/openpose.bin --flir_camera --num_gpu 0 --write_video output_folder_path/video.avi --write_video_fps 5 # 保存图片(注意:保存 PNG 相比 JPG 画质更好,但会降低 FPS,具体取决于硬盘写入速度与相机数量) ./build/examples/openpose/openpose.bin --flir_camera --num_gpu 0 --write_images output_folder_path/ --write_images_format jpg这里--num_gpu 0表示完全跳过关键点检测网络,仅做采集与存储。
4. 读取并处理之前保存的立体相机图像
# Ubuntu 和 Mac(Windows 下 flag 相同) # 可选追加 --face 和/或 --hand 以包含人脸与手部 # 假设有 3 台相机 # 注意:强烈建议降低 --output_resolution。例如 3 台相机以 1920x1080 录制时,拼接后图像为 (3x1920)x1080,建议设为如 640x360(缩小 3 倍) # 视频 ./build/examples/openpose/openpose.bin --video output_folder_path/video.avi --3d_views 3 --3d --number_people_max 1 --output_resolution {desired_output_resolution} # 图片 ./build/examples/openpose/openpose.bin --image_dir output_folder_path/ --3d_views 3 --3d --number_people_max 1 --output_resolution {desired_output_resolution}--3d_views是--image_dir/--video的补充选项:每轮读取多张图像用于立体处理(如--3d)。使用时必须设置--camera_parameter_path(默认models/cameraParameters/flir/,仓库示例见models/cameraParameters/flir/17012332.xml.example),且该目录下必须恰好存在与视角数相同的 XML 相机参数文件。
5. 关键点在至少 x 个视角可见时才进行重建
# Ubuntu 和 Mac(Windows 下 flag 相同) # 关键点至少在 2 个视角可见时重建(假设 n >= 2) ./build/examples/openpose/openpose.bin --flir_camera --3d --number_people_max 1 --3d_min_views 2 --output_resolution {desired_output_resolution} # 关键点至少在 max(2, min(4, n-1)) 个视角可见时重建(默认规则) ./build/examples/openpose/openpose.bin --flir_camera --3d --number_people_max 1 --output_resolution {desired_output_resolution}--3d_min_views默认-1,等价于max(2, min(4, #cameras-1))(见 include/openpose/flags.hpp)。
帧间跟踪(Tracking,实验性)
--tracking用于在帧间跟踪人体,官方标注为实验性功能。取值含义:-1(默认)禁用;正整数表示每隔 N 帧运行一次 OpenPose 关键点检测、其余帧用跟踪结果填补;0表示每帧同时运行检测与跟踪(无提速/减速,但平滑性更好)。以下三种用法覆盖不同诉求:
:: Windows - Portable Demo(Ubuntu 和 Mac 下 flag 相同) :: 1. 大幅提速(牺牲精度):OpenPose 每 1 帧检测,后续约 5 帧用跟踪结果 bin\OpenPoseDemo.exe --tracking 5 --number_people_max 1 :: 2. 提速同时保留大部分精度:OpenPose 每 1 帧检测,另 1 帧跟踪 bin\OpenPoseDemo.exe --tracking 1 --number_people_max 1 :: 3. 视觉平滑:每帧同时运行 OpenPose 与跟踪,无提速/减速 bin\OpenPoseDemo.exe --tracking 0 --number_people_max 1--number_people_max默认-1(保留全部检测到的人);设定正整数后,OpenPose 会按「人体面积、部位得分、部位间连接得分」保留得分最高的前 N 人,可用于剔除假阳性(前提是场景中的人都被检出),但也可能把过小或严重遮挡的人当作假阴性删掉。
将 Kinect 2.0 用作 Windows 10 摄像头
自 Windows 10 Anniversary 更新起,Kinect 2.0 可被当作普通网络摄像头读取。步骤:打开「设备管理器」,展开kinect sensor devices选项卡,右键WDF kinectSensor Interface并更新驱动程序。若已有其他摄像头,请先断开它,或使用--camera 2指定 Kinect 的设备编号。
常用 Flags 一览
以下是官方文档列出的最常用 flag(完整列表与全部说明见 doc/advanced/demo_advanced.md):
| Flag | 作用 |
|---|---|
--face | 开启人脸关键点检测 |
--hand | 开启手部关键点检测 |
--video input.mp4 | 读取视频文件input.mp4 |
--camera 3 | 读取 3 号摄像头 |
--image_dir path_with_images/ | 处理目录path_with_images/下的图像 |
--ip_camera <URL> | 处理流媒体 IP 摄像头,URL 支持 RTSP 与 HTTP 协议 |
--write_video path.avi | 把处理后的图像保存为视频 |
--write_images folder_path | 把处理后的图像保存到文件夹 |
--write_keypoint path/ | 输出包含人体姿态数据的 JSON / XML / YML 文件(已废弃,请改用--write_json) |
--process_real_time | 视频处理时可能跳帧以保持实时播放 |
--disable_blending | 在黑色背景上渲染结果(骨架或热力图),不显示原图。相关 flag:part_to_show、alpha_pose、alpha_pose |
--part_to_show | 选择要可视化的预测通道 |
--display 0 | 不打开显示窗口,适合服务器场景或轻微提速 |
--num_gpu 2 --num_gpu_start 1 | 从指定设备 ID 开始并行使用指定数量的 GPU;默认使用全部可用 GPU |
--model_pose MPI | 选择模型,影响关键点数量、速度与精度 |
--logging_level 3 | 日志输出阈值,取值范围 [0,255]:0 输出所有消息,255 全部不输出;当前消息位于 [1,4],1 为低优先级、4 为高优先级 |
其中--logging_level、--model_pose的取值在 examples/openpose/openpose.cpp 中有运行时校验:logging_level超出 [0,255] 会直接报错;--model_pose支持BODY_25、COCO、MPI、MPI_4_layers以及BODY_19、BODY_25B等,字符串到枚举的映射见 src/openpose/utilities/flagsToOpenPose.cpp。--model_pose对应的模型定义文件位于仓库 models/pose 下:body_25/pose_deploy.prototxt、coco/pose_deploy_linevec.prototxt、mpi/pose_deploy_linevec.prototxt与mpi/pose_deploy_linevec_faster_4_stages.prototxt;预训练权重可通过 models/getModels.sh(Windows 为models/getModels.bat)下载。
进阶快速开始
更多进阶 flag(如--output_resolution、--keypoint_scale、--heatmaps_add_parts、--write_heatmaps、--part_candidates、--disable_multi_thread、--body、--face_detector、--hand_detector等)请阅读 doc/advanced/demo_advanced.md。也可以随时运行--help查看全部可用 flag——只需关注输出中Flags from examples/openpose/openpose.cpp:一节的条目即可:
# Ubuntu 和 Mac ./build/examples/openpose/openpose.bin --help:: Windows - Portable Demo bin\OpenPoseDemo.exe --helpBug 排查:内存不足、速度过慢与平台差异
改善内存占用与速度(代价是精度下降)
如果你的 Nvidia GPU 运行时不报内存不足,请直接跳过本小节!
--net_resolution需要谨慎使用:当 GPU 显存不足或没有 Nvidia GPU 时,可以降低该值以提升速度并减少显存占用,但精度也会明显下降——分辨率越低,速度越快、显存越省,精度越低:
# Ubuntu 和 Mac ./build/examples/openpose/openpose.bin --video examples/media/video.avi --net_resolution -1x320 ./build/examples/openpose/openpose.bin --video examples/media/video.avi --net_resolution -1x256 ./build/examples/openpose/openpose.bin --video examples/media/video.avi --net_resolution -1x196 ./build/examples/openpose/openpose.bin --video examples/media/video.avi --net_resolution -1x128:: Windows - Portable Demo bin\OpenPoseDemo.exe --video examples/media/video.avi --net_resolution -1x320 bin\OpenPoseDemo.exe --video examples/media/video.avi --net_resolution -1x256 bin\OpenPoseDemo.exe --video examples/media/video.avi --net_resolution -1x196 bin\OpenPoseDemo.exe --video examples/media/video.avi --net_resolution -1x128补充要点(均与 include/openpose/flags.hpp 中的定义一致):
- 默认网络分辨率为
-1x368,任何更小的分辨率都能提升速度; -1表示该维度自动适配以保持输入源的宽高比。例如-1x368、656x-1、656x368对 720p 和 1080p 输入会得到完全相同的结果分辨率;- 处理视频时推荐使用
-1,让 OpenPose 自动选择理想分辨率;处理不同尺寸混合的图像目录时,若不用-1且图像宽高比差异极大,可能触发内存不足。例如目录里有100x11040和10000x368两张图,默认-1x368会分别得到网络输出分辨率3x368和10000x368,后者显然会内存溢出; - 进阶辅助:
--net_resolution_dynamic(仅对图像/自定义输入生效,默认 1)可在使用-1时把网络宽度裁剪到「该值 × 默认 16:9 宽度(368 高对应 656 宽)」以内,小显存 GPU 建议设 1,大显存 GPU 建议设 0 以追求最大精度与速度。
Mac OSX 附加步骤(仅 OPENCL 模式)
如果你不用 Mac,或使用的是CPU_only的 Mac,可以跳过本节。
若你的 Mac 启用了OPENCL支持且带有 AMD 独立显卡,机器上会存在两块不兼容的 GPU(AMD 与 Intel)。此时需要手动选择其中一块(AMD 通常更强)。先用clinfo查看设备编号——AMD 设备大概率是设备 2:
clinfo随后在任意 OpenPose 命令中追加以下两个 flag,指定使用 AMD 显卡加速(num_gpu_start填上面查到的设备 ID):
./build/examples/openpose/openpose.bin --num_gpu 1 --num_gpu_start 2如果只有 Intel 核显,则它大概率是设备 1,请始终追加:
./build/examples/openpose/openpose.bin --num_gpu 1 --num_gpu_start 1FAQ
其余错误、问题与顾虑请查阅 doc/05_faq.md。
小结
OpenPose Demo 的价值在于「零改动即可体验完整的多人姿态估计流水线」:通过 examples/openpose/openpose.cpp 这一薄封装,--image_dir/--video/ 摄像头 / IP 摄像头 / FLIR 立体相机等多输入源、--write_json/--write_video/--write_images等输出通道、--net_resolution/--scale_number/--num_gpu等精度与性能旋钮全部以命令行 flag 形式开放。建议的组合思路是:先按本文「快速开始」跑通默认流程,再按输入源需求挑选对应 flag,最后在「最高精度」与「降低--net_resolution」两个方向之间根据 GPU 显存与帧率要求做权衡,并借助--help与 doc/advanced/demo_advanced.md 探索更多高级参数。
【免费下载链接】openposeOpenPose: Real-time multi-person keypoint detection library for body, face, hands, and foot estimation项目地址: https://gitcode.com/gh_mirrors/op/openpose
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考