Это серия из нескольких частей, аналогичная написанной мною серии YOLO, которая будет охватывать Распознавание жестов рук с 3D CNN, созданное исследовательской группой NVIDIA. Я стремлюсь пройтись по различным разделам статьи и объяснить в них основные положения. В этой части будет рассмотрена архитектура и работа CNN с кратким объяснением разницы между 2D и 3D CNN.
Вступление
Распознавание жестов рук приобретает все большую популярность при разработке бесконтактных пользовательских интерфейсов, особенно в автомобилях. Бесконтактные интерфейсы улучшают концентрацию внимания водителя и предотвращают возможные неприятности. Эта технология внедряется в различные системы управления, такие как аудиосистема, кондиционер и т. Д.
До появления этой нейронной сети было разработано множество алгоритмов распознавания динамических жестов рук на основе зрения. Ранние алгоритмы использовали определенные пространственно-временные дескрипторы для распознавания жестов. За ними последовали классификаторы жестов, такие как скрытые марковские модели и машина опорных векторов (SVM). Однако оба этих подхода страдают общим недостатком, который заключается в недостаточной надежности распознавания жестов при различной интенсивности света.
Для повышения устойчивости моделей были приняты методы с мультимодальными датчиками. Например, Неверова и др.. объединили данные RGBD из области руки с движениями верхнего скелета. Однако их система должна была работать только в помещении. Молчанов и др. объединила информацию жестов от датчиков глубины, цвета и радара, что дало многообещающие результаты с различной интенсивностью света, что вдохновило разработку этой нейронной сети. Система распознавания жестов руки 3D CNN использует каналы интенсивности и глубины с нейронной сетью для выполнения трехмерных сверток. Данные создаются путем чередования этих двух каналов для обучения сети, которая состоит из двух подсетей.
2D и 3D свертки
В случае двумерных сверток ядро, которое используется для выполнения сверток на карте признаков, имеет два измерения: длину и ширину. Ядро сканирует изображение или карту функций слева направо и сверху вниз. Это означает, что ядру разрешено двигаться только в двух измерениях, а именно в горизонтальном (ось x) и вертикальном (ось y). Результатом свертки является двухмерная карта функций, как показано на изображении ниже.
В случае трехмерных сверток ядро, которое используется для выполнения сверток на изображении или карте признаков, имеет дополнительное измерение, а именно глубину. Ядро выполняет свертки, перемещаясь по всем трем измерениям, то есть по осям x, y и z. Результатом является трехмерная карта объектов, как показано на изображении ниже:
Обычно третьим измерением считается время, поскольку трехмерные свертки используются в основном для классификации видео. Для получения дополнительной информации о типах сверток обратитесь к этому сообщению: https://stackoverflow.com/questions/42883547/what-do-you-mean-by-1d-2d-and-3d-convolutions-in-cnn
Сетевой дизайн
3D CNN распознавания жестов рук состоит из двух подсетей, а именно сети высокого разрешения (HRN) и сети низкого разрешения (LRN). Каждая сеть имеет собственный набор параметров Wh и Wl соответственно. Каждая сеть со своим собственным набором параметров W производит вероятности членства в классе для класса при условии, что жест распознан. Эта условная вероятность обозначается как:
P(C|x, W)
где C - класс действия, а x - наблюдение жеста, выполняемого подсетью с параметрами W.
Вероятность окончательного класса вычисляется путем объединения результатов подсетей HRN и LRN следующим образом:
P(C|x) = P(C|x, Wh) * P(C|x, Wl)
где P (C | x, Wh) - вероятность класса, вычисляемая HRN, а P (C | x, Wl) - вероятность класса, вычисляемая LRN.
Последняя метка класса (c *), которая является предсказанием сети, вычисляется следующим образом:
c * = arg max P (C | x)
Обе подсети состоят из серии сверточных, объединяемых и полностью связанных слоев и слоев softmax. Все слои используют функцию активации ReLU, кроме слоев softmax. Вся сеть показана ниже.
Сеть высокого разрешения (HRN)
HRN состоит из следующих слоев:
- Четыре сверточных 3D-слоя
- За каждым сверточным слоем следует слой максимального объединения.
- Два полностью связанных слоя с 512 и 256 узлами соответственно, следующие за четвертым сверточным слоем
- Слой Softmax в конце для прогнозирования вероятностей классов для 19 классов жестов
Вход в 3D CNN и HRN - изображение 57x125x32, а выход - P (C | x, Wh).
Сеть низкого разрешения (LRN)
LRN состоит из тех же слоев, что и HRN. Однако вход слоя - это пространственно субдискретизированный объем 28x62x32 чередующихся градиентов и глубины изображения. На выходе получается P (C | x, Wl).
Обучение
Следующие пункты резюмируют процедуру обучения, использованную для обучения сети.
- И HRN, и LRN обучаются независимо.
- Результаты двух сетей объединяются на самом последнем этапе путем поэлементного умножения во время прямого распространения.
- Функция стоимости, используемая для данных, представляет собой отрицательное логарифмическое правдоподобие.
- Оптимизация выполняется с помощью стохастического градиентного спуска (SGD) с минипакетами 40 и 20 для LRN и HRN соответственно.
- Веса обновляются с использованием Ускоренных градиентов Нестерова на каждой итерации.
На этом завершается первая часть этой серии. Я расскажу о деталях и важности этапов предварительной обработки и увеличения данных, выполняемых перед обучением сети, в части 2. Итак, ждите выхода следующей части серии :)
Если вам понравился этот пост или он был полезен, пожалуйста, оставьте аплодисменты!
Если вы обнаружите какие-либо ошибки или проблемы в этом сообщении, свяжитесь со мной по адресу [email protected], и я исправлю их.
использованная литература
[1] https://i.stack.imgur.com/hvMaU.png