关于tensorflow2 目标检测api训练模型的超参数调整

我在用tensorflow2的目标检测api训练ssdmobilenetv2模型,我的数据集为人狗猫汽车卡车这5类。这5类依次占数据集的总数量为30%3%2%60%5%,类别比列不平衡,怎么在config文件里面更改那些超参数能改善这个情况啊,是调整nms部分还是loss部分呀,怎么调整啊

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

以下回答参考GPT并且由Bony-整理:
对于类别不平衡的情况,一些常见的解决方法包括:
数据增强:增加类别较少的样本数量,可以通过图片变换(如旋转、翻转、裁剪等)来扩充数据集。
类别平衡的损失函数:使用适合不平衡数据集的损失函数,例如 Focal Loss,该损失函数在训练时会更加关注难分类的样本,从而能够提高类别较少的样本的训练效果。
阈值调整:可以通过调整 NMS 阈值或分类阈值来改变检测结果,例如增加类别较少的样本的置信度阈值,以减少错误的分类。
权重调整:可以通过调整类别权重来平衡数据集,例如给类别较少的样本分配更高的权重。
在 TensorFlow Object Detection API 中,可以通过修改配置文件中的超参数来进行调整。对于类别不平衡的情况,可以尝试以下几个参数的调整:
正负样本比例:可以通过修改 config 文件中的 frcnn_config 或 ssd_config 中的 positive_fraction 参数来控制正负样本的比例,增加类别较少的样本的比例。
NMS 阈值:可以通过修改 config 文件中的 frcnn_config 或 ssd_config 中的 nms_threshold 参数来控制 NMS 的阈值,从而调整检测结果的数量。
损失函数:可以在 config 文件中的 frcnn_config 或 ssd_config 中设置损失函数的参数,例如在 ssd_config 中可以通过 classification_loss 和 localization_loss 参数来调整分类和定位的损失函数。
类别权重:可以在 config 文件中的 label_map_path 中设置每个类别的权重,增加类别较少的样本的权重。
需要注意的是,不同的超参数调整可能对训练结果产生不同的影响,需要通过尝试多种方案来确定最佳的调整方式。

你把代码发过来看一下