Openpose——windows编译(炒鸡简单)

前言

最近准备看看rtpose的代码,发现已经由openpose这个项目维护着了,由于经常在windows下调试代码,所以尝试了一下如何在windows下编译openpose源码,整体来说非常简单的。

国际惯例,参考博客:

[OpenPose]的主页

[OpenPose]的windows版本,截止到写博客最新版本是v1.70

官方安装说明

【注】强烈建议解压目录路径不要太长,比如解压在E:\code下,不要解压在E:\code\xx\xx\xx\xx_xxx之类的,我自己尝试的时候给我弹一堆问题。

准备工作

使用工具

CMake`,`Visual Studio`,`CUDA`,`cudnn

具体地,我用的具体版本是:

CMake: 3.17.3

Visual Studio:建议2013以上,我用的2017

CUDA: 10.0

cudnn:cudnn-10.0-windows10-x64-v7.6.3.30

关于CUDA的安装就不说了,可以看别人博客,也可以看我配置caffe的时候配置CUDA的方法

【注】无需再下载opencv、caffe之类的东东了,只需要保证你的网络良好,cmake的时候会自动下载,不过我也会针对下载的东西在网盘立马提供备份链接,供网络不好的大哥们下载。

下载工程

直接用git命令行模式:

git clone --recursive https://github.com/CMU-Perceptual-Computing-Lab/openpose.git

或者按照官网说的:

git clone https://github.com/CMU-Perceptual-Computing-Lab/openpose
cd openpose/
git submodule update --init --recursive --remote

一定要注意使用--recursive模式,不然不会在openpose/3rdparty/caffe目录下自动下载作者DIYcaffe工程。

我的这一步上传到了:链接:https://pan.baidu.com/s/1UuSVFk2F3C9qeWGh3jkaZw 提取码:ow7t

生成工程文件

接下来直接到CMake里编译生成VS工程:

在这里插入图片描述

在这里插入图片描述

建议保持默认,暂时不要勾选BUILD_UNITY_SUPPORTBUILD_PYTHON,避免出错无法排查。如果CMAKE出错,建议和我上面的截图核对一下,哪里出问题可以贴在评论区或者私信我,这样能够定位问题。

同时我也把CMakelog贴出来看看:

Selecting Windows SDK version 10.0.17763.0 to target Windows 10.0.18363.
The C compiler identification is MSVC 19.16.27043.0
The CXX compiler identification is MSVC 19.16.27043.0
Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x64/cl.exe
Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x64/cl.exe - works
Detecting C compiler ABI info
Detecting C compiler ABI info - done
Detecting C compile features
Detecting C compile features - done
Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x64/cl.exe
Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x64/cl.exe - works
Detecting CXX compiler ABI info
Detecting CXX compiler ABI info - done
Detecting CXX compile features
Detecting CXX compile features - done
CMAKE_VERSION = 3.17.3
Found CUDA: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.0 (found version "10.0") 
Building with CUDA.
Downloading windows dependencies...
Downloading http://posefs1.perception.cs.cmu.edu/OpenPose/3rdparty/windows/opencv_450_v15_2020_11_18.zip...
Extracting D:/code/C++/openpose/3rdparty/windows/opencv_450_v15_2020_11_18.zip...
Downloading http://posefs1.perception.cs.cmu.edu/OpenPose/3rdparty/windows/caffe3rdparty_16_2020_11_14.zip...
Extracting D:/code/C++/openpose/3rdparty/windows/caffe3rdparty_16_2020_11_14.zip...
Downloading http://posefs1.perception.cs.cmu.edu/OpenPose/3rdparty/windows/caffe_16_2020_11_14.zip...
Extracting D:/code/C++/openpose/3rdparty/windows/caffe_16_2020_11_14.zip...
Windows dependencies downloaded.
Adding Example Calibration
Adding Example tutorial_add_module_custom_post_processing
Adding Example tutorial_api_thread_1_user_processing_function
Adding Example tutorial_api_thread_2_user_input_processing_output_and_datum
Adding Example OpenPoseDemo
Adding Example 01_body_from_image_default
Adding Example 02_whole_body_from_image_default
Adding Example 03_keypoints_from_image
Adding Example 04_keypoints_from_images
Adding Example 05_keypoints_from_images_multi_gpu
Adding Example 06_face_from_image
Adding Example 07_hand_from_image
Adding Example 08_heatmaps_from_image
Adding Example 09_keypoints_from_heatmaps
Adding Example 10_asynchronous_custom_input
Adding Example 11_asynchronous_custom_input_multi_camera
Adding Example 12_asynchronous_custom_output
Adding Example 13_asynchronous_custom_input_output_and_datum
Adding Example 14_synchronous_custom_input
Adding Example 15_synchronous_custom_preprocessing
Adding Example 16_synchronous_custom_postprocessing
Adding Example 17_synchronous_custom_output
Adding Example 18_synchronous_custom_all_and_datum
Download the models.
Downloading BODY_25 model...
NOTE: This process might take several minutes depending on your internet connection.
Not downloading body (COCO) model
Not downloading body (MPI) model
Downloading face model...
NOTE: This process might take several minutes depending on your internet connection.
Downloading hand model...
NOTE: This process might take several minutes depending on your internet connection.
Models Downloaded.
Configuring done

