add OF finest scale tuning
This commit is contained in:
+11
-10
@@ -1,14 +1,14 @@
|
||||
import cv2
|
||||
import numpy as np
|
||||
# from .HHD import *
|
||||
# import src.utils as utils
|
||||
|
||||
import cupy as cp
|
||||
import time
|
||||
|
||||
|
||||
class Tracker:
|
||||
def __init__(self,
|
||||
adaptive,
|
||||
cuda,
|
||||
config_tracker=None,
|
||||
lower_threshold=12.0,
|
||||
upper_threshold=18.0,
|
||||
loop_closure_interval=1,
|
||||
@@ -23,7 +23,8 @@ class Tracker:
|
||||
self.verbose = verbose
|
||||
self.__loop_closure_interval = loop_closure_interval
|
||||
self.__frame_count = 0
|
||||
|
||||
dis_preset = config_tracker["dis_preset"]
|
||||
loop_closure_interval = config_tracker["loop_closure_interval"]
|
||||
if not cuda:
|
||||
# DIS method - optimize for speed
|
||||
if dis_preset == 'ultrafast':
|
||||
@@ -37,7 +38,7 @@ class Tracker:
|
||||
|
||||
|
||||
# Aggressive optimization for CPU
|
||||
# self.__tracking_inst.setFinestScale(1) # Skip finest pyramid level (2x faster)
|
||||
self.__tracking_inst.setFinestScale(config_tracker["finest_scale"]) # Skip finest pyramid level (2x faster)
|
||||
# self.__tracking_inst.setPatchSize(8) # Smaller patches (default 8)
|
||||
# self.__tracking_inst.setPatchStride(4) # Larger stride = fewer patches
|
||||
# self.__tracking_inst.setGradientDescentIterations(12) # Reduce iterations (default 25)
|
||||
@@ -52,8 +53,8 @@ class Tracker:
|
||||
self.__fine_flow_queue = []
|
||||
self.__prev_fine_flow = None
|
||||
self.__adaptive = adaptive
|
||||
self.__lower_threshold = lower_threshold # error lower than threshold will close the loop
|
||||
self.__upper_threshold = upper_threshold # error greater than threshold will add new reference frame
|
||||
self.__lower_threshold = config_tracker["lower_threshold"] # error lower than threshold will close the loop
|
||||
self.__upper_threshold = config_tracker["upper_threshold"] # error greater than threshold will add new reference frame
|
||||
|
||||
|
||||
def track(self, frame):
|
||||
@@ -145,10 +146,12 @@ class Tracker:
|
||||
self.__checkLoopClosure(frame)
|
||||
|
||||
# CPU optical flow computation
|
||||
start_time = time.perf_counter()
|
||||
self.__prev_fine_flow = self.__tracking_inst.calc(
|
||||
self.__fine_base_frame_queue[-1], frame,
|
||||
self.__prev_fine_flow)
|
||||
|
||||
end_time = time.perf_counter()
|
||||
print(f"CPU optical flow computation time: {end_time - start_time} seconds")
|
||||
# Direct numpy addition is faster than cv2.add
|
||||
final_flow = self.__fine_flow_queue[-1] + self.__prev_fine_flow
|
||||
|
||||
@@ -229,8 +232,6 @@ class Tracker:
|
||||
self.__fine_flow_queue = []
|
||||
self.__prev_fine_flow = None
|
||||
self.__frame_count = 0
|
||||
self.__vpi_prev_frame = None
|
||||
self.__vpi_prev_pyramid = None
|
||||
|
||||
def getFrameQueueLength(self):
|
||||
return len(self.__fine_base_frame_queue)
|
||||
|
||||
Reference in New Issue
Block a user