predict

Вычислите видео предсказания классификатора

Описание

пример

dLYVideo = predict(i3d,dlXVideo) вычисляет предсказания видео классификатора. i3d задан как inflated3dVideoClassifier, r2plus1dVideoClassifier, или slowFastVideoClassifier объект классификатора. Используйте этот синтаксис, когда вы установите OpticalFlowMethod свойство классификатора возражает против "none".

[dLYVideo,stateVideo] = predict(i3d,dlXVideo) также возвращает обновленное видео сетевое состояние. Выход, stateVideo, содержит информацию между учебными итерациями, обеспеченными классификатором. Например, состояние операции нормализации партии.

[dLYVideo,dlYFlow] = predict(i3d,dlXVideo,dlXFlow) также возвращает предсказания оптического потока в классификатор для обучения. Используйте этот синтаксис, когда вы установите OpticalFlowMethod свойство классификатора возражает против "Farneback".

[dLYVideo,dlYFlow,stateVideo,stateFlow] = predict(i3d,dlXVideo,dlXFlow) также возвращает обновленную видео сеть и состояния сети оптического потока.

Примеры

свернуть все

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

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

sf = slowFastVideoClassifier;

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

videoFilename = "pushup.mp4";

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

reader = VideoReader(videoFilename);

Считайте необходимое количество видеокадров, соответствующих видео сети классификатора с начала видеофайла. Необходимое количество кадров задано значением 4-го элемента InputSize свойство видео классификатора.

sequenceLength = sf.InputSize(4);
sequenceRange = [1, sequenceLength];
videoFrames = read(reader,sequenceRange);

Измените размер видеокадров для предсказания. Необходимая высота и ширина заданы первыми двумя элементами InputSize свойство видео классификатора.

heightWidth = sf.InputSize(1:2);
resized = imresize(videoFrames,heightWidth);

Преобразуйте вход, чтобы ввести single.

resized = single(resized);

Перемасштабируйте вход между 0 и 1.

minValue = sf.InputNormalizationStatistics.Min;
maxValue = sf.InputNormalizationStatistics.Max;
minValue = reshape(minValue,1,1,3);
maxValue = reshape(maxValue,1,1,3);
resized = rescale(resized,0,1,InputMin=minValue,InputMax=maxValue);

Нормируйте видеоданные с помощью среднего и стандартного отклонения.

meanValue = sf.InputNormalizationStatistics.Mean;
stdValue = sf.InputNormalizationStatistics.StandardDeviation;
meanValue = reshape(meanValue,1,1,3);
stdValue = reshape(stdValue,1,1,3);
resized = resized - meanValue;
resized = resized./stdValue;

Преобразуйте вход в объект dlarray.

dlVideo = dlarray(resized,"SSCTB");
predictionScores = predict(sf,dlVideo);

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

[score,idx] = max(predictionScores);
label = sf.Classes(idx)
label = categorical
     push up 

Отобразите предсказанную метку класса и счет.

text = string(label) + "; " + num2str(score,"%0.2f");
frame = videoFrames(:,:,:,end);
frame = insertText(frame,[30,30],text,FontSize=24);

imshow(frame)

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

свернуть все

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

Ввод видео в виде H-by-W-by-C-by-T-by-B SSCTB отформатированный dlarray Объект (Deep Learning Toolbox), который соответствует вводу видео классификатора.

  • H Высота.

  • W Width.

  • C Количество каналов. Количество каналов должно быть равно значению каналов InputSize свойство объекта классификатора.

  • T NumberOfFrames . Количество кадров должно быть равно значению систем координат InputSize свойство объекта классификатора.

  • B Пакетный размер.

Вход видео и оптического потока в виде H-by-W-by-C-by-T-by-B SSCTB отформатированный dlarray Объект (Deep Learning Toolbox), который соответствует входу видео и оптического потока классификатора.

  • H Высота.

  • W Width.

  • C Количество каналов. Количество каналов должно быть равно значению каналов InputSize свойство объекта классификатора.

  • T NumberOfFrames . Количество кадров должно быть равно значению систем координат InputSize свойство объекта классификатора.

  • B Пакетный размер.

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

свернуть все

Активации видео сети, возвращенной как отформатированный dlarray Объект (Deep Learning Toolbox).

Обновленное видео сетевое состояние, возвращенное как таблица с тремя столбцами:

  • Layer — Имя слоя в виде строкового скаляра.

  • Parameter — Название параметра в виде строкового скаляра.

  • Value — Значение параметра в виде dlarray объект.

Сетевое состояние содержит информацию, которую помнит сеть между итерациями. Например, состояние LSTM и слоев нормализации партии.

Во время обучения или вывода, можно обновить сетевое состояние с помощью выхода forward и predict функции.

Активации сети оптического потока, возвращенной как отформатированный dlarray Объект (Deep Learning Toolbox).

Обновленное состояние сети оптического потока, возвращенное как таблица с тремя столбцами:

  • Layer — Имя слоя в виде строкового скаляра.

  • Parameter — Название параметра в виде строкового скаляра.

  • Value — Значение параметра в виде dlarray объект.

Сетевое состояние содержит информацию, которую помнит сеть между итерациями. Например, состояние LSTM и слоев нормализации партии.

Во время обучения или вывода, можно обновить сетевое состояние с помощью выхода forward и predict функции.

Введенный в R2021b