nvidia在github上发布的flownet2-pytorch并不能按照它说明的那样直接安装,里面存在很多bug, 根据上网查询与自己实践,我把安装步骤一步一步列出来,供大家参考。
conda create -n flownet2 python=3.6.9
conda activae flownet2
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-7
sudo apt-get install g++-7
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 100
sudo update-alternatives --config gcc
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 100
sudo update-alternatives --config g++
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 50
ls /usr/bin/gcc*
gcc -v
下面介绍的可行版本1和可行版本2是我自己测试过的,可行版本3是评论区反馈后测试过的。
可行版本1(ubuntu 16.04, cuda 10.2, NVIDIA Driver: 440.36,gcc 5.4.0):
conda install pytorch==1.5.1 torchvision==0.6.1 cudatoolkit=10.1 -c pytorch
可行版本2(ubuntu 16.04, cuda 10.2,NVIDIA Driver: 440.36,gcc 5.4.0):
conda uninstall python
conda install python==3.7
conda install pytorch==1.9.0 torchvision==0.6.1 cudatoolkit=10.2 -c pytorch
可行版本3(ubuntu 18.04, cuda 10.1,GCC 7.4):
conda uninstall python
conda install python==3.6
conda install pytorch==1.4.0 torchvision==0.5.0 cudatoolkit=10.1 -c pytorch
pip install numpy
pip install tensorboardX
pip install setproctitle
pip install colorama
pip install tqdm
pip install scipy
pip install matplotlib
pip install pytz
pip install opencv-python
git clone https://github.com/NVIDIA/flownet2-pytorch.git
cd flownet2-pytorch
在以下三个文件中
把
cxx_args = ['-std=c++11']
修改为
cxx_args = ['-std=c++14']
把
from scipy.misc import imread
修改为
from imageio import imread
把
from scipy.misc import imread, imresize
修改为
from imageio import imread
在第9行添加
input1 = input1.contiguous()
修改后代码如下:
class ChannelNormFunction(Function):
@staticmethod
def forward(ctx, input1, norm_deg=2):
input1 = input1.contiguous() # 新添加的代码
assert input1.is_contiguous()
./install.sh
python main.py -h
测试的过程中会出现各种module的缺失问题,缺什么就输入如下命令:
pip install modules_needed
根据个人经验,在8)中我已经把所有需要安装的module都记录下来了
测试成功应该输出以下结果:
usage: main.py [-h] [--start_epoch START_EPOCH] [--total_epochs TOTAL_EPOCHS]
[--batch_size BATCH_SIZE] [--train_n_batches TRAIN_N_BATCHES]
[--crop_size CROP_SIZE [CROP_SIZE ...]]
...
...
Model:
--model {ChannelNorm,FlowNet2,FlowNet2C,FlowNet2CS,FlowNet2CSS,FlowNet2S,FlowNet2SD,Resample2d,tofp16,tofp32}
(1)下载数据集
为了测试代码是否能跑通,我只下载了 MPI-Sintel 数据集,并新建一个datasets文件夹,把数据集放在这个文件夹下
(2)下载checkpoint
github上提供的checkpoint下载路径难以下载,我把checkpoint下载后转存到了百度云,大家可以从百度云下载。
链接:https://pan.baidu.com/s/19g9ufG5zPARxMFireouXXQ
提取码:w97r
值得注意的是: 下载得到的checkpoint文件是一个整体,不能用rar或tar解压。这个文件直接被使用。
(3)数据集及checkpoint路径设置
我的数据集存放路径是:flownet2-pytorch/datasets/MPI-Sintel
checkpoint的存放路径是:flownet2-pytorch/pre_train/
(4)inference测试,我的测试代码是
python main.py --inference \
--model FlowNet2 \
--save_flow \
--inference_dataset MpiSintelClean \
--inference_dataset_root ./datasets/MPI-Sintel/training \
--inference_visualize \
--resume ./pre_train/FlowNet2_checkpoint.pth.tar
备注:
见 https://github.com/wzg16/FlowNet2-PyTorch-EasyToUse-Wrapper
问题1: ModuleNotFoundError: No module named 'resample2d_cuda'
原因分析: 在执行上面的第14)步之后,更新了pytorch版本或者torchvision版本,导致针对原来版本编译的文件与当前版本的torch不适用。
解决方法1:
step1) 分别进入
/flownet2_pytorch/networks/resample2d_package/
/flownet2_pytorch/networks/correlation_package/
flownet2_pytorch/networks/channelnorm_package
等三个文件夹
step2) 执行以下命令:
python3 setup.py build
python3 setup.py install
解决方法2: 重新运行
./install.sh
通过看install.sh的代码,方法2与方法1应该是等价的。
其他参考博客:
Cuda 11.1 + 30系显卡 + Pytorch 1.8.0 + Ubuntu 18.04 安装FlowNet2.0_xxxbit的博客-CSDN博客
服务器Ubuntu20.04下安装Flownet2.0运行环境(亲测有效)_focus_xiang的博客-CSDN博客