Upload
it-people
View
237
Download
7
Embed Size (px)
Citation preview
Transfer LearningКак перестать бояться и начать
использовать сверхточные нейронные сети?
Талипов Руслан findmeals.com
План
• Кто мы и с какой проблемой столкнулись
• Теоретические зарисовки о CNN
• Наше решение
Покупайте продукты для рецептов
Специфика
Покупатель принимает решениеоценивая «по одёжке».
Аренда жилья
Знакомства
Выбор блюд
Рецепт
Векторное представление изображения
• Помогает классифицировать
• Помогает фильтровать контент
USE DEEP LEARNING!
Deep Learning?
И как нам его использовать?
Страшная правда
• Deep Learning – BaseWord (Big Data, NoSQL, Growth Hacking)
• Deep Learning = Нейронные сети.
• Deep = Большое количество слоёв.
Тренды
Причины роста интереса
Данные
GPU
GPU
Причины роста интереса
Эти модели работают
Машинное обучение
Простой классификатор
БородаУсыПлечиГрудьТалияБёдраРост
М/Ж
Волосы
Признаки сами по себе
Скрытый слойБородаУсыПлечиГрудьТалияБёдраРост
М/Ж
Волосы
CNN
• Convolutional Neural Network = Свёрточная нейронная сеть
Задачи• Классификация изображений ( Image
Classification, какому классу принадлежит изображение)
• Верификация изображений ( Image verification, изображено ли на картинках одно и тоже? )
• Поиск изображений ( image retrieval, поиск похожих картинок)
• Всё остальное
Проблема при работе с изображениями
Признаки на входе = Пиксели.RGB пиксель – это 3 значения
Линейный классификатор на датасете CIFAR-10
Распускаем RGB картинку 32х32х3 в 1 длинный вектор размерностью 3072.Оцениваем важность каждой координаты для классификации.
Составим из весов изображения
Собака Лягушка Лошадка Корабль Грузовик
Самолёт Автомоб. Птица Котик Олень
http://cs231n.github.io/linear-classify/
Недостатки
• Не учитывает соседство пикселей
• Большая размерность
• Неустойчив к изменениям фона и освещения, перекрытиям, деформациям, изменению угла обзора
Свёртка
Пулинг
LeNet 1989
ILSVRC ImageNet
• 1000 классов по 1000 изображений в каждом
• Несколько задач: – выявление объектов (классификация) – локализация объектов (указать где находится объект)
Примеры Top5 error
http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf
Некоторые победители
AlexNet 2012
2 GTX 580 3GB GPUs 5 - 6 дней обучения16.4% Top5 error
papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf
VGG 2014
4 GTX Titan Black2 - 3 недели обучения7.3% Top5 error
http://arxiv.org/pdf/1409.1556.pdf
GoogleNet 2014
Несколько Tesla K80Долго6.6% Top5 errorhttp://www.cs.unc.edu/~wliu/papers/GoogLeNet.pdf
ResNet 2015
3.6% Top5 error2-3 Недели8 Tesla K80
http://arxiv.org/pdf/1512.03385v1.pdf
!!!!!!!!!!!!!!!!!• Это КРУТО.
• Но, у меня нет времени
• Но, мои навыки разработки под GPU отстой
• Но, у меня нет достаточного количества размеченных данных
• Вот.
И ЧО?
• У меня другая задача. Мне не нужно отличать клеща от сухогруза.
Что происходит на сверхточных слоях?
Слои 4 и 5
• >
http://arxiv.org/pdf/1311.2901v3.pdfhttps://habrahabr.ru/company/nordavind/blog/253859/
Наблюдение
• Признаки на первых слоях достаточно общие
• Признаки на глубоких слоях более конкретные, но всё равно активны на различных изображениях
• Классификатор обучается на признаках полученных с последнего сверхточного слоя.
Вопросы в голове…• Зачем обучать сеть с нуля, если в процессе обучения получаются аналогичные визуальные признаки?
• Для разработки приложений мы используем фреймворки с готовыми компонентами…
• Можем ли мы использовать обученные слои в качестве таких компонентов?
Transfer Learning
• Берём обученные слои хорошей модели
• Добавляем их в свою модель
• Обучаем получившегося гибрида (Fine-tune)
• PROFIT
Transfer Learning
Learning visual representations - Andrea Vedaldi, University of Oxford https://events.yandex.ru/lib/talks/2793/
Признаки?
• Для контроля требуется векторное представление изображения
• Используем для этого признаки с глубоких слоёв сети.
Железки
• 8 GB RAM
• 1 TB HDD
• GeForce GTX 960 2GB
Данные
• Набор данных Food-101 https://www.vision.ee.ethz.ch/datasets_extra/food-101/
• 101 класс 1000 изображений в каждом
Архитектура модели
http://www.robots.ox.ac.uk/~vgg/research/very_deep/
База VGG 19 Не обучается
4096
101
Проблемы• Модели для ImageNet проектируются и обучаются для множества классов/примеров
• Сложная модель на простой задаче с недостатком данных приводит к…
Переобучение
• Аугментация данных(кропы 224х224 с отражениями)
• Нормализация (Dropout 0.6 - 0.8)
• L1 и L2
Реализация
• Python3.4, CUDA 7.5 (cuDNN)
• Theano (Базовые классы и функции)
• Lasagne (Слои, Нелинейные функ., Методы оптимизации)
Глубокое обучение
Другие варианты
• Caffe
• TensorFlow
• Torch
• CNTK
Результаты
Классификация
Макаруны vs Макароны
Макаруны vs Макароны
Суши, Пицца, Салат, Оладья.
Суши, Пицца, Салат, Оладья.
Суши, Пицца, Салат, Оладья, Крылышки, Мороженое.
Суши, Пицца, Салат, Оладья, Крылышки, Мороженое.
Применение
Классификация
Фильтрация контента
Выводы
• Свёрточные сети работают и могут повторно использоваться.
• Чтобы не умереть от старости обучая сеть нужно использовать GPU
• В мире Нейронных сетей только появляются инструменты такие как PHP в мире Web
Вакансия
Спасибо
Вопросы? https://vk.com/roosh_roosh
https://telegram.me/roosh_roosh