Representation learning что это

Deep Anomaly Detection

Детекция аномалий с помощью методов глубокого обучения

Гетерогенность разных классов объектов: непохожесть может быть разной

Редкость появление аномалий: имбаланс классов в обучении

Различные типы аномалий: одиночные объекты, обычные объекты, но в аномальных условиях, группы объектов (слишком плотный граф фейк-аккаунтов социальной сети)

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

Низкие значения precision метрики в задаче классификации на аномальный / нормальный (частое ложное срабатывание алгоритмов на нормальных данных)

Проблема больших размерностей данных

Отсутствие или недостаток размеченных данных

Неустойчивость алгоритмов к зашумленным объектам

Детекция аномалий целой группы объектов

Низкая интерпретируемость результатов

Категоризация подходов

В своей недавней статье [2] G. Pang приводит следующую классификацию существующих подходов для решения поставленной задачи.

Автор разбивает все алгоритмы на три большие группы:

Representation learning что это. image loader. Representation learning что это фото. Representation learning что это-image loader. картинка Representation learning что это. картинка image loaderрис. 2. Deep learning for feature extraction

Representation learning что это. image loader. Representation learning что это фото. Representation learning что это-image loader. картинка Representation learning что это. картинка image loaderрис. 3. Learning feature representation of normality

Representation learning что это. image loader. Representation learning что это фото. Representation learning что это-image loader. картинка Representation learning что это. картинка image loaderрис. 4. End-to-end anomaly score learning

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

Deep learning for feature extraction

Как уже отмечалось в этом подходе мы попытаемся уменьшить размерность входных данных. Можно было бы использовать стандартный методы, такие как PCA (principal component analysis) [3] или random projection [4], но для детекции аномалий необходимо сохранить семантическую составляющую каждого объекта, с чем отлично справятся нейронные сети. И в зависимости от типа данных можем выбрать предобученные модели MLP, если имеем дело с табличный данными, СNNs для работы с изображениями, RNNs для предобработки последовательных данных (видеоряд).
При этом основным плюсом такого подхода будет наличие предобученных моделей для почти любого типа данных, но при этом для нахождении anomaly score полученное признаковое пространство может быть далеко не оптимальным.

Learning feature representation of normality

Как видно из рис.1 этот тип можно разделить на два подтипа.

Generic Normality Feature Learning. Подходы в этом классе алгоритмов при преобразовании исходных признаков всё ещё используют функцию потерь не для детекции аномалий напрямую. Но генеративные модели здесь позволяют вычленить ключевую информацию о структуре объектов, тем самым способствуя самой детекции выбросов.

Математическое описание семейства алгоритмов

Representation learning что это. image loader. Representation learning что это фото. Representation learning что это-image loader. картинка Representation learning что это. картинка image loader

Рассмотрим конкретные виды архитектур:

Автоэнкодеры
Для задачи DAD главная идея заключается в том, что нормальные данные будут легко реконструированы автоэнкодером, тогда как аномальный объект для модели будет восстановить сложно. [5]

Подробнее об алгоритме

Representation learning что это. image loader. Representation learning что это фото. Representation learning что это-image loader. картинка Representation learning что это. картинка image loader

Generative Adversarial Networks

Representation learning что это. image loader. Representation learning что это фото. Representation learning что это-image loader. картинка Representation learning что это. картинка image loader

В конкретной задаче DAD генератор будет стараться найти в обученном латентном пространстве вектор, соответветствующий поступающему в него объекту. При этом делается предположение, что так как аномальный объект придет из другого распределения, система быстро различит выброс. AnoGAN [6].

Predictability Modeling. В этом семействе алгоритмов каждый элемент рассматривается как часть последовательности.

Representation learning что это. image loader. Representation learning что это фото. Representation learning что это-image loader. картинка Representation learning что это. картинка image loader

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

Anomaly Measure-dependent Feature Learning.

Теперь будем обучать модель φ(·) : X→ Z, оптимизируясь уже на специальную функцию теперь аномальности.

Representation learning что это. image loader. Representation learning что это фото. Representation learning что это-image loader. картинка Representation learning что это. картинка image loader

Конкретные подходы в этом семействе:

One-class Classification-based Measure. Предполагаем, что нормальные данные приходят из одного класса, который может быть описан одной моделью, когда как аномальный объект в этот класс на попадёт. Тут можно найти one-class SVM [10], Support Vector Data Description (SVDD) [11].

Clustering-based Measure. Классический подход детекции аномалий, где предполагается, что выбросы легко отделимы от кластеров в сформированном на обучающей выборке новом подпространстве [12].

End-to-end anomaly score learning

