| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- """跟踪与轮询抓拍配置
- 说明:
- - Darwin/macOS 下的 model_path 指向 /Users/wenhongquan/Desktop/阿里云同步/项目/dnn/sb/model,
- 因为该目录是用户指定的模型目录,其中包含 yolo11.rknn 等模型文件。
- """
- import platform
- from .ptz import PTZ_CONFIG
- def _default_model_paths():
- """根据平台返回默认模型路径。
- 平台策略:
- - Linux aarch64 (RK3588): 优先 RKNN,回退 PyTorch
- - Linux x86_64: 优先 PyTorch,回退 RKNN(实际通常仍用 PyTorch)
- - Darwin/macOS: 仅 PyTorch
- - 未知平台: 仅 PyTorch
- """
- system = platform.system()
- machine = platform.machine()
- if system == 'Linux' and machine == 'aarch64':
- base = '/home/admin/dsh/yolo'
- primary = f'{base}/yolo11.rknn'
- fallback = f'{base}/yolo11n.pt'
- elif system == 'Linux' and machine == 'x86_64':
- base = '/home/wen/dsh/yolo'
- primary = f'{base}/yolo11n.pt'
- # x86_64 通常无法运行 RKNN,回退仍使用同一 PyTorch 模型
- fallback = primary
- elif system == 'Darwin':
- base = '/Users/wenhongquan/Desktop/阿里云同步/项目/dnn/sb/model'
- primary = f'{base}/yolo11n.pt'
- fallback = primary
- else:
- # 未知平台降级为项目相对路径,仅 PyTorch
- base = '../yolo'
- primary = f'{base}/yolo11n.pt'
- fallback = primary
- return primary, fallback
- _MODEL_PATH, _FALLBACK_MODEL_PATH = _default_model_paths()
- TRACKING_CONFIG = {
- # 模型配置
- 'model_path': _MODEL_PATH,
- # yolo11n.pt 若本地不存在,Ultralytics 会自动下载
- 'fallback_model_path': _FALLBACK_MODEL_PATH,
- 'model_type': 'auto', # 'auto' | 'yolo' | 'rknn' | 'onnx'
- 'use_gpu': True,
- # 跟踪器
- 'tracker_type': 'bytetrack', # 'bytetrack' | 'botsort'
- 'max_tracking_targets': 3,
- 'tracking_timeout': 5.0,
- 'conf_threshold': 0.5,
- 'person_threshold': 0.5,
- 'max_lost': 30, # Tracker 内部参数:跟踪器允许目标丢失多少帧后仍保留 ID
- # 轮询抓拍
- # PTZ_CONFIG 中没有顶层的 stabilize_time/command_cooldown;
- # 使用 PTZ_CONFIG['capture']['stabilize_time'] 作为稳定等待时间,
- # command_cooldown 在 PTZ_CONFIG 中无对应键,保留字面默认值。
- 'ptz_stabilize_time': PTZ_CONFIG['capture']['stabilize_time'],
- # 跟踪模块专用的 PTZ 命令最小间隔,与 coordinator 中的冷却相互独立
- 'ptz_command_cooldown': 0.2, # PTZ_CONFIG 中无此键,使用默认值
- 'capture_dir': '/home/admin/dsh/tracking_captures',
- 'save_panorama_pair': True,
- 'max_capture_per_target': 0, # 0 表示不限制
- 'enable_upload': True, # 跟踪抓拍独立上传开关
- # 目标选择(淘汰策略)
- 'target_selection': {
- 'strategy': 'area', # 策略: 'area'(面积优先), 'confidence'(置信度优先), 'hybrid'(混合)
- 'area_weight': 0.6, # 混合模式下面积权重
- 'confidence_weight': 0.4, # 混合模式下置信度权重
- 'min_area_threshold': 5000, # 最小面积阈值(像素²),小于此值的目标优先级降低
- 'prefer_center': True, # 是否优先选择靠近画面中心的目标
- 'center_weight': 0.2, # 中心位置权重
- 'switch_on_lost': True, # 当前目标丢失时是否切换到次优目标
- 'stickiness': 0.3, # 目标粘性(0-1),值越大越不容易切换目标
- },
- }
|