This commit is contained in:
Prohurtz 2023-07-10 20:04:50 -05:00
parent 8e5836575e
commit 3fee1a4e53
3 changed files with 49 additions and 9 deletions

View File

@ -152,7 +152,7 @@ class EyeProcessor:
self.out_x = 0.0 self.out_x = 0.0
self.rawx = 0.0 self.rawx = 0.0
self.rawy = 0.0 self.rawy = 0.0
self.eyeopen = 0.7 self.eyeopen = 0.9
# blink # blink
self.max_ints = [] self.max_ints = []
self.max_int = 0 self.max_int = 0
@ -351,7 +351,7 @@ class EyeProcessor:
else: else:
pass pass
# todo: add process to initialise er_hsf when resolution changes # todo: add process to initialise er_hsf when resolution changes
self.rawx, self.rawy, self.thresh = self.er_hsf.run(self.current_image_gray) self.rawx, self.rawy, self.thresh, self.radius = self.er_hsf.run(self.current_image_gray)
self.out_x, self.out_y = cal.cal_osc(self, self.rawx, self.rawy) self.out_x, self.out_y = cal.cal_osc(self, self.rawx, self.rawy)
self.current_algorithm = EyeInfoOrigin.HSF self.current_algorithm = EyeInfoOrigin.HSF
@ -446,7 +446,9 @@ class EyeProcessor:
# set algo priorities # set algo priorities
if self.settings.gui_HSF: if self.settings.gui_HSF:
print('yes hsf')
if self.er_hsf is None: if self.er_hsf is None:
print('yes none')
if self.eye_id in [EyeId.LEFT]: if self.eye_id in [EyeId.LEFT]:
self.er_hsf = External_Run_HSF( self.er_hsf = External_Run_HSF(
self.settings.gui_skip_autoradius, self.settings.gui_skip_autoradius,
@ -486,7 +488,7 @@ class EyeProcessor:
pass pass
algolist[self.settings.gui_HSRACP] = self.HSRACM algolist[self.settings.gui_HSRACP] = self.HSRACM
else: else:
if self.er_hsf is not None: if not self.settings.gui_HSF and self.er_hsf is not None:
self.er_hsf = None self.er_hsf = None
if self.settings.gui_DADDY: if self.settings.gui_DADDY:

View File

@ -144,6 +144,8 @@ class IntensityBasedOpeness:
self.fc = 0 self.fc = 0
self.filterlist = [] self.filterlist = []
self.averageList = [] self.averageList = []
self.openlist = []
self.eye_id = eye_id self.eye_id = eye_id
self.maxinten = 0 self.maxinten = 0
@ -263,6 +265,12 @@ class IntensityBasedOpeness:
# print('filter, assume blink') # print('filter, assume blink')
intensity = self.maxval intensity = self.maxval
# if intensity <= np.percentile( # TODO test this
# self.filterlist, 1
# ): # filter abnormally low values
# print('filter, assume blink')
# intensity = self.maxval
# self.tri_filter.append(intensity) # self.tri_filter.append(intensity)
# if len(self.tri_filter) > 3: # if len(self.tri_filter) > 3:
# self.tri_filter.pop(0) # self.tri_filter.pop(0)
@ -353,6 +361,24 @@ class IntensityBasedOpeness:
) # for whatever reason when input and maxp are too close it outputs high ) # for whatever reason when input and maxp are too close it outputs high
eyeopen = 1 - eyeopen eyeopen = 1 - eyeopen
if len(self.openlist) < 1000: # TODO expose as setting?
self.openlist.append(eyeopen)
else:
if eyeopen >= np.percentile(self.openlist, 99) or eyeopen <= np.percentile(self.openlist, 1):
pass
else:
self.openlist.pop(0)
self.openlist.append(eyeopen)
try:
per = ((eyeopen - max(self.openlist)) / (min(self.openlist) - max(self.openlist)))
eyeopen = 1 - per
except:
pass
if outputSamples > 0: if outputSamples > 0:
if len(self.averageList) < outputSamples: if len(self.averageList) < outputSamples:
self.averageList.append(eyeopen) self.averageList.append(eyeopen)
@ -361,6 +387,10 @@ class IntensityBasedOpeness:
self.averageList.append(eyeopen) self.averageList.append(eyeopen)
eyeopen = np.average(self.averageList) eyeopen = np.average(self.averageList)
if changed and ( if changed and (
(time.time() - self.lct) > 5 (time.time() - self.lct) > 5
): # save every 5 seconds if something changed to save disk usage ): # save every 5 seconds if something changed to save disk usage

View File

@ -75,7 +75,7 @@ class LEAP_C(object):
onnxruntime.disable_telemetry_events() onnxruntime.disable_telemetry_events()
# Config variables # Config variables
self.num_threads = 2 # Number of python threads to use (using ~1 more than needed to acheive wanted fps yeilds lower cpu usage) self.num_threads = 2 # Number of python threads to use (using ~1 more than needed to acheive wanted fps yeilds lower cpu usage)
self.queue_max_size = 3 # Optimize for best CPU usage, Memory, and Latency. A maxsize is needed to not create a potential memory leak. self.queue_max_size = 2 # Optimize for best CPU usage, Memory, and Latency. A maxsize is needed to not create a potential memory leak.
self.model_path = 'Models/mommy062023.onnx' self.model_path = 'Models/mommy062023.onnx'
self.interval = 1 # FPS print update rate self.interval = 1 # FPS print update rate
self.low_priority = True # set process priority to low self.low_priority = True # set process priority to low
@ -121,6 +121,7 @@ class LEAP_C(object):
) )
self.dmax = 0 self.dmax = 0
self.dmin = 0 self.dmin = 0
self.openlist = []
self.x = 0 self.x = 0
self.y = 0 self.y = 0
@ -171,13 +172,20 @@ class LEAP_C(object):
# print(pre_landmark) # print(pre_landmark)
d = math.dist(pre_landmark[4], pre_landmark[12]) d = math.dist(pre_landmark[4], pre_landmark[12])
if d > self.dmax:
self.dmax = d
if d < self.dmin: if len(self.openlist) < 1000: # TODO expose as setting?
self.dmin = d self.openlist.append(d)
else:
if d >= np.percentile(self.openlist, 99) or d <= np.percentile(self.openlist, 1):
pass
else:
self.openlist.pop(0)
self.openlist.append(d)
try: try:
per = (((d - self.dmax)) / (self.dmin - self.dmax)) per = ((d - max(self.openlist)) / (min(self.openlist) - max(self.openlist)))
per = 1 - per per = 1 - per
except: except:
pass pass