# 篮子接触分段 + 段内耗材识别 # 入口: main_basket.py / main_basket_stream.py / main_segments_offline.py io: video: input/sample.mp4 excel: input/视频中的商品信息表.xlsx out: output/result.txt # false:段内耗材分类不做 Excel/JSON 白名单裁剪(全 41 类);Excel 仍用于 product_id 映射 use_whitelist: false # use_whitelist=true 时:null 从 excel C 列读白名单;或指定 {"allowed_names":[...]} JSON whitelist_json: null weights: hand: weights/hand_detect.pt goodbad: weights/goodbad_frame.pt haocai: weights/haocai_classify.pt runtime: work_dir: null keep_work_dir: false python: null device: type: cuda half: false # 段内:手检 → 双手 ROI → 好坏帧门控 → 耗材分类 phase2: seek_margin_sec: 3.0 frame_stride: 1 det_conf: 0.6 # 双手 union 紧框后仅向下延伸(相对框高) pad_bottom_ratio: 0.5 imgsz_det: 1920 # 段内需检测到至少两只手才裁 ROI(取最大两只 union);merge_* 已不使用 merge_iou_gt: 0.0 merge_center_dist_max_px: null merge_center_dist_max_frac_diag: null tracking_alpha: 0.6 tracking_max_lost_frames: 0 classification: imgsz_cls: 224 good_top1_conf_threshold: 0.8 good_top1_retry_threshold: 0.6 haocai_min_conf: 0.8 haocai_min_conf_retry: 0.5 empty_cache_every: 0 gap_merge: enabled: true max_gap_sec: 2.0 output: legacy_12_col_only: true doctor_identity: enabled: true stream_enabled: true checkpoint: doctor_identity_package/doctor_info.pth labels_csv: doctor_identity_package/labels.csv pose_min_detection_confidence: 0.30 min_identity_confidence: 0.00 middle_seconds: 10.0 sample_fps: 3.0 segment_sample_fps: 3.0 pad_frac: 0.15 # 篮子接触分段(main_basket.py / main_basket_stream.py) basket: det_conf: 0.6 contact_iou_threshold: 0.05 contact_iou_on: 0.03 contact_iou_off: 0.01 confirm_seconds: 0.1 cooldown_seconds: 3.0 segment_start_offset_sec: 1.0 segment_end_offset_sec: 6.0 min_segment_sec: 4.0 scan_frame_stride: 1 roi_frame: first save_roi_json: null load_roi_json: null skip_roi_select: false roi_backend: tkinter # 推流实时识别(main_basket_stream.py) # 接触判定 / 手检 imgsz / 好坏帧 / 耗材阈值:与离线共用 basket + phase2 + classification # 段内推理:本地 MP4 回源 4K + phase2.imgsz_det=1920(与离线一致);RTSP/缓存 fallback 时 JPEG 宽≤1920 stream: rtsp: null ring_buffer_sec: 10.0 cache_max_width: 1920 jpeg_quality: 85 fps: 25.0 # 段窗口与 basket 一致:[contact+1, contact+6],时长 5s segment_start_offset_sec: 1.0 segment_end_offset_sec: 6.0 min_segment_sec: 4.0 infer_source: file infer_fallback: cache