Регрессия с использованием времени воспроизведения видео и наблюдаемого времени распознавания в видео - PullRequest
0 голосов
/ 23 февраля 2020

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

Я хочу использовать соотношение между наблюдаемым временем распознавания и временем воспроизведения видео, чтобы сделать точную оценку gameTime для каждого кадра в видео. Например, когда окно результатов не отображается (повторы, неточные OCR-результаты). Должно быть линейное соотношение между videoTime и gameTime, потому что одна секунда в видео также является одной секундой в матче.

Я знаю, что могу извлечь время воспроизведения видео с помощью следующее:

import cv2 
video = cv2.VideoCapture('crystal_palace-arsenal_trimmed_Trim.mp4')
mspf = 1000 / video.get(cv2.CAP_PROP_FPS)   

if __name__ == '__main__':
   counter = 0
   while True:
      ret, frame = video.read()
      if ret:
         counter += 1
         videoTime = counter * mspf

mspf - это миллисекунды на кадр и равно 33.33. Теперь очень просто определить videoTime.

Далее я собираюсь определить ocrTime, используя мой код. Например, на приведенном ниже рисунке показан следующий вывод:

enter image description here

00:25   

Итак, gametime изначально имеет вид mm:ss. Я переписываю gameTime в миллисекунды следующим образом:

def seconds_since(time):
   minutes = int(time.split(':')[0])
   seconds = int(time.split(':')[1])
   total_seconds = (minutes * 60) + seconds

   return total_seconds * 1000

В большинстве случаев это работает хорошо. Однако иногда мой код не дает правильного вывода, и ocrTime равно N/A.

Фрагмент вывода при запуске всего вместе выглядит следующим образом:

Frame: 4105, videoTime: 136834, gametime: N/A
Frame: 4115, videoTime: 137167, gametime: N/A
Frame: 4119, videoTime: 137300, gametime: 80000
Frame: 4121, videoTime: 137367, gametime: 80000
Frame: 4123, videoTime: 137434, gametime: 80000
Frame: 4125, videoTime: 137500, gametime: 80000
Frame: 4127, videoTime: 137567, gametime: 80000
Frame: 4129, videoTime: 137634, gametime: 80000
Frame: 4131, videoTime: 137700, gametime: 80000
Frame: 4133, videoTime: 137767, gametime: 80000
Frame: 4135, videoTime: 137834, gametime: 80000
Frame: 4137, videoTime: 137900, gametime: 80000
Frame: 4139, videoTime: 137967, gametime: 80000
Frame: 4141, videoTime: 138034, gametime: 80000
Frame: 4143, videoTime: 138100, gametime: 80000
Frame: 4145, videoTime: 138167, gametime: 80000
Frame: 4147, videoTime: 138234, gametime: 80000
Frame: 4149, videoTime: 138300, gametime: 80000
Frame: 4151, videoTime: 138367, gametime: 80000
Frame: 4153, videoTime: 138434, gametime: 80000
Frame: 4155, videoTime: 138500, gametime: 80000
Frame: 4157, videoTime: 138567, gametime: 80000
Frame: 4159, videoTime: 138634, gametime: 80000
Frame: 4161, videoTime: 138700, gametime: 80000
Frame: 4163, videoTime: 138767, gametime: 80000
Frame: 4165, videoTime: 138834, gametime: 80000
Frame: 4167, videoTime: 138900, gametime: 80000
Frame: 4169, videoTime: 138967, gametime: 80000
Frame: 4171, videoTime: 139034, gametime: 80000
Frame: 4173, videoTime: 139100, gametime: 80000
Frame: 4175, videoTime: 139167, gametime: 80000
Frame: 4177, videoTime: 139234, gametime: 81000
Frame: 4179, videoTime: 139300, gametime: 81000
Frame: 4181, videoTime: 139367, gametime: 81000
Frame: 4183, videoTime: 139434, gametime: 81000

Теперь я хочу запустить регрессию, чтобы найти перехват и коэффициент, и использовать только counter определить мои теоретические gameTime для каждого кадра. Однако существует наложение, поскольку несколько точек данных videoTime дают одинаковое значение gameTime. Поскольку каждая videoTime точка данных уникальна, в gameTime есть много дубликатов. Посоветуйте, пожалуйста, как мне преодолеть это препятствие?

Заранее спасибо,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...