Из названия видим, что нейронная сеть будет теперь напрямую вычислять anomaly score.

Семейство таких пайплайнов можно описать следующим образом:

Representation learning что это. image loader. Representation learning что это фото. Representation learning что это-image loader. картинка Representation learning что это. картинка image loader

где τ (x; Θ) : X→ R нейронная сеть, выдающая сразу скоринговую величину.

Ranking Models. Один из разновидностей end-to-end подхода. Здесь нейронная сеть сортирует все объекты по некоторой величине, ассоциирующейся у модели со степенью аномальности. Self-trained deep ordinal regression model [13].

Softmax Models. В данных архитектурах модели обучаются, максимизируя функцию правдоподобия нормального объекта из входных данных. При этом предполагается, что выброс будет иметь низкую вероятность в качетсве события.

Deviation Networks (end-to-end pipeline) [1]

Как на одном из наиболее актуальных подходов остановимся отдельно на архитектуре, предложенной G. Pang для обнаружения выбросов в задаче, где предполагается наличие лишь небольшого набора размеченных аномальных данных и большого массива неразмеченных объектов. На рис.5 представлена архитектура модели.

Объяснение работы deviation loss function

Representation learning что это. image loader. Representation learning что это фото. Representation learning что это-image loader. картинка Representation learning что это. картинка image loader Representation learning что это. image loader. Representation learning что это фото. Representation learning что это-image loader. картинка Representation learning что это. картинка image loader

где y = 1, если объект является аномальным, y = 0 иначе. При этом из функции потерь можно заметить, что в процессе оптимизации модель будет стараться приблизить значения anomaly score к референсному у нормальных объектах, тогда как для аномальных будет заставлять предсказательную сеть выдавать такие значения φ(x; Θ), чтобы dev(x) было положительным, а значит, будет устремлять его к «a» (заранее заданной достаточно большой положительной величиной). Тем самым модель обучится четко разделять аномальные и нормальные объекты.

Заключение

В качестве заключения стоит отметить, что для тех или иных условий, в которых предполагается решать задачу выявления аномальных объектов подходят совершенно разные архитектуру и идеи решения. В каждом из рассмотренных типов есть свои SOTA-подходы. Хотя за последние несколько лет всё больше и больше популярность набирают именно end-to-end алгоритмы.

Ссылки на литературу

[1] Deep Anomaly Detection with Deviation Networks. G. Pang
[2] Deep Learning for Anomaly Detection: A Review. G. Pang
[3] Emmanuel J Candès, Xiaodong Li, Yi Ma, and John Wright. 2011. Robust principal component analysis?
[4] Ping Li, Trevor J Hastie, and Kenneth W Church. 2006. Very sparse random projections.
[5] Alireza Makhzani and Brendan Frey. 2014. K-sparse autoencoders. In ICLR.
[6] Thomas Schlegl, Philipp Seeböck, Sebastian M Waldstein, Ursula Schmidt-Erfurth, and Georg Langs. 2017. Unsupervised anomaly detection with generative adversarial networks to guide marker discovery.
[7] Wen Liu, Weixin Luo, Dongze Lian, and Shenghua Gao. 2018. Future frame prediction for anomaly detection–a new baseline.
[8] Edwin M Knorr and Raymond T Ng. 1999. Finding intensional knowledge of distance-based outliers.[9] Fabrizio Angiulli and Clara Pizzuti. 2002. Fast outlier detection in high dimensional spaces.
[10] Bernhard Schölkopf, John C Platt, John Shawe-Taylor, Alex J Smola, and Robert C Williamson. 2001. Estimating the support of a high-dimensional distribution.
[11] David MJ Tax and Robert PW Duin. 2004. Support vector data description.
[12] Mathilde Caron, Piotr Bojanowski, Armand Joulin, and Matthijs Douze. 2018. Deep clustering for unsupervised learning of visual features.
[13] Guansong Pang, Cheng Yan, Chunhua Shen, Anton van den Hengel, and Xiao Bai. 2020. Self-trained Deep Ordinal Regression for End-to-End Video Anomaly Detection.
[14] Andrew Y Ng and Stuart J Russell. 2000. Algorithms for Inverse Reinforcement Learning.

Источник

Обучение представлениям (representation learning)

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

Вот эта смена представления, замена «атомарных» символических сущностей на «векторные» является ключевой, в этой точке появляются «прототипы» и «похожие на них» (близко расположенные друг ко другу, или похоже расположенные к ряду других объектов, метрик хватает).

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

