欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Open-Pose运行成功过程

程序员文章站 2022-07-11 23:47:04
...

Open-Pose运行成功过程

本文参考的其他博客如下(他们都写的很好,但是还是有一点问题):
https://blog.csdn.net/lvcoc/article/details/83109005
https://blog.csdn.net/eereere/article/details/80176007

1. 开源代码

代码点击这里https://github.com/ildoonet/tf-pose-estimation
下载好代码后,了解代码中的readme。

或者直接输入git命令(注意 $ 符号使用 git 来运行的,下面有 git 的下载链接)
$ git clone https://www.github.com/ildoonet/tf-pose-estimation
$ cd tf-pose-estimation

readme中提到需要该版本,但是阅读其他大神博客发现不是必要条件,我之前就是在这里折腾了很久,新建tensorflow版本之类的,安装库,搞了很久,奈何没有早点阅读到他们的博客,

Open-Pose运行成功过程

本文所用设备

win10 + tensorflow-gpu 1.4.0 + spyder
gpu训练需要的加速库 cuda 8.0 和 匹配cudnn,安装的方法教程有很多,这里省略

安装库

按照教程来

git 下载链接https://git-scm.com/downloads/
安装完之后

使用 git bash 运行命令
pip install -r requirements.txt
你可以查看一下里面的内容就是安装库的
(注意该命令我运行了很久,很多次都是失败的,可能是国内的原因,建议多次尝试)
Open-Pose运行成功过程

编译后期C++ 库

  1. 需要安装 swig ,win 不能pip ,只能下载然后将有 swig.exe 的路径加入到path环境变量
    下载地址 http://www.swig.org/download.html
    查看是否能调用swig cmd输入 swig --help
  2. 进入 下载的文件夹,
    cd tf_pose/pafprocess
    运行代码
    swig -python -c++ pafprocess.i && python3 setup.py build_ext --inplace

下载图文件

你将会使用到该图

$ cd models/graph/cmu
$ bash download.sh

测试静态图

这里使用的是 cmu 里面的图,如果没有反应肯定是没有下载这里的图了,我之前就是没有下载cmu图,使用的是cmd运行的,只有运行时间,不显示图片,
Open-Pose运行成功过程

我就从上面的信息开始找问题,然后发现 需要加载图模型,然后我把。。。。说多了

Open-Pose运行成功过程

在这里弄了很久,一直都是报错

import tensorflow.contrib.tensorrt as trt ModuleNotFoundError: No module named ‘tensorflow.contrib.tensorrt’

然后看别人的评论说把这句话注释掉就好了,发现真的这样子。这些都是我尝试的,累啊
Open-Pose运行成功过程
然后在命令窗口运行发现只出现运行时间没有结果,然后才想到打开spyder
运行发现可以了。
运行命令
python run.py --model=mobilenet_thin --resize=432x368 --image=./images/p5.jpg
Open-Pose运行成功过程
有时候觉得,别人明明写的步骤很详细了,但就是不一样,那你肯定是阅读的不仔细了,少了东西才会报错。

运行video

相应位置加上

parser.add_argument('--resize-out-ratio', type=float, default=4.0, help='if provided, resize heatmaps before they are post-processed. default=1.0')

注释这个
# humans = e.inference(image)
改成这个

humans = e.inference(image, resize_to_default=(w > 0 and h > 0), 
                             upsample_size=args.resize_out_ratio)

就能运行video。
运行命令

python run_video.py --model=mobilenet_thin --resolution=432x368 --video=./etcs/xx.mp4

建议使用spyder ,因为你用命令可能还是没有东西,我的就是这样子。
Open-Pose运行成功过程

保存视频

    #新加的
    fourcc = cv2.VideoWriter_fourcc('M', 'P', '4', '2')
#    outVideo = cv2.VideoWriter('save.avi',fourcc,fps,size)
    name_video = './etcs/' + str(args).split('/')[-1].split('.')[0] + '_video.avi'
    outVideo = cv2.VideoWriter(name_video, fourcc, fps, (int(width), int(height)))
    
    if cap.isOpened() is False:
        print("Error opening video stream or file")
    while cap.isOpened():
        ret_val, image = cap.read()

#        humans = e.inference(image)
        #将上面改为的
        humans = e.inference(image, resize_to_default=(w > 0 and h > 0), 
                             upsample_size=args.resize_out_ratio)
        
        if not args.showBG:
            image = np.zeros(image.shape)
        image = TfPoseEstimator.draw_humans(image, humans, imgcopy=False)

        cv2.putText(image, "FPS: %f" % (1.0 / (time.time() - fps_time)), (10, 10),  cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)
        cv2.imshow('tf-pose-estimation result', image)
        #新加的代码
        outVideo.write(image)
        

Open-Pose运行成功过程
注意上面的代码,都不是很难懂得,看单词都能猜到语句是用来做什么的

留下一个问题,每次运行完都会视频窗口都会 无响应

Open-Pose运行成功过程
Open-Pose运行成功过程
加上 waitkey 后不会卡死了,但是会出现异常,没关系,因为还能接着运行,