add OF finest scale tuning
This commit is contained in:
@@ -22,7 +22,8 @@
|
|||||||
"lower_threshold": 12.0,
|
"lower_threshold": 12.0,
|
||||||
"upper_threshold": 18.0,
|
"upper_threshold": 18.0,
|
||||||
"loop_closure_interval": 1,
|
"loop_closure_interval": 1,
|
||||||
"dis_preset": "medium"
|
"dis_preset": "medium",
|
||||||
|
"finest_scale": 1
|
||||||
},
|
},
|
||||||
"contact": {
|
"contact": {
|
||||||
"min_contour_area": 3000,
|
"min_contour_area": 3000,
|
||||||
|
|||||||
@@ -135,7 +135,7 @@ class Sensor:
|
|||||||
|
|
||||||
# Initialize components
|
# Initialize components
|
||||||
self.stitcher = Stitcher(isstitch=isstitch, config_stitcher=self.__config_stitcher, verbose=self.verbose)
|
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.__contact3d = Contact3D(config_contact=self.__config_contact, verbose=self.verbose)
|
||||||
self.__hhd = None
|
self.__hhd = None
|
||||||
|
|
||||||
@@ -402,6 +402,7 @@ class Sensor:
|
|||||||
|
|
||||||
self._config_dis_preset = self._config["tracker"]["dis_preset"]
|
self._config_dis_preset = self._config["tracker"]["dis_preset"]
|
||||||
|
|
||||||
|
self.__config_tracker = self._config["tracker"]
|
||||||
self.__config_stitcher = self._config["stitcher"]
|
self.__config_stitcher = self._config["stitcher"]
|
||||||
self.__config_contact = self._config["contact"]
|
self.__config_contact = self._config["contact"]
|
||||||
|
|
||||||
|
|||||||
+11
-10
@@ -1,14 +1,14 @@
|
|||||||
import cv2
|
import cv2
|
||||||
import numpy as np
|
import numpy as np
|
||||||
# from .HHD import *
|
import cupy as cp
|
||||||
# import src.utils as utils
|
import time
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Tracker:
|
class Tracker:
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
adaptive,
|
adaptive,
|
||||||
cuda,
|
cuda,
|
||||||
|
config_tracker=None,
|
||||||
lower_threshold=12.0,
|
lower_threshold=12.0,
|
||||||
upper_threshold=18.0,
|
upper_threshold=18.0,
|
||||||
loop_closure_interval=1,
|
loop_closure_interval=1,
|
||||||
@@ -23,7 +23,8 @@ class Tracker:
|
|||||||
self.verbose = verbose
|
self.verbose = verbose
|
||||||
self.__loop_closure_interval = loop_closure_interval
|
self.__loop_closure_interval = loop_closure_interval
|
||||||
self.__frame_count = 0
|
self.__frame_count = 0
|
||||||
|
dis_preset = config_tracker["dis_preset"]
|
||||||
|
loop_closure_interval = config_tracker["loop_closure_interval"]
|
||||||
if not cuda:
|
if not cuda:
|
||||||
# DIS method - optimize for speed
|
# DIS method - optimize for speed
|
||||||
if dis_preset == 'ultrafast':
|
if dis_preset == 'ultrafast':
|
||||||
@@ -37,7 +38,7 @@ class Tracker:
|
|||||||
|
|
||||||
|
|
||||||
# Aggressive optimization for CPU
|
# 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.setPatchSize(8) # Smaller patches (default 8)
|
||||||
# self.__tracking_inst.setPatchStride(4) # Larger stride = fewer patches
|
# self.__tracking_inst.setPatchStride(4) # Larger stride = fewer patches
|
||||||
# self.__tracking_inst.setGradientDescentIterations(12) # Reduce iterations (default 25)
|
# self.__tracking_inst.setGradientDescentIterations(12) # Reduce iterations (default 25)
|
||||||
@@ -52,8 +53,8 @@ class Tracker:
|
|||||||
self.__fine_flow_queue = []
|
self.__fine_flow_queue = []
|
||||||
self.__prev_fine_flow = None
|
self.__prev_fine_flow = None
|
||||||
self.__adaptive = adaptive
|
self.__adaptive = adaptive
|
||||||
self.__lower_threshold = lower_threshold # error lower than threshold will close the loop
|
self.__lower_threshold = config_tracker["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.__upper_threshold = config_tracker["upper_threshold"] # error greater than threshold will add new reference frame
|
||||||
|
|
||||||
|
|
||||||
def track(self, frame):
|
def track(self, frame):
|
||||||
@@ -145,10 +146,12 @@ class Tracker:
|
|||||||
self.__checkLoopClosure(frame)
|
self.__checkLoopClosure(frame)
|
||||||
|
|
||||||
# CPU optical flow computation
|
# CPU optical flow computation
|
||||||
|
start_time = time.perf_counter()
|
||||||
self.__prev_fine_flow = self.__tracking_inst.calc(
|
self.__prev_fine_flow = self.__tracking_inst.calc(
|
||||||
self.__fine_base_frame_queue[-1], frame,
|
self.__fine_base_frame_queue[-1], frame,
|
||||||
self.__prev_fine_flow)
|
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
|
# Direct numpy addition is faster than cv2.add
|
||||||
final_flow = self.__fine_flow_queue[-1] + self.__prev_fine_flow
|
final_flow = self.__fine_flow_queue[-1] + self.__prev_fine_flow
|
||||||
|
|
||||||
@@ -229,8 +232,6 @@ class Tracker:
|
|||||||
self.__fine_flow_queue = []
|
self.__fine_flow_queue = []
|
||||||
self.__prev_fine_flow = None
|
self.__prev_fine_flow = None
|
||||||
self.__frame_count = 0
|
self.__frame_count = 0
|
||||||
self.__vpi_prev_frame = None
|
|
||||||
self.__vpi_prev_pyramid = None
|
|
||||||
|
|
||||||
def getFrameQueueLength(self):
|
def getFrameQueueLength(self):
|
||||||
return len(self.__fine_base_frame_queue)
|
return len(self.__fine_base_frame_queue)
|
||||||
|
|||||||
Reference in New Issue
Block a user