diff --git a/.gitattributes b/.gitattributes index fb66b88..6c0c2c5 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,2 +1,4 @@ sample_data/**/*.mp4 filter=lfs diff=lfs merge=lfs -text sample_data/*/*.mp4 filter=lfs diff=lfs merge=lfs -text +nemcova_data/**/*.mp4 filter=lfs diff=lfs merge=lfs -text +nemcova_data/*/*.mp4 filter=lfs diff=lfs merge=lfs -text diff --git a/DataLoader/README.md b/DataLoader/README.md new file mode 100644 index 0000000..00a8529 --- /dev/null +++ b/DataLoader/README.md @@ -0,0 +1,18 @@ +# CoVital Pytorch Dataset and Dataloader + +In this folder there is the functionality to load videos from a folder following the structure described in [README](../sample_data/README.md). +A Dataset instance can be created by: +``` +dataset = Spo2Dataset(data_path) +``` +This will itearate the folders at data_path and load their videos and compute the mean and std for each channel per frame and load the ground truth as labels. It also allows to store metadata for each video. Once the dataset is created, it will contain only the mean and std. This process is slow as to preserve memory, it does it frame per frame. Feel free to modify it if you know ways to speed up the process without causing memory issues. Using torchvision.io.read_video ran out of memory in a 32 gb RAM computer. + +Once the dataset is ready, it can be fed to a DataLoader object. + +``` +dataloader = Spo2DataLoader(dataset, batch_size=4, collate_fn= Spo2DataLoader.collate_fn) +``` + +The output needs to be batched tensors, and therefore they have to share the same length. Since we have videos of different lengths, it pads the shorted ones to fit the length of the longest one in each frame. This may be an issue for models which require the same length for all batches, but it is convinient for RNN models. The real length of each video is accessible for each batch. Each batch returns three variables, videos_batch, labels_batch and videos_lengths. + +There are two versions, one using Threading, but the performance was very similar for both. \ No newline at end of file diff --git a/DataLoader/Spo2Dataset.py b/DataLoader/Spo2Dataset.py new file mode 100644 index 0000000..8d3cea1 --- /dev/null +++ b/DataLoader/Spo2Dataset.py @@ -0,0 +1,145 @@ +from torch.utils.data import Dataset, DataLoader +import cv2 +import numpy as np +import torchvision +import os +import json +import torch +from threading import Thread +from queue import Queue +import time + +#def timing(f): + #def wrap(*args): + #time1 = time.time() + #ret = f(*args) + #time2 = time.time() + #print('{:s} function took {:.3f} ms'.format(f.__name__, (time2-time1)*1000.0)) + + #return ret + #return wrap + + +class Spo2Dataset(Dataset): + """Spo2Dataset dataset. + It preprocess the data in order to create a Dataset with the average and std of each channel per frame. + The process is slow so it may take a while to create the Dataset when first initated. + """ + #@timing + def reshape(self, frame): + return frame.reshape(-1,3) + + #@timing + def mean_t(self, frame): + return np.array([frame.mean(axis=0), frame.std(axis=0)]).T + + #@timing + def transform(self,frame): + frame = self.reshape(frame) + ret = self.mean_t(frame) + return ret + + #@timing + def get_channels(self, frame, blue = 0, green = 1, red = 2): + blue_channel = frame[:,:,blue] + green_channel = frame[:,:,green] + red_channel = frame[:,:,red] + + return blue_channel, green_channel, red_channel + + #@timing + def mean_fast(self, blue_channel, green_channel, red_channel): + blue_channel_mean = blue_channel.mean() + green_channel_mean = green_channel.mean() + red_channel_mean = red_channel.mean() + + return blue_channel_mean, green_channel_mean, red_channel_mean + + #@timing + def std_fast(self, blue_channel, green_channel, red_channel): + blue_channel_mean = blue_channel.std() + green_channel_mean = green_channel.std() + red_channel_mean = red_channel.std() + + return blue_channel_mean, green_channel_mean, red_channel_mean + + #@timing + def transform_faster(self, frame): + blue_channel, green_channel, red_channel = self.get_channels(frame) + blue_channel_mean, green_channel_mean, red_channel_mean = self.mean_fast(blue_channel, green_channel, red_channel) + blue_channel_std, green_channel_std, red_channel_std = self.std_fast(blue_channel, green_channel, red_channel) + + return np.array([[blue_channel_mean, blue_channel_std], + [green_channel_mean, green_channel_std], + [red_channel_mean, red_channel_std]]) + + def __init__(self, data_path): + """ + Args: + data_path (string): Path to the data folder. + """ + self.data_path = data_path + self.video_folders = [folder for folder in os.listdir(data_path) if os.path.isdir(os.path.join(data_path,folder))] + self.videos_ppg = [] + self.labels_list = [] + self.meta_list = [] + + nb_video = 1 + for video in self.video_folders: + print("Loading video:", nb_video) + nb_video += 1 + ppg = [] + video_path = os.path.join(self.data_path, video) + video_file = os.path.join(video_path, [file_name for file_name in os.listdir(video_path) if file_name.endswith('mp4')][0]) + vidcap = cv2.VideoCapture(video_file) + meta = {} + meta['video_fps'] = vidcap.get(cv2.CAP_PROP_FPS) + (grabbed, frame) = vidcap.read() + #frame_count = 0 + while grabbed: + frame = self.transform_faster(frame) + ppg.append(frame) + (grabbed, frame) = vidcap.read() + #if(frame_count % 50 == 0): + #print("Frame:", frame_count) + #frame_count += 1 + with open(os.path.join(video_path, 'gt.json'), 'r') as f: + ground_truth = json.load(f) + + labels = torch.Tensor([int(ground_truth['SpO2']), int(ground_truth['HR'])]) + self.videos_ppg.append(torch.Tensor(np.array(ppg))) + self.meta_list.append(meta) + self.labels_list.append(labels) + def __len__(self): + return len(self.video_folders) + + def __getitem__(self, idx): + if torch.is_tensor(idx): + idx = idx.tolist() + return [self.videos_ppg[idx],self.meta_list[idx],self.labels_list[idx]] + +class Spo2DataLoader(DataLoader): + def collate_fn(batch): + videos_length = [element[0].shape[0] for element in batch] + max_length = max(videos_length) + videos_tensor = torch.FloatTensor(size=[len(videos_length),max_length, 3, 2]) + labels_tensor = torch.FloatTensor(size=[len(videos_length), 2]) + for i, element in enumerate(batch): + padding = max_length-videos_length[i] + if padding > 0: + padding = torch.zeros([padding,3,2]) + video = torch.cat([element[0], padding]) + else: + video = element[0] + labels = element[2] + videos_tensor[i] = video + labels_tensor[i] = element[2] + return videos_tensor, labels_tensor, torch.Tensor(videos_length) + +if __name__== "__main__": + dataset = Spo2Dataset('sample_data') + dataloader = Spo2DataLoader(dataset, batch_size=4, collate_fn= Spo2DataLoader.collate_fn) + for videos_batch, labels_batch, videos_lengths in dataloader: + print('Padded video (length, color, (mean,std)): ', videos_batch[0].shape) + print('Video original length: ', videos_lengths[0]) + print('Labels (so2, hr): ', labels_batch[0]) diff --git a/DataLoader/Spo2Dataset_thread.py b/DataLoader/Spo2Dataset_thread.py new file mode 100644 index 0000000..3bf02f5 --- /dev/null +++ b/DataLoader/Spo2Dataset_thread.py @@ -0,0 +1,117 @@ +from torch.utils.data import Dataset, DataLoader +import cv2 +import numpy as np +import torchvision +import os +import json +import torch +from threading import Thread +from queue import Queue +import time + +class VideoGet: + """ + Class that continuously gets frames from a VideoCapture object + with a dedicated thread. + It stores the frames in a list. + It adds new frames only when there is less than a 100 in the "stack" to help overcome memory issues. + """ + + def __init__(self, src=0, stack_size = 80): + self.stream = cv2.VideoCapture(src) + self.stack_size = stack_size + (self.grabbed, self.frame) = self.stream.read() + self.stopped = False + self.frames = [self.frame] + self.fps = self.stream.get(cv2.CAP_PROP_FPS) + def start(self): + Thread(target=self.get, args=()).start() + return self + + def get(self): + while not self.stopped: + if not self.grabbed: + self.stop() + elif len(self.frames) < self.stack_size: + (self.grabbed, self.frame) = self.stream.read() + self.frames.append(self.frame) + + def stop(self): + self.stopped = True + +class Spo2Dataset(Dataset): + """Spo2Dataset dataset. + It preprocess the data in order to create a Dataset with the average and std of each channel per frame. + The process is slow so it may take a while to create the Dataset when first initated. + """ + def transform(self,frame): + frame = frame.reshape(len(frame),-1,3) + return np.array([frame.mean(axis=1), frame.std(axis=1)]).reshape(len(frame),3,2) + def __init__(self, data_path): + """ + Args: + data_path (string): Path to the data folder. + """ + self.data_path = data_path + self.video_folders = [folder for folder in os.listdir(data_path) if os.path.isdir(os.path.join(data_path,folder))] + self.videos_ppg = [] + self.labels_list = [] + self.meta_list = [] + + for video in self.video_folders: + ppg = [] + video_path = os.path.join(self.data_path, video) + video_file = os.path.join(video_path, [file_name for file_name in os.listdir(video_path) if file_name.endswith('mp4')][0]) + vidcap = VideoGet(video_file).start() + meta = {} + meta['video_fps'] = vidcap.fps + while True: + if vidcap.stopped and len(vidcap.frames)==1: + vidcap.stop() + break + if len(vidcap.frames)>1: + frames = np.array(vidcap.frames[:-1]) + vidcap.frames = vidcap.frames[len(frames):] + frame = self.transform(frames) + ppg.extend(frame) + + with open(os.path.join(video_path, 'gt.json'), 'r') as f: + ground_truth = json.load(f) + + labels = torch.Tensor([int(ground_truth['SpO2']), int(ground_truth['HR'])]) + self.videos_ppg.append(torch.Tensor(np.array(ppg))) + self.meta_list.append(meta) + self.labels_list.append(labels) + def __len__(self): + return len(self.video_folders) + + def __getitem__(self, idx): + if torch.is_tensor(idx): + idx = idx.tolist() + return [self.videos_ppg[idx],self.meta_list[idx],self.labels_list[idx]] + +class Spo2DataLoader(DataLoader): + def collate_fn(batch): + videos_length = [element[0].shape[0] for element in batch] + max_length = max(videos_length) + videos_tensor = torch.FloatTensor(size=[len(videos_length),max_length, 3, 2]) + labels_tensor = torch.FloatTensor(size=[len(videos_length), 2]) + for i, element in enumerate(batch): + padding = max_length-videos_length[i] + if padding > 0: + padding = torch.zeros([padding,3,2]) + video = torch.cat([element[0], padding]) + else: + video = element[0] + labels = element[2] + videos_tensor[i] = video + labels_tensor[i] = element[2] + return videos_tensor, labels_tensor, torch.Tensor(videos_length) + +if __name__== "__main__": + dataset = Spo2Dataset('sample_data') + dataloader = Spo2DataLoader(dataset, batch_size=4, collate_fn= Spo2DataLoader.collate_fn) + for videos_batch, labels_batch, videos_lengths in dataloader: + print('Padded video (length, color, (mean,std)): ', videos_batch[0].shape) + print('Video original length: ', videos_lengths[0]) + print('Labels (so2, hr): ', labels_batch[0]) \ No newline at end of file diff --git a/healthwatcher/main.py b/healthwatcher/main.py index 0af1b6a..c3833fd 100644 --- a/healthwatcher/main.py +++ b/healthwatcher/main.py @@ -44,5 +44,3 @@ plt.plot(x, spo2_smooth) plt.show() - - diff --git a/nemcova_data/20200329165117/data_08b.mp4 b/nemcova_data/20200329165117/data_08b.mp4 new file mode 100644 index 0000000..4e5e77d --- /dev/null +++ b/nemcova_data/20200329165117/data_08b.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d06fd4359a4c2a755edad6b68b61baeea9f5b36e651d72d6e6f9510072e1f93e +size 275921 diff --git a/nemcova_data/20200329165117/gt.json b/nemcova_data/20200329165117/gt.json new file mode 100644 index 0000000..2abd57f --- /dev/null +++ b/nemcova_data/20200329165117/gt.json @@ -0,0 +1 @@ +{"SpO2": 96, "HR": 68, "VideoFilename": "data_08b.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329165117/phone.json b/nemcova_data/20200329165117/phone.json new file mode 100644 index 0000000..e9779f7 --- /dev/null +++ b/nemcova_data/20200329165117/phone.json @@ -0,0 +1 @@ +{"PhoneModel": "Vibe S1", "PhoneMake": "Lenovo"} \ No newline at end of file diff --git a/nemcova_data/20200329165118/data_05b.mp4 b/nemcova_data/20200329165118/data_05b.mp4 new file mode 100644 index 0000000..9cdee75 --- /dev/null +++ b/nemcova_data/20200329165118/data_05b.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:993da0d818ae4bf9a53fc0256ed0946ecd220082aae10fb911ab3c6499930480 +size 187326 diff --git a/nemcova_data/20200329165118/gt.json b/nemcova_data/20200329165118/gt.json new file mode 100644 index 0000000..c5053ea --- /dev/null +++ b/nemcova_data/20200329165118/gt.json @@ -0,0 +1 @@ +{"SpO2": 98, "HR": 59, "VideoFilename": "data_05b.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329165118/phone.json b/nemcova_data/20200329165118/phone.json new file mode 100644 index 0000000..e9779f7 --- /dev/null +++ b/nemcova_data/20200329165118/phone.json @@ -0,0 +1 @@ +{"PhoneModel": "Vibe S1", "PhoneMake": "Lenovo"} \ No newline at end of file diff --git a/nemcova_data/20200329165119/data_07a.mp4 b/nemcova_data/20200329165119/data_07a.mp4 new file mode 100644 index 0000000..7c4437d --- /dev/null +++ b/nemcova_data/20200329165119/data_07a.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b9a2949a327ce3e301e42ef97e68b9cecf4290b237c6e257c4a0f397c7755773 +size 363237 diff --git a/nemcova_data/20200329165119/gt.json b/nemcova_data/20200329165119/gt.json new file mode 100644 index 0000000..d7b2b04 --- /dev/null +++ b/nemcova_data/20200329165119/gt.json @@ -0,0 +1 @@ +{"SpO2": 96, "HR": 67, "VideoFilename": "data_07a.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329165119/phone.json b/nemcova_data/20200329165119/phone.json new file mode 100644 index 0000000..ae1f4cb --- /dev/null +++ b/nemcova_data/20200329165119/phone.json @@ -0,0 +1 @@ +{"PhoneModel": "S750", "PhoneMake": "Lenovo"} \ No newline at end of file diff --git a/nemcova_data/20200329165120/data_03b.mp4 b/nemcova_data/20200329165120/data_03b.mp4 new file mode 100644 index 0000000..d8aa31e --- /dev/null +++ b/nemcova_data/20200329165120/data_03b.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cf2d6be2e4fc8ba713cb32534cadf8817e9e4e732b759fd9b02ca8da1ad0b073 +size 101765 diff --git a/nemcova_data/20200329165120/gt.json b/nemcova_data/20200329165120/gt.json new file mode 100644 index 0000000..0a89e7c --- /dev/null +++ b/nemcova_data/20200329165120/gt.json @@ -0,0 +1 @@ +{"SpO2": 99, "HR": 53, "VideoFilename": "data_03b.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329165120/phone.json b/nemcova_data/20200329165120/phone.json new file mode 100644 index 0000000..e9779f7 --- /dev/null +++ b/nemcova_data/20200329165120/phone.json @@ -0,0 +1 @@ +{"PhoneModel": "Vibe S1", "PhoneMake": "Lenovo"} \ No newline at end of file diff --git a/nemcova_data/20200329165121/data_09b.mp4 b/nemcova_data/20200329165121/data_09b.mp4 new file mode 100644 index 0000000..a2c39c4 --- /dev/null +++ b/nemcova_data/20200329165121/data_09b.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45b47e91e4450c6cbf74b1a53266cfa01418855d5dbf17d0d248f16444fa5301 +size 202123 diff --git a/nemcova_data/20200329165121/gt.json b/nemcova_data/20200329165121/gt.json new file mode 100644 index 0000000..80de8bc --- /dev/null +++ b/nemcova_data/20200329165121/gt.json @@ -0,0 +1 @@ +{"SpO2": 94, "HR": 69, "VideoFilename": "data_09b.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329165121/phone.json b/nemcova_data/20200329165121/phone.json new file mode 100644 index 0000000..e9779f7 --- /dev/null +++ b/nemcova_data/20200329165121/phone.json @@ -0,0 +1 @@ +{"PhoneModel": "Vibe S1", "PhoneMake": "Lenovo"} \ No newline at end of file diff --git a/nemcova_data/20200329165122/data_09a.mp4 b/nemcova_data/20200329165122/data_09a.mp4 new file mode 100644 index 0000000..5eeb61f --- /dev/null +++ b/nemcova_data/20200329165122/data_09a.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:94d841d4ef5363e2a1c44fbdf8cab4b54c308a69f8a4f310ce111c971ee81625 +size 192503 diff --git a/nemcova_data/20200329165122/gt.json b/nemcova_data/20200329165122/gt.json new file mode 100644 index 0000000..63b2bf7 --- /dev/null +++ b/nemcova_data/20200329165122/gt.json @@ -0,0 +1 @@ +{"SpO2": 94, "HR": 72, "VideoFilename": "data_09a.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329165122/phone.json b/nemcova_data/20200329165122/phone.json new file mode 100644 index 0000000..1796eed --- /dev/null +++ b/nemcova_data/20200329165122/phone.json @@ -0,0 +1 @@ +{"PhoneModel": "Galaxy A3", "PhoneMake": "Samsung"} \ No newline at end of file diff --git a/nemcova_data/20200329165123/data_04b.mp4 b/nemcova_data/20200329165123/data_04b.mp4 new file mode 100644 index 0000000..79fcb59 --- /dev/null +++ b/nemcova_data/20200329165123/data_04b.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:58b3a92cf4cc7447df1f18bcbb52249b74df690f55787df82e95fb3eea5bafa6 +size 302076 diff --git a/nemcova_data/20200329165123/gt.json b/nemcova_data/20200329165123/gt.json new file mode 100644 index 0000000..de556f7 --- /dev/null +++ b/nemcova_data/20200329165123/gt.json @@ -0,0 +1 @@ +{"SpO2": 98, "HR": 93, "VideoFilename": "data_04b.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329165123/phone.json b/nemcova_data/20200329165123/phone.json new file mode 100644 index 0000000..e9779f7 --- /dev/null +++ b/nemcova_data/20200329165123/phone.json @@ -0,0 +1 @@ +{"PhoneModel": "Vibe S1", "PhoneMake": "Lenovo"} \ No newline at end of file diff --git a/nemcova_data/20200329165124/data_10b.mp4 b/nemcova_data/20200329165124/data_10b.mp4 new file mode 100644 index 0000000..f25a13b --- /dev/null +++ b/nemcova_data/20200329165124/data_10b.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:34bde6a4e1d12f74da1a0479c035b7f8c425ec45216ed587820a3124564e2170 +size 198755 diff --git a/nemcova_data/20200329165124/gt.json b/nemcova_data/20200329165124/gt.json new file mode 100644 index 0000000..a07eefe --- /dev/null +++ b/nemcova_data/20200329165124/gt.json @@ -0,0 +1 @@ +{"SpO2": 97, "HR": 82, "VideoFilename": "data_10b.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329165124/phone.json b/nemcova_data/20200329165124/phone.json new file mode 100644 index 0000000..e9779f7 --- /dev/null +++ b/nemcova_data/20200329165124/phone.json @@ -0,0 +1 @@ +{"PhoneModel": "Vibe S1", "PhoneMake": "Lenovo"} \ No newline at end of file diff --git a/nemcova_data/20200329165125/data_15.mp4 b/nemcova_data/20200329165125/data_15.mp4 new file mode 100644 index 0000000..57f1e1b --- /dev/null +++ b/nemcova_data/20200329165125/data_15.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12533de8d6ae966971181ba2a2c8a2f6defb255fec38416c41f73b8762a708a9 +size 2175133 diff --git a/nemcova_data/20200329165125/gt.json b/nemcova_data/20200329165125/gt.json new file mode 100644 index 0000000..6867551 --- /dev/null +++ b/nemcova_data/20200329165125/gt.json @@ -0,0 +1 @@ +{"SpO2": "Unkown", "HR": 75, "VideoFilename": "data_15.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329165126/data_01a.mp4 b/nemcova_data/20200329165126/data_01a.mp4 new file mode 100644 index 0000000..6e3666c --- /dev/null +++ b/nemcova_data/20200329165126/data_01a.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3a86b5c449b77f9bc1141403cde77b0080593229880dd727de749e4441df29f +size 523220 diff --git a/nemcova_data/20200329165126/gt.json b/nemcova_data/20200329165126/gt.json new file mode 100644 index 0000000..9b502e5 --- /dev/null +++ b/nemcova_data/20200329165126/gt.json @@ -0,0 +1 @@ +{"SpO2": 97, "HR": 68, "VideoFilename": "data_01a.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329165126/phone.json b/nemcova_data/20200329165126/phone.json new file mode 100644 index 0000000..5380c0f --- /dev/null +++ b/nemcova_data/20200329165126/phone.json @@ -0,0 +1 @@ +{"PhoneModel": "iPhone SE", "PhoneMake": "Apple"} \ No newline at end of file diff --git a/nemcova_data/20200329165127/data_01b.mp4 b/nemcova_data/20200329165127/data_01b.mp4 new file mode 100644 index 0000000..e0f2b19 --- /dev/null +++ b/nemcova_data/20200329165127/data_01b.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8874647b240311db8ea599946dddd058c51d363b5f0fd799896e01959c986994 +size 472847 diff --git a/nemcova_data/20200329165127/gt.json b/nemcova_data/20200329165127/gt.json new file mode 100644 index 0000000..58ea6f5 --- /dev/null +++ b/nemcova_data/20200329165127/gt.json @@ -0,0 +1 @@ +{"SpO2": 97, "HR": 79, "VideoFilename": "data_01b.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329165127/phone.json b/nemcova_data/20200329165127/phone.json new file mode 100644 index 0000000..e9779f7 --- /dev/null +++ b/nemcova_data/20200329165127/phone.json @@ -0,0 +1 @@ +{"PhoneModel": "Vibe S1", "PhoneMake": "Lenovo"} \ No newline at end of file diff --git a/nemcova_data/20200329165128/data_03.mp4 b/nemcova_data/20200329165128/data_03.mp4 new file mode 100644 index 0000000..d955516 --- /dev/null +++ b/nemcova_data/20200329165128/data_03.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37c226a52cfc2916448887b27bf6958ed95098c64230580bddf443f95314ab98 +size 1889381 diff --git a/nemcova_data/20200329165128/gt.json b/nemcova_data/20200329165128/gt.json new file mode 100644 index 0000000..6ffe354 --- /dev/null +++ b/nemcova_data/20200329165128/gt.json @@ -0,0 +1 @@ +{"SpO2": "Unkown", "HR": 66, "VideoFilename": "data_03.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329165129/data_04a.mp4 b/nemcova_data/20200329165129/data_04a.mp4 new file mode 100644 index 0000000..1699835 --- /dev/null +++ b/nemcova_data/20200329165129/data_04a.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:218975879e439394232e946184c8c3178bd101c176daa608d53f37b386bff90e +size 205523 diff --git a/nemcova_data/20200329165129/gt.json b/nemcova_data/20200329165129/gt.json new file mode 100644 index 0000000..619959a --- /dev/null +++ b/nemcova_data/20200329165129/gt.json @@ -0,0 +1 @@ +{"SpO2": 97, "HR": 98, "VideoFilename": "data_04a.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329165129/phone.json b/nemcova_data/20200329165129/phone.json new file mode 100644 index 0000000..395f0ed --- /dev/null +++ b/nemcova_data/20200329165129/phone.json @@ -0,0 +1 @@ +{"PhoneModel": "Galaxy S4", "PhoneMake": "Samsung"} \ No newline at end of file diff --git a/nemcova_data/20200329165130/data_02b.mp4 b/nemcova_data/20200329165130/data_02b.mp4 new file mode 100644 index 0000000..d35021b --- /dev/null +++ b/nemcova_data/20200329165130/data_02b.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed76799cdbbe6bdea80accd1deef4da0f02687795e3d2c1c24ac4f10d639349c +size 371065 diff --git a/nemcova_data/20200329165130/gt.json b/nemcova_data/20200329165130/gt.json new file mode 100644 index 0000000..e017044 --- /dev/null +++ b/nemcova_data/20200329165130/gt.json @@ -0,0 +1 @@ +{"SpO2": 97, "HR": 76, "VideoFilename": "data_02b.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329165130/phone.json b/nemcova_data/20200329165130/phone.json new file mode 100644 index 0000000..e9779f7 --- /dev/null +++ b/nemcova_data/20200329165130/phone.json @@ -0,0 +1 @@ +{"PhoneModel": "Vibe S1", "PhoneMake": "Lenovo"} \ No newline at end of file diff --git a/nemcova_data/20200329165131/data_06.mp4 b/nemcova_data/20200329165131/data_06.mp4 new file mode 100644 index 0000000..4e7d3a7 --- /dev/null +++ b/nemcova_data/20200329165131/data_06.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:51085d79661b06289ba287508cfe7f47d465dc7be9851b8723e833855b9b981a +size 2387709 diff --git a/nemcova_data/20200329165131/gt.json b/nemcova_data/20200329165131/gt.json new file mode 100644 index 0000000..be11b08 --- /dev/null +++ b/nemcova_data/20200329165131/gt.json @@ -0,0 +1 @@ +{"SpO2": "Unkown", "HR": 65, "VideoFilename": "data_06.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329165132/data_05a.mp4 b/nemcova_data/20200329165132/data_05a.mp4 new file mode 100644 index 0000000..7eabff5 --- /dev/null +++ b/nemcova_data/20200329165132/data_05a.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f4be0432dce88670e7268ca6885919fa7e67220620507d7dae7160461de9009 +size 335316 diff --git a/nemcova_data/20200329165132/gt.json b/nemcova_data/20200329165132/gt.json new file mode 100644 index 0000000..c654336 --- /dev/null +++ b/nemcova_data/20200329165132/gt.json @@ -0,0 +1 @@ +{"SpO2": 98, "HR": 59, "VideoFilename": "data_05a.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329165132/phone.json b/nemcova_data/20200329165132/phone.json new file mode 100644 index 0000000..75b465f --- /dev/null +++ b/nemcova_data/20200329165132/phone.json @@ -0,0 +1 @@ +{"PhoneModel": "Galaxy J5", "PhoneMake": "Samsung"} \ No newline at end of file diff --git a/nemcova_data/20200329165133/data_07b.mp4 b/nemcova_data/20200329165133/data_07b.mp4 new file mode 100644 index 0000000..50ac52f --- /dev/null +++ b/nemcova_data/20200329165133/data_07b.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6812eaf53563b32a9260502e1d6f2354297286482d8b3226180363ea6803c69e +size 179445 diff --git a/nemcova_data/20200329165133/gt.json b/nemcova_data/20200329165133/gt.json new file mode 100644 index 0000000..8974b0d --- /dev/null +++ b/nemcova_data/20200329165133/gt.json @@ -0,0 +1 @@ +{"SpO2": 96, "HR": 69, "VideoFilename": "data_07b.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329165133/phone.json b/nemcova_data/20200329165133/phone.json new file mode 100644 index 0000000..e9779f7 --- /dev/null +++ b/nemcova_data/20200329165133/phone.json @@ -0,0 +1 @@ +{"PhoneModel": "Vibe S1", "PhoneMake": "Lenovo"} \ No newline at end of file diff --git a/nemcova_data/20200329165134/data_06b.mp4 b/nemcova_data/20200329165134/data_06b.mp4 new file mode 100644 index 0000000..c5fb735 --- /dev/null +++ b/nemcova_data/20200329165134/data_06b.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:099d383bf6c614587bda5153c182df231aa6ed73e1bac2e8e3aed56d62742501 +size 316575 diff --git a/nemcova_data/20200329165134/gt.json b/nemcova_data/20200329165134/gt.json new file mode 100644 index 0000000..0ca634c --- /dev/null +++ b/nemcova_data/20200329165134/gt.json @@ -0,0 +1 @@ +{"SpO2": 96, "HR": 67, "VideoFilename": "data_06b.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329165134/phone.json b/nemcova_data/20200329165134/phone.json new file mode 100644 index 0000000..e9779f7 --- /dev/null +++ b/nemcova_data/20200329165134/phone.json @@ -0,0 +1 @@ +{"PhoneModel": "Vibe S1", "PhoneMake": "Lenovo"} \ No newline at end of file diff --git a/nemcova_data/20200329165135/data_10a.mp4 b/nemcova_data/20200329165135/data_10a.mp4 new file mode 100644 index 0000000..60fd08d --- /dev/null +++ b/nemcova_data/20200329165135/data_10a.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f0d289b929054c35eb0f4d6a8f1b2e4d5070e903498728eadb021dfabb2afbc +size 253209 diff --git a/nemcova_data/20200329165135/gt.json b/nemcova_data/20200329165135/gt.json new file mode 100644 index 0000000..aadc23d --- /dev/null +++ b/nemcova_data/20200329165135/gt.json @@ -0,0 +1 @@ +{"SpO2": 97, "HR": 84, "VideoFilename": "data_10a.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329165135/phone.json b/nemcova_data/20200329165135/phone.json new file mode 100644 index 0000000..133715e --- /dev/null +++ b/nemcova_data/20200329165135/phone.json @@ -0,0 +1 @@ +{"PhoneModel": "iPhone 6S", "PhoneMake": "Apple"} \ No newline at end of file diff --git a/nemcova_data/20200329165136/data_08a.mp4 b/nemcova_data/20200329165136/data_08a.mp4 new file mode 100644 index 0000000..130abf9 --- /dev/null +++ b/nemcova_data/20200329165136/data_08a.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fdc67d1b3b2f0dd52054119fea413ebbbba989f7c36fa8723fda2a8fa5b35d02 +size 333385 diff --git a/nemcova_data/20200329165136/gt.json b/nemcova_data/20200329165136/gt.json new file mode 100644 index 0000000..d2ca296 --- /dev/null +++ b/nemcova_data/20200329165136/gt.json @@ -0,0 +1 @@ +{"SpO2": 96, "HR": 65, "VideoFilename": "data_08a.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329165136/phone.json b/nemcova_data/20200329165136/phone.json new file mode 100644 index 0000000..5cf1484 --- /dev/null +++ b/nemcova_data/20200329165136/phone.json @@ -0,0 +1 @@ +{"PhoneModel": "P10", "PhoneMake": "Huawei"} \ No newline at end of file diff --git a/nemcova_data/20200329165137/data_03a.mp4 b/nemcova_data/20200329165137/data_03a.mp4 new file mode 100644 index 0000000..d70c78b --- /dev/null +++ b/nemcova_data/20200329165137/data_03a.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be653860409e1000b75d6c1b7b0c4534b8decd0aa0a69a22913e35e3a705c02a +size 347472 diff --git a/nemcova_data/20200329165137/gt.json b/nemcova_data/20200329165137/gt.json new file mode 100644 index 0000000..d6840e1 --- /dev/null +++ b/nemcova_data/20200329165137/gt.json @@ -0,0 +1 @@ +{"SpO2": 99, "HR": 55, "VideoFilename": "data_03a.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329165137/phone.json b/nemcova_data/20200329165137/phone.json new file mode 100644 index 0000000..c221e88 --- /dev/null +++ b/nemcova_data/20200329165137/phone.json @@ -0,0 +1 @@ +{"PhoneModel": "Redmi 3", "PhoneMake": "Xiaomi"} \ No newline at end of file diff --git a/nemcova_data/20200329165138/data_06a.mp4 b/nemcova_data/20200329165138/data_06a.mp4 new file mode 100644 index 0000000..7eabff5 --- /dev/null +++ b/nemcova_data/20200329165138/data_06a.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f4be0432dce88670e7268ca6885919fa7e67220620507d7dae7160461de9009 +size 335316 diff --git a/nemcova_data/20200329165138/gt.json b/nemcova_data/20200329165138/gt.json new file mode 100644 index 0000000..e0b07f2 --- /dev/null +++ b/nemcova_data/20200329165138/gt.json @@ -0,0 +1 @@ +{"SpO2": 96, "HR": 59, "VideoFilename": "data_06a.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329165138/phone.json b/nemcova_data/20200329165138/phone.json new file mode 100644 index 0000000..abb5a49 --- /dev/null +++ b/nemcova_data/20200329165138/phone.json @@ -0,0 +1 @@ +{"PhoneModel": "Vibe shot", "PhoneMake": "Lenovo"} \ No newline at end of file diff --git a/nemcova_data/20200329165139/data_02a.mp4 b/nemcova_data/20200329165139/data_02a.mp4 new file mode 100644 index 0000000..a767858 --- /dev/null +++ b/nemcova_data/20200329165139/data_02a.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd3a51e2e880dccf925526661e42646e72a161e84a4f030796c3b3fd023d44f4 +size 321123 diff --git a/nemcova_data/20200329165139/gt.json b/nemcova_data/20200329165139/gt.json new file mode 100644 index 0000000..42ec85b --- /dev/null +++ b/nemcova_data/20200329165139/gt.json @@ -0,0 +1 @@ +{"SpO2": 97, "HR": 80, "VideoFilename": "data_02a.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329165139/phone.json b/nemcova_data/20200329165139/phone.json new file mode 100644 index 0000000..0d8d05e --- /dev/null +++ b/nemcova_data/20200329165139/phone.json @@ -0,0 +1 @@ +{"PhoneModel": "S60", "PhoneMake": "Lenovo"} \ No newline at end of file diff --git a/nemcova_data/20200329165140/data_14.mp4 b/nemcova_data/20200329165140/data_14.mp4 new file mode 100644 index 0000000..611e292 --- /dev/null +++ b/nemcova_data/20200329165140/data_14.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:315174e5f8120c9cd273bed3342e7629c0d1f01873aa6f6774c7c7897360c9f7 +size 1665125 diff --git a/nemcova_data/20200329165140/gt.json b/nemcova_data/20200329165140/gt.json new file mode 100644 index 0000000..42ea8ae --- /dev/null +++ b/nemcova_data/20200329165140/gt.json @@ -0,0 +1 @@ +{"SpO2": "Unkown", "HR": 96, "VideoFilename": "data_14.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329165141/data_11.mp4 b/nemcova_data/20200329165141/data_11.mp4 new file mode 100644 index 0000000..536e895 --- /dev/null +++ b/nemcova_data/20200329165141/data_11.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12599669af146b9487723e29de3bdcb626048e2bb083c8d44a42d7230ce26e2a +size 2011897 diff --git a/nemcova_data/20200329165141/gt.json b/nemcova_data/20200329165141/gt.json new file mode 100644 index 0000000..60f06f8 --- /dev/null +++ b/nemcova_data/20200329165141/gt.json @@ -0,0 +1 @@ +{"SpO2": "Unkown", "HR": 88, "VideoFilename": "data_11.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329165142/data_08.mp4 b/nemcova_data/20200329165142/data_08.mp4 new file mode 100644 index 0000000..9571295 --- /dev/null +++ b/nemcova_data/20200329165142/data_08.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46fa7c04ee223b8d1ebcffc23252db290e445ab039f91de9836e372252a2dbf1 +size 3022067 diff --git a/nemcova_data/20200329165142/gt.json b/nemcova_data/20200329165142/gt.json new file mode 100644 index 0000000..377165b --- /dev/null +++ b/nemcova_data/20200329165142/gt.json @@ -0,0 +1 @@ +{"SpO2": "Unkown", "HR": 89, "VideoFilename": "data_08.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329171126/S87T78.mp4 b/nemcova_data/20200329171126/S87T78.mp4 new file mode 100644 index 0000000..ee969b8 --- /dev/null +++ b/nemcova_data/20200329171126/S87T78.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7dee5b43cb52ac473968b4a26723758a94e4ff02ebbc028a6d58c6b6744cf831 +size 34336356 diff --git a/nemcova_data/20200329171126/gt.json b/nemcova_data/20200329171126/gt.json new file mode 100644 index 0000000..ada9230 --- /dev/null +++ b/nemcova_data/20200329171126/gt.json @@ -0,0 +1 @@ +{"SpO2": "87", "HR": "78", "VideoFilename": "S87T78.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329171127/S98T89.mp4 b/nemcova_data/20200329171127/S98T89.mp4 new file mode 100644 index 0000000..f60ceaf --- /dev/null +++ b/nemcova_data/20200329171127/S98T89.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eca2094b6d6fb6e0cfe82b32bcd803342121126d7f5a32f176b4a9822e7836bf +size 12631754 diff --git a/nemcova_data/20200329171127/gt.json b/nemcova_data/20200329171127/gt.json new file mode 100644 index 0000000..546792e --- /dev/null +++ b/nemcova_data/20200329171127/gt.json @@ -0,0 +1 @@ +{"SpO2": "98", "HR": "89", "VideoFilename": "S98T89.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329171207/S97T100.mp4 b/nemcova_data/20200329171207/S97T100.mp4 new file mode 100644 index 0000000..0dbf7e4 --- /dev/null +++ b/nemcova_data/20200329171207/S97T100.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:94064470be222f84efa7e149099cdecc7bc3b43fa6ee267e6f8a93257ef8227a +size 20291939 diff --git a/nemcova_data/20200329171207/gt.json b/nemcova_data/20200329171207/gt.json new file mode 100644 index 0000000..cd58a8a --- /dev/null +++ b/nemcova_data/20200329171207/gt.json @@ -0,0 +1 @@ +{"SpO2": "97", "HR": "100", "VideoFilename": "S97T100.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329171208/S99T94.mp4 b/nemcova_data/20200329171208/S99T94.mp4 new file mode 100644 index 0000000..544a251 --- /dev/null +++ b/nemcova_data/20200329171208/S99T94.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f7f833a83501053fe10660df00638e654f163751c2b435bb24a292635f3f7b6 +size 15703452 diff --git a/nemcova_data/20200329171208/gt.json b/nemcova_data/20200329171208/gt.json new file mode 100644 index 0000000..ea6402b --- /dev/null +++ b/nemcova_data/20200329171208/gt.json @@ -0,0 +1 @@ +{"SpO2": "99", "HR": "94", "VideoFilename": "S99T94.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329171209/S98T72.mp4 b/nemcova_data/20200329171209/S98T72.mp4 new file mode 100644 index 0000000..1f7cc74 --- /dev/null +++ b/nemcova_data/20200329171209/S98T72.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:55b559ac172e9278572910de20b3304ff7571f2d8882b648022bb9e30f6cdeaa +size 16643621 diff --git a/nemcova_data/20200329171209/gt.json b/nemcova_data/20200329171209/gt.json new file mode 100644 index 0000000..3438490 --- /dev/null +++ b/nemcova_data/20200329171209/gt.json @@ -0,0 +1 @@ +{"SpO2": "98", "HR": "72", "VideoFilename": "S98T72.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329171210/S98T76.mp4 b/nemcova_data/20200329171210/S98T76.mp4 new file mode 100644 index 0000000..58046ac --- /dev/null +++ b/nemcova_data/20200329171210/S98T76.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3b8c9a08d3305bd755d80d74f26d6b82da9d4221837a416eca3b116dd26e28a1 +size 7238870 diff --git a/nemcova_data/20200329171210/gt.json b/nemcova_data/20200329171210/gt.json new file mode 100644 index 0000000..6c26912 --- /dev/null +++ b/nemcova_data/20200329171210/gt.json @@ -0,0 +1 @@ +{"SpO2": "98", "HR": "76", "VideoFilename": "S98T76.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329171211/S98T88.mp4 b/nemcova_data/20200329171211/S98T88.mp4 new file mode 100644 index 0000000..79ab86e --- /dev/null +++ b/nemcova_data/20200329171211/S98T88.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f1d3a7ba06835e089c88cc0703e6344801dc31d1800d2384eab1aa35322599f +size 10309729 diff --git a/nemcova_data/20200329171211/gt.json b/nemcova_data/20200329171211/gt.json new file mode 100644 index 0000000..34505cb --- /dev/null +++ b/nemcova_data/20200329171211/gt.json @@ -0,0 +1 @@ +{"SpO2": "98", "HR": "88", "VideoFilename": "S98T88.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329171212/S98T85.mp4 b/nemcova_data/20200329171212/S98T85.mp4 new file mode 100644 index 0000000..245713e --- /dev/null +++ b/nemcova_data/20200329171212/S98T85.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7073b87c7c37529ba92ebc8f880ea3f52fa2e60d943bebcec6395babe07bba0f +size 12715293 diff --git a/nemcova_data/20200329171212/gt.json b/nemcova_data/20200329171212/gt.json new file mode 100644 index 0000000..1e0e032 --- /dev/null +++ b/nemcova_data/20200329171212/gt.json @@ -0,0 +1 @@ +{"SpO2": "98", "HR": "85", "VideoFilename": "S98T85.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329171213/S99T90.mp4 b/nemcova_data/20200329171213/S99T90.mp4 new file mode 100644 index 0000000..ba426f0 --- /dev/null +++ b/nemcova_data/20200329171213/S99T90.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8080aa69ed78c38975b9aa7358824884e42abd5c453a72a6f5062e842f373416 +size 17894353 diff --git a/nemcova_data/20200329171213/gt.json b/nemcova_data/20200329171213/gt.json new file mode 100644 index 0000000..af59374 --- /dev/null +++ b/nemcova_data/20200329171213/gt.json @@ -0,0 +1 @@ +{"SpO2": "99", "HR": "90", "VideoFilename": "S99T90.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329171214/S98T87.mp4 b/nemcova_data/20200329171214/S98T87.mp4 new file mode 100644 index 0000000..52a565e --- /dev/null +++ b/nemcova_data/20200329171214/S98T87.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad4b91561330f2baebe3825d76ebb650351fb17454a4a5193b5cf28401d648f2 +size 11593506 diff --git a/nemcova_data/20200329171214/gt.json b/nemcova_data/20200329171214/gt.json new file mode 100644 index 0000000..3e63a91 --- /dev/null +++ b/nemcova_data/20200329171214/gt.json @@ -0,0 +1 @@ +{"SpO2": "98", "HR": "87", "VideoFilename": "S98T87.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329171215/S99T90B.mp4 b/nemcova_data/20200329171215/S99T90B.mp4 new file mode 100644 index 0000000..e6ebf52 --- /dev/null +++ b/nemcova_data/20200329171215/S99T90B.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e7d8447956bff861da74ad8994a5fbb3d34bb79b67ae9144326f35aeb80a83c +size 18244607 diff --git a/nemcova_data/20200329171215/gt.json b/nemcova_data/20200329171215/gt.json new file mode 100644 index 0000000..3858752 --- /dev/null +++ b/nemcova_data/20200329171215/gt.json @@ -0,0 +1 @@ +{"SpO2": "99", "HR": "90B", "VideoFilename": "S99T90B.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329171216/S98T81.mp4 b/nemcova_data/20200329171216/S98T81.mp4 new file mode 100644 index 0000000..f2359c0 --- /dev/null +++ b/nemcova_data/20200329171216/S98T81.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d9e215cdfa4869a38ab0b090e5ca06ce4f97b05795943a7011261d2e9f21e95d +size 9199369 diff --git a/nemcova_data/20200329171216/gt.json b/nemcova_data/20200329171216/gt.json new file mode 100644 index 0000000..0ccf503 --- /dev/null +++ b/nemcova_data/20200329171216/gt.json @@ -0,0 +1 @@ +{"SpO2": "98", "HR": "81", "VideoFilename": "S98T81.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329171217/S98T86.mp4 b/nemcova_data/20200329171217/S98T86.mp4 new file mode 100644 index 0000000..a734846 --- /dev/null +++ b/nemcova_data/20200329171217/S98T86.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c896fed4934e68d758a45f0738192affc99d702c58f419211e6f5dc2a743f613 +size 12612377 diff --git a/nemcova_data/20200329171217/gt.json b/nemcova_data/20200329171217/gt.json new file mode 100644 index 0000000..36d7677 --- /dev/null +++ b/nemcova_data/20200329171217/gt.json @@ -0,0 +1 @@ +{"SpO2": "98", "HR": "86", "VideoFilename": "S98T86.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329171218/S98T95.mp4 b/nemcova_data/20200329171218/S98T95.mp4 new file mode 100644 index 0000000..cef107f --- /dev/null +++ b/nemcova_data/20200329171218/S98T95.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ffafc80401ad1c6c084ff5e4601047fae7f9b7f87312aab42e7944812cac496 +size 10996820 diff --git a/nemcova_data/20200329171218/gt.json b/nemcova_data/20200329171218/gt.json new file mode 100644 index 0000000..7e9f444 --- /dev/null +++ b/nemcova_data/20200329171218/gt.json @@ -0,0 +1 @@ +{"SpO2": "98", "HR": "95", "VideoFilename": "S98T95.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329171219/S98T92.mp4 b/nemcova_data/20200329171219/S98T92.mp4 new file mode 100644 index 0000000..81fa956 --- /dev/null +++ b/nemcova_data/20200329171219/S98T92.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:969f4f4ea2f5e7598ded108e378d0fb6f26b4f36f13a7ecf2ccf1cfb5c678365 +size 20470059 diff --git a/nemcova_data/20200329171219/gt.json b/nemcova_data/20200329171219/gt.json new file mode 100644 index 0000000..a564302 --- /dev/null +++ b/nemcova_data/20200329171219/gt.json @@ -0,0 +1 @@ +{"SpO2": "98", "HR": "92", "VideoFilename": "S98T92.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329171220/S99T89.mp4 b/nemcova_data/20200329171220/S99T89.mp4 new file mode 100644 index 0000000..7d77979 --- /dev/null +++ b/nemcova_data/20200329171220/S99T89.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5c71fcf9510793d5e43114e43a7db87fd533b777dbc9169b38e9337fc63e0d7e +size 11689760 diff --git a/nemcova_data/20200329171220/gt.json b/nemcova_data/20200329171220/gt.json new file mode 100644 index 0000000..5e17532 --- /dev/null +++ b/nemcova_data/20200329171220/gt.json @@ -0,0 +1 @@ +{"SpO2": "99", "HR": "89", "VideoFilename": "S99T89.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329171221/S98T73.mp4 b/nemcova_data/20200329171221/S98T73.mp4 new file mode 100644 index 0000000..266f7f5 --- /dev/null +++ b/nemcova_data/20200329171221/S98T73.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91bed089c606e75e934c5df44902e2195f2910a82f7b99d88a5e434871f7362e +size 9054792 diff --git a/nemcova_data/20200329171221/gt.json b/nemcova_data/20200329171221/gt.json new file mode 100644 index 0000000..843e677 --- /dev/null +++ b/nemcova_data/20200329171221/gt.json @@ -0,0 +1 @@ +{"SpO2": "98", "HR": "73", "VideoFilename": "S98T73.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329171222/S98T86B.mp4 b/nemcova_data/20200329171222/S98T86B.mp4 new file mode 100644 index 0000000..b14b04d --- /dev/null +++ b/nemcova_data/20200329171222/S98T86B.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e344638ff04062d28b813a7a5d73b0722efe2ba50d454c1abefd64a68e84876 +size 18869709 diff --git a/nemcova_data/20200329171222/gt.json b/nemcova_data/20200329171222/gt.json new file mode 100644 index 0000000..5da2d45 --- /dev/null +++ b/nemcova_data/20200329171222/gt.json @@ -0,0 +1 @@ +{"SpO2": "98", "HR": "86B", "VideoFilename": "S98T86B.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329171223/S98T80.mp4 b/nemcova_data/20200329171223/S98T80.mp4 new file mode 100644 index 0000000..b1177c1 --- /dev/null +++ b/nemcova_data/20200329171223/S98T80.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d80035b56ca7460aa265bef730bfbef8689c95a8ef548f9c444f104ec7cc2aad +size 17667926 diff --git a/nemcova_data/20200329171223/gt.json b/nemcova_data/20200329171223/gt.json new file mode 100644 index 0000000..4a0654a --- /dev/null +++ b/nemcova_data/20200329171223/gt.json @@ -0,0 +1 @@ +{"SpO2": "98", "HR": "80", "VideoFilename": "S98T80.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329171224/S95T100.mp4 b/nemcova_data/20200329171224/S95T100.mp4 new file mode 100644 index 0000000..5c0c066 --- /dev/null +++ b/nemcova_data/20200329171224/S95T100.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05335d7953586eccbc91f68eda97a5ef57453d5ba1fe89bb0b2da8a5863a741c +size 20201871 diff --git a/nemcova_data/20200329171224/gt.json b/nemcova_data/20200329171224/gt.json new file mode 100644 index 0000000..3569173 --- /dev/null +++ b/nemcova_data/20200329171224/gt.json @@ -0,0 +1 @@ +{"SpO2": "95", "HR": "100", "VideoFilename": "S95T100.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329171225/S99T80.mp4 b/nemcova_data/20200329171225/S99T80.mp4 new file mode 100644 index 0000000..a48cdf5 --- /dev/null +++ b/nemcova_data/20200329171225/S99T80.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f5649064e2ffdc73d1f0130207de82370b150b3dc1acfe1c8e903f356ebdca9 +size 20808822 diff --git a/nemcova_data/20200329171225/gt.json b/nemcova_data/20200329171225/gt.json new file mode 100644 index 0000000..a2c1b40 --- /dev/null +++ b/nemcova_data/20200329171225/gt.json @@ -0,0 +1 @@ +{"SpO2": "99", "HR": "80", "VideoFilename": "S99T80.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329171226/S97T86.mp4 b/nemcova_data/20200329171226/S97T86.mp4 new file mode 100644 index 0000000..fb338d9 --- /dev/null +++ b/nemcova_data/20200329171226/S97T86.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7abd4b0b6aeb5b3ddc4d3a5bc209d8bc1a131f1bc8dbc5cfe5a03700b0506d64 +size 15723984 diff --git a/nemcova_data/20200329171226/gt.json b/nemcova_data/20200329171226/gt.json new file mode 100644 index 0000000..d33aafa --- /dev/null +++ b/nemcova_data/20200329171226/gt.json @@ -0,0 +1 @@ +{"SpO2": "97", "HR": "86", "VideoFilename": "S97T86.mp4"} \ No newline at end of file diff --git a/nemcova_data/20200329171227/S97T90.mp4 b/nemcova_data/20200329171227/S97T90.mp4 new file mode 100644 index 0000000..aa330ef --- /dev/null +++ b/nemcova_data/20200329171227/S97T90.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5d00213c31e718f609f77df5faf74a540fb4572839c016a2c65f238f981378d +size 10733800 diff --git a/nemcova_data/20200329171227/gt.json b/nemcova_data/20200329171227/gt.json new file mode 100644 index 0000000..b658ae1 --- /dev/null +++ b/nemcova_data/20200329171227/gt.json @@ -0,0 +1 @@ +{"SpO2": "97", "HR": "90", "VideoFilename": "S97T90.mp4"} \ No newline at end of file diff --git a/nemcova_data/README.md b/nemcova_data/README.md new file mode 100644 index 0000000..2352d66 --- /dev/null +++ b/nemcova_data/README.md @@ -0,0 +1,5 @@ +# CoVital Nemcova2020 data + +This directory contains the data from [Nemcova 2020](https://www.sciencedirect.com/science/article/abs/pii/S1746809420300847), and the data was obtained from [Figshare](https://figshare.com/articles/Monitoring_of_heart_rate_blood_oxygen_saturation_and_blood_pressure_using_smartphone/8198405) + +This folder follows the structure of sample_data and uses the same LFS approach. For more info go to its [README](../sample_data/README.md). diff --git a/wang_2017/utils.py b/wang_2017/utils.py index 6e65bd7..6a63b34 100644 --- a/wang_2017/utils.py +++ b/wang_2017/utils.py @@ -42,9 +42,6 @@ def getColorComponentsMean(frame, blue = 0, green = 1, red = 2, normalize = Fals return (blue_channel_mean, green_channel_mean, red_channel_mean) - - - def ppg(frames, timestamps): vps_green = list() vps_red = list()