Классификация изображений с помощью нейронных сетей....

49

Upload: yandex

Post on 08-Jul-2015

1.062 views

Category:

Technology


1 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин
Page 2: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей Александр Чигорин

Page 3: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

О себе

3

▌ Аспирантура в лаборатории компьютерной графики и мультимедиа МГУ, группа компьютерного зрения

▌  Группа нейросетевых технологий, служба компьютерного зрения, Яндекс. Разработка библиотеки для обучения нейронных сетей

Page 4: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

План

4

▌ Что такое нейронные сети?

▌ Свёрточные сети в компьютерном зрении

▌ Обучение различных классификаторов на основе свёрточной сети

▌ Сжатие и ускорение моделей

Page 5: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Что такое нейронные сети?

5

Нейронная сеть — одна из моделей машинного обучения. Представляет из себя суперпозицию функций. Каждая функция называется нейронным слоем. Например:

Вспоминаем производную суперпозиции функций:

Page 6: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Что такое нейронные сети?

6

Нейронная сеть — одна из моделей машинного обучения. Представляет из себя суперпозицию функций. Каждая функция называется нейронным слоем. Например:

Вспоминаем производную суперпозиции функций:

Page 7: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Обучение с помощью стохастического градиентного спуска (SGD)

7

Page 8: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Почему наступил ренессанс?

[1] http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf 8

Большинство используемых на сегодняшний день методов придуманы в 80-х

Но, сегодня:

▌ Большие объемы данных. В том числе частично аннотированных

▌ Большие вычислительные возможности. В том числе распределенные вычисления

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

Page 9: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Компьютерное зрение

Page 10: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Стандартный подход к классификации

10

Лошадь

Page 11: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Современный подход к классификации

11

Лошадь Яндекса

Page 12: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Свёрточные нейронные сети для классификации изображений

12

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

▌ Пиксель изображения сильнее связан с соседними пикселями (локальная корреляция)

▌ Объект может встретиться в любой части изображения (инвариантность к смещению)

Page 13: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Свёрточные нейронные сети для классификации изображений

13

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

▌ Пиксель изображения сильнее связан с соседними пикселями (локальная корреляция)

▌ Объект может встретиться в любой части изображения (инвариантность к смещению)

Page 14: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Локально-связанный слой

[1] http://www.cs.nyu.edu/~yann/talks/lecun-ranzato-icml2013.pdf 14

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

Page 15: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Свёрточные нейронные сети для классификации изображений

15

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

▌ Пиксель изображения сильнее связан с соседними пикселями (локальная корреляция)

▌ Объект может встретиться в любой части изображения (инвариантность к смещению)

Page 16: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Операция свёртки на пальцах

16

Page 17: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Пример применения в обработке изображений

[1] http://courses.graphics.cs.msu.ru/mod/resource/view.php?id=38 17

Сглаживание изображений с помощью фильтра Гаусса:

Page 18: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Подавление шумов

18

Page 19: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Свёрточный слой

19

▌ Это локально-связанный слой с одинаковыми весами в разных частях изображения

▌  Закладывает в сеть априорное знание о том, что объект может встретиться в любой части изображения

Page 20: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Последний ингредиент: слой сабсемплинга

20

▌ Max-сабсемплинг аналогичен свёрточному слою, в котором операция «+» заменена на «max»

▌ Добавляет устойчивости к небольшим деформациям

Page 21: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Итого

21

Свертка Сабсемплинг Нелинейность

Кирпичик свёрточной нейронной сети тройка – (свёртка, сабсемплинг, нелинейность)

Свертка Сабсемплинг Нелинейность

Свертка Сабсемплинг Нелинейность Лошадь

Page 22: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Применение: конкурс классификации изображений ImageNet

[1] http://karpathy.github.io/2014/09/02/what-i-learned-from-competing-against-a-convnet-on-imagenet/ 22

Маленький ImageNet:

▌  1000 классов, более миллиона обучающих примеров ▌  Задача: выбрать для изображения 5 наиболее подходящих меток из 1000. Конкурс международный, проходит раз в год ▌ По одной метке на изображение

Большой ImageNet:

▌ Более 21000 классов, более 14 миллионов

Page 23: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

ImageNet — сложная база!

23

В ImageNet-21K 189 пород собак! Из них - 37 разновидностей терьеров!

Page 24: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Свёрточные нейронные сети на ImageNet

[1] http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf 24