Многоуровневое статистическое обучение представлениям сейчас используется для нахождения:
— высокоуровневых паттернов в речи (аудио)
— высокоуровневых паттернов в изображениях и видео
— высокоуровневых паттернов в 3D объектах
— высокоуровневых паттернах в текстах на естественных языках
— высокоуровневых гармонических и ритмических паттернов полифонической музыки (http://icml.cc/2012/papers/590.pdf).

Источник

Вижу, значит существую: обзор Deep Learning в Computer Vision (часть 1)

Компьютерное зрение. Сейчас о нём много говорят, оно много где применяется и внедряется. И как-то давненько на Хабре не выходило обзорных статей по CV, с примерами архитектур и современными задачами. А ведь их очень много, и они правда крутые! Если вам интересно, что сейчас происходит в области Computer Vision не только с точки зрения исследований и статей, но и с точки зрения прикладных задач, то милости прошу под кат. Также статья может стать неплохим введением для тех, кто давно хотел начать разбираться во всём этом, но что-то мешало 😉

Representation learning что это. ecb319e06d692a5ea4f2a1343cf9c31d. Representation learning что это фото. Representation learning что это-ecb319e06d692a5ea4f2a1343cf9c31d. картинка Representation learning что это. картинка ecb319e06d692a5ea4f2a1343cf9c31d

Сегодня на Физтехе происходит активная коллаборация «академии» и индустриальных партнёров. В частности, в Физтех-школе Прикладной математики и информатики действуют множество интересных лабораторий от таких компаний, как Сбербанк, Biocad, 1С, Тинькофф, МТС, Huawei.

На написание этой статьи меня вдохновила работа в Лаборатории гибридных интеллектуальных систем, открытой компанией ВкусВилл. У лаборатории амбициозная задача — построить магазин, работающий без касс, в основном при помощи компьютерного зрения. За почти год работы мне довелось поработать над многими задачами зрения, о которых и пойдёт речь в этих двух частях.

Будем двигаться по плану:

Мотивация и что вообще происходит

В 2019 году все говорят про искусственный интеллект, четвёртую промышленную революцию и приближение человечества к сингулярности. Круто, классно, но хочется конкретики. Ведь мы с вами любопытные технари, которые не верят в сказки про ИИ, мы верим в формальную постановку задач, математику и программирование. В этой статье мы поговорим о конкретных кейсах применения того самого современного ИИ — о применении deep learning (а именно — свёрточных нейросетей) в множестве задач компьютерного зрения.

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

Representation learning что это. . Representation learning что это фото. Representation learning что это-. картинка Representation learning что это. картинка

На мой взгляд, первое действительно интересное применение нейросетей в зрении, которое было освещено в СМИ ещё в 1993 году, это распознавание рукописных цифр, реализованное Яном ЛеКуном. Сейчас он один из главных по ИИ в Facebook AI Research, их команда выпустила уже немало полезных Open Source вещей.

Сегодня же зрение применяется во многих сферах. Приведу лишь несколько ярких примеров:

Representation learning что это. 3xtl j0kmdt9ttlnakeka3kpj0u. Representation learning что это фото. Representation learning что это-3xtl j0kmdt9ttlnakeka3kpj0u. картинка Representation learning что это. картинка 3xtl j0kmdt9ttlnakeka3kpj0u

Representation learning что это. 96798750c04282d6514f994b8375edcb. Representation learning что это фото. Representation learning что это-96798750c04282d6514f994b8375edcb. картинка Representation learning что это. картинка 96798750c04282d6514f994b8375edcb

Беспилотные автомобили Tesla и Яндекса

Representation learning что это. dda9970829bfb17bb2b118a08d519835. Representation learning что это фото. Representation learning что это-dda9970829bfb17bb2b118a08d519835. картинка Representation learning что это. картинка dda9970829bfb17bb2b118a08d519835

Representation learning что это. . Representation learning что это фото. Representation learning что это-. картинка Representation learning что это. картинка

Игровые приставки: Kinect 2.0 (правда, там ещё используется информация о глубине, то есть RGB-D картинки)

Representation learning что это. 4d1fb8125d4624b40993f441b42ac48d. Representation learning что это фото. Representation learning что это-4d1fb8125d4624b40993f441b42ac48d. картинка Representation learning что это. картинка 4d1fb8125d4624b40993f441b42ac48d

Representation learning что это. . Representation learning что это фото. Representation learning что это-. картинка Representation learning что это. картинка

Распознавание по лицу: Apple FaceID (при помощи нескольких датчиков)

Representation learning что это. 2d3f3b17818ae279e7a47d3c940e002f. Representation learning что это фото. Representation learning что это-2d3f3b17818ae279e7a47d3c940e002f. картинка Representation learning что это. картинка 2d3f3b17818ae279e7a47d3c940e002f

Representation learning что это. . Representation learning что это фото. Representation learning что это-. картинка Representation learning что это. картинка

Биометрия лица и движений глаз (пример из проекта ФПМИ МФТИ)

Representation learning что это. image loader. Representation learning что это фото. Representation learning что это-image loader. картинка Representation learning что это. картинка image loader

Поиск по картинке: Яндекс и Google

Representation learning что это. b4dcfdd13f85affc79d876cf4bd3f4fd. Representation learning что это фото. Representation learning что это-b4dcfdd13f85affc79d876cf4bd3f4fd. картинка Representation learning что это. картинка b4dcfdd13f85affc79d876cf4bd3f4fd

Representation learning что это. cfa2bbafae96a5bd082ef25bae9d19af. Representation learning что это фото. Representation learning что это-cfa2bbafae96a5bd082ef25bae9d19af. картинка Representation learning что это. картинка cfa2bbafae96a5bd082ef25bae9d19af

Representation learning что это. 60d62d670999dcc7cbd726dde47905a0. Representation learning что это фото. Representation learning что это-60d62d670999dcc7cbd726dde47905a0. картинка Representation learning что это. картинка 60d62d670999dcc7cbd726dde47905a0

Дроны и роботы: получение и обработка информации с помощью зрения

Representation learning что это. 113220ca03176c5a99b82819076e0c8a. Representation learning что это фото. Representation learning что это-113220ca03176c5a99b82819076e0c8a. картинка Representation learning что это. картинка 113220ca03176c5a99b82819076e0c8a

Одометрия: построение карты и планирование при перемещении роботов

Representation learning что это. image loader. Representation learning что это фото. Representation learning что это-image loader. картинка Representation learning что это. картинка image loader

Representation learning что это. d561550eec9f5badc4475392a584fe03. Representation learning что это фото. Representation learning что это-d561550eec9f5badc4475392a584fe03. картинка Representation learning что это. картинка d561550eec9f5badc4475392a584fe03

Перевод по картинке: Яндекс и Google

Representation learning что это. 859ffd2d56f231c5f9b802978a688c94. Representation learning что это фото. Representation learning что это-859ffd2d56f231c5f9b802978a688c94. картинка Representation learning что это. картинка 859ffd2d56f231c5f9b802978a688c94

Representation learning что это. 31f003a47c5dc5b5c5f75758d4d3689c. Representation learning что это фото. Representation learning что это-31f003a47c5dc5b5c5f75758d4d3689c. картинка Representation learning что это. картинка 31f003a47c5dc5b5c5f75758d4d3689c

Representation learning что это. 9a43ea74ba0b5595f257feb313756293. Representation learning что это фото. Representation learning что это-9a43ea74ba0b5595f257feb313756293. картинка Representation learning что это. картинка 9a43ea74ba0b5595f257feb313756293

Representation learning что это. e9096225bb7d5799823737c960e19ad6. Representation learning что это фото. Representation learning что это-e9096225bb7d5799823737c960e19ad6. картинка Representation learning что это. картинка e9096225bb7d5799823737c960e19ad6

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

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

Смотивировались. Зарядились. Поехали:

Классификация как стиль жизни

Representation learning что это. image loader. Representation learning что это фото. Representation learning что это-image loader. картинка Representation learning что это. картинка image loader

Как я уже говорил, в 90-е годы сетки в зрении выстрелили. Причём выстрелили в конкретной задаче — задаче классификации картинок рукописных цифр (знаменитый датасет MNIST). Исторически сложилось, что именно задача классификации изображений и стала основой при решении почти всех последующих задач в зрении. Рассмотрим конкретный пример:

Representation learning что это. 26c167e3feb823e778b32278358053f9. Representation learning что это фото. Representation learning что это-26c167e3feb823e778b32278358053f9. картинка Representation learning что это. картинка 26c167e3feb823e778b32278358053f9

Представим, что с компьютерным зрением мы пока не знакомы, но знаем machine learning. Изображения — это просто числовые тензоры в памяти компьютера. Формализуем задачу в терминах машинного обучения: объекты — это картинки, их признаки — это значения в пикселях, ответ для каждого из объектов — метка класса (кошка, собака или человек). Это в чистом виде задача классификации.

Можно взять какие-нибудь методы из “классического” зрения или “классического” машинного обучения, то есть не нейросети. В основном эти методы заключаются в выделении на изображениях неких особенностей (особых точек) или локальных регионов, которые будут характеризовать картинку (“мешок визуальных слов”). Обычно всё это сводится к чему-то типа SVM над HOG/SIFT.

Но мы здесь собрались, чтобы поговорить о нейросетях, поэтому не хотим использовать придуманные нами признаки, а хотим, чтобы сеть сделала всё за нас. Наш классификатор будет принимать на вход признаки объекта и возвращать предсказание (метку класса). Здесь в качестве признаков выступают значения интенсивности в пикселях (см. модель картинки в под
спойлером выше). Помним, что картинка — это тензор размера (Height, Width, 3) (если она цветная). Сетке при обучении на вход всё это обычно подаётся не по одной картинке и не целым датасетом, а батчами, т.е. небольшими порциями объектов (например, 64 картинки в батче).

Таким образом, сеть принимает на вход тензор размера (BATCH_SIZE, H, W, 3). Можно “развернуть” каждую картинку в вектор-строку из H*W*3 чисел и работать со значениями в пикселях прямо как с признаками в машинном обучении, обычный Multilayer Perceptron (MLP) так и поступил бы, но это, честно говоря, такой себе бейзлайн, поскольку работа с пикселями как с вектор-строкой никак не учитывает, например, трансляционную инвариантность объектов на картинке. Тот же кот может быть как в середине фото, так и в углу, MLP эту закономерность не выучит.

Значит нужно что-то поумнее, например, операция свёртки. И это уже про современное зрение, про свёрточные нейронные сети:

Поскольку сейчас речь об обучении с учителем, для тренировки нейросети нам нужны несколько компонент:

Если хочется не спеша и с начала узнать про свёртки и свёрточные сети, рекомендую лекцию в Deep Learning School (ФПМИ МФТИ) (на русском) на эту тему, и, конечно же, курс Стэнфорда cs231n (на английском).

Representation learning что это. fb13cad97db640053bb2c53c12b0f4a7. Representation learning что это фото. Representation learning что это-fb13cad97db640053bb2c53c12b0f4a7. картинка Representation learning что это. картинка fb13cad97db640053bb2c53c12b0f4a7

Если вкратце, то операция свёртки позволяет находить паттерны на изображениях с учётом их вариативности. Когда обучаем свёрточные нейросети (eng: Convolutional Neural Networks), мы, по сути, находим фильтры свёрток (веса нейронов), которые хорошо описывают изображения, причём столь хорошо, чтобы можно было точно определить по ним класс. Способов построить такую сеть придумали много. Больше, чем вы думаете…

Архитектуры свёрточных нейросетей: 1000 способов достичь одной цели

Representation learning что это. image loader. Representation learning что это фото. Representation learning что это-image loader. картинка Representation learning что это. картинка image loader

Да-да, ещё один обзор архитектур. Но здесь я постараюсь сделать его максимально актуальным!

Сначала была LeNet, она помогла Яну ЛеКуну распознавать цифры в 1998 году. Это была первая свёрточная нейросеть для классификации. Её основная фишка была в том, что она в принципе стала использовать convolution и pooling операции.

Representation learning что это. image loader. Representation learning что это фото. Representation learning что это-image loader. картинка Representation learning что это. картинка image loader

14 миллионов картинок и 21841 класс (взято с оф. сайта), но для соревнования всё равно обычно выделяют лишь подмножество. ILSVRC тогда стал самым крупным ежегодным соревнованием по классификации изображений. Кстати, недавно придумали, как можно обучить на ImageNet’е за считанные минуты.

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

ГодСтатьяКлючевая идеяВес
2012AlexNetиспользовать две свёртки подряд; делить обучение сети на две параллельных ветки240 MB
2013ZFNetразмер фильтров, число фильтров в слоях
2013Overfeatодин из первых нейросетевых детекторов
2014VGGглубина сети (13-19 слоёв), использование нескольких блоков Conv-Conv-Pool с меньшим размером свёрток (3х3)549MB (VGG-19)
2014Inception (v1) (она же GoogLeNet)1х1-свёртка (идея из Network-in-Network), auxilary losses (или deep supervision), стекинг выходов нескольких свёрток (Inception-блок)
2015ResNetresidual connections, очень большая глубина (152 слоя..)98 MB (ResNet-50), 232 MB (ResNet-152)

Representation learning что это. image loader. Representation learning что это фото. Representation learning что это-image loader. картинка Representation learning что это. картинка image loader

Идеи всех этих архитектур (кроме ZFNet, её обычно мало упоминают) в своё время были новым словом в нейросетях для зрения. Однако и после 2015 было ещё очень много важных улучшений, например, Inception-ResNet, Xception, DenseNet, SENet. Ниже я постарался собрать их в одном месте.

ГодСтатьяКлючевая идеяВес
2015Inception v2 и v3разложение свёрток в свёртки 1хN и Nx192 MB
2016Inception v4 и Inception-ResNetсовмещение Inception и ResNet215 MB
2016-17ResNeXt2 место ILSVRC, использование многих веток ( “обобщённый” Inception-блок)
2017Xceptiondepthwise separable convolution, меньше весит при сравнимой с Inception точности88 MB
2017DenseNetDense-блок; лёгкая, но точная33 MB (DenseNet-121), 80 MB (DenseNet-201)
2018SENetSqueeze-and-Excitation блок46 MB (SENet-Inception), 440 MB (SENet-154)

Большинство из этих моделей для PyTorch можно найти здесь, а ещё есть вот такая классная штука.

Вы могли заметить, что всё это дело весит довольно много (хотелось бы 20 MB максимум, а то поменьше), в то время как сейчас повсеместно используют мобильные устройства и приобретает популярность IoT, а значит сетки хочется использовать и там.

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

2 MB

ГодСтатьяКлючевая идеяВесПример реализации
2016SqueezeNetFireModule сжатия-разжатия0.5 MBCaffe
2017NASNetполучена нейронным поиском архитектур, это сеть из разряда AutoML23 MBPyTorch
2017ShuffleNetpointwise group conv, channel shuffleCaffe
2017MobileNet (v1)depthwise separable convolutions и много других трюков16 MBTensorFlow
2018MobileNet (v2)рекомендую эту статью на Хабре14 MBCaffe
2018SqueezeNextсм. картиночки в оригинальном репозиторииCaffe
2018MnasNetнейропоиск архитектуры специально под мобильные устройства с помощью RLTensorFlow
2019MobileNet (v3)она вышла, пока я писал статью 🙂PyTorch

Цифры во всех таблицах взяты с потолка из репозиториев, из таблицы Keras Applications и из этой статьи.

Вы спросите: “Для чего ты написал про весь этот “зоопарк” моделей? И почему всё же задача классификации? Мы же хотим научить машины видеть, а классификация — лишь какая-то узкая задача..”. Дело в том, что нейросети для детектирования объектов, оценки позы/точек, ре-идентификации и поиска по картинке используют в качестве backbone именно модели для классификации, и уже от них зависит 80% успеха.

Но хочется как-то больше доверять CNN, а то напридумывали чёрных коробок, а что «внутри» — не очевидно. Чтобы лучше понимать механизм функционирования свёрточных сетей, исследователи придумали использовать визуализацию.

Визуализация свёрточных нейросетей: покажи мне страсть

Важным шагом к осознанию того, что происходит внутри свёрточных сетей, стала статья «Visualizing and Understanding Convolutional Networks». В ней авторы предложили несколько способов визуализации того, на что именно (на какие части картинки) реагируют нейроны в разных слоях CNN (рекомендую также посмотреть лекцию Стэнфорда на эту тему). Результаты получились весьма впечатляющие: авторы показали, что первые слои свёрточной сети реагируют на какие-то «низкоуровневые вещи» по типу краёв/углов/линий, а последние слои реагируют уже на целые части изображений (см. картинку ниже), то есть уже несут в себе некоторую семантику.

Representation learning что это. . Representation learning что это фото. Representation learning что это-. картинка Representation learning что это. картинка

Далее проект по глубокой визуализации от Cornell University и компании продвинул визуализацию ещё дальше, в то время как знаменитый DeepDream научился искажать в наркоманском интересном стиле (ниже картинка с deepdreamgenerator.com).

Representation learning что это. e5580963fdfb998bfe2103f4cbf5aa8c. Representation learning что это фото. Representation learning что это-e5580963fdfb998bfe2103f4cbf5aa8c. картинка Representation learning что это. картинка e5580963fdfb998bfe2103f4cbf5aa8c

В 2017 году вышла очень хорошая статья на Distill, в которой они провели подробный анализ того, что «видит» каждый из слоёв, и совсем недавно (в марте 2019) Google изобрела активационные атласы: своеобразные карты, которые можно строить для каждого слоя сети, что приближает к понимаю общей картины работы CNN.

Representation learning что это. image loader. Representation learning что это фото. Representation learning что это-image loader. картинка Representation learning что это. картинка image loader

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

Окей, кажется, CNN и правда в некоторой степени можно верить. Нужно научиться использовать это и в других задачах, а не только в классификации. В этом нам помогут извлечение Embedding’ов картинок и Transfer Learning.

Я и сам своего рода хирург: извлекаем фичи из нейросетей

Представим, что есть картинка, и мы хотим найти похожие на неё визуально (так умеет, например, поиск по картинке в Яндекс.Картинки). Раньше (до нейросетей) инженеры для этого извлекали фичи вручную, например, придумывая что-то, что хорошо описывает картинку и позволит её сравнивать с другими. В основном, эти методы (HOG, SIFT) оперируют градиентами картинок, обычно именно эти штуки и называют «классическими» дескрипторами изображений. Особо интересующихся отсылаю к статье и к курсу Антона Конушина (это не реклама, просто курс хороший 🙂

Representation learning что это. 5cdb10ea8f19fe29432265e906640a90. Representation learning что это фото. Representation learning что это-5cdb10ea8f19fe29432265e906640a90. картинка Representation learning что это. картинка 5cdb10ea8f19fe29432265e906640a90

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

Representation learning что это. image loader. Representation learning что это фото. Representation learning что это-image loader. картинка Representation learning что это. картинка image loader

Посмотрев на все архитектуры выше поближе, становится понятно, что в CNN для классификации есть два этапа:
1). Feature extractor слои для выделения информативных фич из картинок с помощью свёрточных слоёв
2). Обучение поверх этих фич Fully Connected (FC) слоёв-классификаторов

