Научитесь применять принципы CNN для обнаружения объектов / создания художественных задач

Этот пост будет иметь смысл только в том случае, если вы прочитали часть 1 Ref[11], для чего обязательным условием является то, что вы прошли курс 4 профессора Эндрю Нг Coursera по специализации глубокого обучения. Это мои заметки, сделанные с целью освежить их, когда это необходимо.

**Пожалуйста, не ожидайте, что это будут учебники. Если вы с энтузиазмом относитесь к глубокому обучению, я думаю, вам следует изучать его формально, а не из блогов. Если вы новичок в машинном обучении, курс профессора Эндрю по ML Ref[12] является хорошей отправной точкой.**

Алгоритм YOLO для обнаружения объектов

  1. Какие существуют типы проблем с изображением? Классификация изображений, классификация изображений с локализацией (один объект), классификация изображений с обнаружением нескольких объектов (для таких приложений, как беспилотные автомобили). Мы уже рассмотрели проблемы классификации в первые две недели.
  2. Как определить проблему локализации объекта? В задаче локализации выход y должен иметь набор действительных чисел yT = ​​[pc, bx,by,bh,bw,c1,c2,c3], где pc равно 0/1 (либо из c1,c2,c3 присутствует, либо no), (bx,by), bh и bw — середина, высота и ширина ограничивающей рамки соответственно.
  3. Что такое обнаружение ориентиров? Где это полезно? Он обучает сеть обнаруживать несколько положений ориентиров, таких как глаза, нос, уголки рта, положение ноги и т. д. Ориентиры представлены координатами (lx, ly). Они полезны при сентиментальном анализе (уголки рта) или анализе осанки (ноги спортсменов).
  4. Реализация свертки скользящих окон: ссылка [1]

4а. Сетки и ограничивающие рамки: Алгоритм You Only Look Once (YOLO) — популярный алгоритм, поскольку он обеспечивает высокую точность, а также может работать в режиме реального времени — требует, чтобы изображение было разделено на несколько сеток (в курсе, сетка 3x3). поясняются примеры сетки 19x19).

5. Что такое IoU? Это Intersection Over Union, мера перекрытия между двумя ограничивающими прямоугольниками. Рассмотрим наземную ограничивающую рамку и ту, которая найдена алгоритмом. Пересечение по союзу - это отношение размера пересечения этих двух блоков к объединению этих блоков. Локализация объекта считается правильной, если коэффициент IoU ≥ 0,5. Чем выше этот порог, тем выше точность. Ссылка[2]

6. Что такое немаксимальное подавление? Немаксимальное подавление означает, что вы собираетесь выводить прогнозы с максимальными вероятностями и подавлять меньшие и близкие. Ссылка[3]

7. Что такое якорные ящики? Когда ячейке сетки нужно дать возможность обнаруживать несколько объектов, мы используем поля привязки, которые представляют собой ограничивающие прямоугольники с предопределенными высотой и шириной. С N блоками привязки можно обнаружить N различных объектов в ячейке сетки. y выходной вектор будет иметь несколько конкатенированных записей. См. пункт № 2 выше. В нем 8 номеров. Выходной вектор y для N блоков привязки будет иметь 8N записей.

8. Как вы выбираете анкерные ящики? Раньше люди выбирали их вручную. Можно использовать кластеризацию K-средних, чтобы сгруппировать объекты, которые можно ожидать, и, таким образом, выбрать поля привязки.

9. Алгоритм YOLO в двух словах: разделите изображение на сетки. Как правило, это 19x19, поэтому имеется 361 сетка. Для каждой сетки получите столько ограничивающих рамок, сколько есть анкерных рамок. Отбросьте прогнозы с низкой вероятностью. Используйте немаксимальное подавление для создания окончательных прогнозов. Подробности читайте в [4]. Преподаватель предупреждает, что это одна из самых сложных статей для чтения.

Особое примечание к упражнениям этой недели: понимание YOLO и его применение было отнюдь не тривиальной задачей.

Распознавание лиц и передача нейронного стиля!

Это самая интересная часть курса и для меня даже интересная часть специализации. (Специализация также включает джазовую импровизацию в выпускном курсе). Обучает приемам распознавания лиц и созданию собственных работ в чужом стиле (это плагиат?!)

  1. Каковы проблемы распознавания лиц? Нужно распознавать человека, даже если дано одно пробное изображение человека. Это называется «Проблема обучения одним выстрелом». Для решения этой задачи изучается «Функция подобия». Сеть учится вычислять эту функцию для любого изображения. d(img1,img2) — обозначение функции подобия.
  2. Что такое сиамская сеть? Это пары идентичных CNN, каждая из которых берет входное изображение и выдает закодированный выходной вектор, вызовите f(x). Функция подобия вычисляется как квадрат нормы разностей f(x). Цель обучения: Если изображения похожи, d маленькое, а если нет d большое. Ref[] для подробностей

Важное замечание на данный момент: хотя ранее он называл d(img1,img2) «сходством», в формуле это представляется разностной функцией, следовательно, чем меньше, тем лучше.

