FlowNet2超级详细安装记录+踩雷记录

2021.11.25:

博主本意是想生成optical flow用来与motion vector做对比,看一下效果。但是光是让flownet2跑起来就用了2天时间。。我巨菜。有什么不对的地方可以联系博主改,在此谢谢啦!博客参考 地址

下载flownet

第一步:在本地cmd中和Ubuntu上都可以执行,当初因为不太会在服务器上改.py文件(现在会了),所以我是在windows下载之后上传到Ubuntu上的。
cd到你自己想要的路径下,然后复制代码

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

第二步:修改networks/channelnorm_package、networks/resample2d_package networks/correlation_package 三个文件夹里的setup.py文件:将c++11改成c++14
修改方法是分别cd到三个文件夹:
vi setup.py #用绝对路径也可以
键盘按Esc(目的:进入命令模式)
键盘按字母i(目的:插入模式。即可以修改py文件)
再次按Esc后,按“:(冒号)wq”进行保存并退出。
如果遇到没有权限的话,可以在修改之前赋予文件权限:chmod 777 文件

第三步:将datasets.py中 1、from scipy.misc import imread, imresize 替换成
from imageio import imread。 2、将main.py中的112行和125行注释掉

第四步:在flownet2-pytorch/networks/channelnorm_package/channelnorm.py中
在第9行添加(在assert input.is_contiguous()之前)

input1 = input1.contiguous()

好了,到此之前都算顺利,接下来就是不停出bug的时候

第五步:进入install.sh所在文件夹后输入命令

./install.sh

1)、如果是直接在Ubuntu上下载的可以直接跳过,博主因为是先在windows上下载好再上传的,install.sh文件的格式是dox格式的,但是在服务器上.sh文件的格式应是unix的,所以出现了以下错误

(test) wangyiming@zkti:/data/wangyiming/code/flownet2$ ./install.sh
bash: ./install.sh: /bin/bash^M: bad interpreter: No such file or directory

如何查看自己的sh文件格式是什么样的,具体操作:
使用vi工具:vi 你的文件.sh
:set ff (冒号不能省略)。就可以看到文件是dox还是unix了,
:set ff=unix
:wq(保存后退出)
2)、改好之后重新

(test) wangyiming@zkti:/data/wangyiming/code/flownet2$ ./install.sh

出现了一个巨长无比的页面,我就只截了最后一小段展示出来

/usr/include/c++/7/bits/basic_string.tcc:1067:16: error: cannot call member function 鈥�void std::basic_string<_CharT, _Traits, _Alloc>::_Rep::_M_set_sharable() [with _CharT = char32_t; _Traits = std::char_traits<char32_t>; _Alloc = std::allocator<char32_t>]鈥� without object
error: command '/usr/local/cuda-10.1/bin/nvcc' failed with exit status 1

在网上找了好多解决办法,有的说将/usr/include/c++/7/bits/basic_string.tcc 文件下的__p->_M_set_sharable() 改为*__p…(具体格式忘记了),但是因为我们实验室权限不在我这里,所以博主改不了这个文件。。哭了。
只能再想另外的办法:
好多方法说flownet需要pytorch的版本<=0.4.1,所以博主又用了0.4.1的版本,还是不行- -,应该是因为我得python版本还是3.7的

resample2d_kernel.cu:3:10: fatal error: ATen/cuda/CUDAContext.h: No such file or directory

不得不说flownet对配置的环境要求太高了所以博主直接去新建了一个虚拟环境,python=3.6,pytorch=1.5。再重复第五步,可以了。

第六步:博主直接inference,所以用的是预训练好的模型,模型地址 地址

(flow) wangyiming@zkti:/data/wangyiming/code/flownet2$ python main.py - -inference - -model FlowNet2--save_flow --inference_dataset ImagesFromFolder - -resume /checkpoints/FlowNet2_checkpoint.pth.tar --save /output/ -inference_dataset_root /data/wangyiming/code/TapLab/Video02/image/ --number_gpus 1

如果在第五步的时候没有install成功,就会出现这个错误

(test) wangyiming@zkti:~/flownet2-pytorch$ python main.py
Traceback (most recent call last):
  File "/home/wangyiming/flownet2-pytorch/models.py", line 9, in <module>
    from networks.resample2d_package.resample2d import Resample2d
  File "/home/wangyiming/flownet2-pytorch/networks/resample2d_package/resample2d.py", line 3, in <module>
    import resample2d_cuda
ModuleNotFoundError: No module named 'resample2d_cuda'

光流图可视化

执行过第六步之后,会生成.flo光流图,但是不能直接可视化,所以用到代码来生成.png图片以及视频

pip install flowiz -U

批量转化:

python -m flowiz \
# 待转化的.flo文件地址,
/data/wangyiming/code/flownet2/output/inference/run.epoch-0-flow-field/ *.flo \ 
# 输出的png文件地址
-o /data/wangyiming/code/flownet2/output/color_coding \
# 输出的视频文件地址
-v /data/wangyiming/code/flownet2/output/color_coding/video \
-r 30

附上图片效果

在这里插入图片描述

### Flownet2 的使用方法 Flownet2 是一种基于深度学习的光流估计框架,其 PyTorch 实现提供了灵活的功能来支持训练和推理过程。以下是关于 Flownet2 使用的相关细节: #### 环境准备 为了确保 Flownet2 能够正常运行,首先需要创建一个新的 Conda 环境并激活它[^3]。通过以下命令完成环境设置: ```bash conda create -n flownet2 python=3.7 conda activate flownet2 ``` 接着,按照项目的具体需求安装所需的依赖项。 #### 项目结构概述 Flownet2-PyTorch 项目的主要目录及其功能如下: - **`FlowNet2_src`**: 存放核心源代码的位置。 - **`.gitignore`**: 配置版本控制系统忽略的文件列表。 - **`LICENSE`**: 明确该项目采用 Apache 2.0 协议作为许可证[^1]。 - **`README.md`**: 提供详细的项目描述以及基本的操作指南。 - **`demo.py`**: 展示如何利用预训练模型执行光流计算的一个简单脚本。 - **`install.sh`**: 运行此脚本来构建自定义 CUDA 操作层,这对于 GPU 加速至关重要。 #### 命令行参数详解 Flownet2 支持多种配置选项,这些通常由命令行参数指定[^4]。一些重要的参数包括但不限于以下几个方面: - `--mode`: 设定程序的工作状态为 `train`(训练阶段)或者 `inference`(推断/测试阶段)。 - `--dataset`: 表明所用的数据集所在位置,这对无论是训练还是评估都非常重要。 - `--model`: 制定具体的网络架构形式,比如完整的 `FlowNet2`, 或者简化版如 `FlowNet2-C`. - `--batch_size`: 定义每次迭代处理样本的数量规模。 - `--epochs`: 对于整个数据集重复训练的最大次数设定。 - `--lr`: 初始化的学习速率数值调整策略对于收敛速度影响巨大。 #### 示例:运行 Demo 脚本 如果想快速验证安装是否成功,可以尝试运行随附的 demo 文件。这将加载预先训练好的权重并对给定图像对预测它们之间的光流动向量: ```python import torch from FlowNet2_src import FlowNet2 # 初始化模型实例 net = FlowNet2() # 将模型切换至评估模式 net.eval() with torch.no_grad(): # 输入张量应适配特定尺寸 (N, C, H, W),此处省略实际读取图片部分逻辑 output = net(input_tensor) print(output.shape) ``` 上述代码片段仅作示意用途;真实场景下还需考虑更多因素,例如输入数据格式转换等。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值