Flownet2-pytorch踩坑全程

Qwen3-32B-Chat 私有部署镜像 | RTX4090D 24G 显存 CUDA12.4 优化版

本镜像基于 RTX 4090D 24GB 显存 + CUDA 12.4 + 驱动 550.90.07 深度优化,内置完整运行环境与 Qwen3-32B 模型依赖,开箱即用。

Flownet2-pytorch踩坑全程

源码

来自https://github.com/NVIDIA/flownet2-pytorch,这个版本基于pytorch,原作者的版本https://github.com/lmb-freiburg/flownet2.git是基于caffe的,我也下载过,由于caffe版本的问题,最后没有运行(死磕)成功,pytorch这个版本,死磕两两周终于成功,在此记录下全程,给有需要的人。
我最后成功的环境:cuda8.0+python3.6.2+torch1.0.0+gcc4.9,IDE是pycharm。

pretrained model

就是作者在readme里提及的需要去google drive下载的那些,如果不打算训练,直接用这个结果跑。准备晚点放到百度网盘。
在这里插入图片描述

死磕流程

  1. 编译报错:correlation_cuda_kernel.cu(130): error: identifier “__syncwarp” is undefined correlation_cuda_kernel.cu(19): error: identifier “__shfl_down_sync” is undefined。如果用cuda9以下的版本会出现,因为networks/correlation_package/correlation_cuda_kernel.cu这个文件里用两cuda9的新函数。解决办法:用gitk等工具查看这个文件,git reset到没有使用这两个函数之前的版本,编译通过,猜测不会影响结果。(这里一直有警告,先前没注意,如果你也有,请直接看第8条)
  2. 跑run_a_pair.py, 注意里面的模型和图片路径设置最好是绝对路径(如果你搞不清楚的话),注意图像长宽必须是64的倍数。注意文件里两个import要改成下面这样,原run_a_pair.py里的文件结构和现在的下载版本应该是不一样:在这里插入图片描述
  3. 然后是跑着跑着爆出:anaconda3/lib/python3.6/site-packages/torch/lib/libtorch_python.so: undefined symbol: PySlice_Unpack于是新建conda环境py3.6.2,改python版本为3.6.2,torch版本1.0.0.然后是跑到net那里就卡死
  4. 看作者用 pytorch是0.4.1,以为是pytorch版本的问题,于是去python3.6.0的环境里改torch为0.4.1,发现与cuda一起编译有错误correlation_cuda.cc:4:10: fatal error: ATen/cuda/CUDAContext.h: No such file ordirectory,看博客发现是pytorch和cuda版本问题:
pytorch 0.4.1, cuda 8/9, python36 nopes
pytorch 1.0.0, cuda 10, python36 works
pytorch 1.0.1, cuda 10, python36 nopes
pytorch 1.1.0, cuda 10, python36 works
  1. 重新回环境py3.6.2,torch1.0.0里死磕,之前一直用flownet2,可能这个网络太大,改为flownet-s试试,还是不行。报错,报错’tuple’ object has no attribute ‘squeeze’,单步调试发现flownetS类里的training为true,去models.py Flownet类代码中,构造函数把training改为默认False,终于输出了.flo
  2. 期间还有问题attempted relative import with no known parent package,这时候把interpreter删光,新建,就会好(后面发现别的原因也会导致这个问题,看第10条). 至此flownetS已成功,下面继续死磕flownetC
  3. 尝试flownetC,这才发现S只用了torch的东西,编译出来的correlation的东西应该都没用吧?这才注意到编译时一直报Warning: your compiler g++ 4.8 may be ABI incompatible with pytorch
  4. 于是gcc升级到5.4.0,发现编译不过了,报fatal error: sys/cdefs.h: No such file or directory,于是怀疑升级过头了,联网,改为gcc4.9,怎么改参考https://www.zhihu.com/question/56272908第一个回答,注意改成你自己的路径
 conda install -c serge-sans-paille gcc_49
 ln -s /home/chenjoya/opt/anaconda3/envs/graph-retina-rcnn/bin/gcc-4.9 /home/chenjoya/opt/anaconda3/envs/graph-retina-rcnn/bin/gcc  
ln -s /home/chenjoya/opt/anaconda3/envs/graph-retina-rcnn/bin/g++-4.9 /home/chenjoya/opt/anaconda3/envs/graph-retina-rcnn/bin/g++

编译通过,但代码跑不通了,报attempted relative import with no known parent package

  1. 尝试重新配置pycharm的deployment,不行,发现models.py里import networks走的是try–except的异常部分,注释掉except,运行报错/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.20’ not found
  2. 参考https://www.jianshu.com/p/528c387fb063和https://nulls.blog.csdn.net/article/details/79589091改了软连接,还不行,因为根本没装GLIBCXX_3.4.20。最后conda install libgcc==5.2.0,解决。补充:几个月之后又出现这个问题。又研究了一阵子,专门写一篇来说这个问题:请看https://blog.csdn.net/jillar/article/details/116494270。
  3. 同上,把FlowNet2和FlowNetC的self.training默认为false。终于出结果了。
  4. .flo文件转png,参考https://blog.csdn.net/sinat_33718563/article/details/79950310,用flow_code/color_flow *.flo *.png,下面研究下flow_code.研究半天,发现在run_a_pair.py中,.flo本来就是xy分量生成的,可以直接用xy分量画矢量图。

结束

感叹这些东西的版本兼容性真是太差了,真真差一个都不行啊。感谢前辈踩过的坑。

您可能感兴趣的与本文相关的镜像

Qwen3-32B-Chat 私有部署镜像 | RTX4090D 24G 显存 CUDA12.4 优化版

Qwen3-32B-Chat 私有部署镜像 | RTX4090D 24G 显存 CUDA12.4 优化版

Qwen
文本生成
Qwen3

本镜像基于 RTX 4090D 24GB 显存 + CUDA 12.4 + 驱动 550.90.07 深度优化,内置完整运行环境与 Qwen3-32B 模型依赖,开箱即用。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值