{ "queue": { "size": 8, "strategy": "drop_oldest" }, "graphs": [ { "name": "cam1_full_pipeline", "executor": { "batch_size": 2, "run_budget": 8 }, "nodes": [ { "id": "in_cam1", "type": "input_rtsp", "role": "source", "enable": true, "url": "rtsp://10.0.0.49:8554/cam", "fps": 30, "width": 1920, "height": 1080, "use_ffmpeg": true, "use_mpp": false, "force_tcp": true, "reconnect_sec": 5, "reconnect_backoff_max_sec": 30 }, { "id": "pre_rgb", "type": "preprocess", "role": "filter", "enable": true, "cpu_affinity": [2], "dst_w": 1920, "dst_h": 1080, "dst_format": "rgb", "dst_packed": true, "resize_mode": "stretch", "keep_ratio": false, "rga_gate": "full_pipeline_1080p", "use_rga": true }, { "id": "face_det", "type": "ai_scrfd_sliding", "role": "filter", "enable": true, "cpu_affinity": [4], "infer_fps": 3, "model_path": "./models/face_det_scrfd_500m_640_rk3588.rknn", "model_w": 640, "model_h": 640, "windows": [ {"x": 0, "y": 0, "w": 960, "h": 1080}, {"x": 960, "y": 0, "w": 960, "h": 1080} ], "conf_thresh": 0.5, "nms_thresh": 0.4, "max_faces": 50, "debug": { "stats": true, "stats_interval": 30 } }, { "id": "face_recog", "type": "ai_face_recog", "role": "filter", "enable": true, "cpu_affinity": [4], "infer_fps": 2, "infer_phase_ms": 120, "model_path": "./models/face_recog_mobilefacenet_arcface_112_rk3588.rknn", "align": true, "emit_embedding": false, "max_faces": 50, "input_format": "rgb", "input_dtype": "uint8", "threshold": { "accept": 0.45, "margin": 0.05 }, "gallery": { "backend": "sqlite", "path": "./models/face_gallery.db", "load_on_start": true, "dtype": "auto" } }, { "id": "person_det", "type": "ai_yolo", "role": "filter", "enable": true, "cpu_affinity": [5], "use_rga": true, "rga_gate": "full_pipeline_1080p", "rga_max_inflight": 4, "dst_packed": true, "use_dma_input": true, "infer_fps": 2, "infer_phase_ms": 0, "model_path": "./models/object_det_yolov8n_coco_640_rk3588.rknn", "model_version": "v8", "model_w": 640, "model_h": 640, "num_classes": 80, "conf": 0.35, "nms": 0.45, "class_filter": [0], "bbox_expand": { "enable": true, "class_id": 0, "left": 0.06, "right": 0.06, "top": 0.04, "bottom": 0.16 }, "debug": { "stats": true, "stats_interval": 30, "detections": false } }, { "id": "person_trk", "type": "tracker", "role": "filter", "enable": true, "cpu_affinity": [5], "mode": "bytetrack_lite", "per_class": true, "track_classes": [0], "ignore_classes": [], "high_th": 0.55, "low_th": 0.10, "iou_th": 0.3, "max_age_ms": 900, "min_hits": 2, "max_tracks": 128 }, { "id": "shoe_det", "type": "ai_shoe_det", "role": "filter", "enable": true, "cpu_affinity": [6], "use_rga": true, "rga_gate": "full_pipeline_1080p", "rga_max_inflight": 4, "dst_packed": true, "use_dma_input": false, "infer_fps": 2, "infer_phase_ms": 150, "model_path": "./models/shoe_det_yolov8s_workshoe_640_rk3588.rknn", "model_w": 640, "model_h": 640, "conf": 0.22, "nms": 0.45, "v8_box_format": "cxcywh", "append_detections": true, "dynamic_roi": { "enable": true, "person_class_id": 0, "shoe_class_id": 1, "debug_roi_class_id": -1, "max_rois": 3, "min_person_height": 60, "max_box_area_ratio": 0.60, "x_offset": -0.24, "y_offset": 0.64, "width_scale": 1.48, "height_scale": 0.58 } }, { "id": "shoe_assoc", "type": "logic_gate", "role": "filter", "enable": true, "cpu_affinity": [6], "mode": "person_shoe_check", "debug": false, "person_shoe_check": { "person_class": 0, "shoe_class": 1, "violation_class": 2, "min_person_score": 0.30, "min_shoe_score": 0.22, "foot_region": { "x_offset": -0.24, "y_offset": 0.64, "width_scale": 1.48, "height_scale": 0.58 } } }, { "id": "shoe_color", "type": "logic_gate", "role": "filter", "enable": true, "cpu_affinity": [6], "mode": "ppe_boots_check", "anchor_class": 0, "boots_class": 1, "violation_class": 2, "debug": false, "color_check": { "enable": true, "method": "brightness", "dark_threshold": 90, "roi_expand": 1.0 } }, { "id": "pre_osd", "type": "preprocess", "role": "filter", "enable": true, "cpu_affinity": [7], "dst_w": 1920, "dst_h": 1080, "dst_format": "nv12", "resize_mode": "stretch", "rga_gate": "full_pipeline_1080p", "use_rga": true }, { "id": "osd", "type": "osd", "role": "filter", "enable": true, "cpu_affinity": [7], "draw_bbox": true, "draw_text": true, "draw_face_det": true, "draw_face_recog": false, "draw_face_bbox": true, "line_width": 1.0, "font_scale": 0.5, "use_rga_bbox": false, "labels": ["person", "shoe", "non_black_shoe"] }, { "id": "publish", "type": "publish", "role": "filter", "enable": true, "cpu_affinity": [3], "queue": {"size": 2, "policy": "drop_oldest"}, "codec": "h264", "fps": 30, "gop": 60, "bitrate_kbps": 4000, "mpp_output_timeout_ms": 50, "mpp_packet_wait_ms": 10, "use_mpp": true, "use_ffmpeg_mux": true, "outputs": [ { "proto": "hls", "path": "./web/hls/cam1/index.m3u8", "segment_sec": 2 }, { "proto": "rtsp_server", "port": 8555, "path": "/live/cam1" } ] }, { "id": "alarm", "type": "alarm", "role": "sink", "enable": true, "eval_fps": 2, "labels": ["person", "shoe", "non_black_shoe"], "rules": [ { "name": "non_compliant_workshoe", "class_ids": [2], "roi": {"x": 0.0, "y": 0.0, "w": 1.0, "h": 1.0}, "min_score": 0.40, "min_box_area_ratio": 0.0, "require_track_id": false, "min_duration_ms": 800, "min_hits": 2, "hit_window_ms": 2000, "cooldown_ms": 15000, "per_track_cooldown_ms": 0 } ], "face_rules": [ { "name": "unknown_face", "type": "unknown", "cooldown_ms": 7000, "min_sim": 0.35, "min_hits": 2, "hit_window_ms": 1500, "min_face_area_ratio": 0.01, "min_face_aspect": 0.6, "max_face_aspect": 1.6 }, { "name": "known_person", "type": "person", "cooldown_ms": 7000, "min_sim": 0.6, "min_hits": 2, "hit_window_ms": 1500, "min_face_area_ratio": 0.01, "min_face_aspect": 0.6, "max_face_aspect": 1.6 } ], "actions": { "log": { "enable": true, "level": "info", "include_detections": true, "min_interval_ms": 2000 }, "snapshot": { "enable": true, "format": "jpg", "quality": 85, "upload": { "type": "minio", "endpoint": "http://10.0.0.49:9000", "bucket": "myminio", "region": "us-east-1", "access_key": "minioadmin", "secret_key": "minioadmin" } }, "clip": { "enable": true, "pre_sec": 5, "post_sec": 10, "format": "mp4", "fps": 30, "upload": { "type": "minio", "endpoint": "http://10.0.0.49:9000", "bucket": "myminio", "region": "us-east-1", "access_key": "minioadmin", "secret_key": "minioadmin" } }, "external_api": { "enable": true, "getTokenUrl": "http://10.0.0.49:8080/api/getToken", "putMessageUrl": "http://10.0.0.49:8080/api/putMessage", "tenantCode": "32", "channelNo": "cam1", "timeout_ms": 3000, "include_media_url": true, "token_header": "X-Access-Token", "token_json_path": "responseBody.token", "token_cache_sec": 1200 } } } ], "edges": [ ["in_cam1", "pre_rgb"], ["pre_rgb", "face_det"], ["face_det", "face_recog"], ["face_recog", "person_det"], ["person_det", "person_trk"], ["person_trk", "shoe_det", {"queue": {"size": 16, "strategy": "drop_oldest"}}], ["shoe_det", "shoe_assoc", {"queue": {"size": 16, "strategy": "drop_oldest"}}], ["shoe_assoc", "shoe_color", {"queue": {"size": 16, "strategy": "drop_oldest"}}], ["shoe_color", "osd", {"queue": {"size": 16, "strategy": "drop_oldest"}}], ["osd", "pre_osd", {"queue": {"size": 32, "strategy": "drop_oldest"}}], ["pre_osd", "publish", {"queue": {"size": 64, "strategy": "drop_oldest"}}], ["publish", "alarm", {"queue": {"size": 64, "strategy": "drop_oldest"}}] ] } ] }