OpenPose - Maximizing the OpenPose Speed

1. OpenPose 基准

OpenPose 提供了各显卡预计能达到的运行速度基准.

OpenPose Benchmark

2. 速度分析(Profiling Speed)

OpenPose 在 basic GUI 中显示 FPS. 在运行 OpenPose 时,通过命令行可以获得更复杂的速度度量(speed metrics).

为此,需要在 OpenPose 编译安装时选择 PROFILER_ENABLED flag 选项. 在处理 F 帧 之后,OpenPose 会自动对每一个 subthread 进行显示时间分析. (默认 F=1000,可以通过 --profile_speed flag 进行修改).

[1] - 1 张显卡的时间分析:FPS 是在终端命令行中显示的最慢的时间(因为 OpenPose 是多线程的multi-threaded). 时间是以毫秒为单位的,因此 FPS=1000/millisecond_measurement.

[2] - 多张显卡的时间分析:假设有 n张显卡,则需要等待 n x F 帧,以可视化每张显卡的速度. FPS = minFPS(speed_per_GPU/n, worst_time_measurement_other_than_GPUs). 对于 < 4 张 GPUs 时,一般 FPS = speed_per_GPU/n.

3. 保持精度时加快速度

Speed Up Preserving Accuracy

OpenPose 提供了一些建议,以在保持精度的前提下,最大化实时运行速度.

[1] - 在 CMake 编译时,开启 WITH_OPENCV_WITH_OPENGL flag,以获得更快速度的 GUI 显示(必须需要保证 OpenCV 具有 OpenCL 支持).

注:Ubuntu 中,apt-get install安装的默认的 OpenCV 不支持 OpenGL.

[2] - 将 GPU 渲染更改为 CPU 渲染,能够获得大约 +0.5 FPS (--render_pose 1).

[3] - 使用 cuDNN 5.1 (cuDNN 6 慢了大约 ~10% ).

[4] - 使用 BODY_25 模型,以同时最大化速度和精度(但,COCO 和 MPII 模型速度更慢,精度更低)

4. 加快速度并减少内存

Speed Up and Memory Reduction

OpenPose 提供的最大化 OpenPose 速度,但保持精度均衡的建议:

[1] - 减少 --net_resolution,如 320x176,精度较低.

[2] - 对于 Face,减少 --face_net_resolution. 分辨率为 320x320 时效果较佳.

[3] - [1] 和 [2] 同时能够减少 GPU 显存占用(或 CPU 版本减少了 RAM 内存).

[4] - 使用 BODY_25 模型,以同时最大化速度. 使用 MPI_4_layers 模型,最小化 GPU 显存占用,但精度更低,速度更慢,Body Parts 数更少.

注:最大精度的配置:

# Ubuntu: Body
./build/examples/openpose/openpose.bin 
            --net_resolution "1312x736" 
            --scale_number 4 
            --scale_gap 0.25
            
# Ubuntu: Body + Hand + Face
./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

5. CPU 版本

OpenPose CPU 版本,对于 COCO 模型的运行速度约为 0.3 FPS,对于默认的 BODY_25 模型的运行速度约为 0.1 FPS (如,大约 15秒/每帧). 采用 COCO 模型或减少 net_resolution.

矛盾事实:CPU 版本 OpenPose,BODY_25 模型比 COCO 模型大约慢 5x 倍,但 GPU 版本却快了大约 40%.

Last modification:May 7th, 2019 at 10:17 pm