Машинное обучение видео для определения типа движения

CreateML (может выполняться на Mac), который позволяет машинное обучение с графическим интерфейсом.
Вы также можете классифицировать действия (Action Classification).
На самом деле, в этот раз мне не удалось обучить модель, но я написал всю работу поток для классификации действий для мобильных устройств, поэтому я опубликую его.

Процедура (подготовка набора данных)

1. Собирайте видео.

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

О чем следует помнить при сборе наборов данных

Соберите 50 и более видео за одно действие

Собирать видео с частотой кадров выше, чем частота кадров, используемая в приложении (Необходимо указать частоту кадров видео для анализа во время обучения. Эта частота кадров также используется при выполнении в приложении анализов по эталону)
Камера зафиксирована
Один человек для одного видео
Видео снято в ярко освещенном месте
Одежда не подходит слишком мешковатая,
Не подходит цвет одежды, которая слишком проникновение с фоном
Снято с разных ракурсов в приложении Если да, подготовьте наборы данных с разных ракурсов.
Если одно видео содержит несколько движений одного действия, минимизируйте статику и интервал между движениями.
Если есть неподвижность, обрежьте часть или сделайте ее аннотированным набором данных.
Поместите отрицательный регистр (другие действия, которые могут происходить при запуске приложения. Например, поместите сцену ходьбы, которая входит и выходит из кадр до и после тренировки мышц)
Ставим стационарный чехол (состояние неподвижного сидения до и после тренировки мышц).

2. Организуйте данные (разделите на папки или добавьте файлы аннотаций)

Разделите данные, которые будут переданы CreateML, на папки в наборе данных.
Существует два способа разделения папок.

Способ настройки 1.

Делит видео по папкам для каждого действия.

Этот метод можно использовать, когда видео правильно обрезано, чтобы оно стало «классификацией одного действия для одного видео».

Метод настройки 2.

Добавить файл аннотации

Если одно видео содержит несколько действий, создайте файл аннотаций в формате csv или json.

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

Пример файла аннотации

json создает массив ключевого словаря «имя файла, метка, время» для каждого действия, как показано ниже.
Формат времени распознается как целое или десятичное число секунд.

[
 {
 "video" : "killMove1.mov",
 "label" : "Nmehameha",
 "start" : 0,
 "end" : 3.1
 },
 {
 "video" : "killMove1.mov",
 "label" : "Nkankousappou",
 "start" : 3.2, "end" : 6
 },
 {
 "video" : "killMove2.mov",
 "label" : "Negative",
 "start" : 0,
 "end" : 3.7
 },
 { "video" : "killMove2.mov",
 "label" : "Ki",
 "start" : 3.8,
 "end" : 6.5.
 } 
]

Примечание. В официальной документации говорится, что он распознает как минуты:секунды, так и часы:минуты:секунды.запятая секунды в формате String, но по какой-то причине это не так.

// Note that these Json formats are not recognized
[
 {
 "video" : "specialMoves.mov",
 "label" : "Nmehameha",
 "start" : "8:3.2",
 "end" : "8:4.5"
 },
 {
 "video" : "specialMoves.mov",
 "label" : "Ki",
 "start" : "1:59:5.8",
 "end" : "1:59:7"
 },
 {
 "video" : "specialMoves.mov",
 "label" : "Nkankousappou",
 "start" : "1:59:14",
 "end" : "1:59:15.1"
 }
]

Процедура (Обучение)

3. Открыть классификацию действий с помощью CreateML

Удерживая нажатой клавишу Control, щелкните Xcode, чтобы открыть CreateML из открытого инструмента разработчика, и выберите «Классификация действий».

4. Укажите данные обучения

Выберите папку с тренировочными данными в пункте «Тренировочные данные».

Примечание. Если вы хотите прочитать JSON, вам нужно напрямую выбрать файл JSON. Он не распознается при выборе папки.

Данные проверки могут быть подготовлены или не подготовлены отдельно от обучающих данных. Если не указано иное, createML отделит некоторые обучающие данные от проверочных данных.

5. Настройте обучение

Сделайте следующие настройки.

параметр

Итерации
Количество шагов расчета. CreateML установит его автоматически из набора данных.
Вы можете увеличить или уменьшить его.

Частота кадров
Частота кадров, предполагаемая приложением.
Набор данных должен быть подготовлен с частотой кадров выше этого числа.

Длительность действия:
Установите ожидаемое время для каждого действия.
Это позволяет createML распознавать интервалы между кадрами для анализа действий.

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

6. Начните учиться

Нажмите кнопку «Выполнить», чтобы начать обучение.
Он автоматически обучается до количества вычислений.

Процедура (результат обучения)

7. Попробуйте модель со своим собственным видео

Перейдите на вкладку «Предварительный просмотр» в CreateML и перетащите видеофайл, чтобы опробовать созданную вами модель.

8. Получите модель CoreML

Перейдите на вкладку «Вывод» CreateML и нажмите «Получить», чтобы получить файл CoreML созданной модели.

Процедура (вывод на мобильном телефоне)

9. Свяжите файл CoreML с приложением

Чтобы использовать полученную модель CoreML в своем приложении, поместите файл CoreML в свое приложение и свяжите его.
В следующем процессе используется платформа Vision для получения характерных точек человеческого тела из канала камеры и запуска модели в Фреймворк CoreML.

10. Получайте характерные очки за позы человеческого тела.

Во-первых, Vision определяет характерные точки позы человеческого тела и передает характерные точки модели.
Получите ключевые точки человеческого тела с помощью VNDetectHumanBodyPoseRequest of Vision.

Выше приведены характерные точки человеческого тела для одного кадра.
Поскольку это анализ видео, характерные точки накапливаются для необходимых кадров и передаются модели.
Если вам нужно 60 кадров, расположите их следующим образом.

11. Преобразуйте характерные точки в мультимассив

После того, как вы наберете требуемый кадр человеческих характерных точек , создайте мультимассив для ввода модели, а затем передайте его модели .
Создайте мультимассив 3D-массива с помощью

[Особые точки * Достоверность координат XY * Требуемое количество кадров].

Используйте методы Vision для этого преобразования.
Это метод keypointsMultiArray, который преобразует VNRecognizedPointsObservation в множественный массив [Feature points * Достоверность координат XY * Требуемое количество кадров].

Когда человеческое тело не видно, задайте модели мультимассив со всеми значениями 0.
Как сделать нулевой мультимассив — ниже.

12. Введите данные в модель (выполнение логического вывода)

Полученный мультимассив для указанного кадра передается модели.
Используйте платформу CoreML.

Результат вывода для данного видео (массив характерных точек для требуемых кадров) возвращается в виде метки и достоверности.

Нмехамеха
Дополнительно (0,728015124797821)

13, история неудач

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

Кстати, AR-эффект Gif был создан другим методом. Распознавание скелета тела ARKit.
Я получил точки обеих рук с помощью ARKit и оценил, «насколько далеко руки от центра тела» и «находится ли поза спецприема на расстоянии обеих рук». .
Если у меня будет возможность, я хотел бы еще раз бросить вызов последовательному анализу поведения CreateML.

🐣

****

Заявка на работу:

[email protected]

Мы отправляем информацию, связанную с машинным обучением и дополненной реальностью.

Твиттер

Заявка на работу:

[email protected]