99import multiprocessing as mp
1010import time
1111import pickle
12+ import numpy as np
1213
1314from utils .configloader import PATH_TO_CLASSIFIER , TIME_WINDOW , FRAMERATE
1415from experiments .custom .featureextraction import (
@@ -153,39 +154,53 @@ def example_feat_classifier_pool_run(input_q: mp.Queue, output_q: mp.Queue):
153154
154155
155156def simba_feat_classifier_pool_run (input_q : mp .Queue , output_q : mp .Queue ):
156- feature_extractor = SimbaFeatureExtractorStandard14bp (TIME_WINDOW )
157- # feature_extractor = SimbaFeatureExtractor(TIME_WINDOW)
157+ # feature_extractor = SimbaFeatureExtractorStandard14bp(TIME_WINDOW)
158+ feature_extractor = SimbaFeatureExtractor (TIME_WINDOW )
158159 classifier = SiMBAClassifier () # initialize classifier
160+ report = False
161+ ft_list = []
162+ clf_list = []
159163 while True :
160164 skel_time_window = None
161165 feature_id = 0
162166 if input_q .full ():
163167 skel_time_window , feature_id = input_q .get ()
164168 if skel_time_window is not None :
165- start_time = time .time ()
169+ start_time_feat = time .time ()
166170 features = feature_extractor .extract_features (skel_time_window )
167- # end_time = time.time()
168- # print(
169- # "Feature extraction time: {:.2f} msec".format(
170- # (end_time - start_time) * 1000
171- # )
172- # )
173-
171+ end_time_feat = time .time ()
172+ start_time_clf = time .time ()
174173 last_prob = classifier .classify (features )
174+ end_time = time .time ()
175175 output_q .put ((last_prob , feature_id ))
176- # end_time2 = time.time()
177- # print(
178- # "Classification time: {:.2f} msec".format(
179- # (end_time2 - end_time) * 1000
180- # )
181- # )
176+
177+ if report :
178+ feat_time = ((end_time_feat - start_time_feat ) * 1000 )
179+ clf_time = ((end_time - start_time_clf )* 1000 )
180+ print ("Feature Extraction time: {:.2f} msec" .format (feat_time ))
181+ print ("Classification time: {:.2f} msec" .format (clf_time ))
182+ print ("Total time: {:.2f} msec" .format ((end_time - start_time_feat )* 1000 ))
183+ print ("Current probability: {:.2f}" .format (last_prob ))
184+ print ("Feature ID: " + str (feature_id ))
185+ #skip first 10 to ignore numba jit initial slowness in stats
186+ if feature_id > 10 :
187+ ft_list .append (feat_time )
188+ clf_list .append (clf_time )
189+ print ("Avg. feature extraction time: {:.2f} +/- {:.2f} msec" .format (np .mean (ft_list ), np .std (ft_list )),
190+ "Avg. classification time: {:.2f} +/- {:.2f} msec" .format (np .mean (clf_list ), np .std (clf_list )),
191+ f"Classfication Cycles: { len (ft_list )} " )
192+
182193 else :
183194 pass
184195
185196
186197def bsoid_feat_classifier_pool_run (input_q : mp .Queue , output_q : mp .Queue ):
187198 feature_extractor = BsoidFeatureExtractor ()
188199 classifier = BsoidClassifier () # initialize classifier
200+ report = False
201+ ft_list = []
202+ clf_list = []
203+
189204 while True :
190205 skel_time_window = None
191206 feature_id = 0
@@ -199,11 +214,19 @@ def bsoid_feat_classifier_pool_run(input_q: mp.Queue, output_q: mp.Queue):
199214 last_prob = classifier .classify (features )
200215 output_q .put ((last_prob , feature_id ))
201216 end_time = time .time ()
202- print ("Feature Extraction time: {:.2f} msec" .format ((end_time_feat - start_time_feat ) * 1000 ))
203- print ("Classification time: {:.2f} msec" .format ((end_time - start_time_clf )* 1000 ))
204- print ("Total time: {:.2f} msec" .format ((end_time - start_time_feat )* 1000 ))
205- print ("Current motif: " , * last_prob )
206- print ("Feature ID: " + str (feature_id ))
217+ if report :
218+ feat_time = ((end_time_feat - start_time_feat ) * 1000 )
219+ clf_time = ((end_time - start_time_clf )* 1000 )
220+ print ("Feature Extraction time: {:.2f} msec" .format (feat_time ))
221+ print ("Classification time: {:.2f} msec" .format (clf_time ))
222+ print ("Total time: {:.2f} msec" .format ((end_time - start_time_feat )* 1000 ))
223+ print ("Current motif: " , * last_prob )
224+ print ("Feature ID: " + str (feature_id ))
225+ ft_list .append (feat_time )
226+ clf_list .append (clf_time )
227+ print ("Avg. feature extraction time: {:.2f} +/- {:.2f} msec" .format (np .mean (ft_list ), np .std (ft_list )),
228+ "Avg. classification time: {:.2f} +/- {:.2f} msec" .format (np .mean (clf_list ), np .std (clf_list )),
229+ f"Classfication Cycles: { len (ft_list )} " )
207230 else :
208231 pass
209232
0 commit comments