Осмысление больших данных

Обратный поиск изображений на основе глубокого обучения для промышленных приложений

От неструктурированных данных к поиску изображений на основе содержимого

Вы когда-нибудь задумывались, как работает обратный поиск изображений Google, который берет изображение и возвращает вам наиболее похожие изображения за доли секунды?

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

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

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

Глубокое обучение и классификация изображений

Примеры, которые вы, вероятно, видели раньше, могут, например, быть типичными моделями классификации «кошка против собаки», обсуждаемыми в большом количестве блогов и учебных пособий в Интернете. Однако большинство этих примеров основаны на наличии доступа к значительному количеству помеченных изображений, где у вас есть «основная достоверная информация», доступная для обучения вашей модели. В нашем случае это не совсем то, что мы ищем, поскольку у нас нет такой информации. К счастью, мы все еще можем использовать общедоступные модели глубокого обучения, обученные на других наборах данных.

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

В нашем случае, когда дело доходит до осмысления базы данных неструктурированных изображений, мы действительно можем получить много ценной информации без каких-либо помеченных обучающих изображений вообще. Это связано с тем, как эти модели глубокого обучения фактически анализируют содержимое изображения на основе автоматического извлечения соответствующих «характеристик» изображения.

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

Нейронная сеть как экстрактор признаков

  • Классификатор изображений нейронной сети работает путем преобразования изображений (которые являются точками в пространстве пикселей высокой размерности) в «векторы признаков» низкой размерности, представляющие характерные «особенности», полученные сетью (как показано на рисунке ниже).
  • Затем мы можем взять обученную нейронную сеть, удалить ее последние высокоуровневые слои, которые изначально использовались для классификации объектов, и использовать расчлененную модель для преобразования наших изображений в векторы признаков.

Это векторное представление изображения может содержать некоторый шум и избыточную информацию. Чтобы отфильтровать наиболее важную информацию (а также ускорить процесс поиска и анализа изображений), мы дополнительно сжимаем данные на основе анализа главных компонентов. При этом мы сжимаем вектор признаков с 2048 до 256 измерений. (обратите внимание, что размерность зависит от вашего выбора нейронной сети в качестве экстрактора признаков).

Показатель сходства: косинусное сходство.

После преобразования наших изображений в векторы признаков нам понадобится какая-то метрика сходства для их сравнения. Одним из таких кандидатов, использованным в этом примере, является косинусное подобие. По сути, это измеряет угол между изображениями в многомерном пространстве признаков. Это проиллюстрировано ниже в очень упрощенной версии для двухмерного пространства признаков, где сравнивается косинусное сходство между входным изображением и изображениями A / B. Здесь мы видим, что A содержит объекты, похожие на входное изображение (и, следовательно, меньший угол между ними), тогда как B содержит объекты, выглядящие иначе (и, соответственно, имеет больший угол).

Кластеризация изображений

Обрабатывая изображения в нашей базе данных с помощью нашей «модели извлечения признаков», мы можем преобразовать все изображения в представление вектора признаков. Это означает, что теперь у нас есть количественное описание содержания изображения. Имея эту информацию, мы можем, например, передать эти векторы через алгоритм кластеризации, который назначит изображения различным кластерам в зависимости от их содержимого. При этом мы все еще не знаем, что содержат отдельные изображения, но мы знаем, что изображения в различных кластерах обычно содержат похожие объекты / контент.

Одно применение этой техники могло бы, например, быть предварительным шагом к определению обучающего набора для контролируемых моделей классификации изображений. Сгруппировав все изображения и проверив несколько изображений из каждого кластера, мы можем затем присвоить метку всем изображениям в кластере. При этом мы эффективно пометили все наши изображения, просто взглянув на несколько примеров из каждого кластера. По сравнению с ручной прокруткой и аннотированием 100 000 изображений, это явно улучшение. Тем не менее, автоматическое присвоение одинаковой метки всем изображениям в каждом из кластеров, вероятно, вызовет некоторую неправильную маркировку. Тем не менее, он по-прежнему представляет собой хорошую отправную точку для более подробного анализа.

Обратный поиск изображений для промышленных приложений

Еще одно ключевое применение - это «обратный поиск изображений», который является основной темой этой статьи. Допустим, мы хотим проанализировать «целевое изображение», а затем выполнить поиск в нашей базе данных на предмет аналогичного содержания. Например, это может быть, например, быть базой данных изображений из предыдущих работ по техническому обслуживанию или проверок на заводе-изготовителе. Тогда мы могли бы быть заинтересованы в поиске изображений похожих объектов или, возможно, всех исторических изображений осмотра определенного элемента оборудования.

Затем мы можем сначала преобразовать наше целевое изображение в представление вектора признаков, обработав его с помощью нашей «модели экстрактора признаков». Сделав это, мы можем затем выполнить поиск сходства в нашей базе данных векторов признаков.

Соответствующие изображения: шаг за шагом

  • Подготовка базы данных изображений: преобразуйте базу данных изображений в представление вектора признаков с помощью нашей модели нейронной сети с последующим преобразованием главных компонентов.
  • Анализируйте новое целевое изображение. Преобразуйте изображение в вектор низкоразмерных признаков, используя тот же конвейер, который описан выше.
  • Найти совпадающие изображения: вычислить сходство между векторами признаков, используя косинусное сходство. Используйте метрику подобия, чтобы сопоставить изображения из базы данных, которые наиболее похожи на целевое изображение.

Резюме:

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

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

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

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

И, если вы хотите стать участником Medium для свободного доступа ко всем материалам на платформе, вы также можете сделать это, используя мою реферальную ссылку ниже. (Примечание: если вы зарегистрируетесь по этой ссылке, я также получу часть членского взноса)



Другие работы Вегарда Фловика на Medium:

  1. Что такое теория графов и почему вам это нужно?
  2. Глубокое трансферное обучение для классификации изображений
  3. Создание ИИ, который может читать ваши мысли
  4. Скрытый риск искусственного интеллекта и больших данных
  5. Как использовать машинное обучение для обнаружения аномалий и мониторинга состояния
  6. Как (не) использовать машинное обучение для прогнозирования временных рядов: как избежать ловушек
  7. Как использовать машинное обучение для оптимизации производства: использование данных для повышения производительности
  8. Как научить физику системам искусственного интеллекта?
  9. Можем ли мы построить сети искусственного мозга, используя наномасштабные магниты?
  10. Искусственный интеллект в управлении цепочкой поставок: использование данных для повышения операционной эффективности

Я также обсуждаю различные темы, связанные с искусственным интеллектом / машинным обучением, в презентации семинара ниже: «От шумихи до реальных приложений». Надеюсь, вы нашли эти ресурсы интересными и полезными! Любые отзывы и комментарии в комментариях ниже, конечно, всегда приветствуются.