|
|
@@ -2,38 +2,61 @@
|
|
|
跟踪与轮询抓拍配置
|
|
|
"""
|
|
|
|
|
|
+import platform
|
|
|
+
|
|
|
+from .coordinator import COORDINATOR_CONFIG
|
|
|
+from .ptz import PTZ_CONFIG
|
|
|
+
|
|
|
+
|
|
|
+def _default_model_paths():
|
|
|
+ """根据平台返回默认模型路径。"""
|
|
|
+ system = platform.system()
|
|
|
+ machine = platform.machine()
|
|
|
+
|
|
|
+ if system == 'Linux' and machine == 'aarch64':
|
|
|
+ base = '/home/admin/dsh/model'
|
|
|
+ elif system == 'Linux' and machine == 'x86_64':
|
|
|
+ base = '/home/wen/dsh/model'
|
|
|
+ elif system == 'Darwin':
|
|
|
+ base = '/Users/wenhongquan/Desktop/阿里云同步/项目/dnn/sb/model'
|
|
|
+ else:
|
|
|
+ # 未知平台降级为项目相对路径
|
|
|
+ base = '../model'
|
|
|
+
|
|
|
+ return f'{base}/yolo11.rknn', f'{base}/yolo11n.pt'
|
|
|
+
|
|
|
+
|
|
|
+_MODEL_PATH, _FALLBACK_MODEL_PATH = _default_model_paths()
|
|
|
+
|
|
|
TRACKING_CONFIG = {
|
|
|
# 模型配置
|
|
|
- "model_path": "/Users/wenhongquan/Desktop/阿里云同步/项目/dnn/sb/model/yolo11.rknn",
|
|
|
- "fallback_model_path": "/Users/wenhongquan/Desktop/阿里云同步/项目/dnn/sb/model/yolo11n.pt",
|
|
|
- "model_type": "auto", # "auto" | "yolo" | "rknn" | "onnx"
|
|
|
- "use_gpu": True,
|
|
|
+ 'model_path': _MODEL_PATH,
|
|
|
+ 'fallback_model_path': _FALLBACK_MODEL_PATH,
|
|
|
+ 'model_type': 'auto', # 'auto' | 'yolo' | 'rknn' | 'onnx'
|
|
|
+ 'use_gpu': True,
|
|
|
|
|
|
# 跟踪器
|
|
|
- "tracker_type": "bytetrack", # "bytetrack" | "botsort"
|
|
|
- "max_tracking_targets": 4,
|
|
|
- "tracking_timeout": 3.0, # Coordinator 层面:目标多久未更新视为丢失
|
|
|
- "conf_threshold": 0.5,
|
|
|
- "person_threshold": 0.5,
|
|
|
- "max_lost": 30, # Tracker 内部参数:跟踪器允许目标丢失多少帧后仍保留 ID
|
|
|
+ 'tracker_type': 'bytetrack', # 'bytetrack' | 'botsort'
|
|
|
+ 'max_tracking_targets': COORDINATOR_CONFIG.get('max_tracking_targets', 4),
|
|
|
+ 'tracking_timeout': COORDINATOR_CONFIG.get('tracking_timeout', 3.0),
|
|
|
+ 'conf_threshold': 0.5,
|
|
|
+ 'person_threshold': 0.5,
|
|
|
+ 'max_lost': 30, # Tracker 内部参数:跟踪器允许目标丢失多少帧后仍保留 ID
|
|
|
|
|
|
# 轮询抓拍
|
|
|
- "ptz_stabilize_time": 2.0,
|
|
|
- "ptz_command_cooldown": 0.2,
|
|
|
- "capture_dir": "/home/admin/dsh/tracking_captures",
|
|
|
- "save_panorama_pair": True,
|
|
|
- "max_capture_per_target": 0, # 0 表示不限制
|
|
|
+ 'ptz_stabilize_time': PTZ_CONFIG.get('stabilize_time', 2.0),
|
|
|
+ 'ptz_command_cooldown': PTZ_CONFIG.get('command_cooldown', 0.2),
|
|
|
+ 'capture_dir': '/home/admin/dsh/tracking_captures',
|
|
|
+ 'save_panorama_pair': True,
|
|
|
+ 'max_capture_per_target': 0, # 0 表示不限制
|
|
|
|
|
|
# 目标选择(淘汰策略)
|
|
|
- "target_selection": {
|
|
|
- "strategy": "area",
|
|
|
- "area_weight": 0.6,
|
|
|
- "confidence_weight": 0.4,
|
|
|
- "prefer_center": True,
|
|
|
- "center_weight": 0.2,
|
|
|
- "min_area_threshold": 2000,
|
|
|
- },
|
|
|
-
|
|
|
- # 上传
|
|
|
- "enable_upload": True,
|
|
|
+ 'target_selection': COORDINATOR_CONFIG.get('target_selection', {
|
|
|
+ 'strategy': 'area',
|
|
|
+ 'area_weight': 0.6,
|
|
|
+ 'confidence_weight': 0.4,
|
|
|
+ 'prefer_center': True,
|
|
|
+ 'center_weight': 0.2,
|
|
|
+ 'min_area_threshold': 2000,
|
|
|
+ }),
|
|
|
}
|