執行PSMNet網路時遇到的問題及解決方案
執行環境:ubuntu16.04 + cuda 8.0 + cudnn v6.0 + python 3.6.1 + pytorch 0.3.0 + torchvision 0.2.0
1.執行過程中遇到 not found modules named “*”
把“dataloader”和“models”資料夾中的對應檔案“*.py”複製到主資料夾中,再嘗試是否解決了問題
2.遇到“with torch.no_grad”相關的問題
把main.py和finetune.py中“with torch.no_grad:”這句話刪掉,並把下面的“output3 = model(imgL,imgR)”與其他行對齊。“with torch.no_grad:”這個指令在pytorch 0.4.0以上可用
再將
imgL = Variable(torch.FloatTensor(imgL))(main的108行,finetune的117行)
imgR = Variable(torch.FloatTensor(imgR))(main的109行,finetune的118行)
改為
imgL = Variable(torch.FloatTensor(imgL),volatile = True)
imgR = Variable(torch.FloatTensor(imgR),volatile = True)
3.遇到“out of momery”的問題
把main.py和finetune.py中
TrainImgLoader = torch.utils.data.DataLoader(
DA.myImageFloder(all_left_img,all_right_img,all_left_disp, True),
batch_size= 12, shuffle= True, num_workers= 8, drop_last=False)
TestImgLoader = torch.utils.data.DataLoader(
DA.myImageFloder(test_left_img,test_right_img,test_left_disp , False),
batch_size= 8, shuffle= False, num_workers= 4, drop_last=False)
把batch_size 由12和8 改為3和3
4.遇到“out of index”之類的問題
嘗試將listfolwfile.py的第46行和47行修改為
flying_path = filepath + [x for x in image if 'flyingthings3d' in x][0]
flying_disp = filepath + [x for x in disp if 'flyingthings3d' in x][0]
5.如果使用python3.0以上版本
需要將stackhourglass.py的第111行和第113行中 maxdisp/4 改為 maxdisp//4
將readpym.py的第15行由header = file.readline().rstrip()
改為header = file.readline().rstrip().decode()
第26行dim_match = re.match(r'^(\d+)\s(\d+)\s,file.readline())
改為dim_match = re.match(r'^(\d+)\s(\d+)\s$', file.readline().decode())
6. KITTILoader.py 中 第56行 dataL = np.(dataL,dtype=…)改為dataL = np.array(dataL,dtype=…)
ps:行數可能有變化,可用ctrl+F直接搜尋關鍵詞