tracking.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. """
  2. 跟踪与轮询抓拍配置
  3. """
  4. import platform
  5. from .coordinator import COORDINATOR_CONFIG
  6. from .ptz import PTZ_CONFIG
  7. def _default_model_paths():
  8. """根据平台返回默认模型路径。"""
  9. system = platform.system()
  10. machine = platform.machine()
  11. if system == 'Linux' and machine == 'aarch64':
  12. base = '/home/admin/dsh/model'
  13. elif system == 'Linux' and machine == 'x86_64':
  14. base = '/home/wen/dsh/model'
  15. elif system == 'Darwin':
  16. base = '/Users/wenhongquan/Desktop/阿里云同步/项目/dnn/sb/model'
  17. else:
  18. # 未知平台降级为项目相对路径
  19. base = '../model'
  20. return f'{base}/yolo11.rknn', f'{base}/yolo11n.pt'
  21. _MODEL_PATH, _FALLBACK_MODEL_PATH = _default_model_paths()
  22. TRACKING_CONFIG = {
  23. # 模型配置
  24. 'model_path': _MODEL_PATH,
  25. 'fallback_model_path': _FALLBACK_MODEL_PATH,
  26. 'model_type': 'auto', # 'auto' | 'yolo' | 'rknn' | 'onnx'
  27. 'use_gpu': True,
  28. # 跟踪器
  29. 'tracker_type': 'bytetrack', # 'bytetrack' | 'botsort'
  30. 'max_tracking_targets': COORDINATOR_CONFIG.get('max_tracking_targets', 4),
  31. 'tracking_timeout': COORDINATOR_CONFIG.get('tracking_timeout', 3.0),
  32. 'conf_threshold': 0.5,
  33. 'person_threshold': 0.5,
  34. 'max_lost': 30, # Tracker 内部参数:跟踪器允许目标丢失多少帧后仍保留 ID
  35. # 轮询抓拍
  36. 'ptz_stabilize_time': PTZ_CONFIG.get('stabilize_time', 2.0),
  37. 'ptz_command_cooldown': PTZ_CONFIG.get('command_cooldown', 0.2),
  38. 'capture_dir': '/home/admin/dsh/tracking_captures',
  39. 'save_panorama_pair': True,
  40. 'max_capture_per_target': 0, # 0 表示不限制
  41. # 目标选择(淘汰策略)
  42. 'target_selection': COORDINATOR_CONFIG.get('target_selection', {
  43. 'strategy': 'area',
  44. 'area_weight': 0.6,
  45. 'confidence_weight': 0.4,
  46. 'prefer_center': True,
  47. 'center_weight': 0.2,
  48. 'min_area_threshold': 2000,
  49. }),
  50. }