tracking.py 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. """
  2. 跟踪与轮询抓拍配置
  3. 说明:
  4. - Darwin/macOS 下的 model_path 指向 /Users/wenhongquan/Desktop/阿里云同步/项目/dnn/sb/model,
  5. 因为该目录是用户指定的模型目录,其中包含 yolo11.rknn 等模型文件。
  6. """
  7. import platform
  8. from .coordinator import COORDINATOR_CONFIG
  9. from .ptz import PTZ_CONFIG
  10. def _default_model_paths():
  11. """根据平台返回默认模型路径。
  12. 平台策略:
  13. - Linux aarch64 (RK3588): 优先 RKNN,回退 PyTorch
  14. - Linux x86_64: 优先 PyTorch,回退 RKNN(实际通常仍用 PyTorch)
  15. - Darwin/macOS: 仅 PyTorch
  16. - 未知平台: 仅 PyTorch
  17. """
  18. system = platform.system()
  19. machine = platform.machine()
  20. if system == 'Linux' and machine == 'aarch64':
  21. base = '/home/admin/dsh/yolo'
  22. primary = f'{base}/yolo11.rknn'
  23. fallback = f'{base}/yolo11n.pt'
  24. elif system == 'Linux' and machine == 'x86_64':
  25. base = '/home/wen/dsh/yolo'
  26. primary = f'{base}/yolo11n.pt'
  27. # x86_64 通常无法运行 RKNN,回退仍使用同一 PyTorch 模型
  28. fallback = primary
  29. elif system == 'Darwin':
  30. base = '/Users/wenhongquan/Desktop/阿里云同步/项目/dnn/sb/model'
  31. primary = f'{base}/yolo11n.pt'
  32. fallback = primary
  33. else:
  34. # 未知平台降级为项目相对路径,仅 PyTorch
  35. base = '../yolo'
  36. primary = f'{base}/yolo11n.pt'
  37. fallback = primary
  38. return primary, fallback
  39. _MODEL_PATH, _FALLBACK_MODEL_PATH = _default_model_paths()
  40. TRACKING_CONFIG = {
  41. # 模型配置
  42. 'model_path': _MODEL_PATH,
  43. # yolo11n.pt 若本地不存在,Ultralytics 会自动下载
  44. 'fallback_model_path': _FALLBACK_MODEL_PATH,
  45. 'model_type': 'auto', # 'auto' | 'yolo' | 'rknn' | 'onnx'
  46. 'use_gpu': True,
  47. # 跟踪器
  48. 'tracker_type': 'bytetrack', # 'bytetrack' | 'botsort'
  49. 'max_tracking_targets': COORDINATOR_CONFIG['max_tracking_targets'],
  50. 'tracking_timeout': COORDINATOR_CONFIG['tracking_timeout'],
  51. 'conf_threshold': 0.5,
  52. 'person_threshold': 0.5,
  53. 'max_lost': 30, # Tracker 内部参数:跟踪器允许目标丢失多少帧后仍保留 ID
  54. # 轮询抓拍
  55. # PTZ_CONFIG 中没有顶层的 stabilize_time/command_cooldown;
  56. # 使用 PTZ_CONFIG['capture']['stabilize_time'] 作为稳定等待时间,
  57. # command_cooldown 在 PTZ_CONFIG 中无对应键,保留字面默认值。
  58. 'ptz_stabilize_time': PTZ_CONFIG['capture']['stabilize_time'],
  59. # 跟踪模块专用的 PTZ 命令最小间隔,与 coordinator 中的冷却相互独立
  60. 'ptz_command_cooldown': 0.2, # PTZ_CONFIG 中无此键,使用默认值
  61. 'capture_dir': '/home/admin/dsh/tracking_captures',
  62. 'save_panorama_pair': True,
  63. 'max_capture_per_target': 0, # 0 表示不限制
  64. 'enable_upload': True, # 跟踪抓拍独立上传开关
  65. # 目标选择(淘汰策略)
  66. 'target_selection': COORDINATOR_CONFIG['target_selection'],
  67. }