Спринт 19/25 → Тема 4/6: Свёрточные сети → Урок 1/12

Кратко:
  • Для решения сложных задач нужно познакомиться со свёрточными сетями.
  • Обучение свёрточным сетям с помощью библиотеки Keras.
  • Аугментация данных и архитектура ResNet.
  • 10 уроков по 10-15 минут.
  • Улучшение результатов классификации одежды и построение нейросети для овощей и фруктов в магазине.

Спринт 19/25 → Тема 4/6: Свёрточные сети → Урок 2/12

Кратко:
  • Свёртка решает проблему работы с большими изображениями для полносвязных сетей.
  • Свёртка применяет одинаковые операции к каждому пикселю изображения.
  • Одномерная свёртка применяется к последовательностям, вычисляя скалярное произведение между весами и элементами последовательности.
  • Двумерная свёртка работает с двумерными изображениями и матрицами весов, суммируя произведения элементов.
  • Горизонтальные контуры изображения можно обнаружить с помощью ядра свёртки, разработанного американскими учёными Ирвином Собелем и Гари Фельдманом.
  • Вертикальные контуры изображения можно обнаружить с помощью другого ядра свёртки.

Спринт 19/25 → Тема 4/6: Свёрточные сети → Урок 3/12

Кратко:
  • Сверточные слои - основная часть вычислительной работы свёрточных нейронных сетей (CNN).
  • Свёрточные слои состоят из настраиваемых и обучаемых фильтров - наборов весов, применяемых к изображению.
  • Фильтр - квадратная матрица размером KxK пикселей, для цветных изображений добавляется глубина.
  • В свёрточных слоях меньше параметров, чем в полносвязных, что облегчает обучение.
  • В свёрточных слоях используются padding и stride для настройки работы фильтров.
  • Размер выходного тензора после свёрточного слоя вычисляется по формуле, учитывая размер входного изображения, фильтр, padding и шаг.
  • Визуализатор на GitHub помогает лучше понять работу свёрток с разными параметрами.

Спринт 19/25 → Тема 4/6: Свёрточные сети → Урок 4/12

Кратко:
  • Свёрточные слои Keras создаются с помощью keras.layers.Conv2D()
  • Параметры слоя: filters (количество фильтров), kernel_size (размер фильтра), strides (размер шага свёртки), padding (толщина отбивки из нулей), activation (активация после свёртки)
  • Для передачи результатов свёрточного слоя полносвязному слою нужно подключить слой Flatten
  • Обучать модели от начала до конца не стоит, сначала нужно научиться применять свёрточные сети, а затем обучить их на графических картах

КЗ.19/25.4/6.4/12.Задача 1

КЗ.19/25.4/6.4/12.Задача 2

Спринт 19/25 → Тема 4/6: Свёрточные сети → Урок 5/12

Кратко:
  • Пулинг - это техника, которая уменьшает количество параметров модели.
  • Max Pooling (англ. «максимальный пулинг») выбирает максимальное значение в каждом окне из четырех пикселей.
  • Average Pooling (англ. «средний пулинг») возвращает среднее значение из группы пикселей внутри канала.
  • LeNet - популярная архитектура для классификации изображений размером 20-30 пикселей.
  • LeNet состоит из 2-3 сверточных слоев размером 5x5 и Average Pooling размером 2x2.
  • Количество фильтров растет от слоя к слою, чтобы не потерять важную информацию.
  • В конце сети идут 1-2 полносвязных слоя, которые собирают все признаки и классифицируют их.

КЗ.19/25.4/6.5/12.Задача 1

КЗ.19/25.4/6.5/12.Задача 2

Спринт 19/25 → Тема 4/6: Свёрточные сети → Урок 6/12

Кратко:
  • Алгоритм Adam является альтернативой градиентному спуску (SGD) для обучения нейронных сетей.
  • Он автоматически подбирает шаг обучения, что ускоряет процесс обучения и улучшает качество модели.
  • Алгоритм Adam использует адаптивную оценку моментов для подбора параметров обучения.
  • Визуализация Эмильена Дюпона показывает, что Adam быстрее находит минимум, чем SGD.
  • В Keras алгоритм Adam записывается как model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['acc']).
  • Основной настраиваемый гиперпараметр алгоритма Adam - скорость обучения (learning rate), которая может быть уменьшена для улучшения качества модели.

