Не знаете, как обучить модель ML распознаванию статических изображений

Я пытаюсь построить модель ML для конкретного случая использования. Я читал о различных библиотеках и пытался обучить своих собственных классификаторов, но я чувствую, что то, что я делаю, не совсем правильно - все установки для обнаружения объектов кажутся основанными на идее, что объект обнаружение может иметь огромное количество форм, и, таким образом, методы обучения разработаны с учетом этого. Мой вариант использования отличается от этого.

У меня есть статичные плоские изображения, которые я хочу идентифицировать, например, обложка книги. Поэтому имеет смысл, что мне не нужно предоставлять много изображений, а только одно изображение того, как оно выглядит спереди. Я хочу тренировать модель ML, чтобы после тренировки я мог показать ей изображение обложки этой книги, и она узнала бы это.

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

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

Я попытался использовать очень простую настройку Turi Create, обучая ее каждой отдельной точке данных, имеющейся у меня для каждой книги, а затем используя те же данные для проверки, поскольку у меня, очевидно, нет набора для обучения и проверки. Turi Create берет на себя все детали обучения и, очевидно, рассчитан на множество примеров для каждого класса. Я чувствую, что я плохо изменяю это здесь для моих целей. После тестирования это также не работает для обнаружения объекта.

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

За последний месяц я узнал больше о ML и Computer Vision, но это, конечно, не моя область знаний - я в первую очередь разработчик программного обеспечения. Буду признателен за любые советы, которые я мог бы получить здесь.

2 ответа

На ваш вопрос нет четкого ответа (извините), но есть несколько ключевых областей компьютерного зрения / машинного обучения, о которых вы захотите узнать, чтобы решить эту проблему.

Во-первых: если вы действительно хотите остаться в opencv и существующих библиотеках (например, вы не хотите, чтобы это превратилось в исследовательский проект алгоритмов), я предлагаю следующее:

  1. Сделайте небольшой тренировочный набор. Обратите внимание, что здесь под обучающим набором я имею в виду изображения обложки книги в ее "тестирующей" среде: разные углы обзора, разное освещение, разный фоновый беспорядок и т. Д. На самом деле это может быть что-то вроде 50 изображений, что не должно занимать слишком много времени для просто сделай вручную.
  2. В зависимости от того, насколько вы хотите, чтобы это было обнаружение объекта (например, это изображение только обложки книги или изображение стола, на котором есть книга, но может быть также степлер или что-то в этом роде), Вы должны включить ограничивающую рамку.
  3. Затем используйте классический алгоритм CV, который реализован в OpenCV, например, SIFT или SURF или преобразование Хафа. Вместо того, чтобы проходить через эти детали, я отсылаю вас к этому посту о добыче банок кока-колы Там есть аккуратное обсуждение, и оно, вероятно, приведет вас к правильной реализации. Из вашего описания проблемы я подозреваю, что эти проблемы очень похожи (например, ваш комментарий об объектах, принимающих разные формы; это также не проблема с банками кока-колы).

Второе: если вышеперечисленное не является адекватным, вас ожидает более продвинутый исследовательский проект. Я все еще рекомендовал бы что-то вроде преобразования Хафа или SIFT, потому что ключевой момент в том, что вы должны быть в состоянии найти фильтр (или подобный фильтрующему объекту), который действительно хорош для распознавания этой обложки книги. Это означает, что такие вещи, как типичные подходы глубокого обучения, менее полезны из коробки. Если вы действительно хотите пойти по этому пути, начните с чтения об увеличении данных, затем прочитайте об обучении в один или несколько шагов, а затем прочитайте о трансферном обучении. Это долгий путь, поэтому я бы настоятельно предпочел первый подход, который я предлагаю.

Приведенный ниже ответ может помочь вам решить проблему с помощью сверточных нейронных сетей (CNN). Пожалуйста, просмотрите эти видео, чтобы узнать больше о предмете.

Цель: определить плоские изображения (например, обложка книги)

  1. Создание обучающего набора. В вашем обучающем наборе должны быть положительные и отрицательные изображения, где положительные образы содержат обложку книги, а отрицательные - нет.

    • Положительные образцы должны содержать размытые изображения на обложках книг в разных положениях относительно камеры, наклоненные под разными углами, с различным фоном, с разным освещением и т. Д. (Какие изображения вы хотите вернуть в качестве положительных)

    • Отрицательные образцы должны содержать изображения без обложки с фоном и т. Д.

Вы также можете попробовать вручную создать эти наборы данных.

  1. Маркировка:

    • Неясно, должны ли быть найдены точные координаты обложки книги. Таким образом, в таком случае на выходе должны быть X_start, Y_start, Width и высота ограничительной рамки, закрывающей обложку книги во всех изображениях. Для изображений без обложки книги (негативные образцы) значения (0,0,0,0).

    • Еще просто пометьте изображения как 1 и 0 для положительных и отрицательных образцов соответственно.

  2. Модель Тонкой настройки:
    • Доступно несколько предварительно обученных моделей. Вы можете просто настроить его для ваших изображений.

Взгляните на эти страницы для получения дополнительной информации:

  1. Локализация и обнаружение объектов
  2. Бинарная классификация изображений
Другие вопросы по тегам