關于pytracking以及配置前的一些準備
Pytracking是一個基于pytoch的用于視覺物件跟蹤和視頻物件分割的通用的python框架,
1.1 配置前的準備
windows系統下預裝支持VS的CUDA10.0以及對應的cuDnn
下載及安裝參考博客:CUDA10.0下載及安裝
注:(1)最好使用cuda10.0,否則需要自己在一些地方重新編譯,會很麻煩,windows只適合用來跑demo,訓練的話還是推薦ubuntu
(2)并且電腦需要安裝VS2015
配置程序中參考了pytracking中對windows配置的說明:https://gitcode.net/mirrors/visionml/pytracking/-/blob/master/INSTALL_win.md
以及一個博主的配置說明:
CSDN搜索(pytracking系列跟蹤演算法的配置(LWL, KYS, PrDiMP, DiMP and ATOM Trackers)(windows10版本))
2.配置程序
2.1 創建環境并激活
conda create --name pytracking python=3.7
conda activate pytracking
2.2 安裝pytorch
有兩種方式,第一種是自己下載torch版本,進行本地安裝
下載地址:https://download.pytorch.org/whl/torch_stable.html
下載cuda對應的torch,torchvision,
第二種方法不推薦:是按照以下方式進行自動安裝(但是我用這種方法默認下載的是cpu版本的torch,故我使用第一種方法進行安裝)
conda install -y pytorch torchvision cudatoolkit=10.0 -c pytorch
2.3 安裝各種依賴庫
pip install matplotlib pandas jpeg4py
pip install opencv-python visdom tb-nightly
matplotlib是一個2D繪圖庫;
pandas是一種資料分析工具;
jpeg4py是一種快速讀取jpg圖片的工具;
OpenCV是一個基于BSD許可(開源)發行的跨平臺計算機視覺庫,而opencv-python是OpenCV的python的API介面;
visdom是python的可視化工具;
最后一個不是很清楚
pip install cython pycocotools
cython是一種編程語言,它使Python語言的C擴展像Python本身一樣簡單,此處目的是用來編譯COCO工具包;
pycocotools:python api tools of coco
2.4 安裝Pricise ROI pooling
(1)DiMP和ATOM需要Precise ROI pooling模塊,可以直接下載模塊,將解壓后的pytorch檔案夾拷貝到路徑E:\Codes\PyCharm\pytracking-master\ltr\external\PreciseRoIPooling\
(2)下載prroi_pool.pyd檔案
這個檔案是使用C++生成的庫檔案,DIMP和ATOM演算法會用到,下載地址作者已提供:prroi
_pool.pyd(有時候需要科學上網才可以下載),下載周將其保存到路徑:D:\Python\Anaconda_install\envs\pytracking\Lib\site-packages
(3)添加環境變數(到用戶變數)
路徑如下:***\envs\pytracking\Lib\site-packages\torch\lib
圖片上傳總是失敗,但是按照這個路徑就可以
(4)添加代碼
打開pytracking\ltr\external\PreciseRoIPooling\pytorch\prroi_pool\functional.py,添加如下代碼:
def _import_prroi_pooling():
global _prroi_pooling
#load the prroi_pool module
import imp
file, path, description = imp.find_module('prroi_pool')
with file:
_prroi_pooling = imp.load_module('prroi_pool', file, path, description)
添加完成之后應該是這樣的:
import torch
import torch.autograd as ag
__all__ = ['prroi_pool2d']
_prroi_pooling = None
def _import_prroi_pooling():
global _prroi_pooling
#load the prroi_pool module
import imp
file, path, description = imp.find_module('prroi_pool')
with file:
_prroi_pooling = imp.load_module('prroi_pool', file, path, description)
if _prroi_pooling is None:
try:
from os.path import join as pjoin, dirname
from torch.utils.cpp_extension import load as load_extension
root_dir = pjoin(dirname(__file__), 'src')
_prroi_pooling = load_extension(
'_prroi_pooling',
[pjoin(root_dir, 'prroi_pooling_gpu.cpp'), pjoin(root_dir, 'prroi_pooling_gpu_impl.cu')],
verbose=True
)
except ImportError:
raise ImportError('Can not compile Precise RoI Pooling library.')
return _prroi_pooling
(5)創造組態檔(此處參考博客)
在工程路徑下新建createlocalfiles.py,(這里的路徑要與pytracking和ltr保持同級,通過右鍵第二個pytracking-master新建python檔案即可) 并寫入如下代碼:
import ltr.admin.environment as ltrae
import pytracking.evaluation.environment as pyee
ltrae.create_default_local_file()
pyee.create_default_local_file()
運行之后,會在\pytracking\evaluation\路徑和\ltr\admin\路徑下生成local.py,打開這兩個檔案可以配置一些我們的實驗引數,如指定資料集路徑和預訓練模型路徑等,
(6)下載預訓練模型(此處參考博客)
下載地址(官方給的需要翻墻):
https://github.com/visionml/pytracking/blob/master/MODEL_ZOO.md
百度云下載鏈接:
鏈接:https://pan.baidu.com/s/12R58DNaRJqHodNcT5YzjUQ
提取碼:wbrq
新建networks路徑保存下載的預訓練模型
(7)打開服務可視化(參考博客)
python -m visdom.server
(8)打開另一個終端運行(參考博客)
activate pytracking
python pytracking/run_tracker.py atom default --dataset_name otb --sequence Soccer --debug 1 --threads 0
atom是需要運行的跟蹤器名字
default是引數設定,在pytracking/parameter/atom路徑下有很多引數可選,
otb是需要運行的資料集名稱
Soccer是需要運行的視頻序列名字
debug控制可視化等級
threads運行的執行緒數
報錯:
File “pytracking…\pytracking\utils\load_text.py”, line 14, in load_text_numpy
raise Exception(‘Could not read file {}’.format(path))
Exception: Could not read file E:\OTB100/BlurCar1/groundtruth_rect.txt
博客中提到這事由于groundtruth_rect.txt讀取格式不對應造成的,解決方法按照博客修改就可以的
打開pytracking/utils/load_text.py更改函式:
def load_text_numpy(path, delimiter, dtype)
改為:
def load_text_numpy(path, delimiter, dtype):
if isinstance(delimiter, (tuple, list)):
for d in delimiter:
try:
# ground_truth_rect = np.loadtxt(path, delimiter=d, dtype=dtype)
# to deal with different delimeters
import io
with open(path,'r') as f:
ground_truth_rect=np.loadtxt(io.StringIO(f.read().replace(',',' ')))
return ground_truth_rect
except:
pass
raise Exception('Could not read file {}'.format(path))
else:
ground_truth_rect = np.loadtxt(path, delimiter=delimiter, dtype=dtype)
return ground_truth_rect
(9)再次運行,報錯
File “
博客中說到這事由于作者提供的prroi_pool.pyd與系統不兼容,需要使用VS編譯來生成依賴庫prroi_pool.pyd,我想下載博主自己編譯的prroi_pool.pyd嘗試了一下,、
除錯成功!!!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/437012.html
標籤:AI
下一篇:【pytorch】凍結網路踩坑
