DN-DETR调试记录

博主在进行DINO实验过程中,发现在提取了3个类别的COCO数据集中,DINO-DETR对car,truck的检测性能并不理想,又通过实验自己的数据集,发现AP值相差不大且较为符合预期,因此便猜想是否是由于DINO中加入了负样本约束导致背景难以学习进而使效果差,因此便使用了DN-DETR来进行实验。下图为DN-DETR模型框架图。

在这里插入图片描述

接下来介绍自己的实验过程。
由于DN-DETR也是DETR模型的一部分,所以我们不需要再额外配置conda环境了,使用原本的detr的conda环境即可。
随后要做的就是选择我们需要的模型,修改数据集目录与数据集路径配置即可。
modelname即我们需要选择训练的模型,在DN-DETR中,其提供了四种选择,由于我们是要与DINO的结果做对比,我们直接选择了与DINO模型结果最为接近的dn_dab_deformable_detr

parser.add_argument('--modelname', 
default="dn_dab_deformable_detr", type=str,  
choices=[
 'dn_dab_detr',
 'dn_dab_deformable_detr',                                                                         'dn_dab_deformable_detr_deformable_encoder_only',
 'dn_dab_dino_deformable_detr'
 ])

coco-path即数据集文件地址。

parser.add_argument('--coco_path', default="/home/ubuntu/datasets/",type=str, )

随后我们修改datasets/coco.py中的数据集配置路径。

PATHS = {
    
    
        "train": (root / "images/train2017", root / "annotations" / f'{
      
      mode}_train2017.json'),
        "val": (root / "images/val2017", root / "annotations" / f'{
      
      mode}_val2017.json'),
    }

其实在readme中已经给出了示例,我们按照其要求即可。

python main.py -m dn_dab_detr \
  --output_dir logs/dn_DABDETR/R50 \
  --batch_size 1 \
  --epochs 50 \
  --lr_drop 40 \
  --coco_path /path/to/your/COCODIR  # replace the args to your COCO path
  --use_dn

博主的epoch设置为50,batch-size=2。修改完这些参数后,运行main.py即可。
与所有的DETR模型相同,其在训练时占用的显存极大。

在这里插入图片描述

category names: ['truck', 'car', 'bus']

报错

博主先前在Terminal可以成功运行,但在pycharm中却报如下错误,归根结底是缺失了相应的链接文件。

OSError:
/home/ubuntu/.conda/envs/detr/lib/python3.7/site-packages/nvidia/cublas/lib/libcublas.so.11:
cannot open shared object file: No such file or directory

首先我们切换到/usr/local目录,查看我们的cuda环境,随后ls查看

ubuntu@VM-16-3-ubuntu:~$ cd /usr/local
ubuntu@VM-16-3-ubuntu:/usr/local$ ls
bin  cuda  cuda-11.2  etc  games  include  lib  man  miniconda3  qcloud  sbin  share  src

cuda-11.2即我们的cuda环境文件目录。执行下面的代码即可。

sudo ldconfig /usr/local/cuda-11.2/lib64

再次运行,问题解决。

猜你喜欢

转载自blog.csdn.net/pengxiang1998/article/details/129907288