▌ Классификация на 1000 классов ▌ Пять свёрточных слоев + три слоя max-сабсемплинга ▌ Три полносвязных слоя ▌ Обучение на GPU ▌ Более 50 млн настраиваемых параметров

Page 25: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Возвращаемся к ImageNet. Глубина - помогает

[1] http://image-net.org/challenges/LSVRC/2014/results 25

До свёрточных сетей:

▌  Imagenet 2011: ошибка 25%

После:

▌  Imagenet 2012: ошибка 16%, глубина 7 ▌  Imagenet 2013: ошибка 14%, глубина 8 ▌  Imagenet 2014: ошибка 7%, глубина 27 (!) ▌  Точность человека 5%. Точность лучшей на данный момент сети 6.2%

Page 26: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Архитектура победителей 2014 года

26

DEEP learning оправдывает свое название J

Архитектура 2013 года:

http://cs.stanford.edu/people/karpathy/ilsvrc/ - демо, позволяющее посоревноваться с сетью в классификации изображений

Архитектура 2014 года:

Page 27: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Взгляд внутрь обученной сети

27

Первый слой сети:

Page 28: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Взгляд внутрь обученной сети

28

Второй слой сети:

Page 29: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Взгляд внутрь обученной сети

29

Третий слой сети:

Page 30: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Взгляд внутрь обученной сети

30

Четвертый слой сети:

Page 31: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Восстанавливаем вход сети по признакам

31

Восстанавливаем вход сети по признакам, получаемым на разных слоях сети

Understanding Deep Image Representations by Inverting Them. Mahendran, Vedaldi.

Page 32: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Восстанавливаем вход сети по признакам

32

Восстанавливаем по выходам последнего свёрточного слоя. Много информации об изображении сохраняется!

Page 33: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Наш опыт

Page 34: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Обучение классификаторов изображений

34

Нас интересуют специфичные классификаторы изображений:

▌ Взрослый контент ▌ Привлекательность изображений ▌  Товары ▌ Можно ли привязывать изображение к карте? ▌ Внутри помещения / на улице ▌ И многое другое…

Размечать большое количество изображений для каждого классификатора — дорого.

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

Page 35: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Обучение классификаторов изображений

35

Этапы:

▌ Обучаем свёрточную сеть на большой базе изображений — тем самым получаем способ извлекать хорошие признаки из изображений

▌ Отрубаем «голову» сети

▌ Добавляем новую голову

▌ Дообучаем новую голову

Page 36: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Обучение классификаторов изображений

36

Этапы:

▌ Обучаем свёрточную сеть на большой базе изображений — тем самым получаем способ извлекать хорошие признаки из изображений

▌ Отрубаем «голову» сети

▌ Добавляем новую голову

▌ Дообучаем новую голову

Page 37: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Обучение признаков на большой базе

37

Page 38: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Обучение классификаторов изображений

38

Этапы:

▌ Обучаем свёрточную сеть на большой базе изображений — тем самым получаем способ извлекать хорошие признаки из изображений

▌ Отрубаем «голову» сети

▌ Добавляем новую голову

▌ Дообучаем новую голову

Page 39: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Отдельное обучение для каждого класса

39

Page 40: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Пример применения: поиск похожих изображений

40

Page 41: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Пример применения: поиск похожих изображений

41

Page 42: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Пример применения: поиск похожих изображений

42

Page 43: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Пример применения: классификатор «красивости» изображений

43

Page 44: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Ускорение обученных сетей

44

Параметры в сети сильно избыточны.

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

Идея:

▌  Обучаем большую избыточную сеть

▌  Приближаем её маленькой и быстрой сетью (прореживание)

[1] http://www.robots.ox.ac.uk/~vgg/publications/2014/Jaderberg14b/jaderberg14b.pdf

Page 45: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Послойное приближение выходов

45

▌  Приближаем каждый слой сети отдельно

▌  Дообучаем полученную маленькую модель приближать выходы исходной сети

Page 46: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Ускорение свёрточных слоев

46

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

Опыт: возможно ускорение в 2-3 раза с потерей точности в 1%

Page 47: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Ускорение полносвязных слоев

47

Идея: вставляем полносвязный слой с меньшим количеством нейронов - «бутылочное горлышко»

Опыт: возможно сжатие в 8 раз с потерей точности в 0.5%

Page 48: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Итог

48

▌ Свёрточные нейронные сети — модель для классификации изображений, на данный момент показывающая лучшие результаты

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

Page 49: Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обученных моделей — Чигорин

Спасибо!