2026-06-02 16:59:42 +08:00
|
|
|
|
# 篮子接触分段 + 段内耗材识别
|
|
|
|
|
|
# 入口: 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
|
2026-06-03 14:46:16 +08:00
|
|
|
|
stream_enabled: true
|
2026-06-02 16:59:42 +08:00
|
|
|
|
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
|
2026-06-03 14:46:16 +08:00
|
|
|
|
segment_sample_fps: 3.0
|
2026-06-02 16:59:42 +08:00
|
|
|
|
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
|