拓冰建站拓冰建站
首页 / 资讯中心 / 正文

OpenPose 进阶 Demo 完全指南:延迟优化、热图存储与全部命令行参数详解

OpenPose 进阶 Demo 完全指南延迟优化、热图存储与全部命令行参数详解【免费下载链接】openposeOpenPose: Real-time multi-person keypoint detection library for body, face, hands, and foot estimation项目地址: https://gitcode.com/gh_mirrors/op/openpose本文是 OpenPose Demo 基础教程 的进阶续篇面向已熟悉 OpenPose Demo 基本用法图片、视频、摄像头输入--face/--hand关键点提取的开发者系统讲解降低延迟的三种手段、手部关键点的多尺度与跟踪配置、无身体姿态下的面部与手部渲染、调试日志、热图Heat Maps存储以及 OpenPose 全部命令行参数Flag的分类速查表。读完本文你将能够根据实际硬件与场景为 OpenPose Demo 组装出兼顾速度、精度与输出形式的完整命令并能够利用--help与本文的 All Flags 清单自主排查参数问题。建议先通读 doc/01_demo.md 中 Quick Start 与 Main Flags 章节再进入本文文中所有命令均需在项目根目录下执行即 OpenPose 目录本身而非build/或bin/内部。目录降低延迟Latency/Lag的三种手段手部关键点检测进阶Advanced Hands不检测身体姿态时渲染面部与手部调试信息输出Debugging Information热图存储Heat Maps StoringBODY_25 与 COCO、MPI 模型对比Help Flag随时查看全部参数All Flags全部命令行参数速查表降低延迟Latency/Lag的三种手段在实时场景尤其是低配 GPU 上的摄像头演示中OpenPose 的端到端延迟往往比帧率FPS更影响体验。文档给出三种降低延迟的通用手段每一种都有相应的代价降低--output_resolution轻微降低延迟并提升 FPS代价是显示/输出图像质量下降。该参数以宽x高形式指定如--output_resolution 640x480默认-1x-1表示直接沿用输入图像分辨率见 examples/openpose/openpose.cpp 中通过flagsToPoint的解析。降低--net_resolution、--face_net_resolution、--hand_net_resolution直接提升 FPS 并降低延迟代价是精度下降尤其是图像中的小目标小人、小脸、小手。--net_resolution必须是 16 的倍数默认-1x368-1表示保持输入纵横比自动推导宽度16:9 输入下等价于656x368。若追求最高精度请遵循 doc/01_demo.md 的 Maximum Accuracy Configuration 小节 给出的参数组合。开启--disable_multi_thread以帧率下降为代价换取延迟的显著降低因为它退化为单 GPU 串行处理。该手段主要对纯身体检测有意义如果同时启用了手部和面部提取通常不划算。它的另一个价值在于调试当 OpenPose 崩溃时单线程模式更便于定位错误见 include/openpose/flags.hpp 中对该 Flag 的官方描述。需要强调的是--disable_multi_thread在源码层面的实现是把 Wrapper 从多线程流水线切换为顺序执行——在 examples/openpose/openpose.cpp 中configureWrapper末尾会判断FLAGS_disable_multi_thread并调用opWrapper.disableMultiThreading()。这一机制也解释了为何它能同时服务低延迟实时场景与崩溃调试两类需求。手部关键点检测进阶Advanced Hands--hand开启手部关键点检测后还可以通过多尺度推理与跟踪进一步调优。以下命令依次演示从追求速度到追求精度/稳定的完整梯度# 速度优先的最快方案 ./build/examples/openpose/openpose.bin --hand # 官方实测效果最好的 6 尺度配置 ./build/examples/openpose/openpose.bin --hand --hand_scale_number 6 --hand_scale_range 0.4 # 为摄像头每 GPU FPS 10和视频添加手部跟踪 ./build/examples/openpose/openpose.bin --video examples/media/video.avi --hand --hand_detector 3 # 多尺度 跟踪组合 ./build/examples/openpose/openpose.bin --video examples/media/video.avi --hand --hand_scale_number 6 --hand_scale_range 0.4 --hand_detector 3--hand_scale_number 6 --hand_scale_range 0.4官方文档注明其best results即出自该组合。hand_scale_number表示对手部网络做尺度平均的尺度个数hand_scale_range为最小与最大尺度之间的总跨度各尺度以 1.0 为中心分布例如 scaleRange0.4、scalesNumber2 时对应 0.8 与 1.2 两个尺度。它们的语义与身体姿态的--scale_number/--scale_gap一一对应见 include/openpose/flags.hpp。--hand_detector 3选择手部矩形检测器类型。从源码枚举可见取值含义include/openpose/wrapper/enumClasses.hpp取值枚举值含义0Detector::Body使用 OpenPose 身体检测器默认身体开启时最准确也最快1Detector::OpenCV使用 OpenCV 检测器未对手部实现2Detector::Provided由用户外部提供手部框3Detector::BodyWithTracking额外应用手部跟踪需要特别说明的是--hand_detector 3的跟踪并非跨帧人物 ID 跟踪它只是在前一帧手部出现过的位置附近搜索手部从而在摄像头每 GPU FPS 7与视频场景中改善手部关键点检测的稳定性但不保证跨帧保持同一个人的 ID见 include/openpose/flags.hpp 中的描述。不检测身体姿态时渲染面部与手部当你只想获得面部/手部关键点、而不需要身体骨架渲染时可以把身体姿态渲染关掉再单独控制面部与手部的渲染开关从而在保留关键点输出的同时跳过身体绘制# CPU 渲染更快 ./build/examples/openpose/openpose.bin --render_pose 0 --face --face_render 1 --hand --hand_render 1 # GPU 渲染 ./build/examples/openpose/openpose.bin --render_pose 0 --face --face_render 2 --hand --hand_render 2参数语义详见 include/openpose/flags.hpp--render_pose 0关闭身体姿态渲染0 表示不渲染。--render_pose取 1 为 CPU 渲染略快2 为 GPU 渲染较慢但支持alpha_X等混合功能默认-1表示自动选择——若编译为 CPU_ONLY 则用 CPU若启用 CUDA 则用 GPU。--face_render/--hand_render面部/手部渲染模式取 0/1/2 语义同上额外取-1时表示跟随--render_pose的当前配置。因此在上述命令中--render_pose 0只是关闭身体渲染并不会连带关闭面部与手部的显式渲染配置。从源码看--render_pose、--face_render、--hand_render会分别进入 examples/openpose/openpose.cpp 中的WrapperStructPose、WrapperStructFace、WrapperStructHand并经由flagsToRenderModesrc/openpose/utilities/flagsToOpenPose.cpp把-1解析为跟随身体渲染模式renderPoseFlag ! -2时递归复用身体配置。调试信息输出Debugging Information--logging_level控制日志的详细程度取值范围 [0, 255]# 基础信息默认级别 ./build/examples/openpose/openpose.bin --logging_level 3 # 输出全部消息 ./build/examples/openpose/openpose.bin --logging_level 0值 0 输出所有opLog()消息值 255 则完全不输出。当前 OpenPose 库的消息优先级集中在 0–41 为低优先级消息4 为重要消息。源码中对该参数做了合法性校验0 logging_level 255随后通过op::ConfigureLog::setPriorityThreshold((op::Priority)FLAGS_logging_level)将其设为日志输出阈值见 examples/openpose/openpose.cpp。与之配套的还有--profile_speed默认 1000若在 CMake 或 Makefile.config 中开启了PROFILER_ENABLEDOpenPose 会在该帧号输出运行时统计信息见 include/openpose/flags.hpp。热图存储Heat Maps StoringOpenPose 可以输出网络中间产物——身体部位热图、背景热图与 PAFsPart Affinity Fields部件亲和域。以下命令把视频处理过程中产生的全部热图保存到output_heatmaps_folder/./build/examples/openpose/openpose.bin --video examples/media/video.avi --heatmaps_add_parts --heatmaps_add_bkg --heatmaps_add_PAFs --write_heatmaps output_heatmaps_folder/要点如下输出格式默认 PNG可用--write_heatmaps_format修改。使用--heatmaps_scale 2默认值时热图被整数圆整到 [0, 255]适合 PNG 无损压缩若改为heatmaps_scale 3不缩放保留浮点值建议搭配float格式保存以保留精度见 include/openpose/flags.hpp 与 doc/02_output.md。通道数量以默认的BODY_25模型为例共 25 个身体部位含背景。--heatmaps_add_parts产生 25 张部位热图--heatmaps_add_bkg产生 1 张背景热图--heatmaps_add_PAFs产生 2 x 24 48 张 PAFs 通道每个身体部位对有一张 x 坐标热图与一张 y 坐标热图PAFs 通道数因此乘以 2。合计 25 1 48 74 个通道。拼接方式这些热图不会逐张单独保存而是被纵向拼接成一张(宽度 x 通道数) x (高度)的巨型矩阵即unrollArrayToUCharCvMat的实现方式见 src/openpose/filestream/heatMapSaver.cpp。为便于区分各通道文件按序号命名如_0、_1…。通道顺序依次为身体部位、背景、PAFs具体排列遵循 include/openpose/pose/poseParameters.hpp 中的POSE_BODY_PART_MAPPING其实际定义位于 src/openpose/pose/poseParameters.cpp例如 BODY_25 从Nose、Neck一直到RHeel、Background见 src/openpose/pose/poseParameters.cpp。代价开启任意add_heatmaps_X标志都会使程序速度显著下降这些数据并非 OpenPose 运行所必需仅在后续确实要用到这些信息时才建议开启。与之相关的输出参数还有--heatmaps_scale设置保存时热图值的缩放模式——0 映射到 [-1,1]1 映射到 [0,1]2 整数圆整到 [0,255]3 不缩放源码映射见 src/openpose/utilities/flagsToOpenPose.cpp。--part_candidates配合--write_json使用把组装成人之前检测到的所有身体部位候选点写入 JSON。候选点数量通常大于等于最终的关键点数被组装掉/过滤掉的部分以 0 填充开启后速度会轻微下降见 include/openpose/flags.hpp。BODY_25 与 COCO、MPI 模型对比模型通过--model_pose选择默认BODY_25。官方文档对其差异的结论非常明确BODY_25同时包含身体与脚部关键点共 25 个见 src/openpose/pose/poseParameters.cpp 的完整映射含LBigToe、RHeel等脚部点基于论文《OpenPose: Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields》的改进版工作是 CUDA 版本下最快、最准确的模型官方强烈推荐只使用它。COCO18 关键点与MPI15 关键点更慢、准确度更低且不含脚部关键点基于早期同名论文的工作。其中MPI_4_layers是 4 层的 MPI 变体更快但更不准。唯一例外CPU 场景在纯 CPU 版本下COCO 与 MPI 模型看起来更快但精度依然是BODY_25更好。从源码角度看--model_pose的取值由flagsToPoseModel解析src/openpose/utilities/flagsToOpenPose.cpp支持BODY_25、COCO、MPI、MPI_4_layers等字符串未知取值会直接报错。需要最高精度时可参考 doc/01_demo.md#maximum-accuracy-configuration 中的--net_resolution 1312x736 --scale_number 4 --scale_gap 0.25组合该配置要求 Nvidia GPU 大显存BODY_25单独约 10.5 GB叠加 facehands 约 16 GB。Help Flag随时查看全部参数推荐直接阅读本文下一节《All Flags》的分类清单但命令行自带的帮助同样随时可用。在任意参数位置加入--help即可列出全部可用参数# Ubuntu 和 Mac ./build/examples/openpose/openpose.bin --help:: Windows - Portable Demo bin\OpenPoseDemo.exe --help注意--help输出中混有第三方库gflags 等的参数只需关注examples/openpose/openpose.cpp:小节下的参数即Flags from examples/openpose/openpose.cpp:部分。这些参数来自 include/openpose/flags.hpp全部通过 Google Flags 的DEFINE_*宏声明并在 examples/openpose/openpose.cpp 中由gflags::ParseCommandLineFlags解析后注入configureWrapper。All Flags全部命令行参数速查表以下清单完整列出 OpenPose Demo 的全部参数按类别组织每项依次为参数名、默认值、说明。所有内容均与 include/openpose/flags.hpp 中的定义保持一致并可在 examples/openpose/openpose.cpp 中追踪到实际使用位置。1. 调试 / 其他参数默认值说明--logging_level3日志级别整数范围 [0, 255]。0 输出所有opLog()消息255 不输出任何消息。当前库消息范围 0-41 为低优先级4 为重要消息--disable_multi_threadfalse以轻微降低帧率为代价大幅降低延迟。主要用途1) 需要低延迟的场景如低端 GPU 设备上的实时摄像头2) 调试 OpenPose 崩溃时定位错误--profile_speed1000若在 CMake 或 Makefile.config 中启用了PROFILER_ENABLEDOpenPose 将在该帧号输出运行时统计信息2. 输入源Producer参数默认值说明--camera-1cv::VideoCapture的摄像头索引整数范围 [0, 9]。默认负数表示自动检测并打开第一个可用摄像头--camera_resolution-1x-1设置摄像头分辨率作用于--camera或--flir_camera。-1x-1时--camera用默认 1280x720--flir_camera用 FLIR 最大可用分辨率--video使用视频文件代替摄像头。可用examples/media/video.avi作为默认示例视频--image_dir处理图片目录。可用examples/media/作为默认示例20 张图片。支持 jpg、png、bmp 等标准格式--flir_camerafalse是否使用 FLIRPoint-Grey双目/立体摄像头--flir_camera_index-1默认 -1 表示同时运行所有检测到的 FLIR 摄像头否则指定索引0 对应序列号最低的摄像头n 对应第 n 低序列号的摄像头--ip_cameraIP 摄像头 URL 字符串支持 RTSP、HTTP 等协议--frame_first0从指定帧开始处理索引从 0 开始第一帧索引为 0--frame_step1处理帧的间隔如--frame_step 5处理第 0、5、10 帧等--frame_last-1处理到指定帧结束-1 禁用。索引从 0 开始如设为 10 会处理 11 帧0-10--frame_flipfalse镜像翻转每一帧如实时摄像头演示用--frame_rotate0旋转每一帧4 种取值0、90、180、270--frames_repeatfalse处理完所有帧后循环重播--process_real_timefalse保持原始帧率如视频。处理太慢时跳帧太快时减速--camera_parameter_pathmodels/cameraParameters/flir存放相机参数的文件夹。若只有一个 XML单视频/摄像头/同相机图片需指定完整 XML 文件路径以 .xml 结尾--frame_undistortfalse默认 false 不去畸变为 true 时根据camera_parameter_path中的相机参数对图像去畸变注意多个输入源同时指定是非法的——src/openpose/utilities/flagsToOpenPose.cpp 会检测image_dir、video、camera、flir_camera、ip_camera中同时选中超过一个的情况并直接报错。3. OpenPose 通用参数默认值说明--model_foldermodels/模型pose、face 等所在文件夹路径绝对或相对路径--prototxt_path--model_folder--prototxt_path构成 prototxt 完整路径为空则使用 OpenPose 默认 ProtoTxt 文件--caffemodel_path--model_folder--caffemodel_path构成 caffemodel 完整路径为空则使用默认 CaffeModel 文件--output_resolution-1x-1显示与输出图像分辨率。-1x-1表示使用输入图像分辨率--num_gpu-1使用的 GPU 数量负数表示使用机器上全部可用 GPU--num_gpu_start0GPU 起始编号--keypoint_scale0最终关键点 (x,y) 坐标的缩放方式即--write_json与--write_keypoint保存坐标的比例。0原始输入分辨率1网络输出尺寸net_resolution2最终输出尺寸resolution3归一化到 [0,1](0,0) 左上角(1,1) 右下角4归一化到 [-1,1](-1,-1) 左上角(1,1) 右下角。与scale_number、scale_gap无关--number_people_max-1限制最大检测人数按评分保留靠前的人评分基于人体在图像中的面积、部位得分及关节连接得分。已知场景人数时可去除误检但也可能把很小或被严重遮挡的人误删。-1保留全部--maximize_positivesfalse降低接受人形候选的阈值同时大幅增加误检与正确检出——最大化平均召回率但可能损害平均精度--fps_max-1.最大处理帧率。默认 -1 表示尽可能快地处理若 GUI 显示过快可调小以便逐帧分析4. 身体姿态OpenPose Body Pose参数默认值说明--body10禁用身体关键点检测如只做更快但精度略低的面部检测、自定义手部检测器1默认进行身体关键点估计2禁用内部身体姿态估计网络但仍运行贪心关联解析算法--model_poseBODY_25模型选择BODY_25CUDA 最快、最准、含脚部关键点、COCO18 关键点、MPI15 关键点CPU 上最快但最不准、MPI_4_layers15 关键点更快更不准--net_resolution-1x368必须是 16 的倍数。增大可能提升精度减小提升速度。为达到速度-精度平衡应尽量贴近输入图像的纵横比。某一维设为-1时 OpenPose 按输入自动选择最优纵横比。默认-1x368在 16:9 分辨率如 1920x1080、1280x720下等价于656x368--net_resolution_dynamic1.仅对图片或自定义输入生效视频/摄像头无效。为 0 或负数时-1行为如上述否则为防止显存溢出net_resolution中的-1会裁剪为该值乘以默认 16/9 纵横比宽度656。如net_resolution_dynamic 10 net_resolution -1x368会裁剪到 6560x368。小显存 GPU 建议 1大显存建议 0--scale_number1做尺度平均的尺度个数--scale_gap0.25尺度间间隔仅scale_number 1时生效。初始尺度恒为 1想改初始尺度应去缩放net_resolution--upsampling_ratio0.net_resolution与网络输出结果之间的上采样比例。≤0默认时使用网络默认值推荐5. 身体姿态热图与部位候选Heatmaps and Part Candidates参数默认值说明--heatmaps_add_partsfalse为 true 时把身体部位热图填充进op::Datum::poseHeatMaps面部/手部热图同理分别进faceHeatMaps/handHeatMaps。多个add_heatmaps_X同时开启时按顺序连续存放身体部位 背景 PAFs顺序遵循POSE_BODY_PART_MAPPING。程序速度会显著下降非 OpenPose 必需仅当你后续确实要使用这些信息时开启--heatmaps_add_bkgfalse功能同--heatmaps_add_parts但额外加入背景热图--heatmaps_add_PAFsfalse功能同--heatmaps_add_parts但额外加入 PAFs--heatmaps_scale20热图缩放到 [-1,1]1[0,1]2整数圆整到 [0,255]3不缩放--part_candidatesfalse需同时开启--write_json才会保存。为 true 时把op::Datum::poseCandidates组装成人之前检测到的全部身体部位候选写入 JSON。候选数量通常 ≥ 最终关键点数空部位以 0 填充。速度轻微下降6. 面部关键点OpenPose Face参数默认值说明--facefalse开启面部关键点检测。复用部分身体参数如model_folder。会显著降低性能并增加显存占用图像中人数越多越慢--face_detector0面部矩形检测器类型0默认OpenPose 身体检测器身体开启时最准最快1OpenCV 面部检测器未对手部实现2由用户提供3额外应用手部跟踪仅对手部。跟踪可能改善摄像头每 GPU FPS 7与视频场景的手部关键点检测但这是位置搜索而非人物 ID 跟踪--face_net_resolution368x36816 的倍数且须为正方形语义同net_resolution但作用于面部检测器。多人脸时320x320通常效果不错且显著提速7. 手部关键点OpenPose Hand参数默认值说明--handfalse开启手部关键点检测。复用部分身体参数如model_folder。同--face会降低性能、增加显存速度取决于人数--hand_detector0手部矩形检测器类型语义同--face_detector--hand_net_resolution368x36816 的倍数且须为正方形语义同net_resolution但作用于手部检测器--hand_scale_number1语义同scale_number但作用于手部。官方最佳效果来自hand_scale_number6与hand_scale_range0.4--hand_scale_range0.4语义同scale_gap但作用于手部最小与最大尺度的总跨度尺度以比例 1 为中心。如 scaleRange0.4、scalesNumber2 时得到 0.8 与 1.2 两个尺度8. 3-D 重建OpenPose 3-D Reconstruction参数默认值说明--3dfalse运行 OpenPose 3-D 重建演示1) 从立体相机系统读取2) 从多视角进行 3-D 重建3) 显示 3-D 重建结果。注意只显示 1 个人多人会失败--3d_min_views-1重建每个关键点所需的最小视角数。默认 -1 时要求 max(2, min(4, #cameras-1)) 个相机看到该关键点--3d_views-1--image_dir或--video的补充选项每次迭代读取指定数量的图像支持立体相机处理--3d。需设置--camera_parameter_path且参数文件夹中必须能找到与该数值等量的 xml 文件9. 附加算法Extra algorithms实验性参数默认值说明--identificationfalse实验性尚未可用。是否启用跨帧人物识别--tracking-1实验性尚未可用。是否启用跨帧人物跟踪数值表示两次 OpenPose 关键点检测之间执行跟踪的帧数。-1默认禁用0 表示与 OpenPose 关键点检测同时运行可能比单独 OpenPose 精度更高--ik_threads0实验性尚未可用。是否从 3-D 关键点做逆运动学IK求 3-D 关节角。默认 0 线程禁用增加线程会提速但增大整体延迟10. 渲染OpenPose Rendering参数默认值说明--part_to_show0可视化通道0默认全部身体部位1背景热图2热图叠加3PAFs 叠加4-(4#keypoints)各身体部位热图其后为各部位对 PAF--disable_blendingfalse开启后在黑色背景上渲染结果骨架或热图而非叠加到原图。相关参数part_to_show、alpha_pose、alpha_heatmap11. 身体渲染OpenPose Rendering Pose参数默认值说明--render_threshold0.05只有置信度高于此阈值的关键点才会被渲染。注意仅影响 OpenPose 基础 GUI 的视觉显示不影响保存结果。阈值高0.5只渲染非常清晰的身体部位阈值低~0.1会输出猜测/遮挡的关键点但也带来更多误检--render_pose-10不渲染1CPU 渲染略快2GPU 渲染较慢但功能更全如支持alpha_X参数。-1自动CPU_ONLY 编译选 CPUCUDA 编译选 GPU。开启渲染时会在outputData与cvOutputData上同时渲染原图与要显示的身体部位关键点、热图或 PAFs--alpha_pose0.6身体部位渲染的混合因子0-1。1 完全显示0 隐藏。仅 GPU 渲染有效--alpha_heatmap0.7热图与原帧之间的混合因子0-1。1 只显示热图0 只显示原帧。仅 GPU 渲染有效12. 面部渲染OpenPose Rendering Face参数默认值说明--face_render_threshold0.4语义同render_threshold作用于面部关键点--face_render-1语义同render_pose作用于面部。额外选项-1 使用与render_pose相同的配置--face_alpha_pose0.6语义同alpha_pose作用于面部--face_alpha_heatmap0.7语义同alpha_heatmap作用于面部13. 手部渲染OpenPose Rendering Hand参数默认值说明--hand_render_threshold0.2语义同render_threshold作用于手部关键点--hand_render-1语义同render_pose作用于手部。额外选项-1 使用与render_pose相同的配置--hand_alpha_pose0.6语义同alpha_pose作用于手部--hand_alpha_heatmap0.7语义同alpha_heatmap作用于手部14. 显示Display参数默认值说明--fullscreenfalse全屏模式运行运行时按 f 切换--no_gui_verbosefalse不在 GUI 输出图像上写文字如当前帧号与人数不影响姿态渲染--display-1显示模式-1 自动选择0 不显示无 X server 时有用也轻微提速2 二维显示3 三维显示需--3d1 同时显示二维与三维15. 命令行进度输出CLI Verbose参数默认值说明--cli_verbose-1.f-1默认禁用为正整数时每verbose帧在命令行打印一次进度为 (0,1) 区间小数时按总帧数的verbose比例打印进度16. 结果保存Result Saving参数默认值说明--write_images以write_images_format指定格式保存渲染后帧的目录--write_images_formatpngwrite_images的文件扩展名与格式如 png、jpg、bmp。兼容扩展名以 OpenCVcv::imwrite为准--write_video以 motion JPEG 视频格式保存渲染帧的完整路径路径需以.avi结尾内部用cv::VideoWriterwrite_video_fps控制帧率。也可用.mp4扩展名文件更小且支持--write_video_with_audio但要求1) Ubuntu 或 Mac2) 已安装 FFmpegsudo apt-get install ffmpeg3) 临时创建与最终视频同名去掉扩展名的文件夹存放中间帧--write_video_fps-1.录像帧率。默认尝试取输入源的帧率如输入视频或摄像头帧率。若输入源没有 FPS如image_dir、未编译摄像头支持的 OpenCV请手动设置--write_video_with_audiofalse输入与输出均为视频时保存音频。要求输出路径以.mp4结尾见write_video--write_video_3d语义同--write_video作用于 3-D 输出--write_video_adam实验性尚未可用。语义同--write_video作用于 Adam 模型--write_json以 JSON 格式保存 OpenPose 输出的目录包含身体、手部、面部关键点2-D 与 3-D以及开启--part_candidates时的部位候选--write_coco_json以 COCO 验证格式保存人体姿态数据的完整路径。若同时需要 foot/face/hands 等 JSON--write_coco_json_variants会以不同文件后缀保存--write_coco_json_variants1位标志1body2foot4face8hands可叠加0全部候选。如 7 表示 bodyfootface--write_coco_json_variant0实验性目前仅对 car JSON 生效选择 cocoJsonSaver 的 COCO 变体--write_heatmaps以 PNG 格式保存身体姿态热图的目录。必须至少开启 1 个add_heatmaps_X标志--write_heatmaps_formatpngwrite_heatmaps的文件扩展名与格式语义同write_images_format。无损压缩建议整数heatmaps_scale用png浮点值用float。详见 doc/02_output.md--write_keypoint已废弃改用write_json保存人体关键点数据的目录格式由write_keypoint_format决定--write_keypoint_formatyml已废弃改用write_jsonwrite_keypoint的文件扩展名与格式json、xml、yaml、yml。OpenCV 3.0 不支持 json请用write_json其中write_keypoint已被标记废弃在 examples/openpose/openpose.cpp 中只要检测到FLAGS_write_keypoint非空就会打印提示建议一律改用write_json。17. 结果保存 - 附加算法参数默认值说明--write_bvh实验性尚未可用。如~/Desktop/mocapResult.bvh18. UDP 通信参数默认值说明--udp_host实验性尚未可用。UDP 通信的 IP如192.168.0.1--udp_port8051实验性尚未可用。UDP 通信端口号小结本文围绕 OpenPose Demo 的进阶用法展开通过--output_resolution、--net_resolution系列与--disable_multi_thread在延迟、精度、帧率之间取舍通过--hand_scale_number/--hand_scale_range/--hand_detector 3提升手部关键点的精度与稳定性通过--render_pose 0与--face_render/--hand_render的组合实现无身体渲染的面部/手部输出通过--logging_level与--profile_speed定位问题通过--heatmaps_add_*与--write_heatmaps导出网络中间结果并在 BODY_25 与 COCO/MPI 之间做出正确的模型选型。遇到不确定的参数时随时使用--help并按examples/openpose/openpose.cpp:小节核对再对照本文的分类速查表即可快速落地。【免费下载链接】openposeOpenPose: Real-time multi-person keypoint detection library for body, face, hands, and foot estimation项目地址: https://gitcode.com/gh_mirrors/op/openpose创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门