本文是针对于Lite-HRNet模型在mpii_test数据集上的测试(通过pycharm连接远程服务器进行测试)
地址映射:/data/zhangyy/PoseEstimation/Lite——E:\postgraduate\PPT\code\Lite\Lite-HRNet-hrnet
代码GitHub地址:https://github.com/HRNet/Lite-HRNet
一、配置过程
大致过程参考GitHub的说明。
1.安装mmcv
(1)查询cuda和torch版本,如下图所示。
(2)然后进入NewPytorch环境下,通过如下命令安装
pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.10.0/index.html
注:红色部分要根据自己的环境进行替换。
2.安装所需环境
命令:pip install -r requirements.txt https://pypi.mirrors.ustc.edu.cn/simple
如果报错不成功的话,如下图所示:
那么可以尝试下列命令:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn -r requirements.txt
3.测试
命令:
python tools/test.py /data/zhangyy/PoseEstimation/Lite/configs/top_down/lite_hrnet/mpii/litehrnet_30_mpii_256x256.py /data/zhangyy/PoseEstimation/Lite/checkpoints/litehrnet30_mpii_256x256-faae8bd8_20210622.pth --out /data/zhangyy/PoseEstimation/Lite/result/out.pkl --eval PCKh
注:测试命令很重要,之后的“问题解决”很多都是由于测试命令不正确引起的。
二、问题及解决
1.由于测试命令不正确引起的问题
最初错误的测试命令:
python tools/test.py /data/zhangyy/PoseEstimation/Lite/configs/top_down/lite_hrnet/mpii/litehrnet_30_mpii_256x256.py /data/zhangyy/PoseEstimation/Lite/checkpoints --out /data/zhangyy/PoseEstimation/Lite/result --eval /data/zhangyy/PoseEstimation/Lite/eval
最终正确的测试命令:
python tools/test.py /data/zhangyy/PoseEstimation/Lite/configs/top_down/lite_hrnet/mpii/litehrnet_30_mpii_256x256.py /data/zhangyy/PoseEstimation/Lite/checkpoints/litehrnet30_mpii_256x256-faae8bd8_20210622.pth --out /data/zhangyy/PoseEstimation/Lite/result/out.pkl --eval PCKh
(1)问题:
FileNotFoundError: /data/zhangyy/PoseEstimation/Lite/checkpoints can not be found.
具体如下图所示:
原因:
虽然新建了一个checkpoints文件夹,但是里面没有.pth文件(litehrnet_30_mpii_256x256.pth)
解决:
从mmpose项目(https://github.com/open-mmlab/mmpose)中的modelzoo里面,如下图所示:
下载对应的权重模型(https://mmpose.readthedocs.io/en/latest/papers/backbones.html#litehrnet-cvpr-2021),
这里下载如下图所示的模型(即,litehrnet_30_mpii_256x256.pth):
下载完成之后放在新建的checkpoints文件夹下即可。
之后的测试命令改成如下:
python tools/test.py /data/zhangyy/PoseEstimation/Lite/configs/top_down/lite_hrnet/mpii/litehrnet_30_mpii_256x256.py /data/zhangyy/PoseEstimation/Lite/checkpoints/litehrnet30_mpii_256x256-faae8bd8_20210622.pth --out=/data/zhangyy/PoseEstimation/Lite/result/out.pkl --eval=/data/zhangyy/PoseEstimation/Lite/eval(仍旧不完整)
(2)问题:
raise TypeError(f'Unsupported format: {file_format}')
TypeError: Unsupported format: /data/zhangyy/PoseEstimation/Lite/result
具体如下图所示:
原因:
输出文件格式不对
解决:
测试命令修改如下:
python tools/test.py /data/zhangyy/PoseEstimation/Lite/configs/top_down/lite_hrnet/mpii/litehrnet_30_mpii_256x256.py /data/zhangyy/PoseEstimation/Lite/checkpoints/litehrnet30_mpii_256x256-faae8bd8_20210622.pth --out=/data/zhangyy/PoseEstimation/Lite/result/out.pkl --eval=/data/zhangyy/PoseEstimation/Lite/eval(仍旧不完整)
(3)问题:
raise KeyError(f'metric {metric} is not supported')
KeyError: 'metric /data/zhangyy/PoseEstimation/Lite/eval is not supported'
具体如下图所示:
原因:
mpii数据集的评价指标没有给出
解决:
测试命令修改如下:
python tools/test.py /data/zhangyy/PoseEstimation/Lite/configs/top_down/lite_hrnet/mpii/litehrnet_30_mpii_256x256.py /data/zhangyy/PoseEstimation/Lite/checkpoints/litehrnet30_mpii_256x256-faae8bd8_20210622.pth --out /data/zhangyy/PoseEstimation/Lite/result/out.pkl --eval PCKh
2.由于某个模块或者包缺失导致的问题
(1)问题:
ModuleNotFoundError: No module named 'models'
具体如下图所示:
原因:
导入路径不正确
解决:
在导入前加入
import sys sys.path.append("/data/zhangyy/PoseEstimation/Lite")
(2)问题:
FileNotFoundError: TopDownMpiiDataset: file "/data/zhangyy/PoseEstimation/Lite/configs/_base_/datasets/mpii.py" does not exist
具体如下图所示:
原因:
文件缺失
解决:
从 mmpose config 下复制个__base__(https://github.com/open-mmlab/mmpose/tree/master/configs/_base_/)粘贴到缺失的位置即可。
3.由于版本导致的问题
(1)问题:
cannot import name '_registerMatType' from 'cv2.cv2'
具体如下图所示:
原因:
opencv版本太低
‘_registerMatType’ 在4.5.4 之后版本才出现
解决:
先pip uninstall opencv-python-headless,再 pip install opencv-python-headless;
之后还是不行;
再pip uninstall opencv_python以及pip uninstall opencv_contrib_python,再pip install opencv_contrib_python以及pip intsall opencv_python。
注:这里不知道为什么,先后顺序也很重要。
(2)问题:
cannot import name 'bmat' from 'scipy.sparse.sputils'
具体如下图所示:
原因:
scipy版本不匹配
解决:
先pip uninstall scipy,再 pip3 install scipy;
后面可能还要更新numpy版本:pip install --upgrade numpy。
注:不知道为什么,这里 pip install scipy会报错(先是网络问题,然后找不到对应版本)。
4.其它原因导致的问题
(1)问题:
如下图红色波浪线:
this inception detects names that should resolve but don't
解决:
- 重新导入项目红色波浪线就没有了;
- 虽然是红色波浪线,但是可以运行一下,如果不报错就算了;
- 如果报错,则类比如下:
1 sys.path.append('/data/zhangyy/PoseEstimation/simple-HRNet-master/datasets') 2 from HumanPoseEstimation import HumanPoseEstimationDataset as Dataset
(2)问题:
KeyError: 'LiteHRNet is already registered in models'
具体如下图所示:
原因:
这里暂时不知道是什么原因
解决:
将models/backbones/litehrnet.py中的@BACKBONES.register_module()
改为@BACKBONES.register_module(force=True)
(3)问题:
uv_error = pos_pred_src - pos_gt_src
ValueError: operands could not be broadcast together with shapes (16,2,29116) (16,2,2958)
具体如下图所示:
原因:
标注文件的名称不对,导致测试的是mpii的训练集。
原标注文件的名称如下图所示:
解决:
按照GitHub中Lite-HRNet官方给出的数据集标注名称,如下图所示:
四、测试结果
1.最后测试的结果
如下:
[('Head', 96.21418826739426), ('Shoulder', 94.70108695652173), ('Elbow', 86.80759916424765), ('Wrist', 80.64131572076107), ('Hip', 86.82708146959189), ('Knee', 81.74476235946753), ('Ankle', 77.06620389429422), ('PCKh', 8
6.91647150663545), ('PCKh@0.1', 27.067395349855445)])
2.关于输出的out.pkl文件
关于.pkl文件的说明:
(1)python中有一种存储方式,可以存储为.pkl文件。
(2)该存储方式,可以将python项目过程中用到的一些暂时变量、或者需要提取、暂存的字符串、列表、字典等数据保存起来
可以通过以下方式读取out.pkl文件:
1 import pprint, pickle 2 3 pkl_file = open('/data/zhangyy/PoseEstimation/Lite/result/out.pkl', 'rb') 4 5 data1 = pickle.load(pkl_file) 6 pprint.pprint(data1) 7 8 pkl_file.close()
输出结果部分如下图所示:
之后就是'bbox_ids': [1],格式同上图。