建立COTR运行环境
实际跑起COTR的时候,会发现 这个安装方案是的的确确失败的,因为在VScode里切换环境的时候,你甚至连相应的python解释器都找不到…
请跳过这一部分… 下拉到下一个章节吧(因为后面也记录了一些解决问题的过程,最终方案在最后啦)…emmm
以纯属笨蛋操作了…由于是第一次载入environment.yml
…大意了…
根本不需要你先单独建环境,因为environment.yml
里面有建环境的指令…
你只需要 conda env create -f environment.yml
就可以了
一 pip list
就能发现,环境已经重建好了…
下面再来看看anaconda中环境的信息 conda info --env
会发现,即使当环境中已经存在 cotr_env ,environment.yml
里其他包还是可以正常安装好,即使有报错。
于是我决定 从头再来
首先进入 .yml
在的文件夹下,之后就可以直接读啦
cd C:\Users\007\Desktop\COTRmaster
把之前安的 cotr_env
彻底删掉了之后,重新开始啦,But…
ResolvePackageNotFound: 找不到安装包…
解决方式:参考 Conda导入环境时 ResolvePackageNotFound错误
据说要把第二个等号之后的东西去掉…OK 这样我干完了
新的问题出现了…
咋还有失败的呜呜呜…大声哭出来…
于是想尝试一下 单独pip,但是不对劲哦…还是不行…
没有放弃pip,因为看到 修改 .yml
文件的方法,让其中一部分包转到pip方式下载,于是也去试了试…但是仿佛没用…出现了冲突…
Points:要结束终端批处理,可以 ctrl+c
以上就是出现的那么那么多冲突了…后面给出了很多分析…but 俺也不会整啊…再想想办法吧…
灵机一动:要不我把这些包先去掉吧,后面要是要用的话我再手动安…
哇呜…不行…还是冲突…
- pip:
- libstdcxx-ng==9.1.0
- harfbuzz==1.8.8
- gst-plugins-base==1.14.0
- libgcc-ng==9.1.0
- graphite2==1.3.14
- gstreamer==1.14.0
- libuuid==1.0.3
- libglu==9.0.0
- dbus==1.13.18
- readline==8.1
- libvpx==1.7.0
- ncurses==6.2
- libgfortran-ng==7.3.0
- ld_impl_linux-64==2.33.1
- libxcb==1.14
Again,从头再来…
回到最开始的原文件 (当然,这里注释掉了那上面十几个找不到的包…也许…那些包去掉版本限制之后也能成功找到呢…算了 有用到的时候我再装吧)
好家伙,实在不行了…我决定…把所有版本限定都去掉…然后再次尝试…
Done !!! It’s Done !!! 我真是个小机灵鬼…
啊 但是有个问题,一时激动忘记限定python=3.7了…所以它给我装了py3.8…算了算了…凑合先用吧…
装好之后本来打算跑demo,但是有报错了…
。。。
好家伙 我一看 这不就是那个torchvision和cuda版本不匹配的经典报错么…
好…原来我pytorch和torchvision也忘记限定了…人生重来吧…重装torchvision中…
因为之前我配置 workspace
环境中安装了torchvision…这回就直接copy一下那边的版本好了…
它不行…哇呜…又有这么多包冲突…应该是版本不对应了…难顶…再一次…人生重来吧…
Again again,人生重来…
conda remove -n cotr_env --all
再见了 cotr_env
我怀疑作者给出的 environment.yml
有坑(但没有证据) 哇呜… 还是我win10的问题 ???
要不我回colab玩…
conda env list
查看卸完了没…
跑起来了…
我决定先用 workspace
环境手动先安点儿包看看吧…
补上这俩包之后,仿佛是能跑了呢hhh 好家伙,前面白整了…不过之后有时间还是得去找找解决这种冲突的办法…不知道到底是哪个环节出了问题…
But 很快,新的问题出现了…
cannot use vispy, setting triangulate_corr as None
---------------------- OPTIONS ----------------------
backbone resnet50
command c:\Users\007\Desktop\COTRmaster\demo_single_pair.py
dec_layers 6
dilation False
dim_feedforward 1024
dropout 0.1
enc_layers 6
hidden_dim 256
layer layer3
load_weights None
max_corrs 100
nheads 8
out_dir ./out
position_embedding lin_sine
----------------------------------------------------
using lin_sine as positional encoding
Downloading: "https://download.pytorch.org/models/resnet50-0676ba61.pth" to C:\Users\007/.cache\torch\hub\checkpoints\resnet50-0676ba61.pth
100%|███████████████████████████████████████████████████████████████████| 97.8M/97.8M [00:15<00:00, 6.64MB/s]
freeze conv1.weight
freeze layer1.0.conv1.weight
freeze layer1.0.conv2.weight
freeze layer1.0.conv3.weight
freeze layer1.0.downsample.0.weight
freeze layer1.1.conv1.weight
freeze layer1.1.conv2.weight
freeze layer1.1.conv3.weight
freeze layer1.2.conv1.weight
freeze layer1.2.conv2.weight
freeze layer1.2.conv3.weight
freeze layer2.0.conv1.weight
freeze layer2.0.conv2.weight
freeze layer2.0.conv3.weight
freeze layer2.0.downsample.0.weight
freeze layer2.1.conv1.weight
freeze layer2.1.conv2.weight
freeze layer2.1.conv3.weight
freeze layer2.2.conv1.weight
freeze layer2.2.conv2.weight
freeze layer2.2.conv3.weight
freeze layer2.3.conv1.weight
freeze layer2.3.conv2.weight
freeze layer2.3.conv3.weight
freeze layer3.0.conv1.weight
freeze layer3.0.conv2.weight
freeze layer3.0.conv3.weight
freeze layer3.0.downsample.0.weight
freeze layer3.1.conv1.weight
freeze layer3.1.conv2.weight
freeze layer3.1.conv3.weight
freeze layer3.2.conv1.weight
freeze layer3.2.conv2.weight
freeze layer3.2.conv3.weight
freeze layer3.3.conv1.weight
freeze layer3.3.conv2.weight
freeze layer3.3.conv3.weight
freeze layer3.4.conv1.weight
freeze layer3.4.conv2.weight
freeze layer3.4.conv3.weight
freeze layer3.5.conv1.weight
freeze layer3.5.conv2.weight
freeze layer3.5.conv3.weight
freeze layer4.0.conv1.weight
freeze layer4.0.conv2.weight
freeze layer4.0.conv3.weight
freeze layer4.0.downsample.0.weight
freeze layer4.1.conv1.weight
freeze layer4.1.conv2.weight
freeze layer4.1.conv3.weight
freeze layer4.2.conv1.weight
freeze layer4.2.conv2.weight
freeze layer4.2.conv3.weight
freeze fc.weight
freeze fc.bias
using lin_sine as positional encoding
Traceback (most recent call last):
File "c:\Users\007\Desktop\COTRmaster\demo_single_pair.py", line 66, in <module>
main(opt)
File "c:\Users\007\Desktop\COTRmaster\demo_single_pair.py", line 28, in main
weights = torch.load(opt.load_weights_path, map_location='cpu')['model_state_dict']
AttributeError: 'Namespace' object has no attribute 'load_weights_path'
emmm…路径不对 ?啊 哦对 直接在VScode里跑的话 它好像没有指明如何加载权重,要添加 --load_weights="default"
在命令行末尾。
你需要在终端里手动输入 python -u "c:\Users\007\Desktop\COTRmaster\demo_single_pair.py" --load_weights="default"
但是,注意还是有提示 cannot use vispy, setting triangulate_corr as None
而关于 vispy
一个以OpenGL为基础的交互3D可视化库,目前还没有深入学习和了解…
cannot use vispy, setting triangulate_corr as None
---------------------- OPTIONS ----------------------
backbone resnet50
command c:\Users\007\Desktop\COTRmaster\demo_single_pair.py --load_weights=default
dec_layers 6
dilation False
dim_feedforward 1024
dropout 0.1
enc_layers 6
hidden_dim 256
layer layer3
load_weights default
load_weights_path ./out\default\checkpoint.pth.tar
max_corrs 100
nheads 8
out_dir ./out
position_embedding lin_sine
----------------------------------------------------
using lin_sine as positional encoding
freeze conv1.weight
freeze layer1.0.conv1.weight
freeze layer1.0.conv2.weight
freeze layer1.0.conv3.weight
freeze layer1.0.downsample.0.weight
freeze layer1.1.conv1.weight
freeze layer1.1.conv2.weight
freeze layer1.1.conv3.weight
freeze layer1.2.conv1.weight
freeze layer1.2.conv2.weight
freeze layer1.2.conv3.weight
freeze layer2.0.conv1.weight
freeze layer2.0.conv2.weight
freeze layer2.0.conv3.weight
freeze layer2.0.downsample.0.weight
freeze layer2.1.conv1.weight
freeze layer2.1.conv2.weight
freeze layer2.1.conv3.weight
freeze layer2.2.conv1.weight
freeze layer2.2.conv2.weight
freeze layer2.2.conv3.weight
freeze layer2.3.conv1.weight
freeze layer2.3.conv2.weight
freeze layer2.3.conv3.weight
freeze layer3.0.conv1.weight
freeze layer3.0.conv2.weight
freeze layer3.0.conv3.weight
freeze layer3.0.downsample.0.weight
freeze layer3.1.conv1.weight
freeze layer3.1.conv2.weight
freeze layer3.1.conv3.weight
freeze layer3.2.conv1.weight
freeze layer3.2.conv2.weight
freeze layer3.2.conv3.weight
freeze layer3.3.conv1.weight
freeze layer3.3.conv2.weight
freeze layer3.3.conv3.weight
freeze layer3.4.conv1.weight
freeze layer3.4.conv2.weight
freeze layer3.4.conv3.weight
freeze layer3.5.conv1.weight
freeze layer3.5.conv2.weight
freeze layer3.5.conv3.weight
freeze layer4.0.conv1.weight
freeze layer4.0.conv2.weight
freeze layer4.0.conv3.weight
freeze layer4.0.downsample.0.weight
freeze layer4.1.conv1.weight
freeze layer4.1.conv2.weight
freeze layer4.1.conv3.weight
freeze layer4.2.conv1.weight
freeze layer4.2.conv2.weight
freeze layer4.2.conv3.weight
freeze fc.weight
freeze fc.bias
using lin_sine as positional encoding
weights safely loaded
c:\Users\007\Desktop\COTRmaster\COTR\inference\inference_helper.py:50: UserWarning: Spatial smoothness in dense optical flow is lost, but sparse matching and triangulation should be fine
warnings.warn('Spatial smoothness in dense optical flow is lost, but sparse matching and triangulation should be fine')
C:\Users\007\anaconda3\envs\workspace\lib\site-packages\torch\nn\functional.py:3982: UserWarning: Default grid_sample and affine_grid behavior has changed to align_corners=False since 1.3.0. Please specify align_corners=True if the old behavior is desired. See the documentation of grid_sample for details.
"Default grid_sample and affine_grid behavior has changed "
0 / 333 | 0 / 666
0 / 333 | 0 / 666
0 / 333 | 0 / 666
0 / 333 | 0 / 666
30 / 333 | 32 / 666
30 / 333 | 32 / 666
30 / 333 | 32 / 666
30 / 333 | 32 / 666
59 / 333 | 64 / 666
59 / 333 | 64 / 666
59 / 333 | 64 / 666
59 / 333 | 64 / 666
86 / 333 | 96 / 666
86 / 333 | 96 / 666
86 / 333 | 96 / 666
86 / 333 | 96 / 666
113 / 333 | 128 / 666
113 / 333 | 128 / 666
113 / 333 | 128 / 666
113 / 333 | 128 / 666
141 / 333 | 160 / 666
141 / 333 | 160 / 666
141 / 333 | 160 / 666
141 / 333 | 160 / 666
170 / 333 | 192 / 666
170 / 333 | 192 / 666
170 / 333 | 192 / 666
170 / 333 | 192 / 666
199 / 333 | 224 / 666
199 / 333 | 224 / 666
199 / 333 | 224 / 666
199 / 333 | 224 / 666
231 / 333 | 256 / 666
231 / 333 | 256 / 666
231 / 333 | 256 / 666
231 / 333 | 256 / 666
261 / 333 | 288 / 666
261 / 333 | 288 / 666
261 / 333 | 288 / 666
261 / 333 | 288 / 666
287 / 333 | 320 / 666
287 / 333 | 320 / 666
287 / 333 | 320 / 666
287 / 333 | 320 / 666
313 / 333 | 352 / 666
313 / 333 | 352 / 666
313 / 333 | 352 / 666
313 / 333 | 352 / 666
341 / 333 | 384 / 666
0 / 333 | 0 / 333
0 / 333 | 0 / 333
0 / 333 | 0 / 333
0 / 333 | 0 / 333
29 / 333 | 32 / 333
29 / 333 | 32 / 333
29 / 333 | 32 / 333
29 / 333 | 32 / 333
58 / 333 | 64 / 333
58 / 333 | 64 / 333
58 / 333 | 64 / 333
58 / 333 | 64 / 333
87 / 333 | 96 / 333
87 / 333 | 96 / 333
87 / 333 | 96 / 333
87 / 333 | 96 / 333
118 / 333 | 128 / 333
118 / 333 | 128 / 333
118 / 333 | 128 / 333
118 / 333 | 128 / 333
147 / 333 | 160 / 333
147 / 333 | 160 / 333
147 / 333 | 160 / 333
147 / 333 | 160 / 333
175 / 333 | 192 / 333
175 / 333 | 192 / 333
175 / 333 | 192 / 333
175 / 333 | 192 / 333
202 / 333 | 224 / 333
202 / 333 | 224 / 333
202 / 333 | 224 / 333
202 / 333 | 224 / 333
229 / 333 | 256 / 333
229 / 333 | 256 / 333
229 / 333 | 256 / 333
229 / 333 | 256 / 333
257 / 333 | 288 / 333
257 / 333 | 288 / 333
257 / 333 | 288 / 333
257 / 333 | 288 / 333
287 / 333 | 320 / 333
287 / 333 | 320 / 333
287 / 333 | 320 / 333
287 / 333 | 320 / 333
298 / 333 | 333 / 333
spent 32.58227229118347 seconds for 100 correspondences.
Traceback (most recent call last):
File "c:\Users\007\Desktop\COTRmaster\demo_single_pair.py", line 66, in <module>
main(opt)
File "c:\Users\007\Desktop\COTRmaster\demo_single_pair.py", line 42, in main
dense = triangulate_corr(corrs, img_a.shape, img_b.shape)
TypeError: 'NoneType' object is not callable
最后一行是因为没有 vispy
所以 setting triangulate_corr as None
了,就到此结束了,Dense部分没有进行下去,但是你可以get一个稀疏的结果如下:
这里可以使用 conda install -c conda-forge glfw
来解决 vispy
的问题,参考 COTR讨论
这里有一些 关于COTR的讨论,有助于深入研究代码。
homography demo
cannot use vispy, setting triangulate_corr as None
---------------------- OPTIONS ----------------------
backbone resnet50
command c:\Users\007\Desktop\COTRmaster\demo_homography.py --load_weights=default
dec_layers 6
dilation False
dim_feedforward 1024
dropout 0.1
enc_layers 6
hidden_dim 256
layer layer3
load_weights default
load_weights_path ./out\default\checkpoint.pth.tar
nheads 8
out_dir ./out
position_embedding lin_sine
----------------------------------------------------
using lin_sine as positional encoding
freeze conv1.weight
freeze layer1.0.conv1.weight
freeze layer1.0.conv2.weight
freeze layer1.0.conv3.weight
freeze layer1.0.downsample.0.weight
freeze layer1.1.conv1.weight
freeze layer1.1.conv2.weight
freeze layer1.1.conv3.weight
freeze layer1.2.conv1.weight
freeze layer1.2.conv2.weight
freeze layer1.2.conv3.weight
freeze layer2.0.conv1.weight
freeze layer2.0.conv2.weight
freeze layer2.0.conv3.weight
freeze layer2.0.downsample.0.weight
freeze layer2.1.conv1.weight
freeze layer2.1.conv2.weight
freeze layer2.1.conv3.weight
freeze layer2.2.conv1.weight
freeze layer2.2.conv2.weight
freeze layer2.2.conv3.weight
freeze layer2.3.conv1.weight
freeze layer2.3.conv2.weight
freeze layer2.3.conv3.weight
freeze layer3.0.conv1.weight
freeze layer3.0.conv2.weight
freeze layer3.0.conv3.weight
freeze layer3.0.downsample.0.weight
freeze layer3.1.conv1.weight
freeze layer3.1.conv2.weight
freeze layer3.1.conv3.weight
freeze layer3.2.conv1.weight
freeze layer3.2.conv2.weight
freeze layer3.2.conv3.weight
freeze layer3.3.conv1.weight
freeze layer3.3.conv2.weight
freeze layer3.3.conv3.weight
freeze layer3.4.conv1.weight
freeze layer3.4.conv2.weight
freeze layer3.4.conv3.weight
freeze layer3.5.conv1.weight
freeze layer3.5.conv2.weight
freeze layer3.5.conv3.weight
freeze layer4.0.conv1.weight
freeze layer4.0.conv2.weight
freeze layer4.0.conv3.weight
freeze layer4.0.downsample.0.weight
freeze layer4.1.conv1.weight
freeze layer4.1.conv2.weight
freeze layer4.1.conv3.weight
freeze layer4.2.conv1.weight
freeze layer4.2.conv2.weight
freeze layer4.2.conv3.weight
freeze fc.weight
freeze fc.bias
using lin_sine as positional encoding
weights safely loaded
C:\Users\007\anaconda3\envs\workspace\lib\site-packages\torch\nn\functional.py:3982: UserWarning: Default grid_sample and affine_grid behavior has changed to align_corners=False since 1.3.0. Please specify align_corners=True if the old behavior is desired. See the documentation of grid_sample for details.
"Default grid_sample and affine_grid behavior has changed "
0 / 1000 | 0 / 4
0 / 1000 | 0 / 4
0 / 1000 | 0 / 4
0 / 1000 | 0 / 4
4 / 1000 | 4 / 4