本文是針對於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],格式同上圖。