Спринт 19/25 → Тема 4/6: Свёрточные сети → Урок 7/12

Кратко:
  • Руководство магазина разработало систему компьютерного зрения для определения фруктов и овощей на весах.
  • Датасет с фотографиями плодов находится в папке /datasets/fruits_small/.
  • В наборе данных есть несколько папок с изображениями фруктов и овощей.
  • В библиотеке Keras есть удобный загрузчик ImageDataGenerator.
  • Чтобы обучить модель на этих данных, передайте объект datagen_flow в метод fit().
  • В методе fit() должна быть не только обучающая, но и валидационная выборка.

КЗ.19/25.4/6.7/12.Задача 1

КЗ.19/25.4/6.7/12.Задача 2

Спринт 19/25 → Тема 4/6: Свёрточные сети → Урок 8/12

Кратко:
  • Аугментации в Keras позволяют увеличить выборку изображений для повышения качества моделей.
  • В ImageDataGenerator есть опции для добавления аугментаций, которые по умолчанию отключены.
  • Для обучающей и валидационной выборок нужно создать разные генераторы.
  • Чтобы обучающая и валидационная выборки не содержали общих элементов, задайте объектам одинаковое значение seed.

КЗ.19/25.4/6.8/12.Задача 1

Спринт 19/25 → Тема 4/6: Свёрточные сети → Урок 9/12

Кратко:
  • Построить и обучить свёрточную нейронную сеть для классификации фруктов.
  • Использовать три функции: загрузка обучающей выборки, создание модели, запуск модели.
  • Добиться значения accuracy не менее 90% на тестовой выборке.
  • Обучить простую сеть на одной эпохе без аугментации для проверки работоспособности кода.
  • Не применять повороты сразу, они увеличивают время обучения.
  • Время обучения однослойной сети и архитектуры из 7-8 слоёв может быть одинаковым.
  • Перейти на курс "Компьютерное зрение - практика обучения нейронных сетей", тема "Свёрточные сети", урок "Свёрточные сети для классификации фруктов (GPU)".

Спринт 19/25 → Тема 4/6: Свёрточные сети → Урок 10/12

Кратко:
  • ResNet - самая известная архитектура сверточных нейросетей.
  • ResNet решает проблему затухающего градиента в глубоких сетях.
  • Главная особенность ResNet - использование Shortcut Connections.
  • ResNet состоит из блоков с повторяемыми слоями и свёрточных слоев.
  • Количество слоев в ResNet определяется глубиной сети.
  • ResNet и его модификации используются для решения различных задач компьютерного зрения.
  • Семейство архитектур ResNet является популярным решением для задач компьютерного зрения.

Спринт 19/25 → Тема 4/6: Свёрточные сети → Урок 11/12

Кратко:
  • Импортировать архитектуру ResNet в Keras можно с помощью from tensorflow.keras.applications.resnet import ResNet50.
  • Аргументы включают размер входного изображения, количество классов и инициализацию весов.
  • include_top=True указывает на наличие двух слоев в конце архитектуры ResNet.
  • Чтобы адаптировать ResNet50 к задаче, можно убрать верхушку и сконструировать модель заново.
  • Для уменьшения переобучения можно "заморозить" часть сети, оставив только 1-2 полносвязных слоя наверху.
  • Заморозка позволяет избавиться от переобучения и повысить скорость обучения сети.
  • Веса модели ResNet50 можно загрузить на сервер и указать путь к файлу в аргументе weights.

Спринт 19/25 → Тема 4/6: Свёрточные сети → Урок 12/12

Заключение

Теперь вы умеете:

  • Классифицировать изображения свёрточными сетями.
  • Делать аугментацию данных;
  • Создавать сети с архитектурой ResNet.

Заберите с собой

Чтобы ничего не забыть, скачайте шпаргалку и конспект темы.

Впереди вас ждёт самостоятельный проект!