From 4f66151a6f95aea0686f9b36912486b7b64495f6 Mon Sep 17 00:00:00 2001 From: KanagawaYamada Date: Sat, 29 Aug 2026 19:44:04 +0700 Subject: [PATCH] Optimize ORT graph execution and Linux webcam latency - Enable ORT_ENABLE_BASIC graph optimization instead of fully disabling it, yielding CPU fallback performance improvements without crashing the GPU on FusedConv. - Set cv2.CAP_PROP_BUFFERSIZE to 1 on Linux VideoCapture to eliminate webcam tracking lag/latency. --- input_reader.py | 1 + retinaface.py | 2 +- tracker.py | 6 +++--- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/input_reader.py b/input_reader.py index 2344ada..6ede20d 100644 --- a/input_reader.py +++ b/input_reader.py @@ -15,6 +15,7 @@ class VideoReader(): self.cap = cv2.VideoCapture(capture, cv2.CAP_DSHOW) else: self.cap = cv2.VideoCapture(capture) + self.cap.set(cv2.CAP_PROP_BUFFERSIZE, 1) if self.cap is None: print("The video source cannot be opened") sys.exit(0) diff --git a/retinaface.py b/retinaface.py index 241c959..531d512 100644 --- a/retinaface.py +++ b/retinaface.py @@ -64,7 +64,7 @@ class RetinaFaceDetector(): options.inter_op_num_threads = 1 options.intra_op_num_threads = threads options.execution_mode = onnxruntime.ExecutionMode.ORT_SEQUENTIAL - options.graph_optimization_level = onnxruntime.GraphOptimizationLevel.ORT_DISABLE_ALL + options.graph_optimization_level = onnxruntime.GraphOptimizationLevel.ORT_ENABLE_BASIC options.log_severity_level = 3 providersList = ['CPUExecutionProvider'] self.session = onnxruntime.InferenceSession(model_path, sess_options=options, providers=providersList) diff --git a/tracker.py b/tracker.py index b6313fe..47c3a8f 100644 --- a/tracker.py +++ b/tracker.py @@ -499,7 +499,7 @@ class Tracker(): options.inter_op_num_threads = 1 options.intra_op_num_threads = min(max_threads,4) options.execution_mode = onnxruntime.ExecutionMode.ORT_SEQUENTIAL - options.graph_optimization_level = onnxruntime.GraphOptimizationLevel.ORT_DISABLE_ALL + options.graph_optimization_level = onnxruntime.GraphOptimizationLevel.ORT_ENABLE_BASIC options.log_severity_level = 3 self.model_type = model_type self.models = [ @@ -547,7 +547,7 @@ class Tracker(): elif i < extra_threads: options.intra_op_num_threads += 1 options.execution_mode = onnxruntime.ExecutionMode.ORT_SEQUENTIAL - options.graph_optimization_level = onnxruntime.GraphOptimizationLevel.ORT_DISABLE_ALL + options.graph_optimization_level = onnxruntime.GraphOptimizationLevel.ORT_ENABLE_BASIC self.sessions.append(onnxruntime.InferenceSession(os.path.join(model_base_path, model), sess_options=options, providers=providersList)) self.input_name = self.session.get_inputs()[0].name @@ -555,7 +555,7 @@ class Tracker(): options.inter_op_num_threads = 1 options.intra_op_num_threads = 1 options.execution_mode = onnxruntime.ExecutionMode.ORT_SEQUENTIAL - options.graph_optimization_level = onnxruntime.GraphOptimizationLevel.ORT_DISABLE_ALL + options.graph_optimization_level = onnxruntime.GraphOptimizationLevel.ORT_ENABLE_BASIC options.log_severity_level = 3 self.gaze_model = onnxruntime.InferenceSession(os.path.join(model_base_path, "mnv3_gaze32_split_gpu.onnx"), sess_options=options, providers=providersList)