Можно ли обучить модель из нескольких наборов данных для каждого класса? - PullRequest
0 голосов
/ 18 февраля 2019

Я довольно новичок в обнаружении объектов.Я использую API обнаружения объектов tenorflow и собираю наборы данных для своего проекта и model_main.py для обучения моей модели.

Я нашел и преобразовал два довольно больших набора данных автомобилей и светофоров с аннотациями.И сделал две записи из них.

Теперь я хочу тренировать подготовленную модель, но мне просто интересно, будет ли она работать?Когда возможно, что изображение, например, «001.jpg» будет, конечно, иметь несколько аннотированных ограничительных рамок автомобилей (это из набора данных автомобилей), но если есть и светофор, оно не будет аннотировано -> будетэто приведет к плохой скорости обучения?(может быть много «проблемных» изображений) Как мне это улучшить?Есть ли обходной путь?(Я действительно не хочу аннотировать изображения снова)

Если это глупый вопрос, извините, спасибо за любой ответ - некоторые ссылки с этой проблемой были бы лучшими!

Спасибо!

1 Ответ

0 голосов
/ 20 февраля 2019

Короткий ответ - да, это может быть проблематично, но с некоторыми усилиями вы можете сделать это возможным.Если у вас есть два набора городских данных, и в одном у вас есть только аннотации для светофоров, а во втором у вас есть только аннотации для автомобилей, то каждый экземпляр автомобиля в первом наборе данных будет изучен как ложный пример, а каждый экземпляр трафика.Свет во втором наборе данных будет изучен как ложный пример.Два возможных результата, о которых я могу думать:

  1. Модель не будет сходиться, поскольку она пытается изучить противоположные вещи.
  2. Модель будет сходиться, но будет зависеть от конкретной области.Это означает, что модель будет обнаруживать светофор только на изображениях из домена первого набора данных и автомобилей во втором.На самом деле я пытался сделать это сам в другой обстановке, и получил такой результат.

Для того, чтобы узнать вашу цель изучения светофоров и автомобилей независимо от того, из какого набора данных они поступают, выВам нужно будет изменить функцию потери.Вам нужно сообщить функции потерь, из какого набора данных происходит каждое изображение, а затем вычислить только потери в соответствующих классах (/ обнулить потери в классах, которые ему не соответствуют).Итак, возвращаясь к нашему примеру, вы вычисляете только светофоры с потерями и обратным распространением в первом наборе данных, а автомобили - во втором.

Для полноты картины добавлю, что если ресурсы доступны, то лучшим вариантом будет аннотировать всеклассы во всех наборах данных, чтобы избежать предлагаемой модификации, поскольку, только распространяя определенные классы в обратном направлении, вы не сможете использовать реальные ложные примеры для других классов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...