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.
This commit is contained in:
KanagawaYamada 2026-08-29 19:44:04 +07:00
parent ad2015d897
commit 4f66151a6f
No known key found for this signature in database
GPG key ID: 6642AE1121CDDE5D
3 changed files with 5 additions and 4 deletions

View file

@ -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)

View file

@ -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)

View file

@ -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)