Распознавание изображений › docs › delta9 › day9 ›...
TRANSCRIPT
Распознавание изображенийАвтор: Чернышев Константин[email protected]
НИУ ВШЭ НН
ЗадачаТренировочная выборка: 36 000
Требуется разметить: 4 000
Рассмотрим данные:• Различные размеры• Различное качество• Различное происхождение • Чудовищный дисбаланс классов
Разметка: Уверенность принадлежности к каждому из классов [0;1]
Подходы: Обучить сеть с нуля
Минусы:• Очень долгое обучение• Высокая вариативность параметров
Плюсы: • Обучена именно для данного набора изображений
• Возможность точно выбирать и настраивать архитектуру
• Высокая точность для данного набора изображений
Изобретение велосипеда[email protected]
Долго обучать!
Подходы: Дообучить готовую сеть
Минусы:• Долгое обучение
(быстрее, чем с нуля)• Вес итоговой сети
Плюсы: • Готовая архитектура• Уже выделены основные
«фичи»• Высокая точность для данного набора изображений
Подходы: Обучить верхний слой
Минусы:• Низкая точность
(относительно других)• Вес итоговой сети
Плюсы: • Готовая архитектура• Очень дешевое обучение• Немного вариативных параметров
Оптимально[email protected]
Фреймворк
Почему TensorFlow?
1. Доступная и обширная документация
2. Активное сообщество3. Свободная лицензия (Apache 2.0)
4. Понятный интерфейс построения сетей (граф вычислений)
5. Хороший инструмент отладки (TensorBoard)
6. Уже был знаком с ним
Архитектура: Inception v3победитель ImageNet в 2015 году
Углы ФормыBottleneck
Bottleneck (предпоследний слой): • Объединяющий слой• Выход 1x1х2048• Не обучается (как все до
него)
Абстракции[email protected]
Выход:1x1x2048
Вход:binary jpeg
Архитектура: Inception v3Смена классификатора
Старый классификатор: • Single-labeling• 1024 класса
Новый классификатор
Классификатор
Новый классификатор:• Multi-labeling• 17 классов
Старый классификатор
ВремяВместо различных 134 слоев –Обучаем всего 1!Время тренировки – минуты!
За 1000 итераций получаем точность в 95.5%!
ИскажениеУвеличим выборку для обучения
Искажения не меняющие семантический смысл изображения:• Отражение по горизонтали• Наклон ±5°• Подушкообразное искажение
Искажения меняющие в некоторых случаях:• Отражение по вертикали• Наклон >20°• Вырезание участка
Хорошее искажение
Плохое искажение
Тестовая и валидационная выборка должны быть – без искажений[email protected]
Кеширование
Bottleneck – неофициальный термин обозначающий узкое место программы.
Поскольку мы обучаем только последний слой – можем заранее рассчитать входной вектор этого слоя для каждого изображение.
При следующих запусках – кеши не считаются повторно.
Выход:1x1x2048
Вход:binary jpeg
ВыводыЧто можно сделать:
• Отличный score (0.9999)
• Добавить глубины (обучать и предыдущий слой)
• Существенное увеличение выборки
• Использовать другие архитектуры
• Больше учить английский
• Прочесть больше документации
• Использовать другие фреймворки
• Учить матан.
Что есть:
• Неплохой score (0.962)
• Интерес к теме• Возможность обучить за
короткое время• Небольшое увеличение
выборки• Незачем изобретать
велосипед
• Читать документацию – полезно.
Успехов!Автор: Чернышев Константин[email protected]
НИУ ВШЭ-НН
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