使用新数据微调预训练的YOLOv7,而不影响现有的准确性

问题描述 投票:0回答:1

我有一个预训练的 YOLOv7-base(不是很小)pt 文件,但我无权访问用于训练它的数据集

我想提高某些类别的性能(检测和置信度),例如“人类”和“汽车”,以及以下附加要求:

  • 保留当前类别模型训练时
  • 不要降低模型在当前类别中的当前能力(模型检测当前测试集图像中的对象的能力不应该因为微调而恶化。我需要微调模型,以便它检测当前丢失的对象。)

以下是我到目前为止所遵循的(大体上)步骤:

  1. 为要微调的类别准备数据集。这些图像不包含任何其他类别的对象。
  2. 在配置文件中设置值进行训练时,标签列表包含预训练模型的所有标签,即使数据仅针对两个类别。
  3. 设置低学习率(lr0) 0.0001(以防止之前的权重被完全覆盖)。

训练后,之前检测到的对象(在测试集图像中)现在被模型遗漏了。我应该采取哪些额外步骤来满足我的要求?

感谢您对我的询问感兴趣。

问候。:)

deep-learning pytorch yolo transfer-learning fine-tuning
1个回答
0
投票

训练后,之前检测到的对象(在测试集图像中)现在被模型遗漏了。

我假设这与“人类”和“汽车”之外的类别有关。这是预期的行为,因为仅向模型提供两个类别将不可避免地导致对这两个类别的偏见。

我认为仅在两个类别上进行训练时性能不可能出现 0 下降,但您可以尝试冻结某些层以减少性能影响。当您有一个不代表真实分布的小数据集时,在微调过程中通常会使用冻结图层。也许这适合你的情况。您可以在这篇有用的文章

中阅读有关冻结层的更多信息
© www.soinside.com 2019 - 2024. All rights reserved.