resetSequence

Сбросьте свойства последовательности видео и оптического потока для классификации потоковых видео

Описание

пример

i3dReset = resetSequence(i3d) сбрасывает последовательности видео и оптического потока для классификации. i3d классификатор в виде inflated3dVideoClassifier объект.

Примеры

свернуть все

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

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

Загрузите Классификатор Видео SlowFast, предварительно обученный на кинетике 400 наборов данных.

sf = slowFastVideoClassifier();

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

Задайте имя видеофайла.

videoFilename = "washingHands.avi";

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

reader = VideoReader(videoFilename);

Обновите видео последовательность классификатора с видеокадрами перед использованием classifySequence. Необходимое количество кадров задано значением 4-го элемента InputSize свойство видео классификатора.

sequenceLength = sf.InputSize(4);

Считайте видео последовательность, начинающую с первой системы координат.

startSequenceIndex = 1;
sequenceRange = [startSequenceIndex, startSequenceIndex + sequenceLength - 1];

Обновите видео последовательность классификатора с видеокадрами.

for ii = sequenceRange
    videoFrame = read(reader, ii);
    sf = updateSequence(sf,videoFrame);
end

Классифицируйте видео последовательность, обновленную до сих пор.

[label1, score1] = classifySequence(sf)
label1 = categorical
     washing hands 

score1 = single
    0.0031

Отобразите классифицированную метку.

player = vision.VideoPlayer('Name','Washing Hands');
for ii = sequenceRange    
    frame = read(reader,ii);
    % Resize the frame by 1.5 times for display
    frame = imresize(frame,1.5);
    frame = insertText(frame,[2,2], string(label1),'FontSize',18);
    step(player,frame);
end

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

Сбросьте видео последовательность видео классификатора, не создавая новый видео классификатор.

sf = resetSequence(sf);

Задайте другой видеофайл, чтобы классифицировать.

videoFilename = "vipmen.avi";

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

reader = VideoReader(videoFilename);

Считайте видео последовательность, начинающую с 131st структурируйте, где "shaking hands" действие начинается.

startSequenceIndex = 131;
sequenceRange = [startSequenceIndex, startSequenceIndex + sequenceLength - 1];

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

for ii = sequenceRange    
    videoFrame = read(reader,ii);
    sf = updateSequence(sf,frame);
end

[label2, score2] = classifySequence(sf)
label2 = categorical
     shaking hands 

score2 = single
    0.0039

Отобразите классифицированную метку.

player = vision.VideoPlayer('Name','Shaking Hands');
for ii = sequenceRange    
    frame = read(reader,ii);
    % Resize the frame by 4 times for display
    frame = imresize(frame, 4);
    frame = insertText(frame,[2,2], string(label2),'FontSize',18);
    step(player,frame);
end 

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

свернуть все

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

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

свернуть все

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

Введенный в R2021b