3. Как вы определяете целевую функцию для достижения цели, упомянутой в пункте 2? Один из способов — определить «тройную потерю». У вас есть «Якорь» (эталонное изображение), «Положительное» и «Негативное» изображения. Вы хотите, чтобы d(A,P) + margin ≤ d(A,N) было удовлетворено. Выберите A,P,N, которые трудно удовлетворить этим условиям. Он рекомендует повторно использовать предварительно обученную модель. Ref[8] Бумага Facenet. Это хорошая бумага.

4. Распознавание лиц с использованием проверки лица: возьмите сиамскую сеть, введите векторы f(x) в модуль логистической регрессии! Можно даже предварительно вычислить кодировку изображений в базе данных и сохранить, чтобы сократить вычисления.

5. Что такое нейронный перенос стиля? Это процесс объединения «изображения контента» и «изображения стиля» с помощью сверточной нейронной сети для создания «сгенерированного изображения», которое имеет контент из изображения контента в стиле изображения стиля. Например, фотография моста СФО может быть изображением контента, а одна из картин Клода Моне может быть изображением стиля. Тогда сгенерированное изображение будет выглядеть как мост SFO, нарисованный Моне!! Разве это не весело и круто!! Для выполнения этой задачи необходимо понимать функции, извлеченные на различных уровнях CNN.

6. Объясните, что на самом деле изучают консети: выберите единицу в слое 1. Найдите девять фрагментов изображения, которые максимально активизируют этот слой. Пройдите все тренировочные изображения и найдите 9 патчей (с учетом фильтра 3x3?), которые максимизируют активацию этого скрытого юнита. Подробности см. в [9]. Повторите для других единиц. Например, 9 различных скрытых юнитов и их соответствующие патчи изображения приведены на изображении ниже.

Если вы сделаете это для единиц в более глубоких слоях, вы увидите, что более поздние единицы будут видеть более крупные участки изображения (исходного изображения). Следовательно, более глубокие слои могут обнаруживать более сложные формы/особенности.

7. Как определить и оптимизировать функцию стоимости для этой цели? Существуют две функции стоимости, которые в сочетании с весами альфа и бета дают функцию стоимости J. Произвольно инициализируйте сгенерированное изображение, минимизируйте комбинированную функцию стоимости. Ref[10] Легкая бумага.

8. Что такое функция стоимости контента? Сначала выбирается скрытый слой l (el, а не i) для определения стоимости контента. На практике не выбирают ни слишком мелкий, ни слишком глубокий слой. Возможно, придется сделать несколько пробных ошибок. Используйте предварительно обученную ConvNet, скажем, VGG-19. Затем найдите разницу между активациями. Обратите внимание, что активации являются 2D, а разница заключается в элементах.

9. Как определяется функция стоимости стиля? «Стиль» определяется как «корреляция» между активациями по разным каналам. Ссылка [10] снова.

Есть подсказка, что вы получите визуально приятные результаты, если используете функцию стоимости стиля из нескольких разных слоев. Для этого используется еще один гиперпараметр lamba:

10. Свертка 1D и 3D?: Вместо 2D-фильтра возьмите 1D-массив и примените его к 1D-последовательности чисел. Точно так же 3D объясняется для изображения сканирования МРТ. Концепция уже покрыта в течение первых двух недель.

Это конечно конец!!! Есть занимательные упражнения. Они были относительно легче. Это только начало, и эти концепции нуждаются в практике.

ЕЩЕ РАЗ БОЛЬШОЕ СПАСИБО ПРОФФУ ЭНДРЮ НГ ЗА СОЗДАНИЕ СПЕЦИАЛИЗАЦИИ И ВСЕМ НАСТАВНИКАМ И ЧЛЕНАМ СООБЩЕСТВА COURSERA!!!!!!

Если вам нравятся мои статьи, подписывайтесь на меня в Medium, LinkedIn и Twitter

Если вы ищете решение проблем для своего бизнеса, свяжитесь со мной напрямую через LinkedIn. Мой GitHub здесь

Ссылки

[1] https://arxiv.org/abs/1312.6229

[2] https://www.cs.umanitoba.ca/~ywang/papers/isvc16.pdf

[3] https://arxiv.org/abs/1705.02950

[4] https://pjreddie.com/media/files/papers/yolo.pdf

Это ссылки в упражнениях.

[5] Редмон и др., 2016: https://arxiv.org/abs/1506.02640

[6] Редмон и Фархади, 2016 г.: https://arxiv.org/abs/1612.08242

[7] https://www.cs.toronto.edu/~ranzato/publications/taigman_cvpr14.pdf

[8] https://arxiv.org/abs/1503.03832

[9] https://cs.nyu.edu/~fergus/papers/zeilerECCV2014.pdf

[10] https://www.robots.ox.ac.uk/~vgg/rg/papers/1508.06576v2.pdf

[11] https://towardsdatascience.com/convolutional-neural-networks-part-1-2aeb17fc208c

[12] https://www.coursera.org/learn/machine-learning