Representation learning что это. image loader. Representation learning что это фото. Representation learning что это-image loader. картинка Representation learning что это. картинка image loader

Embedding’и картинок (фичи) — это как раз про то, что можно брать в качестве информативного описания картинок их признаки после Feature extractor’а свёрточной нейросети (правда их можно по-разному агрегировать). То есть обучили сеть на классификацию, а потом просто берём выход перед классификационными слоями. Эти признаки называют фичами, нейросетевыми дескрипторамиили эмбеддингами картинки (правда обычно эмбеддинги принято в NLP, так как это зрение, я чаще буду говорить фичи). Обычно это какой-то числовой вектор, например, 128 чисел, с которым уже можно работать.

Таким образом, пайплайн решения задачи поиска по картинке может быть устроен просто: прогоняем картинки через CNN, берём признаки с нужных слоёв и сравниваем эти фичи друг с другом у разных картинок. Например, банально считаем Евклидово расстояние этих векторов.

Representation learning что это. image loader. Representation learning что это фото. Representation learning что это-image loader. картинка Representation learning что это. картинка image loader

Transfer Learning — широко известная техника эффективного дообучения нейросетей, которые уже обучены на каком-то определённом датасете, под свою задачу. Часто ещё говорят Fine Tuning вместо Transfer Learning, в конспектах Стэнфордского курса cs231n эти понятия разделяют, мол, Transfer Learning — это общая идея, а Fine Tuning — одна из реализаций техники. Нам это в дальнейшем не так важно, главное понимать, что мы просто можем дообучить сеть хорошо предсказывать на новом датасете, стартуя не со случайных весов, а с обученных на каком-нибудь большом по типу ImageNet. Это особенно актуально, когда данных мало, а задачу хочется решить качественно.

