Эта статья открывает цикл статей, основанных на переводе лекций и практических заданий курса CS231n Convolutional Neural Networks for Visual Recognition Стэнфордовского университета, этот курс является вводным в использование сверточных нейронных сетей для задач компьютерного зрения. В первой части рассмотрены вопросы структуры курса и подготовки рабочей среды. В рамках перевода некоторые термины не будут переводится в силу редкости русскоязычных ресурсов и повсеместного использования оригинальных названий. Кроме того, статьи не являются точным переводом и могут быть дополнены авторами.
Отдельная просьба к читателям: при наличии вопросов, задавайте их в сообщениях сообщества в VK.
О курсе
Требования к читателю
- Знание Python, знакомство с C / C ++. Основная часть материалов курса будет рассматриваться в контестве использования языка Python (и библиотеки NumPy), но некоторые из библиотек глубокого обучения, которые будут рассматриваться в курсе, написаны на C ++. Стоит отметить, что большой опыт программирования, но на другом языке (например, C/C++/Matlab/Javascript), вы, вероятно, сможете освоить Python в процессе изучения прочего материала.
- Знание линейной алгебры и основ математического анализа. В рамках курса вам придется работать с производными и понимать матричные, векторные операции и обозначения.
- Базовые знания теории вероятности и статистики. В рамках курса вам придется столкнуться с основами теории вероятности, гауссовых распределений, среднего значения, стандартного отклонения и т. д.
- Базовые знания машинного обучения. В курсе используются функции потерь, производные и оптимизации с градиентным спуском.
Структура курса
Курс состоит из 3-х модулей: 0. подготовка, 1. нейронные сети и 2. сверточные нейронные сети. Примем следующий способ нумерации статей в их названиях: [M.A] Название статьи, где M — номер модуля, A — номер статьи. Так, например, название этой статьи “[0.1] Введение и подготовка”.
Курс имеет следующее содержание:
- 0. Подготовка
- 1. Нейронные сети
- [1.1] Классификация изображений: Data-driven подход, k-Nearest Neighbor, train/val/test разделение
- [1.2] Линейная классификация: Метод опорных векторов (Support vector machine), Softmax
- [1.3] Оптимизация: стохастический градиентный спуск
- [1.4] Обратное распространение ошибки
- [1.5] Нейронные сети часть 1: Настройка архитектуры
- [1.6] Нейронные сети часть 2: Настройка данных и фунции потери
- [1.7] Нейронные сети часть 3: Обучение и оценка качества
- [1.8] Заключение: пример использования минимальной нейронной сети
- 2. Cверточные нейронные сети
- [2.1] Сверточные нейронные сети: архитектуры, слои свертки/объединения
- [2.2] Понимание и визуализация сверточных нейронных сетей
- [2.3] Transfer Learning and Fine-tuning применительно к сверточным нейронным сетям
Установка
Вы можете работать над задачами одним из двух предлагаемых способов: локально на своей собственной машине или на виртуальной машине в Google Cloud.
Удаленная работа на Google Cloud
Замечание: если вы хотите работать в Google Cloud после выполнения изложенных здесь инструкций, вы можете пропустить раздел Работа локально.
Для работы над задачами этого курса вы можете использовать Google Cloud. Этот способ рекомендуется тех, кто испытывает проблемы с установкой окружения, или если вы хотите использовать больше ресурсов CPU/GPU чем доступно на вашем устройстве. Инструкция по настройке доступна здесь. Стоит заметить, что использование облачных ресурсов таким способом не является полностью бесплатным и может привести к значительным затратам.
Удаленная работа с использованием Google Colaboratory
Такой вариант работы не предполагается в оригинальном курсе, однако Google предлагает бесплатную платформу для исследователей, не требующую никаких дополнительных регистраций для работы в среде, схожей с Jupyter Notebook. Для работы с ней достаточно загрузить файл блокнота на Google Drive и открыть его с помощью Google Colab.
Работа на локальной машине
Установка Анаконды: Если вы решили работать локально, мы рекомендуем использовать бесплатный дистрибутив Anaconda Python, который предлагает простое решение проблемы зависимостей пакетов. Пожалуйста, убедитесь что вы загрузили версию Python 3, которая на текущий момент устанавливает Python 3.7. Мы больше не поддерживаем Python 2.
Виртуальное окружение Anaconda: После установки Anaconda, имеет смысл создать виртуальное окружение для этого курса. Если вы решили не использовать виртуальное окружение, то убедитесь, что все зависимости воздействующие на код установлены глобально на вашей машине. Для настройки виртуального окружения выполните следующие команды (в терминале):
conda create -n cs231n python=3.7 anaconda
Чтобы создать окружение с именем cs231n.
Затем, чтобы активировать и войти в окружение, выполните
source activate cs231n
Для выхода, вы можете просто закрыть окно или выполнить
source deactivate cs231n
Заметьте что каждый раз когда вы хотите поработать над задачами курса, вы должны выполнять source activate cs231n (изменяя имя текущего виртуального окружения).
На этой странице представлены более детальные инструкции по управлению виртуальным окружением с помощью Anaconda.
Виртуальное окружение Python: Альтернативно можно использовать виртуальное окружение Pytnon. Чтобы его настроить, выполните следующие команды:
cd assignment1
sudo pip install virtualenv # Это уже может быть установлено
virtualenv -p python3 .env # Создать виртуальное окружение (python3)
# Note: Вы также можете использовать "virtualenv .env", чтобы использовать стандартный python (Пожалуйста, помните что в рамках курса используется версия 3)
source .env/bin/activate # Активировать виртуальное окружение
pip install -r requirements.txt # Установка зависимостей, файл находится в архиве с заданием
# Работа над заданиями курса ...
deactivate # Выход из виртуального окружения
Уведомление: Состязательные (Adversarial) атаки с помощью Keras и TensorFlow | Digiratory