然后再cmake里面再generate一下,就可以Open Project了。

或者Genrate完毕以后,在openpose/build下就能看到openpose.sln文件了,打开就行。

【注】有时候由于网络原因,下载文件会失败,导致生成失败或者编译不成功,可以手动下载:

pose_iter_584000.caffemodel,放入\openpose\models\pose\body_25

pose_iter_440000.caffemodel,放入\openpose\models\pose\coco

pose_iter_160000.caffemodel,放入\openpose\models\pose\mpi

pose_iter_116000.caffemodel,放入\openpose\models\face

pose_iter_102000.caffemodel,放入\openpose\models\hand

三方库(放到\openpose\3rdparty\windows,解压方式选择解压到当前文件夹):

caffe_cpu_2018_05_27:链接:https://pan.baidu.com/s/1qjya7lWbj8jXu_8Hx4t5JQ 提取码:873e

caffe_16_2020_11_14:链接:https://pan.baidu.com/s/1Itu_C_8gWbHlGr1AMBaM1Q 提取码:hl6y

opencv_450_v15_2020_11_18:链接:https://pan.baidu.com/s/1yjmTCU11m1yjIoz4RrtotQ 提取码:bq1r

caffe3rdparty_16_2020_11_14:链接:https://pan.baidu.com/s/16kGyDG9Xwsun_wvnACU4Zw 提取码:ccsi

编译工程

注意我们CMake时候选了x64,所以打开的VS工程也是默认DEBUG x64。再次提示我用的VS2017

在这里插入图片描述

直接对着整个工程ALL_BUILD生成即可,如果出错,请把错误在评论区或者私信指出。

生成完毕可以在openpose/build/x64/Debug下看到很多生成的exe,代表成功了。

然后将你想测试的项目设置成启动项

在这里插入图片描述

接下来运行就行;如果这里运行报错,建议直接使用CPU版本,方法就CMAKE里面的GPU_MODE改成CPU_ONLYUSE_CUDNN选项去掉

在这里插入图片描述

整个工程的文件也打包放到百度云了:

链接:https://pan.baidu.com/s/1c8BwQvEhycjwEARcRjZZwA
提取码:9v3u

后记

这个代码工程比较大,其实我个人建议跑rtpose的代码,虽然配置有点难度,但是源码看着很清晰。这个回头再说,下一篇博客可能就是解析openpose的前身rtpose的论文了:Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields
即将参考的博客是:Human pose estimation using OpenPose with TensorFlow

【更新日志2020-1-15】
这里有一个超级简单的,基于opencv调用openpose的caffe模型,实现多人姿态估计的代码:
https://github.com/spmallick/learnopencv/tree/master/OpenPose-Multi-Person

公众号已同步本篇博客,如有问题可直接评论或公众号私聊。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/246603.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

强化学习——Qlearning

前言 在控制决策领域里面强化学习还是占很重比例的,最近出了几篇角色控制的论文需要研究,其中部分涉及到强化学习,都有开源,有兴趣可以点开看看: A Deep Learning Framework For Character Motion Synthesis and Edit…

【TensorFlow-windows】keras接口学习——线性回归与简单的分类

前言 之前有写过几篇TensorFlow相关文章,但是用的比较底层的写法,比如tf.nn和tf.layers,也写了部分基本模型如自编码和对抗网络等,感觉写起来不太舒服,最近看官方文档发现它的教程基本都使用的keras API,这…

【TensorFlow-windows】keras接口——卷积手写数字识别,模型保存和调用

前言 上一节学习了以TensorFlow为底端的keras接口最简单的使用,这里就继续学习怎么写卷积分类模型和各种保存方法(仅保存权重、权重和网络结构同时保存) 国际惯例,参考博客: 官方教程 【注】其实不用看博客,直接翻到文末看我的c…

【TensorFlow-windows】keras接口——BatchNorm和ResNet

前言 之前学习利用Keras简单地堆叠卷积网络去构建分类模型的方法,但是对于很深的网络结构很难保证梯度在各层能够正常传播,经常发生梯度消失、梯度爆炸或者其它奇奇怪怪的问题。为了解决这类问题,大佬们想了各种办法,比如最原始的…

【TensorFlow-windows】keras接口——卷积核可视化

前言 在机器之心上看到了关于卷积核可视化相关理论,但是作者的源代码是基于fastai写的,而fastai的底层是pytorch,本来准备自己用Keras复现一遍的,但是尴尬地发现Keras还没玩熟练,随后发现了一个keras-vis包可以用于做…

【TensorFlow-windows】投影变换

