DEIM:在自定义SAR数据集上的应用测试
了解到基于Transformer可以做到实时目标检测,在公开数据机上的性能还不错,于是拿来在自己制作的数据集上测试下使用的效果。运行环境:NVIDIA RTX4090 24G python3.9.19 pytorch已经配置好直接从GitHub下载源码。
了解到基于Transformer可以做到实时目标检测,在公开数据机上的性能还不错,于是拿来在自己制作的数据集上测试下使用的效果。
GitHub:(https://github.com/ShihuaHuang95/DEIM?tab=readme-ov-file)
运行环境:NVIDIA RTX4090 24G python3.9.19 pytorch已经配置好
直接从GitHub下载源码
1. 数据集准备
将标注好的自定义数据集转成COCO格式
2. 配置文件修改
新建DEIM-main/configs/dataset/custom_detection.yml文件,内容如下:
注意修改项:remap_mscoco_category、类别num_classes、训练集图像路径img_folder、训练集coco标签ann_file、验证集图像路径img_folder、验证集coco标签ann_file改为自定对应的类别和路径,我修改后的如下
自定义Batch Size:
修改
dataloader.yml to increase the total_batch_size:
train_dataloader:
total_batch_size: 64 # Previously it was 32, now doubled
关键参数修改 deim_hgnetv2_l_coco.yml
自定Input大小:默认为640,640
修改dataloader.yml
train_dataloader:
dataset:
transforms:
ops:
- {type: Resize, size: [320, 320], }
collate_fn:
base_size: 320
dataset:
transforms:
ops:
- {type: Resize, size: [320, 320], }
修改Dfine_hgnetv2.yml
eval_spatial_size: [320, 320]
3. 模型训练和测试
#deim_dfine_hgnetv2_s_coco_120e.pth为coco预训练权重
python train.py -c configs/deim_dfine/deim_hgnetv2_s_coco.yml --use-amp --seed=0
#best_stg2.pth为训练最佳map50:95的精度权重
python train.py -c configs/deim_dfine/deim_hgnetv2_s_coco.yml --test-only -r outputs/deim_hgnetv2_s_coco/best_stg2.pth
4. 遇到的问题
如果出现ModuleNotFoundError: No module named ‘calflops’
由于calfops和nvidia-cudnn-cu12容易冲突,测试的时候,可将engine/misc/profiler_utils.py相关内容注释,该calflops仅计算FLOPs等功能,如下所示
如果出现ValueError: Default process group has not been initialized, please make sure to call init_process_group.
定位出错的位置发现是pretrained为true,但没有在指定的路径中找到预训练模型导致的
根据engine/Backbone/hgnetv2.py 中arch_configs的部分地址可先下载相应的预训练模型,放到代码指定的位置,问题即可解决。

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)