项目场景:
对疟原虫细胞医学显微图像进行目标检测,使用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)