Учебный курс ГосНИИАС
«Глубокое обучение и сверточные нейронные сети
в задачах современного компьютерного зрения»
(курс лекций и практических занятий)

Авторы курса: Визильтер Юрий Валентинович, д.ф.-м.н., профессор РАН,
начальник подразделения 3000 ФГУП «ГосНИИАС»,
Горбацевич Владимир Сергеевич, начальник лаборатории 3050 ФГУП «ГосНИИАС»

Преподаватели курса: сотрудники ГосНИИАС (список пополняется и уточняется)

Курс экспериментальный, читается на базе подразделения 3000 ФГУП «ГосНИИАС» в осеннем семестре 2018 г. Слушателями курса являются сотрудники ГосНИИАС, студенты МФТИ и МАИ. Ниже приводится примерная программа курса, которая будет уточняться по мере его прочтения. Расписание лекционных и практических занятий, а также материалы уже проведенных занятий будут размещаться на данном сайте.

Контактное лицо по организационным вопросам и расписанию занятий:
Моржин Александр Викторович (a.morzhin@mail.ru)

Содержание учебного курса

Лекция 1. Базовые идеи: Машинное обучение, Линейные классификаторы, Обучение методом градиентного спуска, Нейронные сети, Многослойные персептроны, Методы компьютерного зрения (Линейная фильтрация изображений. Выделение признаков. Обнаружение и распознавание объектов на основе выделенных признаков), Глубокие сверточные сети (CNN).

Лекция прочитана (02.10.2018, Ю.В. Визильтер) Презентация лекции 1

Практические занятия к лекции 1: (Семинар 1, Семинар 2)

    Linux:

  1. Подключение через rdp
  2. Подключение через SSH(Putty)
  3. Терминалы и pcmanFM(создание папок файлов и т.д.)
  4. Установка программ через apt-get install
  5. Права и доступ к файлам
  6. Основы скриптов bash



Caffe framework:

  1. Общее описание фреймворка
  2. Формат данных lmdb(создание lmdb баз средствами caffe)
  3. Формат prototxt
  4. Представление сети в виде статического графа ограничения и запись в виде prototxt
  5. Параметры обучения solver.prototxt
  6. Задача классификации
  7. Запуск обучения типового примера
  8. Изменение ГКНС.
  9. Задание(сеть + параметры обучения)



Python:

  1. Интерпретатор python 2.7/3.5
  2. Среды Spyder/Pycharm
  3. Структура файлов
  4. Основные понятия и конструкции языка Python в сравнении с C++
  5. Основы numpy работа с матрицами/векторами (задание по работе с матицами)
  6. Задание: Работа с матрицами – метод Гаусса либо умножение матриц



Лекция 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:

  1. Настойка изменения скорости обучение
  2. Caffe test caffe time
  3. Базовая аугментация
  4. Подбор параметров обучения (примеры nan, снижение скорости)
  5. Фаза TRAIN/TEST
  6. Реализация сетей AlexNet, VGG, GoogleNet, ResNet, ResNEXT, DenseNet в Caffe(поиск в интернете скачивание обучение типовую задачу классификации)



Python:

  1. Основы pip – установка библиотек
  2. Python загрузка изображений Pil/scimage и прочее
  3. Python работа с файлами/файловой системой
  4. Pycaffe подключение библиотеки
  5. Pycaffe базовые классы(представление ГКНС в caffe)
  6. Загрузка обученной ГКНС
  7. Прямой проход
  8. Доступ к данным(блобам)
  9. Задание: тестер качества классификации
  10. Задание: визуализация среза блоба.



Caffe:

  1. Формирование архитектуры ГКНС из python
  2. Создание модульных ГКНС
  3. Задание: написание модульной ГКНС (ResNet и т.д.)



Pytorch:

  1. Общее описание Pytorch
  2. Базовые классы/автоградиент
  3. Библиотека matplotlib рисование графиков.
  4. Пример реализации обучения ГКНС
  5. Обучение ГКНС в среде pytorch
  6. Задание: обучение простейшей ГКНС в 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. 1.       Подготовка ПК для глубокого обучения
  2. 2.       Установка/ удаление драйверов
  3. 3.       Установка CUDA,cuDNN
  4. 4.       Установка pytorch и caffe
  5. 5.       Сборка и компиляция caffe make, cmake



Python:

  1. 1.       Работа с текстовыми файлами / работа со строками
  2. 2.       Библиотека lmdb caffe.datum.
  3. 3.       Библиотека opencv
  4. 4.       Аугментация с opencv
  5. Задание: создание БД с аугментацией для обучения распознавания лиц в среде caffe



Python:

  1. 1.       Работа с файлами json/prototxt
  2. Задание: создание БД с аугментацией для обучения ISO Checker с парсингом файлов
  3. Задание: обучение ISO Checker