Однако просто брать нужные фичи и делать дообучение с датасета на датасет может быть недостаточно, например, для задач поиска похожих лиц/людей/чего-то специфичного. Фотографии одного и того же человека визуально иногда могут быть даже более непохожи, чем фотографии разных людей. Нужно заставить сеть выделять именно те признаки, которые присущи одному человеку/объекту, даже если нам это сделать глазами сложно. Добро пожаловать в мир representation learning.

Держись рядом: representation learning для людей и лиц

Representation learning что это. fbc3adf280e28f7bb71246f50c1e8d9e. Representation learning что это фото. Representation learning что это-fbc3adf280e28f7bb71246f50c1e8d9e. картинка Representation learning что это. картинка fbc3adf280e28f7bb71246f50c1e8d9e

Representation learning что это. . Representation learning что это фото. Representation learning что это-. картинка Representation learning что это. картинка

Первую задачу обычно называют распознаванием лиц, вторую — ре-идентификацией (сокращённо Reid). Я объединил их в один блок, поскольку в их решениях сегодня используются схожие идеи: для того, чтобы выучивать эффективные эмбеддинги картинок, которые могут справляться и с довольно сложными ситуациями, сегодня используют различные типы лоссов, такие как, например, triplet loss, quadruplet loss, contrastive-center loss, cosine loss.

