Распознавание изображений › docs › delta9 › Day9 ›...

Preview:

Citation preview

Распознавание изображенийАвтор: Чернышев Константинkdchernyshev@edu.hse.ru

НИУ ВШЭ НН

ЗадачаТренировочная выборка: 36 000

Требуется разметить: 4 000

Рассмотрим данные:• Различные размеры• Различное качество• Различное происхождение • Чудовищный дисбаланс классов

kdchernyshev@edu.hse.ru

Разметка: Уверенность принадлежности к каждому из классов [0;1]

Подходы: Обучить сеть с нуля

Минусы:• Очень долгое обучение• Высокая вариативность параметров

Плюсы: • Обучена именно для данного набора изображений

• Возможность точно выбирать и настраивать архитектуру

• Высокая точность для данного набора изображений

Изобретение велосипеда!kdchernyshev@edu.hse.ru

Долго обучать!

Подходы: Дообучить готовую сеть

Минусы:• Долгое обучение

(быстрее, чем с нуля)• Вес итоговой сети

Плюсы: • Готовая архитектура• Уже выделены основные

«фичи»• Высокая точность для данного набора изображений

kdchernyshev@edu.hse.ru

Подходы: Обучить верхний слой

Минусы:• Низкая точность

(относительно других)• Вес итоговой сети

Плюсы: • Готовая архитектура• Очень дешевое обучение• Немного вариативных параметров

Оптимально!kdchernyshev@edu.hse.ru

Фреймворк

Почему TensorFlow?

1. Доступная и обширная документация

2. Активное сообщество3. Свободная лицензия (Apache 2.0)

4. Понятный интерфейс построения сетей (граф вычислений)

5. Хороший инструмент отладки (TensorBoard)

6. Уже был знаком с ним

kdchernyshev@edu.hse.ru

Архитектура: Inception v3победитель ImageNet в 2015 году

Углы ФормыBottleneck

Bottleneck (предпоследний слой): • Объединяющий слой• Выход 1x1х2048• Не обучается (как все до

него)

Абстракцииkdchernyshev@edu.hse.ru

Выход:1x1x2048

Вход:binary jpeg

Архитектура: Inception v3Смена классификатора

Старый классификатор: • Single-labeling• 1024 класса

Новый классификатор

Классификатор

Новый классификатор:• Multi-labeling• 17 классов

Старый классификатор

kdchernyshev@edu.hse.ru

ВремяВместо различных 134 слоев –Обучаем всего 1!Время тренировки – минуты!

За 1000 итераций получаем точность в 95.5%!

kdchernyshev@edu.hse.ru

ИскажениеУвеличим выборку для обучения

Искажения не меняющие семантический смысл изображения:• Отражение по горизонтали• Наклон ±5°• Подушкообразное искажение

Искажения меняющие в некоторых случаях:• Отражение по вертикали• Наклон >20°• Вырезание участка

Хорошее искажение

Плохое искажение

Тестовая и валидационная выборка должны быть – без искажений!kdchernyshev@edu.hse.ru

Кеширование

Bottleneck – неофициальный термин обозначающий узкое место программы.

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

При следующих запусках – кеши не считаются повторно.

kdchernyshev@edu.hse.ru

Выход:1x1x2048

Вход:binary jpeg

ВыводыЧто можно сделать:

• Отличный score (0.9999)

• Добавить глубины (обучать и предыдущий слой)

• Существенное увеличение выборки

• Использовать другие архитектуры

• Больше учить английский

• Прочесть больше документации

• Использовать другие фреймворки

• Учить матан.

Что есть:

• Неплохой score (0.962)

• Интерес к теме• Возможность обучить за

короткое время• Небольшое увеличение

выборки• Незачем изобретать

велосипед

• Читать документацию – полезно.

kdchernyshev@edu.hse.ru

Успехов!Автор: Чернышев Константинkdchernyshev@edu.hse.ru

НИУ ВШЭ-НН

GitHub: https://github.com/k4black/Multi-Label-Image-Classification

Основная литература

Retrain an Image Classifier for New Categories – URL: https://www.tensorflow.org/tutorials/image_retraining

Методы оптимизации нейронных сетей – URL: https://habrahabr.ru/post/318970/

Ресурс с различными статьями по машинному обучению – URL: http://www.machinelearning.ru/wiki

Convolutional neural network –URL: https://wikipedia.org/wiki/Convolutional_neural_network

kdchernyshev@edu.hse.ru

Recommended