栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

手把手安装flownet2-pytorch

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

手把手安装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:

conda install pytorch==1.5.1 torchvision==0.6.1 cudatoolkit=10.1 -c pytorch

可行版本2: 

conda uninstall python
conda install python==3.7
conda install pytorch==1.9.0 torchvision==0.6.1 cudatoolkit=10.2 -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应该是等价的。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/348725.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号