DINO训练自己的数据集(swin transformer backbone)

news/2024/7/19 11:25:59 标签: transformer, 深度学习, 人工智能

源码:https://github.com/IDEA-Research/DINO

数据集:coco格式

COCODIR/
  ├── train2017/
  ├── val2017/
  └── annotations/
  	├── instances_train2017.json
  	└── instances_val2017.json
环境配置
1. 下载代码
git clone https://github.com/IDEA-Research/DINO.git
cd DINO
2. 新建个环境
conda create -n dino python=3.7 -y    # 新建环境
conda activate dino    # 激活环境
3. 装pytorch(作者版本:python=3.7.3,pytorch=1.9.0,cuda=11.1)
# an example:
conda install -c pytorch pytorch torchvision

        在pytorch.org上找到合适版本的pytorch安装即可,比如我是直接沿用的之前配的vit_adapter环境,版本和作者一样

pip install torch==1.9.0+cu111 torchvision==0.10.0+cu111 torchaudio==0.9.0 -f https://download.pytorch.org/whl/torch_stable.html
4. 安装其他包
pip install -r requirements.txt
5. 编译 CUDA operators
cd models/dino/ops
python setup.py build install
# unit test (should see all checking is True)
python test.py
cd ../../..

 执行 test.py 后出现 out of memory是正常现象

到这里配置环境就over了

训练
1. 修改配置文件

/config/DINO/DINO_4scale_swin.py 中

1.  num_classes 调整为数据集类别数

2. 修改 dn_labelbook_size 满足 dn_labebook_size >= num_classes + 1

(此处建议复制一份作为自己的config文件进行修改,防止以后弄混出现问题,也方便自己管理,这里我复制了一份命名为 DINO_4scale_swin_custom.py)

2. 下载预训练模型文件等

下载预训练模型 and the checkpoint of Swin-L backbone

3. start to train
bash scripts/DINO_train_submitit_swin.sh /path/to/your/COCODIR /path/to/your/pretrained_backbone

 train from scratch

bash scripts/DINO_train_swin.sh /path/to/your/COCODIR /path/to/your/pretrained_backbone_dir

或者 

python main.py \
	--output_dir logs/DINO/R50-MS4 -c ./config/DINO/DINO_4scale_swin_custom.py --coco_path ./coco_path \
	--options dn_scalar=100 embed_init_tgt=TRUE \
	dn_label_coef=1.0 dn_bbox_coef=1.0 use_ema=False \
	dn_box_noise_scale=1.0 backbone_dir=./backbone_dir

finetune with pre-trained models

bash scripts/DINO_train_swin.sh /path/to/your/COCODIR /path/to/your/pretrained_backbone --pretrain_model_path /path/to/a/pretrianed/model --finetune_ignore label_enc.weight class_embed

 指定GPU序号的话在 /path/to/your/pretrained_backbone后加上序号数即可,即第三个参数

ps. 如果是用的自己的config文件,那么需要修改 DINO_train_swin.sh 里面的参数,把里面的 DINO_4scale_swin.py 修改为自己的文件名即可

遇到的报错

第一次train的时候出现报错 RuntimeError: No shared folder available dino 

解决方法:在项目文件夹下新建一个名为comp_robot的文件夹,该文件夹内再新建一个名为experiments的文件夹,然后在根目录下的run_with_submitit.py中找到get_shared_folder()函数,将其中的 /comp_robot 换为自己的文件夹所在路径,/comp_robot/{user}/experiments 同理

占用现存好大,改天再跑,先记录一下我自己的指令(服务器103 环境名vit_adapter)

 bash scripts/DINO_train_swin.sh /data/zy/dataset/project/Cooper001_withlabel/coco/ /data/zy/code/DINO-main/pretrained/ 2 --pretrain_model_path /data/zy/code/DINO-main/pretrained/checkpoint0011_4scale_swin.pth --finetune_ignore label_enc.weight class_embed


http://www.niftyadmin.cn/n/5148183.html

相关文章

【算法练习Day37】零钱兑换 II组合总和 Ⅳ

​📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:练题 🎯长路漫漫浩浩,万事皆有期待 文章目录 零钱兑换 II组合总和 Ⅳ总结…

黄仁勋:英伟达预言 2 年内行业将面目全非 一个词形容AI:Unbelievable

本心、输入输出、结果 文章目录 黄仁勋:英伟达预言 2 年内行业将面目全非 一个词形容AI:Unbelievable前言【访谈内容】一个词形容AI:Unbelievable创立英伟达“比想象中难一百万倍”相关图片传送门弘扬爱国精神 黄仁勋:英伟达预言 …

【EI会议征稿】第三届电子信息工程、大数据与计算机技术国际学术会议(EIBDCT 2024)

第三届电子信息工程、大数据与计算机技术国际学术会议(EIBDCT 2024) 2024 3rd International Conference on Electronic Information Engineering, Big Data and Computer Technology 第三届电子信息工程、大数据与计算机技术国际学术会议(…

离散数学实践(2)-编程实现关系性质的判断

*本文为博主本人校内的离散数学专业课的实践作业。由于实验步骤已经比较详细,故不再对该实验额外提供详解,本文仅提供填写的实验报告内容与代码部分,以供有需要的同学学习、参考。 -------------------------------------- 编程语言&#xff…

【LeetCode刷题-链表】--146.LRU缓存

146.LRU缓存 方法一:哈希表双向链表 使用一个哈希表和一个双向链表维护所有在缓存中的键值对 双向链表按照被使用的顺序存储了这些键值对,靠近头部的键值对是最近使用的,而靠近尾部的键值对是最久使用的哈希表即为普通的哈希映射&#xff0…

【TypeScript】认识TypeScript

❤️ Author: 老九 ☕️ 个人博客:老九的CSDN博客 🙏 个人名言:不可控之事 乐观面对 😍 系列专栏: 文章目录 TypeScriptJavascript的缺点使用TypeScript重构TypeScript的编译环境全局安装TS编译环境TS编译简…

智能客服系统应用什么技术?

随着科技的飞速发展,智能客服系统逐渐出现在我们的生活中。这些系统不仅能够提供即时的客户服务,还可以通过人工智能等技术实现更加高效和准确的服务。那么,智能客服系统究竟应用了哪些技术呢?本文将详细解析。 1、机器学习技术 …

AI 革命:最佳 txt 转纹理工具

推荐稳定扩散AI自动纹理工具: DreamTexture.js自动纹理化开发包 游戏产业和人工智能革命 随着人工智能革命迎来一个具有无可比拟潜力的新时代,游戏行业正处于巨大转变的边缘。随着开发人员利用人工智能的力量,他们正在解锁创新方法来增强游戏…