Вводное исследование для любопытных.

Глубокое обучение - одна из важнейших технических концепций нашего времени. Уже есть много статей и ресурсов общего характера, посвященных конкретным техническим областям. Тем не менее, слегка технический вводный обзор практической системы и дизайна данных чувствовался отсутствующим. Здесь я рассматриваю это с упором на распаковку часто невысказанных предположений. Наслаждаться! :)

Часть I - Проектирование системы

Мы интегрируемся в существующий процесс или создаем новый процесс на основе этой технологии?

Хотя это можно задать любой новой системе, я думаю, что это особенно актуально для глубокого обучения.

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

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

Используем ли мы подходящий метод глубокого обучения?

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

Мы рассмотрим полную классификацию изображений, обнаружение объектов и сегментацию.

Классификация полного изображения

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

Обнаружение объекта

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

Внутреннее представление локации часто бывает довольно сложным⁵. Обычно окончательный вывод местоположения выражается как минимум информации, необходимой для рисования прямоугольника. Либо как (верхняя левая точка x, y) и (ширина, высота), либо как пара точек (x_min, y_min) и (x_max, y_max).

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

Чтобы проиллюстрировать разницу в расположении, рассмотрим это изображение:

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

Преимущества информации о местоположении:

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

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

Отчасти связанный метод - обнаружение кубоидов, например, в LiDAR-сканировании, показанном выше.

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

(Семантическая) сегментация

Максимум усилий из трех.

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

Текущий метод перехода - это маска R-CNN⁴, которая объединяет обнаружение объектов и сегментацию.

Ключевым компонентом сегментации является использование техники восходящей выборки, такой как оператор транспонирования, такой как conv2d_transpose в тензорном потоке. Приведенные ниже изображения дают общее стилистическое представление, подробное описание см. В источнике.

Подварианты включают сегментирование экземпляров и паноптическую сегментацию.

Специализированные методы:

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

Часть II - Обзор дизайна данных

Исследования направлены на то, чтобы упростить проектирование систем глубокого обучения, не связанное с данными. Учитывая, что сеть глубокого обучения учится на данных, это оказывает давление на создание и проверку набора данных.

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

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

Предположения

«Предположение: мы можем просто найти существующее»

Система, основанная на глубоком обучении, работает, когда данные прогноза (или «домен») аналогичны данным обучения. Это, вероятно, самый распространенный разрыв между ожиданиями и реальностью. Запланируйте это!

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

«Предположение: создавать собственные - дорогое удовольствие»

Imagenet имеет более 20 000 категорий, и стандартный тест "урезает" его до 1000 классов. Создать свое собственное было бы очень дорого.

Тем не мение! Мы стремимся использовать эту технологию, а не исследовать ее границы в исследованиях. Сколько классов вам нужно для производственного использования? Наверное, на порядки меньше 1000. 10 классов, вероятно, более чем достаточно, чтобы разумно представить среднюю проблему.

Это сокращение классов плюс улучшение алгоритмов⁷ означает относительно недорогое создание начального набора данных.

Динамический дизайн данных (принцип D3)

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

  • Выбор структуры данных критически влияет на производительность системы.
  • Область производственных данных должна быть регулярно изменяться ¹⁰
  • Более эффективно собирать данные в контексте вашей конкретной системы глубокого обучения.

Вот один пример динамического подхода:

1. Определите оптимальные данные в контексте вашей системы глубокого обучения.

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

  • Нужно ли нам собирать новые данные, или у нас есть существующие данные, которые подходят для дизайна системы?
  • Для интеграции в существующие процессы: на что буквально смотрят люди, вовлеченные в этот процесс? Не обязательно существующие места размещения датчиков, так как даже если процесс не меняется, размещение датчиков может!
  • Для новых процессов: как мы можем настроить сбор данных (например, датчики камеры) таким образом, чтобы максимизировать ценность для нашего контекста глубокого обучения?

2. Соберите небольшую выборку данных.

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

Добавьте аннотации к примерам (например, ~ 100) и просмотрите такие вопросы, как:

  • Насколько хорошо базовая модель учитывает эти данные?
  • Зная то, что мы знаем сейчас, можем ли мы адаптировать процесс сбора таким образом, чтобы упростить глубокое обучение и / или аннотации?

Тема здесь - вместо того, чтобы усложнять систему глубокого обучения, мы изучаем ограничения и проектируем их с учетом них.

3. Соберите на порядок больше данных.

На данный момент у нас есть представление об ограничениях:

  • Производительность в классе. т.е. каким классам нужно больше данных. Не будем предполагать, что данные должны быть сбалансированы 1: 1, то есть должны ли более сложные классы иметь другое соотношение выборок?
  • Ожидаемое количество необходимых образцов. Это могло быть трудно предсказать с самого начала. Примеры ответов: мы уже собрали достаточно, нам, вероятно, потребуется в 2–3 раза больше, или нам нужно проверить, является ли этот класс работоспособным.
  • Общий уровень исполнения модели. Если вы собрали более 200 образцов для проблемы обнаружения объектов, но все еще не достигли проектной производительности, вероятно, стоит пересмотреть определение класса.

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

Напоминаем, что стратегия - это больше разнообразие, чем объем. Больше того же не приведет к значительному повышению производительности модели.

При необходимости повторите.

И последнее - вопрос об обработке исключений

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

«Системы глубокого обучения не готовы к использованию в прайм-тайм, они не работают постоянно».

Когда вы в последний раз сталкивались с компьютерной ошибкой? Что-то пошло не так, или какой-то глюк? Это довольно часто. Не только в повседневном ПО, но даже в критически важных системах⁹.

И оливковые банки:

На самом деле должны возникать вопросы: насколько хороша часть глубокого обучения, чтобы быть полезной, в контексте общего дизайна системы? Можем ли мы изменить общий дизайн системы, чтобы лучше поддерживать глубокое обучение?

Спасибо за прочтение!

Вы заинтересованы или уже работаете с системами глубокого обучения? В Diffgram мы создаем инфраструктуру для работы следующего поколения реальных приложений. Попробуйте и / или подумайте о том, чтобы присоединиться к нам. :)

Ресурсы

1, https://www.nytimes.com/2012/11/20/science/for-web-images-creating-new-technology-to-seek-and-find.html

2 https://medium.com/@anthony_sarkis/self-driving-cars-implementing-real-time-traffic-light-detection-and-classification-in-2017-7d9ae8df1c58

3 https://github.com/CMU-Perceptual-Computing-Lab/openpose

4 https://arxiv.org/abs/1703.06870

5 Изображение взято из: https://arxiv.org/pdf/1902.07296v1.pdf

Показан пример комплексного представления «якорей» в сети (не окончательный результат).

6 Некоторые статьи о рентабельности инвестиций

Оптимизация компромисса между
одноступенчатым и двухступенчатым детекторами глубоких объектов
с помощью прогнозирования сложности изображения https://arxiv.org/pdf/1803.08707.pdf



‹- Примечание: это наиболее четкое описание операции свертки, которую я когда-либо видел.

7, https://medium.com/@anthony_sarkis/the-age-of-the-algorithm-why-ai-progress-is-faster-than-moores-law-2fb7d5ae7943

8, Дополнение для обнаружения мелких объектов https://arxiv.org/pdf/1902.07296v1.pdf

9, https://en.wikipedia.org/wiki/List_of_software_bugs

10, https://machinelearningmaster.com/gentle-introduction-concept-drift-machine-learning/ ‹- Не большой поклонник этой статьи, но, похоже, это лучший общий учебник по теме

Ресурсы для полной классификации изображений