updateSequence

Обновите последовательность видео или оптического потока для классификации

Описание

пример

i3dUpdated = updateSequence(i3d,videoFrame) обновляет последовательность видео или оптического потока с видеокадром videoFrame, и выходные параметры обновленный расширенный 3D видео классификатор (I3D) i3d классификатор. Выход содержит обновленный объект классификатора.

Чтобы классифицировать обновленную последовательность, используйте classifySequence объектная функция.

Видео объект классификатора обеспечивает последовательность как очередь метода "первым пришел - первым вышел" (FIFO). InputSize свойство объекта классификатора задает количество кадров в очереди.

i3dUpdated = udpateSequence(i3d,videoFrame,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 объект.

Видеокадр для обновления классификатора в виде H-by-W-by-C числовой массив. H, W и C представляют высоту, ширину и количество каналов, соответственно. Количество каналов должно совпадать с количеством каналов, установленных InputSize свойство объекта классификатора.

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

свернуть все

Обновленный видео классификатор, возвращенный как inflated3dVideoClassifier объект.

Введенный в R2021b