Как я могу свести потери к более низкому значению?(Тензорный поток)
Я использовал API обнаружения объектов tensorflow.
Вот мое окружение.
Все изображения взяты из coco API
Tensorflow version : 1.13.1
Tensorboard version : 1.13.1
Number of test images : 3000
Number of train images : 24000
Pre-trained model : SSD mobilenet v2 quantized 300x300 coco
Number of detecting class : 1(person)
А вот и мой train_config.
train_config: {
batch_size: 6
optimizer {
adam_optimizer: {
learning_rate {
exponential_decay_learning_rate: {
initial_learning_rate:0.000035
decay_steps: 7
decay_factor: 0.98
}
}
}
}
fine_tune_checkpoint: "D:/TF/models/research/object_detection/ssd_mobilenet_v2_quantized_300x300_coco_2019_01_03/model.ckpt"
fine_tune_checkpoint_type: "detection"
num_steps: 200000
data_augmentation_options {
random_horizontal_flip {
}
}
data_augmentation_options {
ssd_random_crop {
}
}
}
Я не могу найти оптимизированную скорость обучения, соответствующие шаги распада и коэффициент.
Я много тренировался, но результат всегда одинаковый.
Как я могу это исправить??
Я уже неделю потратил только на эту проблему..
В другом посте кто-то рекомендовал добавить шум в набор данных (изображения).
Но я не знаю, что это значит.
Как я могу это сделать?
0 ответов
Я думаю, что в другом посте говорилось о том, чтобы немного увеличить данные, добавив несколько зашумленных изображений в ваш набор обучающих данных. Это означает, что вы применяете некоторые случайные преобразования к своим входным данным, чтобы модель была лучше обобщена. Типом шума, который можно использовать, является случайный гауссовский шум ( https://en.wikipedia.org/wiki/Gaussian_noise), который применяется патчем в API обнаружения объектов. Хотя кажется, что у вас достаточно обучающих образов, попробовать стоит. Шум будет выглядеть так:
...
data_augmentation_options {
random_horizontal_flip {
}
}
data_augmentation_options {
ssd_random_crop {
}
}
data_augmentation_options {
randompatchgaussian {
// The patch size will be chosen to be in the range
// [min_patch_size, max_patch_size).
min_patch_size: 300;
max_patch_size: 300; //if you want the whole image to be noisy
}
}
...
Список расширений данных вы можете проверить: https://github.com/tensorflow/models/blob/master/research/object_detection/protos/preprocessor.proto
Что касается скорости обучения, одна из распространенных стратегий - это попробовать большую скорость обучения (например, 0,02) и одну очень маленькую, как вы уже пробовали. Я бы порекомендовал вам попробовать с 0,02, оставить его на некоторое время или использовать скорость обучения с экспоненциальным затуханием, чтобы увидеть, лучше ли результаты.
Изменение batch_size также может иметь некоторые преимущества, попробуйте batch_size = 2 вместо 6.
Я также рекомендую вам оставить обучение и перейти к дополнительным шагам, пока вы не увидите никаких улучшений в обучении, возможно, оставьте его, пока в вашей конфигурации не будут определены 200000 шагов.
Некоторые более глубокие стратегии могут помочь модели работать лучше, о них было сказано в этом ответе: qaru.site/questions/435 /... / 61699696/14203615
При этом, если ваш набор данных составлен правильно, вы должны получить хорошие результаты на своем тестовом наборе.