FasterRCNN训练自己的数据前40个iter正常,后面突然出现rpn_loss_cls: nan   rpn_loss_box: nan

在使用FasterRCNN-tensorflow训练自定义数据集时,从第40个迭代开始,rpn_loss_cls和rpn_loss_box出现nan值。日志显示在bbox_transform.py文件中有多个RuntimeWarning,提示overflow和invalid value。已尝试调整GPU arch、检查数据集和修改学习率,但问题未解决。最终发现是Network batch size与rpn_batchsize设置不一致导致,修正后问题解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境:win7+python3.5+FasterRCNN-tensorflow

源码:https://github.com/dBeker/Faster-RCNN-TensorFlow-Python3.5

问题:FasterRCNN训练自己的数据前40个iter正常后面突然出现rpn_loss_cls: nan   rpn_loss_box: nan,log如下:

iter: 10 / 40000, total loss: 1.628789
 >>> rpn_loss_cls: 0.594060
 >>> rpn_loss_box: 1.034645
 >>> loss_cls: 0.000085
 >>> loss_box: 0.000000

speed: 0.315s / iter
iter: 20 / 40000, total loss: 4.250577
 >>> rpn_loss_cls: 1.961701
 >>> rpn_loss_box: 2.258930
 >>> loss_cls: 0.029946
 >>> loss_box: 0.000000

speed: 0.228s / iter
iter: 30 / 40000, total loss: 2.831758
 >>> rpn_loss_cls: 0.598376
 >>> rpn_loss_box: 0.246269
 >>> loss_cls: 1.368618
 >>> loss_box: 0.61

在目标检测和实例分割任务中,`box_loss`、`cls_loss`、`dfl_loss` 和 `Instances` 是常用的几个指标和概念。以下是对这些术语的解释: 1. **box_loss**: - 这个损失函数用于衡量预测的边界框(bounding box)与真实边界框之间的差异。常见的损失函数包括L1损失(平均绝对误差)、L2损失(均方误差)和IoU损失等。 2. **cls_loss**: - 这个损失函数用于衡量预测的类别与真实类别之间的差异。通常使用交叉熵损失(Cross-Entropy Loss)或焦点损失(Focal Loss)来计算。 3. **dfl_loss**: - 这个损失函数通常用于分布场学习(Distribution Field Learning),用于预测边界框的分布情况。DFL 损失函数可以帮助模型更好地学习边界框的分布,从而提高检测精度。 4. **Instances 为0**: - 这个表示在当批次的数据中没有检测到任何目标实例。这可能是因为数据集中确实没有目标实例,或者是因为模型的检测阈值设置过高,导致没有检测到目标。 ### 可能的原因和解决方法 1. **数据问题**: - 检查数据集中是否存在目标实例。如果数据集本身没有目标实例,模型自然无法检测到任何目标。 - 确保数据标注正确,避免漏标或错标。 2. **模型问题**: - 检查模型的训练过程,确保模型已经过充分的训练。如果模型还没有收敛,检测效果可能不好。 - 调整模型的超参数,如学习率、批量大小等。 3. **阈值问题**: - 检查模型的检测阈值。如果阈值设置过高,可能导致一些目标实例被忽略。可以尝试降低阈值,看看是否能检测到更多的目标实例。 ### 示例代码 ```python # 假设我们使用PyTorch和Detectron2框架 import torch from detectron2.engine import DefaultTrainer from detectron2.config import get_cfg # 加载配置文件 cfg = get_cfg() cfg.merge_from_file("configs/COCO-Detection/faster_rcnn_R_50_FPN_3x.yaml") cfg.DATASETS.TRAIN = ("coco_2017_train",) cfg.DATASETS.TEST = ("coco_2017_val",) cfg.DATALOADER.NUM_WORKERS = 4 cfg.MODEL.WEIGHTS = "detectron2://COCO-Detection/faster_rcnn_R_50_FPN_3x/137849458/model_final_280758.pkl" cfg.SOLVER.IMS_PER_BATCH = 2 cfg.SOLVER.BASE_LR = 0.02 cfg.SOLVER.MAX_ITER = 300 cfg.MODEL.ROI_HEADS.BATCH_SIZE_PER_IMAGE = 128 cfg.MODEL.ROI_HEADS.NUM_CLASSES = 80 # 训练模型 trainer = DefaultTrainer(cfg) trainer.resume_or_load(resume=False) trainer.train() ```
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值