add OF finest scale tuning
This commit is contained in:
@@ -22,7 +22,8 @@
|
||||
"lower_threshold": 12.0,
|
||||
"upper_threshold": 18.0,
|
||||
"loop_closure_interval": 1,
|
||||
"dis_preset": "medium"
|
||||
"dis_preset": "medium",
|
||||
"finest_scale": 1
|
||||
},
|
||||
"contact": {
|
||||
"min_contour_area": 3000,
|
||||
|
||||
@@ -135,7 +135,7 @@ class Sensor:
|
||||
|
||||
# Initialize components
|
||||
self.stitcher = Stitcher(isstitch=isstitch, config_stitcher=self.__config_stitcher, verbose=self.verbose)
|
||||
self.__tracker = Tracker(adaptive=True, cuda=cuda, verbose=self.verbose, dis_preset=self._config_dis_preset)
|
||||
self.__tracker = Tracker(adaptive=True, cuda=cuda, verbose=self.verbose, dis_preset=self._config_dis_preset, config_tracker=self.__config_tracker)
|
||||
self.__contact3d = Contact3D(config_contact=self.__config_contact, verbose=self.verbose)
|
||||
self.__hhd = None
|
||||
|
||||
@@ -402,6 +402,7 @@ class Sensor:
|
||||
|
||||
self._config_dis_preset = self._config["tracker"]["dis_preset"]
|
||||
|
||||
self.__config_tracker = self._config["tracker"]
|
||||
self.__config_stitcher = self._config["stitcher"]
|
||||
self.__config_contact = self._config["contact"]
|
||||
|
||||
|
||||
+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