Я обучил Faster R-CNN (ResNet101, предварительно обученный на MS COCO) для шагов 50K с 5K пользовательских изображений. Я использовал SGD с импульсом (0,9).
Скорость обучения составляла 0,0003 для шагов 10К, затем я уменьшил ее до 0,00003 для шагов 20К и, наконец, установил ее на 0,00003 для последних шагов 20К. Он приблизился, однако потери не упали ниже 0,2.
Теперь я добавляю еще 17К изображений в тренировочный набор, чтобы тренировать еще 50К шагов, и продолжаю тренировать ту же модель. По мере того, как я буду вводить больше данных, я хочу увеличить скорость обучения, а затем снова уменьшиться, потому что модель должна изучить вновь введенные данные.
Тем не менее, после увеличения скорости обучения потеря увеличивается (как и ожидалось), и, хотя я уменьшаю скорость обучения, она никогда не снижается. Она становится плоской, но не уменьшается ... Между тем, увеличивается MAP или она стабильна.
Я не знаю, как позволить модели сначала исследовать, а затем сходиться. Если я долгое время поддерживаю высокий уровень обучения, потери никогда не уменьшатся. Если я не увеличу его, то я застрял в локальных минимумах и не вижу эффекта новых точек данных.
Я пытался:
- init LR: 0,0003 для шагов 10K, 0,00003 для шагов 20K, 0,000003 для
20 тыс. Шагов
- init LR: 0,0001 для шагов 10K, 0,00003 для шагов 20K,
0,000003 для шагов 20К
- init LR: 0,0001 для шагов 5К, 0,00003 для шагов 25К, 0,000003 для шагов 20К
- init LR: 0,0001 для 2500 шагов,
0,00003 для 27500 шагов, 0,000003 для 20K шагов
- init LR: 0,0003 для шагов 30К, 0,00003 для шагов 10К, 0,000003 для шагов 20К
Я тоже пробовал Адама, но он вел себя очень плохо. Я не знаю почему, но это должно быть причиной того, что любая из бумаг для обнаружения объектов использует не Адама, а SGD с импульсом