У меня возникла проблема с моей моделью YOLO.
Изначально я тренировал его с 7 занятий. Теперь я хочу добавить в модель 4 новых класса. Однако когда я объединяю данные исходных семи классов с новыми четырьмя классами, время обучения и связанные с этим затраты на облако значительно увеличиваются. Как можно эффективно включить эти дополнительные классы в модель без увеличения времени и затрат на обучение?
Я ожидаю сокращения затрат и времени обучения при поэтапном обучении.





Для добавления новых классов к уже обученной модели вы можете рассмотреть концепцию трансферного обучения. Вместо переобучения всей модели с нуля, объединяя старые и новые классы, вы можете:
Вот упрощенный фрагмент кода, чтобы дать вам представление:
from ultralytics import YOLO
model = YOLO('runs/detect/train/weights/best.pt') # load a pretrained model (recommended for training)
# unfreeze the last 4 layers of model,
named_parameters = list(model.named_parameters())
for i, (name, param) in enumerate(named_parameters):
if i >= len(named_parameters) - 4: # Unfreeze the last 4 layers
param.requires_grad = True
else:
param.requires_grad = False
# # Proceed with training on the new dataset (with 11 classes now)
model.train(data = "dataset/data.yaml", epochs=200, batch=16, workers=1) # train the model
Этот код иллюстрирует общий подход. Вам нужно будет скорректировать детали в зависимости от фактической структуры модели и того, как организованы ваши данные.
Не забудьте обновить файл конфигурации набора данных (new_data_with_11_classes.yaml в примере), чтобы отразить все 11 классов.
Такой подход позволяет существенно сократить время и затраты на обучение.
@glenn-jocher