From 8a0aba7348e8b85e6bd966b7288cde934b694e44 Mon Sep 17 00:00:00 2001 From: Dmitry Klimenkov Date: Mon, 18 Jun 2018 15:17:58 +0300 Subject: [PATCH 1/2] speeding up data loading --- lipnet/lipreading/videos.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/lipnet/lipreading/videos.py b/lipnet/lipreading/videos.py index 48293d8..3730ce3 100755 --- a/lipnet/lipreading/videos.py +++ b/lipnet/lipreading/videos.py @@ -4,6 +4,7 @@ from scipy import ndimage from scipy.misc import imresize import skvideo.io +import cv2 import dlib from lipnet.lipreading.aligns import Align @@ -191,11 +192,30 @@ def get_frames_mouth(self, detector, predictor, frames): mouth_frames.append(mouth_crop_image) return mouth_frames - def get_video_frames(self, path): + def get_video_frames_skvideo(self, path): videogen = skvideo.io.vreader(path) + #print("aaaa") frames = np.array([frame for frame in videogen]) return frames + + def get_video_frames(self, path): + reader = cv2.VideoCapture(path) + + frames = [] + while True: + ret, frame = reader.read() + + if not ret: + break + else: + frames.append(frame[...,::-1]) + + return np.array(frames) + + + + def set_data(self, frames): data_frames = [] for frame in frames: From 5990b0a0a5331ccbc2c110dfcbbf1b08e1704d19 Mon Sep 17 00:00:00 2001 From: Dmitry Date: Wed, 27 Jun 2018 23:02:56 +0300 Subject: [PATCH 2/2] minor api changes --- lipnet/lipreading/videos.py | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/lipnet/lipreading/videos.py b/lipnet/lipreading/videos.py index 3730ce3..521a63a 100755 --- a/lipnet/lipreading/videos.py +++ b/lipnet/lipreading/videos.py @@ -4,7 +4,6 @@ from scipy import ndimage from scipy.misc import imresize import skvideo.io -import cv2 import dlib from lipnet.lipreading.aligns import Align @@ -117,8 +116,13 @@ def from_frames(self, path): self.handle_type(frames) return self - def from_video(self, path): - frames = self.get_video_frames(path) + def from_video(self, path, use_opencv=False): + if use_opencv: + import cv2 + frames = self.get_video_frames_cv2(path) + else: + frames = self.get_video_frames(path) + self.handle_type(frames) return self @@ -192,14 +196,12 @@ def get_frames_mouth(self, detector, predictor, frames): mouth_frames.append(mouth_crop_image) return mouth_frames - def get_video_frames_skvideo(self, path): + def get_video_frames(self, path): videogen = skvideo.io.vreader(path) - #print("aaaa") frames = np.array([frame for frame in videogen]) return frames - - def get_video_frames(self, path): + def get_video_frames_cv2(self, path): reader = cv2.VideoCapture(path) frames = [] @@ -213,9 +215,6 @@ def get_video_frames(self, path): return np.array(frames) - - - def set_data(self, frames): data_frames = [] for frame in frames: