classifySequence

Классифицируйте последовательность видео и оптического потока

Описание

пример

label = classifySequence(i3d) классифицирует последовательность видео и оптического потока с помощью расширенного 3D видео классификатора (I3D) i3d. Функция возвращает label, скаляр, категориальный, который задает классификацию последовательности видео или оптического потока. label одно из значений Classes свойство видео объекта классификатора.

[label,score] = classifySequence(i3d) дополнительно возвращает классификационную оценку, сопоставленную с меткой. Счет представляет доверие предсказанной метки класса и содержит значения между 0 и 1.

[___] = classifySequence(i3d,ExecutionEnvironment=env) задает аппаратные ресурсы для выполнения классификатора в дополнение к любой комбинации аргументов от предыдущих синтаксисов, как одна из этих опций:

  • "auto" — Устанавливает среду выполнения на графический процессор, при наличии. В противном случае функция устанавливает его на центральный процессор.

  • "gpu" — Устанавливает среду выполнения на графический процессор. Использование графического процессора требует Parallel Computing Toolbox™ и CUDA® активированный NVIDIA® Графический процессор. Для получения информации о поддерживаемом вычислите возможности, смотрите Поддержку графического процессора Релизом (Parallel Computing Toolbox).

  • "cpu" — Устанавливает среду выполнения на центральный процессор.

Примеры

свернуть все

В этом примере показано, как классифицировать видео последовательности на видеофайл с помощью Классификатора Видео SlowFast, предварительно обученного на кинетике 400 видео наборов данных распознавания активности. Чтобы узнать больше, как обучить видео сеть классификатора для вашего набора данных, посмотрите Распознавание Жеста с помощью Видео и Глубокого обучения.

Загрузите классификатор видео SlowFast

sf = slowFastVideoClassifier();

Видеоплеер Setup и видео средство чтения

Задайте имя видеофайла к потоковым видеокадрам.

videoFilename = "pushup.mp4";

Создайте VideoReader, чтобы считать видео.

reader = VideoReader(videoFilename);

Setup видеоплеер.

player = vision.VideoPlayer;

Классифицируйте видео последовательности

Задайте, как часто классификатор должен быть применен к входящим видеокадрам.

classifyInterval = 10;

Значение 10 эффективности времени выполнения балансов против эффективности классификации. Увеличьте это значение, чтобы улучшать производительность во время выполнения за счет недостающих действий из видеофайла.

Получите длину последовательности Классификатора Видео SlowFast. Классифицируйте только после получения, по крайней мере, sequenceLength количество кадров из видеофайла.

sequenceLength = sf.InputSize(4);

Считайте видеокадры с помощью hasFrame и readFrame функции VideoReader. Используя updateSequence функционируйте обновляют последовательность видео классификатора. Используя classifySequence функция классифицирует обновленную последовательность.

numFrames = 0;
text = "";

while hasFrame(reader)
    frame = readFrame(reader);
    numFrames = numFrames + 1;

    % Update the sequence with the next video frame.
    sf = updateSequence(sf,frame);

    % Classify the sequence only at every classifyInterval number of frames.
    if mod(numFrames, classifyInterval) == 0 && numFrames >= sequenceLength
        [label,score] = classifySequence(sf);
        text = string(label) + "; " + num2str(score, "%0.2f");
    end
    frame = insertText(frame,[30,30],text,'FontSize',24);
    step(player,frame);
end

Входные параметры

свернуть все

Классификатор в виде inflated3dVideoClassifier объект.

Выходные аргументы

свернуть все

Классификация последовательности видео или оптического потока, возвращенной как категориальный скаляр.

Классификационная оценка сопоставлена с меткой, возвращенной как скалярное значение между 0 и 1. Счет представляет доверие предсказанной метки класса.

Введенный в R2021b