【Ubuntu】【FlowNet2】一文解决Ubuntu配置FlowNet2所有问题(工作站Ubuntu配置FlowNet2全过程+问题汇总)

【FlowNet2】配置FlowNet2中遇到的问题汇总

工作站配置:
4张3090 对应的sm类型为:sm_86
(不同torch版本支持的算力类型sm_是不一样的,一般torch支持4-8个类型的sm_)后边详细阐述
系统版本: Ubuntu 20.04.6 LTS (Focal Fossa长期支持版本)

一、创建环境,安装各种包

写在前面,安装完Anaconda,使用condan创建环境/安装依赖包经常会遇到conda寻找包时间很长的情况,那是因为 ANACONDA 库里边包太多的原因
解决方法,可以了解一下libmamba(文末有安装教程链接),有很多安装 libmamba 的帖子,搜索安装即可(不麻烦,很简单),安装libmamba完成后,所有的conda命令都可以替换成mamba

#例如  
mamba create - n 环境名   #conda create - n 环境名 
mamba activate  环境名     #conda activate  环境名 
mamba install  安装包名    #conda install     安装包名
mamba remove                 #conda remove 
#... ... ...
#...

1、创建conda环境

#创建python=3.6.9的conda环境
conda create -n flownet2 python=3.6.9  
#进入虚拟环境
conda activae flownet2                         

2、安装gcc

#安装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
#设置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
#查看ubuntu上的gcc版本
ls /usr/bin/gcc*
gcc -v      #查看当前版本gcc

3、安装pytorch

由于显卡算力类型是 sm_86,支持cuda版本>=11,所以我安装的torch版本相对较高一些
如果不训练模型,只模型推理,也可以安装cpu版本的pytorch。

注:pytorch官网的命令部分是有问题,命令里有 cudatoolkit 版本,但是安装的 Pytorch 却是 cpu 版本,我安装一次 pytorch==1.9.0版本的就出现了这个情况。

#安装
conda install pytorch==1.9.1 torchvision==0.10.1 torchaudio==0.9.1 cudatoolkit=11.1 -c pytorch

在这里插入图片描述

4、安装各种依赖包

!注意安装包的时候会不会自动更新/改变pytorch版本;
使用conda/mamba install命令时,一定核对安装的包名和版本号,检查是否卸载/更新pytorch版本。
!因为pyorch安装包相对较大,安装时间较长,而且对FlowNet2对pytorch版本要求严格,pytorch版本不对会出现很多问题。
!如果下载速度很慢,那就在命令后指定国内镜像源

#例如,使用pip时
pip install numpy  -i https://pypi.tuna.tsinghua.edu.cn/simple  #清华镜像源

速度慢,可以使用下边的镜像替换
https://mirrors.aliyun.com/pypi/simple/                        #阿里云
https://mirrors.163.com/pypi/simple/                           #网易
https://pypi.douban.com/simple/                                 #豆瓣
https://mirror.baidu.com/pypi/simple/                          #百度云
https://pypi.mirrors.ustc.edu.cn/simple/                      #中科大
https://mirrors.huaweicloud.com/repository/pypi/simple/     #华为云
https://mirrors.cloud.tencent.com/pypi/simple/             #腾讯云
#例如,使用conda/mamba安装
conda/mamba  install opencv -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
#conda替换国内镜像源
https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
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
pip install ffmpeg
pip install eel

下边是我环境中的所有包,重要的需要手动安装的,使用红框标记,包括包的版本号,没有红框标记是安装其他包时自动安装的
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

二、运行FlowNet2

1、下载FlowNet2

这里建议,直接在GitHub上下载zip包,也可以使用 git clone,

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

如果不常用 git clone,我建议直接下载 zip 包然后解压,这样自己清楚知道 FlowNet2的代码放在了哪个文件夹下边
GitHub链接:https://github.com/NVIDIA/flownet2-pytorch
在这里插入图片描述

2、修改FlowNet2代码

这里跟着大佬(CSDN ID:wzg2016 )帖子修改,帖子链接放在文末

(1)错误一

打开下边三个python文件
networks/channelnorm_package/setup.py
networks/resample2d_package/setup.py
networks/correlation_package/setup.py

在这里插入图片描述

# 分别修改  import  下边
cxx_args = ['-std=c++11']  
# 修改为
cxx_args = ['-std=c++14']

