Open-Pose运行成功过程
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版本之类的,安装库,搞了很久,奈何没有早点阅读到他们的博客,
本文所用设备
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
你可以查看一下里面的内容就是安装库的
(注意该命令我运行了很久,很多次都是失败的,可能是国内的原因,建议多次尝试)
编译后期C++ 库
- 需要安装 swig ,win 不能pip ,只能下载然后将有 swig.exe 的路径加入到path环境变量
下载地址 http://www.swig.org/download.html
查看是否能调用swig cmd输入 swig --help - 进入 下载的文件夹,
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运行的,只有运行时间,不显示图片,
我就从上面的信息开始找问题,然后发现 需要加载图模型,然后我把。。。。说多了
在这里弄了很久,一直都是报错
import tensorflow.contrib.tensorrt as trt ModuleNotFoundError: No module named ‘tensorflow.contrib.tensorrt’
然后看别人的评论说把这句话注释掉就好了,发现真的这样子。这些都是我尝试的,累啊
然后在命令窗口运行发现只出现运行时间没有结果,然后才想到打开spyder
运行发现可以了。
运行命令python run.py --model=mobilenet_thin --resize=432x368 --image=./images/p5.jpg
有时候觉得,别人明明写的步骤很详细了,但就是不一样,那你肯定是阅读的不仔细了,少了东西才会报错。
运行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 ,因为你用命令可能还是没有东西,我的就是这样子。
保存视频
#新加的
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)
注意上面的代码,都不是很难懂得,看单词都能猜到语句是用来做什么的
留下一个问题,每次运行完都会视频窗口都会 无响应
加上 waitkey 后不会卡死了,但是会出现异常,没关系,因为还能接着运行,
上一篇: 【时间序列】ARIMA模型做分类
下一篇: Latex完成入侵检测系统综述论文