Representation learning что это. . Representation learning что это фото. Representation learning что это-. картинка Representation learning что это. картинка

Ещё есть прекрасные сиамские сети, однако их я, честно, сам не использовал. Кстати, “решает” не только сам лосс, а то, как для него семплировать пары positive’ов и negative’ов, это подчёркивают авторы статьи Sampling matters in deep embedding learning.

Суть всех этих лоссов и сиамских сетей проста — хотим, чтобы картинки одного класса (человека) в латентном пространстве фич (эмбеддингов) были “близко”, а разных классов (людей) — “далеко”. Близость обычно меряется так: берутся эмбеддинги картинок из нейросети (например, вектор из 128 чисел) и либо считаем обычное Евклидово расстояние между этими векторами, либо косинусную близость. Как именно мерить — лучше подбирать на своём датасете/задаче.

Схематично пайплайн решения задач на representation learning выглядит примерно так:

Representation learning что это. image loader. Representation learning что это фото. Representation learning что это-image loader. картинка Representation learning что это. картинка image loader

На стадии обучения: обучаем нейросеть либо на классификацию (Softmax + CrossEntropy), либо с помощью специального лосса (Triplet, Contrastive, etc.). Во втором случае ещё нужно правильно подбирать positive’ы и negative’ы в каждом батче

