前言:
python==3.8
cuda==11.4
torch==1.9.1
第一步:
拉取REOWOD代码:RE-OWOD的GitHub
第二步:
下载pkl文件(用得上,这个放在进去REOWOD的根目录下):
第三步:
下载python3.8、搭建pytorch
我的cuda版本是11.4,选择的安装命令是这个:
pip install torch==1.9.1+cu111 torchvision==0.10.1+cu111 torchaudio==0.9.1 -f https://download.pytorch.org/whl/torch_stable.html
验证一下:
python3
import torch
torch.cuda.is_available()
True(这个就对了)
第四步:
进入REOWOD上一层目录,git OWOD(这是为了保证OWOD的环境正确,间接保证REOWOD的环境正确)
git clone https://github.com/JosephKJ/OWOD.git
第五步:
获得detectron2(这步可能没用,但是我当时弄了)
git clone https://github.com/facebookresearch/detectron2.git
第六步:
进入OWOD里,现在你的文件夹下应该有个OWOD文件夹,里边都是文件,然后安装detectron2
python -m pip install -e ./
这里千万注意,不要使用该文件夹外部构建的Detectron2,运行代码时会报'Non-existent config key: OWOD',具体原因是Detectron2的版本问题,所以一定要在OWOD内构建Detectron2
如果这里报错关于什么cuda版本啥的,那肯定是版本不兼容了,一定找cuda对应的pytorch和python,我的cuda是11.4,但我找不到11.4,就找了好久,用的现在的第三步的命令(没有conda好难受,但是安装了anaconda还容易找不到问题T_T)
解决办法:在 OWOD 内运行 python -m pip install -e ./ 即可解决
第七步:
测试(这里是一个显卡的情况,俩显卡就改成2):
python tools/train_net.py --num-gpus 1 --dist-url='tcp://127.0.0.1:52125' --resume --config-file ./configs/OWOD/t1/t1_train.yaml SOLVER.IMS_PER_BATCH 8 SOLVER.BASE_LR 0.01 OUTPUT_DIR "./output/t1"
如果报缺少dataset中什么VOC2007里的txt的错,说明对了,环境没问题了(OWOD的环境没问题了)
如果报什么No module named 'reliability'、No module named 'shortuuid'
安装这俩就好
pip install reliability
pip install shortuuid
如果太慢看这个清华源pip地址-CSDN博客
第八步:
配置数据集,这里先用COCO数据集
(1)主文件夹下新建datasets/VOC2007文件夹
(2)下载的Annotations与JPEGImages文件夹放在VOC2007下
(3)新建datasets/VOC2007/ImageSets/Main文件夹
(4)将datasets/OWOD_imagesets下的所有文件放到datasets/VOC2007/ImageSets/Main下
第九步:
在REOWOD中跑实验:
进入REOWOD中,还敲刚才第七步的命令(一个显卡的情况):
python tools/train_net.py --num-gpus 1 --dist-url='tcp://127.0.0.1:52125' --resume --config-file ./configs/OWOD/t1/t1_train.yaml SOLVER.IMS_PER_BATCH 8 SOLVER.BASE_LR 0.01 OUTPUT_DIR "./output/t1"
不出意外就会这样,这样说明跑起来了:
但是凡事肯定有意外,我当时意外那是贼多:
先说一下,nvidia-smi中显示的cuda版本和nvcc-V中显示的cuda版本不一样的话,你真实的版本其实是nvcc-V的,我前一个就是12.0,后一个就是11.4,但是报错就报11.4,跟12.0没关系。
Q1:KeyError: 'Non-existent config key: OWOD.CLUSTERING.UNK_THRESH'
A1:在train_net.py中找到cfg = get_cfg(),在它下边补上这句话:cfg.set_new_allowed(True)
Q2:KeyError: 'Non-existent config key: OWOD'
A2:这就是第六步的问题了,一定要进OWOD里去构建,别去git的detectron2上一层构建去,解决办法也在第六步里
Q3:ImportError: /djtu17/RE-OWOD/OWOD/detectron2/_C.cpython-38-x86_64-linux-gnu.so: undefined symbol: _ZNK2at6Tensor6deviceEv
A3:这个就是因为我用了pip uninstall torch把torch删了之后又换了个torch的版本,结果之前安装的环境对这个不适用了,所以就得把环境删了,从新搭起来
先进入OWOD中(稳妥)
rm -rf build/ **/*.so # 这个是删除
pip install -e.# 重建
这步(相当于第六步)解决后,返回到第七步
我参考了不少博客,但对我帮助最大的我展示在下边,如果我这里有问题,去看看这几个吧
OWOD复现过程总结_wangyanhuaa的博客-CSDN博客 这个是我师姐写的
Ubuntu下配置detectron2_ubuntu安装detectron2-CSDN博客 这个是我师兄写的(他的博客有很多有用的东西,可以看看)
CUDA版本11.4,pytorch应该下哪个版本的? - 知乎 (zhihu.com)
记录Google Colab上跑通OWOD - 知乎 (zhihu.com) 这个也可以看看,这个里边的错误我都犯过
要是有问题,留言我看一下,我看看能不能想起来