前言 没什么重要的,就是想测试一下tensorflow的投影变换函数tf.contrib.image.transform中每个参数的含义 国际惯例,参考文档 官方文档 描述 调用方法与默认参数: tf.contrib.image.transform(images,transforms,interpolationNEAREST,…

【TensorFlow-windows】扩展层之STN

前言 读TensorFlow相关代码看到了STN的应用,搜索以后发现可替代池化,增强网络对图像变换(旋转、缩放、偏移等)的抗干扰能力,简单说就是提高卷积神经网络的空间不变性。 国际惯例,参考博客: 理解Spatial Transformer…

【TensorFlow-windows】MobileNet理论概览与实现

前言 轻量级神经网络中,比较重要的有MobileNet和ShuffleNet,其实还有其它的,比如SqueezeNet、Xception等。 本博客为MobileNet的前两个版本的理论简介与Keras中封装好的模块的对应实现方案。 国际惯例,参考博客: 纵…

【TensorFlow-windows】keras接口——ImageDataGenerator裁剪

前言 Keras中有一个图像数据处理器ImageDataGenerator,能够很方便地进行数据增强,并且从文件中批量加载图片,避免数据集过大时,一下子加载进内存会崩掉。但是从官方文档发现,并没有一个比较重要的图像增强方式&#x…

【TensorFlow-windows】TensorBoard可视化

前言 紧接上一篇博客,学习tensorboard可视化训练过程。 国际惯例,参考博客: MNIST机器学习入门 Tensorboard 详解(上篇) Tensorboard 可视化好帮手 2 tf-dev-summit-tensorboard-tutorial tensorflow官方mnist_…

深度学习特征归一化方法——BN、LN、IN、GN

前言 最近看到Group Normalization的论文,主要提到了四个特征归一化方法:Batch Norm、Layer Norm、Instance Norm、Group Norm。此外,论文还提到了Local Response Normalization(LRN)、Weight Normalization(WN)、Batch Renormalization(BR)…

【TensorFlow-windows】keras接口——利用tensorflow的方法加载数据

前言 之前使用tensorflow和keras的时候,都各自有一套数据读取方法,但是遇到一个问题就是,在训练的时候,GPU的利用率忽高忽低,极大可能是由于训练过程中读取每个batch数据造成的,所以又看了tensorflow官方的…

骨骼动画——论文与代码精读《Phase-Functioned Neural Networks for Character Control》

前言 最近一直玩CV,对之前学的动捕知识都忘得差不多了,最近要好好总结一下一直以来学习的内容,不能学了忘。对2017年的SIGGRAPH论文《Phase-Functioned Neural Networks for Character Control》进行一波深入剖析吧,结合源码。 额…

颜色协调模型Color Harmoniztion

前言 最近做换脸,在肤色调整的那一块,看到一个有意思的文章,复现一波玩玩。不过最后一步掉链子了,有兴趣的可以一起讨论把链子补上。 主要是github上大佬的那个复现代码和原文有点差异,而且代码复杂度过高&#xff0…

Openpose推断阶段原理

前言 之前出过一个关于openpose配置的博客,不过那个代码虽然写的很好,而且是官方的,但是分析起来很困难,然后再opencv相关博客中找到了比较清晰的实现,这里分析一波openpose的推断过程。 国际惯例,参考博…

换脸系列——眼鼻口替换

前言 想着整理一下换脸相关的技术方法,免得以后忘记了,最近脑袋越来越不好使了。应该会包含三个系列: 仅换眼口鼻;换整个面部;3D换脸 先看看2D换脸吧,网上已经有现成的教程了,这里拿过来整理一…

换脸系列——整脸替换

前言 前面介绍了仅替换五官的方法,这里介绍整张脸的方法。 国际惯例,参考博客: [图形算法]Delaunay三角剖分算法 维诺图(Voronoi Diagram)分析与实现 Delaunay Triangulation and Voronoi Diagram using OpenCV (…

3D人脸重建——PRNet网络输出的理解

前言 之前有款换脸软件不是叫ZAO么,分析了一下,它的实现原理绝对是3D人脸重建,而非deepfake方法,找了一篇3D重建的论文和源码看看。这里对源码中的部分函数做了自己的理解和改写。 国际惯例,参考博客: 什…

tensorflow官方posenet模型解析

前言 tensorflow官方有个姿态估计项目,这个输入和openpose还有点不一样,这里写个单人情况下的模型输出解析方案。 国际惯例,参考博客: 博客: 使用 TensorFlow.js 在浏览器端上实现实时人体姿势检测 tensorflow中posnet的IOS代…

tensorflow2安装时候的一个dll找不到的错误

电脑环境: vs2015python3.7.6,使用anaconda安装的CUDA 10.1cuDnn 7.6.5tensorflow2.1.0 错误内容 File "C:\Users\zb116\anaconda3\lib\imp.py", line 242, in load_modulereturn load_dynamic(name, filename, file)File "C:\Users\z…