add OF finest scale tuning

This commit is contained in:
unknown
2026-01-14 10:05:53 +08:00
parent e735587d4f
commit 4d6bfb49ae
3 changed files with 15 additions and 12 deletions
+11 -10
View File
@@ -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)