Caffe:

  1. Кастомные слои в caffe
  2. Написание слоёв в C++/Python
  3. Передача параметров через строку параметров
  4. Слой аугментации данных
  5. Задание: написание слоя аугментации данных на языке python для заданного набора преобразований в Caffe



Caffe*:

  1. Кастомные слои в caffe обратный проход
  2. Обратный проход в C++/Python
  3. Добавление слоёв в caffe, пересборка caffe
  4. Задание: написание сверточного слоя



Pytorch:

  1. Класс Module и ГКНС в pytorch
  2. Базовые операции (работа с документацией)
  3. Создание ГКНС
  4. Сохранение/загрузка ГКНС
  5. Задание: написание ГКНС собственной архитектуры и ее обучение
  6. Задание: написание тестового приложения для тестирования качества классификации



Git:

  1. Поиск статей в интернете arxiv.org
  2. Структура научных статей (что где)
  3. Как в статье искать ключевые слова и структурные элементы для понимания сети
  4. Поиск статьи с исходным кодом под задачу
  5. Поиск бенчмарков и баз данных для обучения через статьи
  6. Получение доступа к базам (с доступом по запросу)
  7. Знакомство с github
  8. Скачивание готовых сетей/методов обучения
  9. Задание: Xiang Wu Caffe(скачивание и запуск)
  10. Задание: Xiang Wu Pytorch(скачивание и запуск)



Pytorch:

  1. Функции потерь в Pytorch
  2. Собственный слой в Pytorch
  3. Модульные ГКНС в Pytorch – ResNet,ResNext …
  4. Задание: написание функции потерь в Pytorch
  5. Написание модульной ГКНС в Pytorch(ResNet и т.д.)



Лекция 4. Задачи обработки и сегментации изображений: Постановка задачи – фильтрация шума, устранение смаза, суперразрешение, семантическая сегментация…. Показатели качества (…). Методики тестирования. Методики подготовки данных для обучения и тестирования. Методики формирования и обучения сетей (различные архитектуры, различные виды функций потерь/Loss, мультитаск,…). GAN: Domain Transfer Learning, генеративные соревнующиеся сети, решение разных целевых задачи с использованием GAN. Benchmarks, Challenges & Testing: кто и с чем сегодня лидеры в данной тематике.

Практические занятия к лекции 4:



Caffe:

  1. Функции потерь в caffe
  2. Написание своей функции потерь как слоя
  3. Функция потерь через стандартные операции
  4. Задание: написание функции потерь в Caffe



Caffe:

  1. Работа с коэффициентами фильтров(net surgery)
  2. Задание: преобразования CNN в FCN



Caffe:

  1. Семантическая сегментации в Caffe
  2. FCN,Unet и прочие
  3. Задание: обучение ГКНС на решение задачи семантической сегментации



Python:

  1. Написание модулей
  2. Задание: реализация программного модуля тестирования ГКНС семантической сегментации, с расчётом характеристик.



Pytorch:

  1. Семантическая сегментации в Pytorch
  2. FCN,Unet и прочие
  3. Git скачать FCN
  4. Задание: обучение ГКНС на решение задачи семантической сегментации



Pytorch*:

  1. GAN в Pytorch
  2. Git скачать SRGAN
  3. Задание: обучение GAN на решение задачи супер разрешения



Лекция 5. Задача обнаружения объектов на изображениях: Постановка задачи. Показатели качества (…). Методики тестирования. Методики подготовки данных для обучения и тестирования. Методики формирования и обучения сетей (различные архитектуры – YOLO, DSOD, R-CNN, Fast R-CNN, Mask R-CNN,… различные виды функций потерь/Loss, мультитаск,…). Benchmarks, Challenges & Testing: кто и с чем сегодня лидеры в данной тематике.

Практические занятия к лекции 5:



Caffe:

  1. Caffe-SSD
  2. DSOD/SSD параметры, изменение масштабов и т.д.
  3. Задание: обучение DSOD по базе PascalVOC
  4. Python: прогон изображений через SSD



Caffe:

  1. Caffe -Faster R-CNN
  2. Caffe -Faster R-CNN параметры, изменение масштабов и т.д.
  3. Задание: обучение Faster R-CNN по базе PascalVOC
  4. Python: прогон изображений через SSD



Pytorch:

  1. Pytorch-SSD
  2. Задание: обучение SSD по базе PascalVOC
  3. Python: прогон изображений через SSD



Pytorch:

  1. Pytorch -Faster R-CNN
  2. Pytorch -Faster R-CNN параметры, изменение масштабов и т.д.
  3. Задание: обучение Faster R-CNN по базе PascalVOC
  4. Python: прогон изображений через SSD



Python:

  1. Подготовка данных для обнаружения
  2. Задание: Написания модуля конвертации из произвольного формата в формат 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. Списки тем тестовых проектов будут объявлены позже)

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