Проблемы и сбои в обнаружении нескольких классов с помощью YOLO v2, тогда как обнаружение в одном классе почти точно - PullRequest
0 голосов
/ 18 сентября 2018

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

Image_Class_1 Image_Class_2 Image_Class_3 Image_Class_4

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

  • Поворот каждого типа символа с шагом 0,5 градуса, что обеспечивает 720изображений для каждого класса.
  • Кроме того, полученные 720 изображений были пропущены через размытие по Гауссу (фильтр 5x5).
    Это увеличивает набор данных до 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%)

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

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

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