软硬件环境:
python 3.6.5
Ubuntu 18.04 LTS
Pytorch 1.1.0
NVIDIA TITAN XP 8GB
准备工作
到github把HRNet代码clone或downloads下来,具体链接:https://github.com/stefanopini/simple-HRNet
clone代码: git clone https://github.com/stefanopini/simple-HRNet.git
将所需包都安装下来:pip install -r requirements.txt
这里注意一下!!requirements里面的torch版本是≥1.4.0,如果要安装,请检查自己的cuda是否与这样高版本的torch匹配。否则就不要安装,免得之后还要降版本。具体操作见最后 CUDA和Torch版本不匹配 这一章。
之后新建一个文件夹“weights”,并将三个权重放到红圈的位置:
clone或者downloads YOLOv3:
https://github.com/eriklindernoren/PyTorch-YOLOv3/tree/47b7c912877ca69db35b8af3a38d6522681b3bb3
1)把下载下来的YOLOv3文件夹改名,改为yolo,方便此后的操作。
2)按照上面的树状图,将yolo放到红圈的位置,此前已经有个空的yolo文件夹,直接删掉,用下载下来的YOLOv3文件夹代替即可。
3)接着cd到该文件夹下,安装所需的包(图片与下面的代码不同,原因是我没直接把PyTorch-YOLOv3文件改名为yolo,而是在之后改的,这里早改晚改都可,按自己的想法就行):
cd models/detectors/yolo
sudo pip3 install -r requirements.txt
4)将YOLOv3的权重保存到红圈位置:
5)cd 到 /weights下,bash download_weights.sh
运行Class Usage
首先,在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)
视频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,只要安装成功了,就不会报错。
sudo apt install ffmpeg
安装成功的话:输入 ffmpeg -version,就能见到如下内容
之后
python scripts/live-demo.py --filename xxx.mp4
xxx.mp4具体为自己保存视频的路径,如若需要保存视频,可以再加上--save_video参数
我是在网上找了一段跳舞视频,得到结果如下:
CUDA和Torch版本匹配出问题
上图暴露一个信息,此时在用CPU跑程序。并且nvidia-smi可以看到gpu根本没有运行,接下来就是解决不用gpu的问题。
我在终端进行如下操作:
ipython
import torch
torch.cuda.is_available()
然后又尝试运行自己另一个项目【这个项目是可以自动识别到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'
2)再查看CUDA版本,
nvidia-smi
我的CUDA版本是10.0
3)降低Torch版本(可自己查一下CUDA与Torch版本匹配的关系)
i. 先卸载之前的torch
pip uninstall pytorch
ii. 安装Torch 1.1.0 版本(前提是已经下了安装包,在安装包所在目录打开终端进行安装)
需要安装包可留言或者评论,看到我会回复。
iii.检查
ipython
import torch
torch.cuda.is_available()
显示True就对了
最后:
说明成功了