На стадии предсказания: если это был именно какой-то особый лосс по типу триплета, то он на вход принимал уже эмбеддинги — их и берём. Если была классификация, то тут нужно экспериментировать — можно брать фичи с какого-то из свёрточных слоёв, а можно и вероятности после классификатора (да, так делают и это работает). Далее ищем расстояние от пришедшей в тесте картинки до всех картинок из галереи и выдаём метку ближайшей. Расстояние меряем косинусом или Евклидовой метрикой

Representation learning что это. image loader. Representation learning что это фото. Representation learning что это-image loader. картинка Representation learning что это. картинка image loader

Реализаций тоже немало: dlib, OpenFace, FaceNet repo, да и на Хабре про это уже давно было рассказано. Кажется, за последнее время добавились только ArcFace и CosFace (пишите в комментарии, если я здесь что-то упустил, буду рад узнать что-то ещё).

Однако сейчас больше мода не на распознавание лиц, а на их генерацию, не так ли?

Representation learning что это. image loader. Representation learning что это фото. Representation learning что это-image loader. картинка Representation learning что это. картинка image loader

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

Representation learning что это. image loader. Representation learning что это фото. Representation learning что это-image loader. картинка Representation learning что это. картинка image loader

Representation learning что это. image loader. Representation learning что это фото. Representation learning что это-image loader. картинка Representation learning что это. картинка image loader

