手把手安装flownet2-pytorch

前言:

        nvidia在github上发布的flownet2-pytorch并不能按照它说明的那样直接安装,里面存在很多bug, 根据上网查询与自己实践,我把安装步骤一步一步列出来,供大家参考。 


1) 创建环境

conda create -n flownet2 python=3.6.9

2)进入虚拟环境

conda activae flownet2

3)安装gcc7,g++7

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

4)将gcc7,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

5) 查看所有gcc版本

ls /usr/bin/gcc*

6) 查看当前gcc版本

gcc -v

7)安装pytorch

下面介绍的可行版本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

8) 安装依赖包

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

9) 下载flownet代码

git clone https://github.com/NVIDIA/flownet2-pytorch.git
cd flownet2-pytorch

10)对以下文件进行修改,

        在以下三个文件中 

  • networks/channelnorm_package/setup.py
  • networks/resample2d_package/setup.py
  • networks/correlation_package/setup.py

       把

cxx_args = ['-std=c++11']

修改为

cxx_args = ['-std=c++14']

11)在 flownet2-pytorch/utils/frame_utils.py  中

from scipy.misc import imread

修改为

from imageio import imread

12)在 flownet2-pytorch/datasets.py 中

from scipy.misc import imread, imresize

修改为

from imageio import imread

13) 在flownet2-pytorch/networks/channelnorm_package/channelnorm.py中

在第9行添加

input1 = input1.contiguous()

修改后代码如下: 

 class ChannelNormFunction(Function):
      @staticmethod
      def forward(ctx, input1, norm_deg=2):
          input1 = input1.contiguous() # 新添加的代码
          assert input1.is_contiguous()

14) 进入install.sh所在文件夹后输入如下命令

./install.sh

15) 输入以下命令进行测试

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}

16) 跑inference测试

(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

    备注:

  •         inference时,只能选择 /MPI-Sintel/training 文件夹
  •         需要修改的仅仅是 --inference_dataset_root ./datasets/MPI-Sintel/training \
  •         和   --resume ./pre_train/FlowNet2_checkpoint.pth.tar 的路径

17) flownet2封装

        见 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博客

  • 17
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 19
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值