图片为修改后的代码。注意三个文件夹都这样修改
在这里插入图片描述

(2)错误二

打开 flownet2-pytorch/utils/frame_utils.py 文件

# 修改  import  下边
from scipy.misc import imread
# 修改为
from imageio import imread

(3)错误三

打开 flownet2-pytorch/datasets.py 文件

# 修改  import  下边
from scipy.misc import imread, imresize
# 修改为
from imageio import imread

(4)错误四

打开 flownet2-pytorch/networks/channelnorm_package/channelnorm.py 文件

#  第 9 行 添加一行代码
input1 = input1.contiguous()

实例,修改之后的代码
在这里插入图片描述

下载预训练模型pre-trained权重文件checkpoint

GitHub/README.md 给的 checkpoint 下载链接是 google drive ,我贴上来吧
https://drive.google.com/file/d/1TVv0BnNFh3rpHZvD-easMb9jYrPE2Eqd/view?usp=sharing
(有人会强迫症觉得作者给的更放心。真服了!!!我也是!!!)
有人科学上网下载比较快,什么?我打不开网页?下载慢? 那可怎么办? 。。。。。。。。。。网盘?。。。额,算了吧。 我觉得还是 google drive 更快一些。我这里放到了, 阿里云盘链接,下载超快(阿里快打钱)

下载还之后解压,解压之后的文件名是 FlowNet2_checkpoint.pth.tar 对他就长这个样子 .pth.tar 后缀不用管他,解压后放在 flownet2-pytorch 根目录下就行了
我的路径 /home/ubuntu2/flownet2-pytorch/FlowNet2_checkpoint.pth.tar

测试

终端运行以下命令测试

python main.py -h

如果没问题会输出以下代码
在这里插入图片描述在这里插入图片描述如果报错有关 modules 缺失各种包的错误,那就安装需要的包就可以了

#使用
pip install 安装包
conda/mamba install 安装包

安装包找不到包时候,百度搜索 “conda 安装 安装包” ,
比如报错 缺少 cv2 ,需要的安装包是 opencv-python

运行 flownet2-pytorch

豪!!! 到这里终于可以运行代码了。

执行安装命令

运行 install.sh 文件,ubuntu下可以直接运行 .sh 文件,直接右键运行就可以了

运行 run.sh 文件

我下载的 flownet2-pytorch 是没有 run.sh 文件的,我看别人的好像是有的
没关系,新建一个 run.sh 文件就可以了,直接使用命令在终端运行也可以
run.sh 的作用就是命令行很长,写到 run.sh 里边,可以修改,改好了运行 .sh 文件就等于在终端运行命令
然后把运行代码放到 run.sh 里边

#   我的运行代码
python main.py --inference \
    --model FlowNet2 \
    --save_flow \
    --inference_dataset MpiSintelClean \										
    --inference_dataset_root dataset/MPI-Sintel-complete/training \      #
    --inference_visualize \
    --resume ./FlowNet2_checkpoint.pth.tar \
    --number_gpus 1 \
    --save /home/ubuntu2/flownet2-pytorch/video/number_gpu_test

在这里插入图片描述
需要改的参数
–inference_dataset 确定数据集类型;
–inference_dataset_root 输入 input 路径
–resume ./FlowNet2_checkpoint.pth.tar 预训练模型pre-train权重文件路径
–number_gpus 1 设置成1他就会处理相邻两张图片的光流,2会生成
第一张图片和第三张图片的光流,往后类推
–save 运行结果保存路径

如果运行 Sintel 测试集,-inference_dataset就按照上边的命令用 MpiSintelClean
如果想跑出来视频的光流,需要先把视频提取成图片,放在一个文件夹下边。
然后这个地方-inference_dataset数据集类型就应该改设置成 ImagesFromFolder
如果是其他数据集的测试集/验证集,比如 FlyingThingsClean、 ChairsSDHom
去 dataset.py 里边找到对应的数据集类型,给 --inference_dataset
同时 --inference_dataset_root 路径的文件应该和dataset.py中要求的对应的数据集类型一直,否则会报错

在这里插入图片描述这个错误折磨好久,按这个错误去百度,一直解决不了
后边错误汇总里会再说以下

报错汇总+解决方法

Cite

参考的所有大神的帖子和连接附上

Libmamba的介绍和安装
https://zhuanlan.zhihu.com/p/651205737

  • 26
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值