我对微调我正在使用的Mask-RCNN模型很感兴趣,例如分割。目前我已经训练了6个时期的模型,各种Mask-RCNN损失如下:
我停下来的原因是COCO评估指标似乎在上一个时期有所下降:
我知道这是一个影响深远的问题,但我希望获得一些直觉,了解如何理解哪些参数对改进评估指标最有影响。我知道有三个方面需要考虑:
1.我是否应该查看批量大小、学习率和动量,这使用了学习率为1 e-4、批量大小为2的SGD优化器?
1.我应该考虑使用更多的训练数据或添加增强(我目前没有使用任何),我的数据集是目前相当大的40 K图像?
1.我是否应该查看特定的MaskRCNN参数?
我想我可能会被问到我想要改进什么,所以让我说,我想提高个别面具的回忆。该模型表现良好,但没有完全捕捉到我想要它的全部扩展。我还省略了具体学习问题的细节,因为我想获得如何处理这个问题的一般直觉。
1条答案
按热度按时间bd1hkmkf1#
几点注意事项:
init_lr = 0.00005 weight_decay = init_lr * 100 optimizer = torch.optim.AdamW(params, lr=init_lr, weight_decay=weight_decay) scheduler = torch.optim.lr_scheduler.ReduceLROnPlateau(optimizer, verbose=True, patience=3, factor=0.75)
对于范围内的时段(时段):#训练一个时期,每10次迭代打印metric_logger =训练一个时期(模型、优化器、训练加载器、定标器、设备、时期、打印频率= 10)
找到这样一个LR和权重衰减,使得训练在训练结束时将LR耗尽到一个非常小的值,比如初始LR的1/10。如果你经常有一个平台期,调度器会很快将它带到非常小的值,网络在剩下的时间里什么也学不到。
你的图表显示你的LR在训练中的某个点太高了,网络停止训练,然后AP下降。你需要不断的改进,即使是很小的改进。网络训练越多,它对你的域了解的细节就越微妙,学习率就越小。恕我直言,恒定的LR不允许正确地做到这一点。
我需要在这里找到小对象,为什么我使用这样的锚参数。
祝你好运!