给完全不懂的本科生或者研0的同学讲解一下怎么做GitHub上的项目,怎么复现。
注意:你至少要安装好anaconda、有个linux服务器下面才能顺利进行。
项目地址
下载代码
点击code
点击下载
当然也可以直接用git clone命令,如果你什么都不知道,就算了。
在IDE中打开,如图
下载数据集
我们需要下载coco2017的数据集,这个数据集说实话,随便找个地方都能下。去google,kaggle都随便下。不过我推荐在这个网站下,因为下载的快,国内能直接进。
COCO2017-完整数据集_数据集-飞桨AI Studio星河社区
验证集 注释文件等 训练集都下载
配置环境
在anaconda中配置环境
输入如下命令,然后回车
conda create -n deformable_detr python=3.7
我的命令
conda create -n deformable_detr python=3.10
注意!我这里的python是3.10,因为我的GPU是4090,等下我的pytroch版本也会变。我建议40系显卡都用3.10, 3060什么的显卡用3.10的版本也可以。
激活环境
conda activate deformable_detr
下载pytroch
conda install pytorch=1.5.1 torchvision=0.6.1 cudatoolkit=9.2 -c pytorch
我的命令
conda install pytorch==2.3.0 torchvision==0.18.0 torchaudio==2.3.0 pytorch-cuda=12.1 -c pytorch -c nvidia
解释一下,我的GPU用不了太旧的pytroch版本,所以我重新选了一个。等下要改一点代码做一个适配。如果你的GPU能运行原来的代码,就用原来的。
进行如下更改
下载其他包
注意!运行这个命令的时候,进入你的项目环境中!
pip install -r requirements.txt
到我们下载的代码环境中
编译CUDA算子
依次执行下面的命令!
cd ./models/ops
sh ./make.sh
python test.py
出现这些文件(我这里编译了不同版本的,所以会多出来)
数据集的位置
按如下结构放置数据集
如图
下载预训练模型
点击GitHub中的这个位置(你也可以下载其他的),进去之后下载
将下载后的文件放到项目文件夹(如图)
进行评估
<path to config file> --resume <path to pre-trained model> --eval
填写后应该是这样
configs/r50_deformable_detr.sh--resume r50_deformable_detr-checkpoint.pth --eval
进行运行
得到结果
评估结果
IoU metric: bbox
Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.445
Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.635
Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.487
Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.268
Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.477
Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.595
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.353
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.587
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.629
Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.416
Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.673
Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.819
IoU metric: bbox
表示评估的是边界框(bounding box)检测任务,使用IoU(Intersection over Union)作为评估标准。
Average Precision (AP) 指标:
AP @[IoU=0.50:0.95] (主指标,通常称为"AP"或"mAP"):
0.445 表示模型在IoU阈值从0.5到0.95(步长0.05)的平均精度。这是COCO比赛的主要排名指标。
AP @[IoU=0.50]:
0.635 表示宽松阈值(IoU=0.5)下的精度,接近PASCAL VOC的评估标准。
AP @[IoU=0.75]:
0.487 表示严格阈值(IoU=0.75)下的精度。
不同物体尺寸的AP:
small (小物体):0.268
medium (中等物体):0.477
large (大物体):0.595
说明模型对大物体检测效果最好,小物体检测最具挑战性。
Average Recall (AR) 指标:
AR @ maxDets=1:0.353(每张图像只检测1个框时的召回率)
AR @ maxDets=10:0.587(每张图像检测10个框时的召回率)
AR @ maxDets=100:0.629(每张图像检测100个框时的召回率)
不同物体尺寸的AR:
small: 0.416
medium: 0.673
large: 0.819
进行训练
运行下面代码
GPUS_PER_NODE=8 ./tools/run_dist_launch.sh 8 ./configs/r50_deformable_detr.sh
注意!这会同时跑8张卡,你没有8张卡,就把GPUS_PER_NODE=8 改成其他的数字,
比如 GPUS_PER_NODE=1