(一)AlphaPose
1.項目介紹
項目GitHub地址:GitHub - Amanbhandula/AlphaPose: AlphaPose Implementation in Pytorch along with the pre-trained wights
注:這只是AlphaPose項目的簡化版本,原版地址為:GitHub - MVIG-SJTU/AlphaPose: Real-Time and Accurate Full-Body Multi-Person Pose Estimation&Tracking System,這里以簡化版本為例說明。
背景:本機操作系統為win 10,通過win 10上的pycharm遠程連接Linux服務器運行該項目。由於本機上沒有攝像頭,所以只測試了圖片和視頻,沒有測試攝像頭(如果想測試攝像頭可以參考文末視頻)。
2.環境介紹
(1)cuda 10.2(參考視頻推薦10.1)
查看cuda版本:
import torch print(torch.version.cuda)
(2)cudnn 7.6.5(參考視頻推薦7.6)
查看cudnn版本:
import torch print(torch.backends.cudnn.version()) # 輸出7605對應版本為7.6.5
(3)pytorch (參考視頻推薦cuda 10.1對應的版本,選定了pytorch版本(4)和(5)也就安裝好了)
(4)torch 1.10.0 (參考視頻推薦1.7.1)
查看torch版本:
import torch torch.__version__ # 注意這里是雙下划線
(5)torchvision 0.11.1 (參考視頻推薦0.8.2)
查看torchvision版本:
import torchvision torchvision.__version__ # 注意這里是雙下划線
結果如圖1所示:
圖1
(6)python 3.8
3.pycharm配置AlphaPose環境
參考:https://blog.csdn.net/weixin_42419611/article/details/115797628
4.下載模型
參考文末視頻鏈接P13
5.依賴項
可以直接用pip命令運行requirements.txt文件來安裝依賴項,但是不知道為什么我的pip命令運行不起來,只能手動下載requirements.txt中的包(手動下載方法如下),然后再通過Xftp拉到Linux服務器上,放到/data/z*y/anacoda3/envs/NewPytorch/lib/python3.8/site-packages目錄下即可(這個目錄在之后用到很多次,主要是包的問題)。但是要注意!把下載好的包解壓縮后拉到Linux服務器時,要將名字改為和requirements.txt文件中的名字一樣,否則運行的時候還會找不到包。
手動下載依賴項的兩種方法:
(1)在這個地址下載所需要的包:https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/
下載時,在上面這個鏈接后面直接添加所需要的包名,如要下載visdom這個包:https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/visdom
(2)在GitHub中查找要下載的包名進行下載
附:使用pip時所報的錯誤,即使按照網上所說換成如下豆瓣源也不行
pip install visdom -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
Looking in indexes: http://pypi.douban.com/simple/
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.HTTPConnection object at 0x7f46159fcac0>: Failed to establish a new connection: [Errno -2] 未知的名稱或服務')': /simple/visdom/
total一直從4到0,運行不成功。
6.問題及解決
(1)問題:
from scipy.__config__ import show as show_config
ModuleNotFoundError: No module named 'scipy.__config__'
原因:scipy和numpy版本不兼容,scipy版本太高,沒有scipy.__config_(可以去Linux服務器中/data/z*y/anacoda3/envs/NewPytorch/lib/python3.8/site-packages目錄下看看scipy文件夾中是否有這個文件)
解決:降低scipy版本(我這里下載的是1.3.2),重新手動下載。
另外,可以通過pip show numpy查看numpy版本,我這里是1.21.2。
(2)問題:AttributeError: module 'cv2' has no attribute 'VideoWriter_fourcc'
原因:opencv3.0中才有這個函數
解決:刪除之前的opencv包,重新手動下載opencv_contrib_python-3.4.11.39-cp38-cp38-manylinux2014_x86_64.whl和opencv_python-3.4.11.39-cp38-cp38-manylinux2014_x86_64.whl
(3)問題:AssertionError: Cannot capture source
原因:沒有找到源
解決:在README.txt中找到這一行參數(圖2)復制到指定位置(圖4中所示位置)即可。
圖2
注:A、如果是測試視頻,復制圖2中這行參數;如果測試圖片,復制圖2中上面那一行參數。
B、如果是測試視頻,${path to video}改為測試視頻所在的目錄(要絕對路徑,否則會出問題),具體到視頻的名字;如果測試圖片,${img_directory}改為測試圖片所在的目錄(這里不用絕對路徑,/examples/demo即可),而不用具體到圖片名字(因為將其當作list處理了)。
C、不管是測試視頻還是圖片,后面的--outdir之后的路徑都要改為絕對路徑,否則最后處理之后的圖片不能被保存。
打開Edit Configuarions,如圖3所示。
圖3
將圖2中復制的參數粘貼到圖4位置即可。
圖4
注:A、如果測試圖片,左側選中demo;如果測試視頻,左側選中video_demo。
B、測試視頻--video /data/z**y/PoseEstimation/AlphaPose/examples/testvideo/1.mp4 --outdir examples/resvideo/ --save_video --sp
測試圖片--indir examples/demo --outdir /data/z**y/PoseEstimation/AlphaPose/examples/resimg --save_img --vis --sp
(4)問題:測試圖片時,
data_loader = ImageLoader(im_names, batchSize=args.detbatch, format='yolo').start()
NameError: name 'im_names' is not defined
具體如圖5所示:
圖5
原因:無法獲取輸入圖像的名字,可能參數沒有配置好
解決:如圖4所示。
(5)問題:TypeError: 'module' object is not callable
定位到demo.py第72行:im_names_desc =tqdm(range(data_len))
原因:https://blog.csdn.net/coding_zhang/article/details/89403135
解決:將該行改為:im_names_desc = tqdm.tqdm(range(data_len))
(6)問題:[W CudaIPCTypes.cpp:15] Producer process has been terminated before all shared CUDA tensors released. See Note [Sharing CUDA tensors]
具體如圖6所示:
圖6
解決:圖4中的parameter最后要加上--sp,單線程。
(7)問題:最后沒有報錯,但是也沒有生成處理之后的圖片或者視頻,或者是運行后的圖像或視頻未被保存。
原因:A、保存路徑不是絕對路徑
B、沒有指定要保存圖片或視頻
C、測試圖像時,參數沒有加--vis,所以圖像無法實時顯示;測試視頻時,視頻本身就無法實時顯示,只能通過保存的文件查看。
解決:A、參考問題(3)的注
B、圖4中的parameter最后要加上--save_img(保存圖像)或者--save_video(保存視頻)
C、測試圖像時,圖4中的parameter最后要加上--vis(圖像可見)
如果還未解決,見問題(8)。
另外,可以參考opt.py文件,里面對參數都有詳細說明,如圖7所示。
圖7
(8)問題:qt.qpa.xcb: could not connect to display
具體如圖8所示:
圖8
原因:處理之后的圖片無法顯示。配置XManager 11+XShell 7即可。
解決:配置DISPLAY變量(先查看本機的DISPLAY變量,只能通過XShell輸入echo $DISPLAY,不知道為什么在cmd中查不出來),運行之后,提示要下載Xmanager。
然后在pycharm中添加DISPLAY變量,方法參考該鏈接:https://blog.csdn.net/qq_34907927/article/details/116597908
Xmanager和pycharm配置參考:https://www.bbsmax.com/A/QV5Zyx3eJy/
(9)問題:測試視頻時,AssertionError: Cannot capture source
原因:沒找到源
解決:見問題(3)、注B
(10)問題:
qt.qpa.xcb: could not connect to display
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "/data/z**y/anacoda3/envs/NewPytorch/lib/python3.8/site-packages/cv2/qt/plugins" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
為了找到更詳細的報錯信息,
edit configuration輸入環境變量QT_DEBUG_PLUGINS為1。
圖9
詳細錯誤:
QElfParser: '/data/z**y/anacoda3/envs/NewPytorch/bin/2to3-3.8' is not an ELF object"'/data/z**/anacoda3/envs/NewPytorch/bin/2to3-3.8' is not an ELF object"not a plugin
具體錯誤如圖10所示:
圖10
原因:A、edit configurations參數錯誤。最后是--save_video而不是--vis(和測試圖片時不一樣)。
B、edit configurations中DISPLAY參數錯誤,通過Xshell查找(查找方法參考問題(8))。
解決:A、見問題(3)、注B
B、修改edit configurations中DISPLAY參數的
(11)問題:Producer process has been terminated before all shared CUDA tensors released
原因:edit configurations參數沒有指明單線程。
解決:最后加上--sp就可以了,完整見問題(3)、注B
(12)問題:圖片清晰度以及圖片一閃而過的問題。
解決:參考https://blog.csdn.net/Zhangrx_/article/article/details/107810537