Skip to content
Snippets Groups Projects
Commit bb36b1e1 authored by Olegs NIKISINS's avatar Olegs NIKISINS
Browse files

Added video and frame subsampling options to VideoLRPadAlgorithm

parent 9f5e7433
No related branches found
No related tags found
1 merge request!12Added anomaly detection algos and unseen attack protocols for aggregated database
Pipeline #
...@@ -45,17 +45,39 @@ class VideoLRPadAlgorithm(Algorithm): ...@@ -45,17 +45,39 @@ class VideoLRPadAlgorithm(Algorithm):
``frame_level_scores_flag`` : :py:class:`bool` ``frame_level_scores_flag`` : :py:class:`bool`
Return scores for each frame individually if True. Otherwise, return a Return scores for each frame individually if True. Otherwise, return a
single score per video. Default: False. single score per video. Default: ``False``.
``subsample_train_data_flag`` : :py:class:`bool`
Uniformly subsample the training data if ``True``. Default: ``False``.
``subsampling_step`` : :py:class:`int`
Training data subsampling step, only valid is
``subsample_train_data_flag = True``. Default: 10 .
``subsample_videos_flag`` : :py:class:`bool`
Uniformly subsample the training videos if ``True``. Default: ``False``.
``video_subsampling_step`` : :py:class:`int`
Training videos subsampling step, only valid is
``subsample_videos_flag = True``. Default: 3 .
""" """
def __init__(self, def __init__(self,
C = 1, C = 1,
frame_level_scores_flag = False): frame_level_scores_flag = False,
subsample_train_data_flag = False,
subsampling_step = 10,
subsample_videos_flag = False,
video_subsampling_step = 3):
Algorithm.__init__(self, Algorithm.__init__(self,
C = C, C = C,
frame_level_scores_flag = frame_level_scores_flag, frame_level_scores_flag = frame_level_scores_flag,
subsample_train_data_flag = subsample_train_data_flag,
subsampling_step = subsampling_step,
subsample_videos_flag = subsample_videos_flag,
video_subsampling_step = video_subsampling_step,
performs_projection=True, performs_projection=True,
requires_projector_training=True) requires_projector_training=True)
...@@ -63,6 +85,14 @@ class VideoLRPadAlgorithm(Algorithm): ...@@ -63,6 +85,14 @@ class VideoLRPadAlgorithm(Algorithm):
self.frame_level_scores_flag = frame_level_scores_flag self.frame_level_scores_flag = frame_level_scores_flag
self.subsample_train_data_flag = subsample_train_data_flag
self.subsampling_step = subsampling_step
self.subsample_videos_flag = subsample_videos_flag
self.video_subsampling_step = video_subsampling_step
self.lr_machine = None # this argument will be updated with pretrained LR machine self.lr_machine = None # this argument will be updated with pretrained LR machine
self.features_mean = None # this argument will be updated with features mean self.features_mean = None # this argument will be updated with features mean
...@@ -316,6 +346,32 @@ class VideoLRPadAlgorithm(Algorithm): ...@@ -316,6 +346,32 @@ class VideoLRPadAlgorithm(Algorithm):
del f del f
#==========================================================================
def subsample_train_videos(self, training_features, step):
"""
Uniformly select subset of frmae containes from the input list
**Parameters:**
``training_features`` : [FrameContainer]
A list of FrameContainers
``step`` : :py:class:`int`
Data selection step.
**Returns:**
``training_features_subset`` : [FrameContainer]
A list with selected FrameContainers
"""
indexes = range(0, len(training_features), step)
training_features_subset = [training_features[x] for x in indexes]
return training_features_subset
#========================================================================== #==========================================================================
def train_projector(self, training_features, projector_file): def train_projector(self, training_features, projector_file):
""" """
...@@ -336,9 +392,31 @@ class VideoLRPadAlgorithm(Algorithm): ...@@ -336,9 +392,31 @@ class VideoLRPadAlgorithm(Algorithm):
""" """
# training_features[0] - training features for the REAL class. # training_features[0] - training features for the REAL class.
real = self.convert_list_of_frame_cont_to_array(training_features[0]) # output is array
# training_features[1] - training features for the ATTACK class. # training_features[1] - training features for the ATTACK class.
attack = self.convert_list_of_frame_cont_to_array(training_features[1]) # output is array
if self.subsample_videos_flag: # subsample videos of the real class
real = self.convert_list_of_frame_cont_to_array( self.subsample_train_videos(training_features[0], self.video_subsampling_step) ) # output is array
else:
real = self.convert_list_of_frame_cont_to_array(training_features[0]) # output is array
if self.subsample_train_data_flag:
real = real[range(0,len(real), self.subsampling_step), :]
if self.subsample_videos_flag: # subsample videos of the real class
attack = self.convert_list_of_frame_cont_to_array( self.subsample_train_videos(training_features[1], self.video_subsampling_step) ) # output is array
else:
attack = self.convert_list_of_frame_cont_to_array(training_features[1]) # output is array
if self.subsample_train_data_flag:
attack = attack[range(0,len(attack), self.subsampling_step), :]
# Train the LR machine and get normalizers: # Train the LR machine and get normalizers:
machine, features_mean, features_std = self.train_lr(real = real, machine, features_mean, features_std = self.train_lr(real = real,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment