上海古都建筑设计集团,上海办公室装修设计公司,上海装修公司高质量的内容分享社区,上海装修公司我们不是内容生产者,我们只是上海办公室装修设计公司内容的搬运工平台

openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022

guduadmin241月前

玩转OpenPose

  • 【玩转OpenPose】编译篇
    • 一、开发环境
    • 二、下载与安装
      • 2.1 CUDA(用于高性能计算)与 CUDNN(用于深度神经网络计算的支持)
      • 2.2 下载Cmake
      • 2.3 下载0penPose源码
      • 2.4 下载caffe-openpose源码
      • 2.5 下载pybind11源码
      • 三、编译OpenPose(以上步骤完成-开始编译)
        • 3.1 编译GPU
        • 3.2 编译CPU
        • 3.3 demo测试(GPU版和CPU版都相同)
        • 四、建立OpenPoseDemo项目
          • 4.1 先创建项目,建立bin目录和models目录,bin目录放依赖的相关文件,models放模型文件。
          • 4.2 将build_GPU(build_CPU)/x64/Release目录下的openpose.dll复制到项目的bin目录下
          • 4.3 将build_GPU(build_CPU)/bin目录下的全部文件复制到项目的bin目录下
          • 4.4 将build_GPU(build_CPU)/python/openpose/Release目录下的pyopenpose.cp37-win_amd64.pyd文件复制到项目的根目录下
          • 4.5 将openpose/models目录下的所有文件复制到项目的/models目录下
          • 4.6 主要文件已经准备就绪,使用python测试是否可用
          • 五、常见问题
            • 5.1 Check failed: error == cudaSuccess (2 vs. 0) out of memory
            • 5.2 在cmake过程中可能出现提示
            • 5.3 官方常见问题解决方法
            • 六、补充

              【玩转OpenPose】编译篇

              OpenPose人体姿态识别是由美国卡耐基梅隆大学(CMU)基于卷积神经网络和监督学习并以Caffe为框架开发的开源库。可以实现人体动作、面部表情、手指运动等姿态估计。适用于单人和多人,具有极好的鲁棒性。是世界上首个基于深度学习的实时多人二维姿态估计应用。

              编译好的OpenPose项目: 已上传供大家使用(包括CPU版和GPU版) (C++接口和Python接口)

              一、开发环境

              1、系统环境

              操作系统CPUGPU
              windows 10Intel® Core™ i5-8300HGeForce GTX 1050 Ti

              2、软件环境

              pythonCUDACUDNNVisual StudioCmake
              3.7v11.68.42022 community3.24

              二、下载与安装

              2.1 CUDA(用于高性能计算)与 CUDNN(用于深度神经网络计算的支持)

              ① 官方教程:

              CUDA:https://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/index.html

              CUDNN:https://docs.nvidia.com/deeplearning/sdk/cudnn-install/index.html#installwindows

              ② CUDA安装

              CUDA toolkit Download:https://developer.nvidia.com/cuda-toolkit-archive

              桌面右键打开NVIDIA控制面板,点击帮助-系统信息-组件,查看自己显卡支持的CUDA版本:

              openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第1张

              在CUDA网站下载对应的版本:

              openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第2张

              下载安装包:

              openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第3张

              **安装CUDA:**保持路径默认即可

              openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第4张openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第5张

              openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第6张

              openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第7张

              在CUDA的安装路径这里,保持默认就好,默然安装在C盘(保证C盘有足够空间,防止后期编译找不到CUDA的路径)。

              安装完成后:

              查看环境变量是否存在:

              openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第8张

              openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第9张

              如果系统变量没有自动配置的话,需要我们手动配置。路径是根据前面是否自己有没有修改来指定。

              **最后:**配置好环境变量后,我们检查下CUDA是否安装成功。

              • 打开cmd
              • 输入
                nvcc -V 
                

                nvcc --version
                

                openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第10张

                显示cuda_11.6成功下载完成!

                ③ CUDNN安装

                官网下载:https://developer.nvidia.com/rdp/cudnn-archive

                CUDNN需要对应安装的CUDA版本

                openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第11张

                openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第12张

                下载完成后解压全部的文件后:

                openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第13张

                CUDA和CUDNN安装成功!!!

                2.2 下载Cmake

                下载对于的版本:

                链接:https://cmake.org/download/

                openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第14张

                后解压!看到Cmake-gui即可。

                2.3 下载0penPose源码

                方法一: 浏览器打开点击下载

                openpose官方链接:https://github.com/CMU-Perceptual-Computing-Lab/openpose(需要科学探索下载速度才快)

                方法二: git命令下载

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

                下载所需的模型:

                1.运行 …/openpose-master/models/ 中的 getModels.bat

                使用迅雷下载链接

                face模型:http://posefs1.perception.cs.cmu.edu/OpenPose/models/face/pose_iter_116000.caffemodel

                hand模型:http://posefs1.perception.cs.cmu.edu/OpenPose/models/hand/pose_iter_102000.caffemodel

                pose/body_25模型:http://posefs1.perception.cs.cmu.edu/OpenPose/models/pose/body_25/pose_iter_584000.caffemodel

                pose/coco模型:http://posefs1.perception.cs.cmu.edu/OpenPose/models/pose/coco/pose_iter_440000.caffemodel

                pose/mpi模型:http://posefs1.perception.cs.cmu.edu/OpenPose/models/pose/mpi/pose_iter_160000.caffemodel

                2. 运行 …/openpose-master/3rdparty/windows 中的 ①getCaffe.bat | ②getCaffe3rdparty.bat | ③getFreeglut.bat | ④getOpenCV.bat | ⑤getSpinnaker.bat

                (速度慢,百度网盘分享给大家-替换3rdparty/windows)

                2.4 下载caffe-openpose源码

                方法一: 链接下载

                caffe链接: https://github.com/CMU-Perceptual-Computing-Lab/caffe

                方法二: git命令下载

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

                将该文件解压放在 …/openpose-master/3rdparty/ 内覆盖caffe

                2.5 下载pybind11源码

                方法一: 链接下载

                caffe链接: https://github.com/pybind/pybind11

                方法二: git命令下载

                git clone https://github.com/pybind/pybind11.git
                

                将该文件解压放在 …/openpose-master/3rdparty/ 内覆盖pybind11

                三、编译OpenPose(以上步骤完成-开始编译)

                1.在openpose-master目录下创建两个文件夹,分别为build_GPU、build_CPU。

                2.在cmake-3.24.0-windows-x86_64/bin中打开cmake-gui

                3.1 编译GPU

                先修改路径,后添加Python接口,用于修改python程序。

                openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第15张

                openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第16张

                然后,点击Configure

                openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第17张

                添加VS版本

                openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第18张

                后设置

                openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第19张

                openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第20张

                由于使用GPU版 GPU_MODE = CUDA

                openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第21张

                接着点击Configure 后点击Generate

                openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第22张

                生成完成后,点击Open Project在VS2022中打开项目,在Release、x64模式下,生成解决方案,等待完成即可。

                openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第23张

                出现以下openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第24张

                OpenPose的python包就编译完成了,在build_GPU/python/openpose/Release目录下,pyd文件。

                3.2 编译CPU

                先修改路径,后添加Python接口,用于修改python程序。

                openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第25张

                openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第16张

                然后,点击Configure

                openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第27张

                添加VS版本

                openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第18张

                后设置

                openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第19张

                openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第20张

                由于使用CPU版

                GPU_MODE = CPU_ONLY

                取消 USE_CUDNN

                openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第31张

                接着点击Configure 后点击Generate

                openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第32张

                生成完成后,点击Open Project在VS2022中打开项目,在Release、x64模式下,生成解决方案,等待完成即可。

                openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第23张

                出现以下openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第24张

                到此,OpenPose的python包就编译完成了,在build_CPU/python/openpose/Release目录下,pyd文件。

                3.3 demo测试(GPU版和CPU版都相同)

                上面的步骤完了之后,C++的例子已经可以运行了,所有C++的例子都在这里,需要用哪个例子,就把它右键设置为启动项目,然后运行就可以了。

                openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第35张

                运行结果:

                openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第36张

                四、建立OpenPoseDemo项目

                4.1 先创建项目,建立bin目录和models目录,bin目录放依赖的相关文件,models放模型文件。

                openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第37张

                4.2 将build_GPU(build_CPU)/x64/Release目录下的openpose.dll复制到项目的bin目录下

                openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第38张

                4.3 将build_GPU(build_CPU)/bin目录下的全部文件复制到项目的bin目录下

                openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第39张

                复制后:

                openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第40张

                4.4 将build_GPU(build_CPU)/python/openpose/Release目录下的pyopenpose.cp37-win_amd64.pyd文件复制到项目的根目录下

                openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第41张

                复制后:

                openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第42张

                4.5 将openpose/models目录下的所有文件复制到项目的/models目录下

                openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第43张

                复制后:

                openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第44张

                4.6 主要文件已经准备就绪,使用python测试是否可用

                import os
                import sys
                import cv2
                from sys import platform
                import argparse
                dir_path = os.path.dirname(os.path.realpath(__file__))
                os.environ['PATH'] = os.environ['PATH'] + ';' + dir_path + '/bin;'
                import pyopenpose as op
                print(op)
                print("成功引入pyopenpose")
                parser = argparse.ArgumentParser()
                # 测试图片的路径要改一下,自己修改
                parser.add_argument("--image_path", 
                default="examples/COCO_val2014_000000000623.jpg",
                                    help="Process an image. Read all standard formats (jpg, png, bmp, etc.).")
                args = parser.parse_known_args()
                # Custom Params (refer to include/openpose/flags.hpp for more parameters)
                params = dict()
                params["model_folder"] = "models/"
                # Add others in path?
                for i in range(0, len(args[1])):
                    curr_item = args[1][i]
                    if i != len(args[1])-1: next_item = args[1][i+1]
                    else: next_item = "1"
                    if "--" in curr_item and "--" in next_item:
                        key = curr_item.replace('-','')
                        if key not in params:  params[key] = "1"
                    elif "--" in curr_item and "--" not in next_item:
                        key = curr_item.replace('-','')
                        if key not in params: params[key] = next_item
                # Construct it from system arguments
                # op.init_argv(args[1])
                # oppython = op.OpenposePython()
                # 修改参数
                 # 修改分辨率,可以降低对显存的占用 (16的倍数)
                params["net_resolution"] = "368x256" 
                # Starting OpenPose
                opWrapper = op.WrapperPython()
                opWrapper.configure(params)
                opWrapper.start()
                # Process Image
                datum = op.Datum()
                imageToProcess = cv2.imread(args[0].image_path)
                datum.cvInputData = imageToProcess
                opWrapper.emplaceAndPop(op.VectorDatum([datum]))
                # Display Image
                print("Body keypoints: \n" + str(datum.poseKeypoints))
                cv2.imshow("OpenPose 1.7.0 - Tutorial Python API", datum.cvOutputData)
                cv2.waitKey(0)
                

                出现以下现象则成功运行:

                openpose环境搭建(详细教程CPUGPU)windows 10+python 3.7+CUDA 11.6+VS2022,在这里插入图片描述,第45张

                五、常见问题

                5.1 Check failed: error == cudaSuccess (2 vs. 0) out of memory

                由于GPU显存不足导致的错误,修改 net_resolution 参数 368x368 (16的倍数)

                或者 --number_people_max 减少追踪人数

                C++接口,加上–net_resolution 160x160。比如:

                OpenPoseDemo.exe --video video.avi --net_resolution 160x160
                

                Python接口,也类似:

                python demo.py --net_resolution 160x160
                

                这个net_resolution具体参数值根据自己的需要修改,分辨率越小,画面每秒传输帧数(fps)越大,但准确率越小,相反,则越大。不过必须是16的倍数。不然会出现这个报错信息:Error: Net input resolution must be multiples of 16.

                5.2 在cmake过程中可能出现提示

                pybind11 does not contain a CMakeLists.txt file
                

                openpose源码文件中缺少pybind11,pybind11是c++和python基本类型转换的工具。

                重新下载pybind11,并把其放入将该文件解压放在 …/openpose-master/3rdparty/ 内覆盖pybind11 见上文。

                5.3 官方常见问题解决方法

                链接:https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/doc/05_faq.md#difference-between-body_25-vs-coco-vs-mpi

                六、补充

                大家有问题在评论区交流,我很乐意为大家解答,码字不易,请大家多多支持;如有不对的地方请指正,谢谢!

网友评论

搜索
最新文章
热门文章
热门标签
 
 做梦梦见自己有老公又和别人结婚  梦到一堆蛇预示着什么意思  梦到自己脱发严重