Учебный курс ГосНИИАС
«Глубокое обучение и сверточные нейронные сети
в задачах современного компьютерного зрения»
(курс лекций и практических занятий)
Авторы курса: Визильтер Юрий Валентинович, д.ф.-м.н., профессор РАН,
начальник подразделения 3000 ФГУП «ГосНИИАС»,
Горбацевич Владимир Сергеевич, начальник лаборатории 3050 ФГУП «ГосНИИАС»
Преподаватели курса: сотрудники ГосНИИАС (список пополняется и уточняется)
Курс экспериментальный, читается на базе подразделения 3000 ФГУП «ГосНИИАС» в осеннем семестре 2018 г. Слушателями курса являются сотрудники ГосНИИАС, студенты МФТИ и МАИ. Ниже приводится примерная программа курса, которая будет уточняться по мере его прочтения. Расписание лекционных и практических занятий, а также материалы уже проведенных занятий будут размещаться на данном сайте.
Контактное лицо по организационным вопросам и расписанию занятий:
Моржин Александр Викторович (a.morzhin@mail.ru)
Содержание учебного курса
Лекция 1. Базовые идеи: Машинное обучение, Линейные классификаторы, Обучение методом градиентного спуска, Нейронные сети, Многослойные персептроны, Методы компьютерного зрения (Линейная фильтрация изображений. Выделение признаков. Обнаружение и распознавание объектов на основе выделенных признаков), Глубокие сверточные сети (CNN).
Лекция прочитана (02.10.2018, Ю.В. Визильтер) Презентация лекции 1
Практические занятия к лекции 1: (Семинар 1, Семинар 2)
- Linux:
- Подключение через rdp
- Подключение через SSH(Putty)
- Терминалы и pcmanFM(создание папок файлов и т.д.)
- Установка программ через apt-get install
- Права и доступ к файлам
- Основы скриптов bash
Caffe framework:
- Общее описание фреймворка
- Формат данных lmdb(создание lmdb баз средствами caffe)
- Формат prototxt
- Представление сети в виде статического графа ограничения и запись в виде prototxt
- Параметры обучения solver.prototxt
- Задача классификации
- Запуск обучения типового примера
- Изменение ГКНС.
- Задание(сеть + параметры обучения)
Python:
- Интерпретатор python 2.7/3.5
- Среды Spyder/Pycharm
- Структура файлов
- Основные понятия и конструкции языка Python в сравнении с C++
- Основы numpy работа с матрицами/векторами (задание по работе с матицами)
- Задание: Работа с матрицами – метод Гаусса либо умножение матриц
Лекция 2. Архитектуры и аппаратно-программная реализация CNN: Типовые архитектуры CNN: AlexNet, VGG, GoogleNet, ResNet, ResNEXT, DenseNet, Hourglass Networks, MobileNet… Технологии ускорения сетей – Xnor-сети (бинарные), 8-битные сети, Channel Pruning, Filter Pruning, тензорные разложения,… Аппаратно-программные реализации CNN: принципы аппаратно-программной реализации CNN, NVIDIA и CUDA, отечественные процессоры, FPGA…
Лекция прочитана (31.10.2018, В.С. Горбацевич) Презентация лекции 2
Практические занятия к лекции 2: (Семинар 3, Семинар 4)
Caffe framework:
- Настойка изменения скорости обучение
- Caffe test caffe time
- Базовая аугментация
- Подбор параметров обучения (примеры nan, снижение скорости)
- Фаза TRAIN/TEST
- Реализация сетей AlexNet, VGG, GoogleNet, ResNet, ResNEXT, DenseNet в Caffe(поиск в интернете скачивание обучение типовую задачу классификации)
Python:
- Основы pip – установка библиотек
- Python загрузка изображений Pil/scimage и прочее
- Python работа с файлами/файловой системой
- Pycaffe подключение библиотеки
- Pycaffe базовые классы(представление ГКНС в caffe)
- Загрузка обученной ГКНС
- Прямой проход
- Доступ к данным(блобам)
- Задание: тестер качества классификации
- Задание: визуализация среза блоба.
Caffe:
- Формирование архитектуры ГКНС из python
- Создание модульных ГКНС
- Задание: написание модульной ГКНС (ResNet и т.д.)
Pytorch:
- Общее описание Pytorch
- Базовые классы/автоградиент
- Библиотека matplotlib рисование графиков.
- Пример реализации обучения ГКНС
- Обучение ГКНС в среде pytorch
- Задание: обучение простейшей ГКНС в pytorch
Лекция 3. Задача классификации/распознавания образов (на примере лицевой биометрии). Постановка задачи – верификация, идентификация. Показатели качества (FAR/FRR, ROC, FNIR при FPIR…). Методики тестирования. Методики подготовки данных для обучения и тестирования. Методики формирования и обучения сетей (сиамские сети, обучение на известные классы с выделением DeepID, различные виды функций потерь/Loss, мультитаск,…). Benchmarks, Challenges & Testing: кто и с чем сегодня лидеры в данной тематике.
Лекция прочитана (05.12.2018, В.С. Горбацевич) Презентация лекции 3
Практические занятия к лекции 3: (Семинар 4_1, Семинар 5, Семинар 6, Семинар 7, Семинар 8, Семинар 9)
Linux:
- 1. Подготовка ПК для глубокого обучения
- 2. Установка/ удаление драйверов
- 3. Установка CUDA,cuDNN
- 4. Установка pytorch и caffe
- 5. Сборка и компиляция caffe make, cmake
Python:
- 1. Работа с текстовыми файлами / работа со строками
- 2. Библиотека lmdb caffe.datum.
- 3. Библиотека opencv
- 4. Аугментация с opencv
- Задание: создание БД с аугментацией для обучения распознавания лиц в среде caffe
Python:
- 1. Работа с файлами json/prototxt
- Задание: создание БД с аугментацией для обучения ISO Checker с парсингом файлов
- Задание: обучение ISO Checker
Caffe:
- Кастомные слои в caffe
- Написание слоёв в C++/Python
- Передача параметров через строку параметров
- Слой аугментации данных
- Задание: написание слоя аугментации данных на языке python для заданного набора преобразований в Caffe
Caffe*:
- Кастомные слои в caffe обратный проход
- Обратный проход в C++/Python
- Добавление слоёв в caffe, пересборка caffe
- Задание: написание сверточного слоя
Pytorch:
- Класс Module и ГКНС в pytorch
- Базовые операции (работа с документацией)
- Создание ГКНС
- Сохранение/загрузка ГКНС
- Задание: написание ГКНС собственной архитектуры и ее обучение
- Задание: написание тестового приложения для тестирования качества классификации
Git:
- Поиск статей в интернете arxiv.org
- Структура научных статей (что где)
- Как в статье искать ключевые слова и структурные элементы для понимания сети
- Поиск статьи с исходным кодом под задачу
- Поиск бенчмарков и баз данных для обучения через статьи
- Получение доступа к базам (с доступом по запросу)
- Знакомство с github
- Скачивание готовых сетей/методов обучения
- Задание: Xiang Wu Caffe(скачивание и запуск)
- Задание: Xiang Wu Pytorch(скачивание и запуск)
Pytorch:
- Функции потерь в Pytorch
- Собственный слой в Pytorch
- Модульные ГКНС в Pytorch – ResNet,ResNext …
- Задание: написание функции потерь в Pytorch
- Написание модульной ГКНС в Pytorch(ResNet и т.д.)
Лекция 4. Задачи обработки и сегментации изображений: Постановка задачи – фильтрация шума, устранение смаза, суперразрешение, семантическая сегментация…. Показатели качества (…). Методики тестирования. Методики подготовки данных для обучения и тестирования. Методики формирования и обучения сетей (различные архитектуры, различные виды функций потерь/Loss, мультитаск,…). GAN: Domain Transfer Learning, генеративные соревнующиеся сети, решение разных целевых задачи с использованием GAN. Benchmarks, Challenges & Testing: кто и с чем сегодня лидеры в данной тематике.
Практические занятия к лекции 4:
Caffe:
- Функции потерь в caffe
- Написание своей функции потерь как слоя
- Функция потерь через стандартные операции
- Задание: написание функции потерь в Caffe
Caffe:
- Работа с коэффициентами фильтров(net surgery)
- Задание: преобразования CNN в FCN
Caffe:
- Семантическая сегментации в Caffe
- FCN,Unet и прочие
- Задание: обучение ГКНС на решение задачи семантической сегментации
Python:
- Написание модулей
- Задание: реализация программного модуля тестирования ГКНС семантической сегментации, с расчётом характеристик.
Pytorch:
- Семантическая сегментации в Pytorch
- FCN,Unet и прочие
- Git скачать FCN
- Задание: обучение ГКНС на решение задачи семантической сегментации
Pytorch*:
- GAN в Pytorch
- Git скачать SRGAN
- Задание: обучение GAN на решение задачи супер разрешения
Лекция 5. Задача обнаружения объектов на изображениях: Постановка задачи. Показатели качества (…). Методики тестирования. Методики подготовки данных для обучения и тестирования. Методики формирования и обучения сетей (различные архитектуры – YOLO, DSOD, R-CNN, Fast R-CNN, Mask R-CNN,… различные виды функций потерь/Loss, мультитаск,…). Benchmarks, Challenges & Testing: кто и с чем сегодня лидеры в данной тематике.
Практические занятия к лекции 5:
Caffe:
- Caffe-SSD
- DSOD/SSD параметры, изменение масштабов и т.д.
- Задание: обучение DSOD по базе PascalVOC
- Python: прогон изображений через SSD
Caffe:
- Caffe -Faster R-CNN
- Caffe -Faster R-CNN параметры, изменение масштабов и т.д.
- Задание: обучение Faster R-CNN по базе PascalVOC
- Python: прогон изображений через SSD
Pytorch:
- Pytorch-SSD
- Задание: обучение SSD по базе PascalVOC
- Python: прогон изображений через SSD
Pytorch:
- Pytorch -Faster R-CNN
- Pytorch -Faster R-CNN параметры, изменение масштабов и т.д.
- Задание: обучение Faster R-CNN по базе PascalVOC
- Python: прогон изображений через SSD
Python:
- Подготовка данных для обнаружения
- Задание: Написания модуля конвертации из произвольного формата в формат Pascal VOC
Лекция 6. Задача анализа видеопоследовательностей: Постановка задачи – выделение движения, слежение за объектом, слежение за объектами, выделение событий, анализ действий… Показатели качества (…). Методики тестирования. Методики подготовки данных для обучения и тестирования. Методики формирования и обучения сетей (различные архитектуры – LSTM, Deep Feature Flow,… различные виды функций потерь/Loss, мультитаск,…). Benchmarks, Challenges & Testing: кто и с чем сегодня лидеры в данной тематике.
Практические занятия к лекции 6:
(план занятий определяется)
Лекция 7. (факультативно) Перспективные задачи и методы глубокого обучения: Обратимые сети. Капсульные сети. Структурированные и нерегулярные сети, обучение с использованием моделей, баз знаний и программ логического вывода. Интерпретация видео на естественном языке: Action Detection and Prediction, Image Captioning & Video Annotation, Video-Language Understanding, Text-to-Video, VQA, Visual Dialogues. Reinforcement Learning, агенты, задачи стратегических игр. Cети учат и делают сети: Q-Learning, TM-Learning, Сети-агенты, Зрение+управление в виртуальной среде, Сеть-сольвер, Сети, конструирующие сети.
Практические занятия к лекции 7:
(план занятий определяется)
Лекция 8. (факультативно) Практические приложения CNN и текущие проекты ГосНИИАС
Практические занятия к лекции 8:
(план занятий определяется)
Финальное тестирование (по желанию):
Выполнение тестового проекта (Практическая или приближенная к практической задача, которую необходимо решить путем создания и обучения CNN. Списки тем тестовых проектов будут объявлены позже)
Устный экзамен по методам глубокого обучения в задачах компьютерного зрения