【使用YOLOv8下的RT-DETR训练自己的数据集】

项目场景:

对疟原虫细胞医学显微图像进行目标检测,使用RT-DETR对其进行检测训练,将原数据集分为训练集和验证集,测试集有单独的样本(不纳入训练)


问题描述

直接使用yolo系列代码引入RT-DETR,训练到:第十个epoch output/train/result.csv 中出现大量NAN,此时怀疑梯度爆炸。这里的project是指定输出路径,(通过engine/trainer 里的save_dir找到的)

from ultralytics import RTDETR

# Load a COCO-pretrained RT-DETR-l model
model = RTDETR("/database/ultralytics-main/rtdetr-l.pt")

# Display model information (optional)
model.info()

# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="Malaria_2.yaml",project = "/database/ultralytics-main/output", epochs=100, imgsz=640,device = 1)


解决方案:

切换到/database/ultralytics-main/ultralytics/cfg/default.yaml,找到超参设置,将lr0和lrf由0.01更改到0.001,后续就没有梯度爆炸的情况出现了,但是还是偶尔有nan的情况。

# Hyperparameters --
lr0: 0.001 # (float) initial learning rate (i.e. SGD=1E-2, Adam=1E-3)
lrf: 0.001 # (float) final learning rate (lr0 * lrf)

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
训练rtdetr模型使用自己的数据集,首先需要收集和准备训练数据。数据集应该包含带有边界框注释的图像,边界框表示物体在图像中的位置和大小。注释的方式可以是XML、JSON等格式。 在收集好数据集之后,需要进行数据预处理。这包括对图像进行裁剪、缩放、去除噪声等操作,以确保图像的质量和一致性。还需要对边界框进行归一化,通常使用坐标偏移和缩放因子来表示边界框的位置。 接下来,需要进行模型训练。可以使用已有的rtdetr模型作为基础,通过迁移学习来进行训练。首先,需要冻结模型的一些底层卷积层,只训练顶层的分类和回归头部。这样可以加速训练,并且有助于模型适应新的数据集。 在训练过程中,使用损失函数来度量预测结果与真实标签之间的差异。常用的损失函数包括交叉熵损失和平滑L1损失。损失函数的选择取决于具体的任务需求。 同时,需要选择合适的优化器和学习率调度器。常用的优化器包括随机梯度下降(SGD)和Adam。学习率调度器可以帮助在训练过程中降低学习率,以更好地优化模型。 在完成模型训练后,可以进行模型评估和调优。通过计算模型在验证集或测试集上的精确度、召回率等指标来评估模型性能,并根据评估结果进行模型调优,如调整超参数、增加训练数据等操作。 最后,当模型达到满意的性能时,可以使用该模型对新的图像进行目标检测。通过将图像输入模型,可以得到预测的边界框和物体类别,从而实现对新图像中物体的检测和识别。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值