【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