当 mAP 不稳定时,我应该什么时候停止对象检测模型训练?
When should I stop the object detection model training while mAP are not stable?
我正在使用来自 Berkeley Deep Drive 数据集的 900 张图像重新训练 SSD MobileNet
,并对来自该数据集的 100 张图像进行评估。
问题是经过大约 24 小时的训练后,totalloss
似乎无法低于 2.0:
而且对应的mAP分数很不稳定:
事实上,我实际上已经尝试训练了大约48小时,TotoalLoss就是不能低于2.0,在2.5~3.0之间。在那段时间里,mAP 甚至更低..
所以这是我的问题,考虑到我的情况(我真的不需要任何 "high-precision" 模型,如您所见,我选择了 900 张图像进行训练,并想简单地做一个 PoC 模型 training/predication 就是这样),我应该什么时候停止训练并获得一个合理执行的模型?
确实为了检测你需要微调网络,因为你使用的是SSD,所以已经有一些来源:
- https://gluon-cv.mxnet.io/build/examples_detection/finetune_detection.html(这个专门用于SSD型号,使用mxnet但你可以用TF一样)
- 你可以看一个非常好的微调介绍here
- 这个 repo 有一个很好的微调选项,只要你写你的数据加载器,检查一下 here
一般来说,你的错误可以归因于很多因素,你使用的学习率,图像本身的特征(它们是否标准化?)如果你使用的 ssd 网络是用标准化数据训练的,而你没有标准化再训练然后你会在学习时卡住。他们使用的学习率是多少?
从模型动物园我可以看到对于 SSD 有在 COCO 上训练的模型
以及在 Open Images 上训练的模型:
例如,如果您使用 ssd_inception_v2_coco
,输入层中有一个 truncated_normal_initializer
,因此请考虑到这一点,还要确保输入大小与您提供的大小相同到模型。
如果您还包括许多扩充并考虑我提到的其他内容,即使数据很少,您也可以获得非常好的检测,关于您的代码的更多详细信息将有助于找出问题所在。
我正在使用来自 Berkeley Deep Drive 数据集的 900 张图像重新训练 SSD MobileNet
,并对来自该数据集的 100 张图像进行评估。
问题是经过大约 24 小时的训练后,totalloss
似乎无法低于 2.0:
而且对应的mAP分数很不稳定:
事实上,我实际上已经尝试训练了大约48小时,TotoalLoss就是不能低于2.0,在2.5~3.0之间。在那段时间里,mAP 甚至更低..
所以这是我的问题,考虑到我的情况(我真的不需要任何 "high-precision" 模型,如您所见,我选择了 900 张图像进行训练,并想简单地做一个 PoC 模型 training/predication 就是这样),我应该什么时候停止训练并获得一个合理执行的模型?
确实为了检测你需要微调网络,因为你使用的是SSD,所以已经有一些来源:
- https://gluon-cv.mxnet.io/build/examples_detection/finetune_detection.html(这个专门用于SSD型号,使用mxnet但你可以用TF一样)
- 你可以看一个非常好的微调介绍here
- 这个 repo 有一个很好的微调选项,只要你写你的数据加载器,检查一下 here
一般来说,你的错误可以归因于很多因素,你使用的学习率,图像本身的特征(它们是否标准化?)如果你使用的 ssd 网络是用标准化数据训练的,而你没有标准化再训练然后你会在学习时卡住。他们使用的学习率是多少?
从模型动物园我可以看到对于 SSD 有在 COCO 上训练的模型
以及在 Open Images 上训练的模型:
例如,如果您使用 ssd_inception_v2_coco
,输入层中有一个 truncated_normal_initializer
,因此请考虑到这一点,还要确保输入大小与您提供的大小相同到模型。
如果您还包括许多扩充并考虑我提到的其他内容,即使数据很少,您也可以获得非常好的检测,关于您的代码的更多详细信息将有助于找出问题所在。