--- library_name: onnx pipeline_tag: video-classification tags: - onnx - video-classification - accident-detection - dashcam - rockchip - rk3588 license: mit --- # Dashcam Collision Detector — Rockchip RK3588 (`mnv3s_temporal`) Causal sliding-window crash detector for the **RK3588 NPU**. Because the NPU has no 3D convolutions, this is a per-frame 2D-CNN + a small temporal head, deployed as **two ONNX graphs** (convert the backbone to INT8 RKNN; run the head on the CPU): | file | shape | runs on | |---|---|---| | `backbone.onnx` | `[1, 3, 112, 112]` → `[1, 576]` | NPU (INT8 RKNN) | | `temporal_head.onnx` | `[1, 16, 576]` → `[1]` | CPU | | `rockchip.meta.json` | — | inference config | - **Input:** RGB only (3 channels), 16-frame window - **Decision rule:** threshold `0.73`, `3` consecutive windows ## Usage ```python from huggingface_hub import hf_hub_download import onnxruntime as ort, numpy as np, json repo = "akhra92/dashcam-collision-rockchip-mnv3s" bb = ort.InferenceSession(hf_hub_download(repo, "backbone.onnx")) head = ort.InferenceSession(hf_hub_download(repo, "temporal_head.onnx")) meta = json.load(open(hf_hub_download(repo, "rockchip.meta.json"))) T, C = meta["window_frames"], meta["feat_dim"] feats = np.zeros((1, T, C), np.float32) # fill from per-frame backbone frame = np.random.randn(*meta["frame_shape"]).astype("float32") feats[0, -1] = bb.run(["feat"], {"frame": frame})[0][0] logit = head.run(["logit"], {"feats": feats})[0] ``` See `deploy/rockchip/` (convert_rknn.py, infer_rknn.py) in the source repo for the INT8 conversion and streaming inference.