Проблемы и сбои в обнаружении нескольких классов с YOLO v2, тогда как обнаружение в одном классе почти точно

Для курсового проекта я обучаю однопроходную сеть для обнаружения нескольких символов инструментов на изображении. Очень небольшое подмножество этих классов показано ниже.

Image_Class_1 Image_Class_2 Image_Class_3 Image_Class_4

Я использую YOLO v2 для обучения и обнаружения нескольких классов в изображении. Поскольку набор данных для таких символов не существует, я выполнил увеличение данных следующими двумя способами для четырех символов, показанных выше.

  • Вращение каждого типа символа с шагом 0,5 градуса, что обеспечивает 720 изображений для каждого класса.
  • Кроме того, полученные 720 изображений были пропущены через размытие по Гауссу (фильтр 5х5).
    Это увеличивает набор данных до 1440 изображений на класс.

Файл конфигурации для YOLO v2 был изменен только в следующих строках:

  • Строка 3: партия = 64
  • Строка 4: подразделение = 64 (размер подразделения 8 приводит к нехватке памяти в CUDA).
  • Строка 244: классы = 4
  • Строка 237: фильтры =(классы + 5)*5 = 45.

Размер изображения, используемый для обучения, составляет 500x500, а весь набор данных делится на 80% и 20% для обучения и тестирования.

Обучение сети продолжалось до 3100 итераций, а средняя потеря составляла 0,048.

Тем не менее, результаты обучения меня немного смутили, так как результаты довольно неожиданны в случае обнаружения нескольких классов. В классификации с одним классом на тестовом изображении сеть работает как ожидалось (хотя и не очень хорошо для двух классов, которые, возможно, могут быть улучшены), как показано ниже:
Обнаружение class_2_image (вероятность = 78%) Обнаружение class_1_image (вероятность = 98%) Обнаружение class_3_image (вероятность = 98%)

Тем не менее, когда я попытался выполнить мультиклассовое обнаружение на тестовых изображениях, обнаружение и классификация не удаются полностью, как можно видеть на полученных изображениях ниже:
Обнаружение мультикласса смещено для класса_3

Если я изменю пространственное расстояние между символами в тестовом изображении, тогда ограничивающие рамки и предсказание класса станут еще более случайными. Следовательно, у меня есть несколько вопросов относительно этой проблемы:

  1. Поскольку YOLO также выполняет неявное увеличение данных, мешает ли мой процесс увеличения данных обучению?
  2. Нужно ли изменять размер изображения до точного 416X416 в качестве входных данных, необходимых для YOLO v2?
  3. Я понимаю, что YOLO v2 - это очень тяжелая архитектура CNN, которая, возможно, не предназначена для таких изображений, но результаты классификации для одного класса слишком многообещающие, чтобы их игнорировать. Так может кто-то выяснить, почему он не работает полностью для обнаружения нескольких классов?
  4. Должен ли я использовать YOLO v2 как есть или изменить его, чтобы обнаружить эти символы на изображениях? Я предполагаю, что, если я изменю, я рискую потерять больше и ухудшить обнаружение далее.

0 ответов

Другие вопросы по тегам