К слову, в нашей лаборатории Reid — одна из ключевых задач. Статей выходит действительно немало, какие-то из них про новый более эффективный лосс, какие-то только про новый способ добычи negative’ов и positive’ов.

Хороший обзор старых методов по Reid есть в статье 2016 года. Сейчас, как я уже писал выше, применяются два подхода — классификация или representation learning. Однако есть специфика задачи, с ней исследователи борются по-разному, например, авторы Aligned Re-Id предложили специальным образом выравнивать фичи (да, они смогли улучшить сеть с помощью динамического программирования, Карл), в другой статье предложили применить Generative Adversarial Networks (GAN).

Representation learning что это. 45666e9c0608373c31452aeb6a197477. Representation learning что это фото. Representation learning что это-45666e9c0608373c31452aeb6a197477. картинка Representation learning что это. картинка 45666e9c0608373c31452aeb6a197477

Из реализаций хочется обязательно упомянуть OpenReid и TorchReid. Обратите внимание на сам код — на мой взгляд, он написан грамотно с точки зрения архитектуры фреймворка, подробнее здесь. Плюс они оба на PyTorch, и в Readme есть много ссылок на статьи по Person Re-identification, это приятно.

Вообще особый спрос на face- и reid-алгоритмы сейчас в Китае (если вы понимаете, о чём я). Мы на очереди? Кто знает…

Слово про ускорение нейросетей

Мы уже говорили о том, что можно просто придумать легковесную архитектуру. Но как быть, если сеть уже обучена и она крута, а сжать её всё равно нужно? В таком случае может помочь один (или все) из следующих методов:

А что дальше?

Representation learning что это. ue22e11md3zjexlxq3jxsf. Representation learning что это фото. Representation learning что это-ue22e11md3zjexlxq3jxsf. картинка Representation learning что это. картинка ue22e11md3zjexlxq3jxsf

Мы обсудили действительно много полезных и прикладных вещей в DL и CV: классификация, архитектуры сетей, визуализация, эмбеддинги. Однако в современном зрении есть ещё и другие важные задачи: детектирование, сегментация, понимание сцены. Если речь про видео, то хочется объекты трекать во времени, распознавать действия и понимать, что на видео происходит. Именно этим вещам и будет посвящена вторая часть обзора.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *