My deep learning

CS231n: Convolutional Neural Networks for Visual Recognition. Старт практической части

Теги: cs231n  additional 

О чем курс и почему он актуален?

Данный цикл статей создан, потому что я заочно прошел cs231n и мне захотелось закрепить некоторые практические аспекты работы над задачами. Все статьи на тему курса можно будет найти по тегу cs231n.

Курс целиком посвящен вопросам детектирования, распознавания и другим проблемам, связанным с компьютерным зрением. Программа обновляется каждый год, т.к. данная область знаний не стоит на месте. У курса довольно объемный и подробный бекграунд, а задачи подымаются от низкоуровневых решений к работе с фреймворками. В общем, если вас интересует компьютерное зрение — курс полностью себя оправдывает.

Вся актуальная информация содержится на страничке Стэндфорда. Вы можете записаться и пройти оригинальную образовательную программу платно. Мне повезло больше и получилось пройти цикл лекций и практику без лишних жертв.

Лекционную часть я разбирать не буду. Лекции за 2017 год выложены на youtube. Практическая часть курса изложена на странице с заданиями. Я задачи 2018-го года и могу сказать, что они не отличаются кардинально от 2019-го. На момент написания данной статьи на github доступна вся практика за 2015-2019 годы.

Подготовка к работе над курсом

  1. Необходимо установить python и библиотеки для исследований. Описание этого процесса изложено тут. Я традиционно работаю под windows и, чтобы не заморачиваться, ставлю всё из пакета anaconda, тем более что в курсе любезно предоставлена готовая сборка.

  2. В сетапе дополнительно предлагается работать с Google Cloud. Для решения первого модуля задач это не потребуется и будет достаточно возможностей домашнего компьютера.

  3. Если Вы незнакомы с python и библиотекой numpy, можно пройти туториал. На самом деле, могу сказать, что курс в плане написания кода непростой и если вы не работали ранее с python, то браться за решение задач бессмысленно. Отправляйтесь лучше сразу изучать python.

  4. Необходимо установить jupyter notebook. Половина задач решается в нем. Приложение есть в пакете anaconda.

С сетапом вроде всё.

Что в курсе?

Задачи разбиты на два модуля. В первом модуле объясняется фундаментальная работа нейронных сетей и даются практические примеры построения. Второй модуль полностью посвящен сверточным сетям.

Для каждого блока задач дано подробное описание и бекграунд. Особенно обратите внимание на последнее - объем полезного материала значительно превышает то, что дано в видеолекциях. На самом деле, не пройдете бек - считай не прошли курс.

Module 1: Neural Networks

  1. в первом блоке задач предлагается классифицировать изображения дата-сета CIFAR10 с помощью метода k-ближайших соседей. Это можно было бы проигнорировать, т.к. алгоритм не используется для задач компьютерного зрения. На самом деле задача полезная. В ней разбирается производительность различных методов вычислений.

  2. во втором и третьем блоке строим SVM и softmax-классификаторы. Решения отсюда и дальше начнут двигаться от задачи к задаче, что формирует отличную практику работы с готовыми сборками.

  3. в дальнейшем надо будет построить классификатор на основе простой двухслойной нейронной сети. По сути весь блок построен на том, чтобы дать понятие о принципах классификации изображений и научить сравнивать методы и принимать решения об оптимизации алгоритмов.

  4. дальнейшие задачи по нейронкам вынесены в отдельную группу модуля. Тут мы будем изучать полносвязные слои, бач-нормализацию, дропауты и работу со свертками. В последней задаче разбирается работа во фреймворках PyTorch и TensorFlow.

Module 2: Convolutional Neural Networks

Задачи модуля полностью посвящены сверточным сетям. Разбираются RNN, LSTM, GAN сетки, а также методы разработки и конкретные задачи (например, перенос стилей изображений). Вся работа ведется уже с фреймворками.

В итоге

В дальнейших статьях я постараюсь зафиксировать свое понимание теоретической части курса и то, как применяя теорию, необходимо решать практическую часть. Готового кода одним куском не будет - это можно нагуглить самостоятельно. Задача данных статей - прожевать теоретический курс на практике и закрепить усвоенный материал.

Все статьи с тегом cs231n

Этот проект поддерживается KonstantinKlepikov