Linux下基于Pytorch框架用HRNet提取骨架特征点+解决CUDA和Torch版本不匹配问题

软硬件环境:
python 3.6.5
Ubuntu 18.04 LTS
Pytorch 1.1.0
NVIDIA TITAN XP 8GB

准备工作

  1. 到github把HRNet代码clone或downloads下来,具体链接:https://github.com/stefanopini/simple-HRNet
    clone代码: git clone https://github.com/stefanopini/simple-HRNet.git

  2. 将所需包都安装下来pip install -r requirements.txt
    这里注意一下!!requirements里面的torch版本是≥1.4.0,如果要安装,请检查自己的cuda是否与这样高版本的torch匹配。否则就不要安装,免得之后还要降版本。具体操作见最后 CUDA和Torch版本不匹配 这一章。
    Linux下基于Pytorch框架用HRNet提取骨架特征点+解决CUDA和Torch版本不匹配问题_第1张图片

  3. 下载预训练权重。 总共是下载三个,需要。不能翻的话,可以直接在这里下:
    pose_hrnet_w48_384x288.pth
    pose_hrnet_w32_256x256.pth
    pose_hrnet_w32_256x192.pth
    【如果愿意等待的话,可以私信或者留下评论,我看到后发给你们】

    之后新建一个文件夹“weights”,并将三个权重放到红圈的位置:
    Linux下基于Pytorch框架用HRNet提取骨架特征点+解决CUDA和Torch版本不匹配问题_第2张图片

  4. clone或者downloads YOLOv3
    https://github.com/eriklindernoren/PyTorch-YOLOv3/tree/47b7c912877ca69db35b8af3a38d6522681b3bb3
    1)把下载下来的YOLOv3文件夹改名,改为yolo,方便此后的操作。
    2)按照上面的树状图,将yolo放到红圈的位置,此前已经有个空的yolo文件夹,直接删掉,用下载下来的YOLOv3文件夹代替即可。
    Linux下基于Pytorch框架用HRNet提取骨架特征点+解决CUDA和Torch版本不匹配问题_第3张图片
    3)接着cd到该文件夹下,安装所需的包(图片与下面的代码不同,原因是我没直接把PyTorch-YOLOv3文件改名为yolo,而是在之后改的,这里早改晚改都可,按自己的想法就行):

cd models/detectors/yolo
sudo pip3 install -r requirements.txt

在这里插入图片描述
4)将YOLOv3的权重保存到红圈位置:
Linux下基于Pytorch框架用HRNet提取骨架特征点+解决CUDA和Torch版本不匹配问题_第4张图片
5)cd 到 /weights下,bash download_weights.sh
Linux下基于Pytorch框架用HRNet提取骨架特征点+解决CUDA和Torch版本不匹配问题_第5张图片

运行Class Usage

  1. 首先,在simple-HRNet-master文件夹下新建一个Python File
import cv2
import matplotlib.pyplot as plt
from SimpleHRNet import SimpleHRNet

model = SimpleHRNet(48, 17, "./weights/pose_hrnet_w48_384x288.pth")
image = cv2.imread("/home/user/Downloads/simple-HRNet-master/2.JPG", cv2.IMREAD_COLOR) #这里的文件路径和文件名根据自己要识别的图片来
joints = model.predict(image)
print(joints)

Linux下基于Pytorch框架用HRNet提取骨架特征点+解决CUDA和Torch版本不匹配问题_第6张图片

视频demo运行:

   1)首先下载一个视频,准备进行识别。(没有视频的也可以给我留言或者私信,看到了我会回复)
   2)进入live-demo.py页面,直接运行,出现报错,大致就是找不到utils.parse_config,解决办法:随着报错,找到/home/user/Downloads/simple-HRNet-master/models/detectors/yolo/models.py,将第9.10行,改为:
from .utils.parse_config import *
from .utils.utils import build_targets, to_cpu, non_max_suppression

3) 这一步比较重要,安装ffmpeg,打开终端:
这里,如果有同学总是出现有关ffmpeg没有‘ffprobe’这个属性之类的报错的话,就好好按照下面的安装流程安装ffmpeg,只要安装成功了,就不会报错。

pip install ffmpeg-python

安装成功的话:输入 ffmpeg -version,就能见到如下内容
Linux下基于Pytorch框架用HRNet提取骨架特征点+解决CUDA和Torch版本不匹配问题_第7张图片
如果还有报错,就尝试另一种办法:
pip uninstall ffmpeg-python删去刚才下的ffmepg
接着,在终端:

sudo apt install ffmpeg

这样应该是能安装成功了

之后

python scripts/live-demo.py --filename xxx.mp4

xxx.mp4具体为自己保存视频的路径,如若需要保存视频,可以再加上--save_video参数
我是在网上找了一段跳舞视频,得到结果如下:
Linux下基于Pytorch框架用HRNet提取骨架特征点+解决CUDA和Torch版本不匹配问题_第8张图片

CUDA和Torch版本匹配出问题

上图暴露一个信息,此时在用CPU跑程序。并且nvidia-smi可以看到gpu根本没有运行,接下来就是解决不用gpu的问题。
Linux下基于Pytorch框架用HRNet提取骨架特征点+解决CUDA和Torch版本不匹配问题_第9张图片
我在终端进行如下操作:

ipython
import torch
torch.cuda.is_available()

Linux下基于Pytorch框架用HRNet提取骨架特征点+解决CUDA和Torch版本不匹配问题_第10张图片
然后又尝试运行自己另一个项目【这个项目是可以自动识别到CUDA】的,却得到如下结果:

“The NVIDIA Driver on your system is too old”。以上两个结果都证明,应该Torch和CUDA是版本匹配出问题了。
1)首先查看torch版本及其匹配的CUDA版本:

python
import torch
torch.__version__ #'1.5.0'
torch.version.cuda #'10.2'

Linux下基于Pytorch框架用HRNet提取骨架特征点+解决CUDA和Torch版本不匹配问题_第11张图片
2)再查看CUDA版本,

nvidia-smi

我的CUDA版本是10.0
3)降低Torch版本(可自己查一下CUDA与Torch版本匹配的关系)
i. 先卸载之前的torch

pip uninstall pytorch

ii. 安装Torch 1.1.0 版本(前提是已经下了安装包,在安装包所在目录打开终端进行安装)
需要安装包可留言或者评论,看到我会回复。
Linux下基于Pytorch框架用HRNet提取骨架特征点+解决CUDA和Torch版本不匹配问题_第12张图片
iii.检查

ipython
import torch
torch.cuda.is_available()

显示True就对了
Linux下基于Pytorch框架用HRNet提取骨架特征点+解决CUDA和Torch版本不匹配问题_第13张图片
最后:
Linux下基于Pytorch框架用HRNet提取骨架特征点+解决CUDA和Torch版本不匹配问题_第14张图片
说明成功了

你可能感兴趣的:(行为检测学习记录,计算机视觉,深度学习,python)