diff --git a/agent/build/rk3588-agent_linux_arm64 b/agent/build/rk3588-agent_linux_arm64 deleted file mode 100644 index 6f87a35..0000000 Binary files a/agent/build/rk3588-agent_linux_arm64 and /dev/null differ diff --git a/agent/rk3588-agent b/agent/rk3588-agent deleted file mode 100644 index 716692a..0000000 Binary files a/agent/rk3588-agent and /dev/null differ diff --git a/agent/rk3588-agent_linux_arm64 b/agent/rk3588-agent_linux_arm64 index b1240bc..e2a5301 100644 Binary files a/agent/rk3588-agent_linux_arm64 and b/agent/rk3588-agent_linux_arm64 differ diff --git a/configs/sample_cam1_native_rtsp_face.json b/configs/sample_cam1_native_rtsp_face.json new file mode 100644 index 0000000..8166894 --- /dev/null +++ b/configs/sample_cam1_native_rtsp_face.json @@ -0,0 +1,270 @@ +{ + "queue": { "size": 8, "strategy": "drop_oldest" }, + "graphs": [ + { + "name": "cam1_native_face_dual_output", + "nodes": [ + { + "id": "in_cam1", + "type": "input_rtsp", + "role": "source", + "enable": true, + "url": "rtsp://10.0.0.5:8554/cam", + "fps": 30, + "width": 1280, + "height": 720, + "use_mpp": true, + "use_ffmpeg": false, + "force_tcp": true, + "reconnect_sec": 5, + "reconnect_backoff_max_sec": 30 + }, + + { + "id": "pre_cam1", + "type": "preprocess", + "role": "filter", + "enable": true, + "dst_w": 640, + "dst_h": 640, + "dst_format": "rgb", + "dst_packed": true, + "keep_ratio": false, + "rga_gate": "cam1_native_face_dual_output", + "use_rga": true + }, + { + "id": "yolo_cam1", + "type": "ai_yolo", + "role": "filter", + "enable": true, + "infer_fps": 10, + "model_path": "./third_party/rknpu2/examples/rknn_yolov5_demo/model/RK3588/yolov5s-640-640.rknn", + "model_version": "v5", + "num_classes": 80, + "conf": 0.25, + "nms": 0.45, + "class_filter": [] + }, + { + "id": "trk_cam1", + "type": "tracker", + "role": "filter", + "enable": true, + "mode": "bytetrack_lite", + "per_class": true, + "state_key": "cam1_native_face_dual_output", + "track_classes": [0], + "ignore_classes": [], + "allowed_models": ["yolov5", "yolov8"], + "high_th": 0.5, + "low_th": 0.1, + "iou_th": 0.3, + "max_age_ms": 1500, + "min_hits": 2, + "max_tracks": 128, + "debug": { "stats": false, "stats_interval": 200 } + }, + { + "id": "osd_cam1", + "type": "osd", + "role": "filter", + "enable": true, + "draw_bbox": true, + "draw_text": true, + "draw_face_det": false, + "line_width": 2, + "font_scale": 1, + "labels": [] + }, + { + "id": "post_cam1", + "type": "preprocess", + "role": "filter", + "enable": true, + "dst_w": 1280, + "dst_h": 720, + "dst_format": "nv12", + "keep_ratio": false, + "rga_gate": "cam1_native_face_dual_output", + "use_rga": true + }, + { + "id": "pub_cam1", + "type": "publish", + "role": "filter", + "enable": true, + "codec": "h264", + "fps": 30, + "gop": 60, + "bitrate_kbps": 2000, + "use_mpp": true, + "use_ffmpeg_mux": true, + "outputs": [ + { "proto": "rtsp_server", "port": 8555, "path": "/live/cam1" }, + { "proto": "hls", "path": "./web/hls/cam1/index.m3u8", "segment_sec": 2 } + ] + }, + { + "id": "alarm_cam1", + "type": "alarm", + "role": "sink", + "enable": true, + "eval_fps": 10, + "labels": [], + "rules": [ + { + "name": "person_in_view", + "class_ids": [0], + "roi": { "x": 0.0, "y": 0.0, "w": 1.0, "h": 1.0 }, + "min_duration_ms": 0, + "cooldown_ms": 3000 + } + ], + "face_rules": [], + "actions": { + "log": { "enable": true, "level": "info" }, + "snapshot": { + "enable": true, + "format": "jpg", + "quality": 85, + "upload": { + "type": "minio", + "endpoint": "http://10.0.0.5:9000", + "bucket": "test", + "region": "us-east-1", + "access_key": "your-access-key", + "secret_key": "your-secret-key" + } + }, + "clip": { + "enable": true, + "pre_sec": 5, + "post_sec": 10, + "format": "mp4", + "fps": 30, + "upload": { + "type": "minio", + "endpoint": "http://10.0.0.5:9000", + "bucket": "test", + "region": "us-east-1", + "access_key": "your-access-key", + "secret_key": "your-secret-key" + } + }, + "http": { + "enable": false, + "url": "http://127.0.0.1:8080/api/alarm", + "timeout_ms": 3000, + "include_media_url": true, + "method": "POST" + } + } + }, + + { + "id": "pre_face_cam1", + "type": "preprocess", + "role": "filter", + "enable": true, + "dst_w": 0, + "dst_h": 0, + "dst_format": "rgb", + "dst_packed": true, + "keep_ratio": false, + "rga_gate": "cam1_native_face_dual_output", + "use_rga": true + }, + { + "id": "face_det_cam1", + "type": "ai_face_det", + "role": "filter", + "enable": true, + "model_path": "./models/RetinaFace_mobile320.rknn", + "conf": 0.6, + "nms": 0.4, + "max_faces": 10, + "output_landmarks": true, + "input_format": "rgb" + }, + { + "id": "face_recog_cam1", + "type": "ai_face_recog", + "role": "filter", + "enable": true, + "model_path": "./models/mobilefacenet_arcface.rknn", + "align": true, + "emit_embedding": false, + "max_faces": 10, + "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, + "expected_dim": 512, + "dtype": "auto" + } + }, + { + "id": "osd_face_cam1", + "type": "osd", + "role": "filter", + "enable": true, + "draw_bbox": false, + "draw_text": true, + "draw_face_det": false, + "draw_face_bbox": false, + "line_width": 2, + "font_scale": 1, + "labels": [] + }, + { + "id": "post_face_cam1", + "type": "preprocess", + "role": "filter", + "enable": true, + "dst_w": 0, + "dst_h": 0, + "dst_format": "nv12", + "keep_ratio": false, + "rga_gate": "cam1_native_face_dual_output", + "use_rga": true + }, + { + "id": "pub_face_cam1", + "type": "publish", + "role": "filter", + "enable": true, + "codec": "h264", + "fps": 30, + "gop": 60, + "bitrate_kbps": 2000, + "use_mpp": true, + "use_ffmpeg_mux": true, + "outputs": [ + { "proto": "rtsp_server", "port": 8555, "path": "/live/cam1_face" }, + { "proto": "hls", "path": "./web/hls/cam1_face/index.m3u8", "segment_sec": 2 } + ] + } + ], + "edges": [ + ["in_cam1", "pre_cam1"], + ["pre_cam1", "yolo_cam1"], + ["yolo_cam1", "trk_cam1"], + ["trk_cam1", "osd_cam1"], + ["osd_cam1", "post_cam1"], + ["post_cam1", "pub_cam1"], + ["pub_cam1", "alarm_cam1"], + + ["in_cam1", "pre_face_cam1", {"queue": {"size": 1, "strategy": "drop_oldest"}}], + ["pre_face_cam1", "face_det_cam1", {"queue": {"size": 1, "strategy": "drop_oldest"}}], + ["face_det_cam1", "face_recog_cam1", {"queue": {"size": 1, "strategy": "drop_oldest"}}], + ["face_recog_cam1", "osd_face_cam1"], + ["osd_face_cam1", "post_face_cam1"], + ["post_face_cam1", "pub_face_cam1"] + ] + } + ] +}