alebal123bal/khadas_yolov8n_multithread
GitHub: alebal123bal/khadas_yolov8n_multithread
该项目是一个在 RK3588S NPU 上运行的实时 YOLOv8n 目标检测流水线,通过全面硬件加速和多核并行推理,在极低内存占用下突破传感器帧率瓶颈。
Stars: 47 | Forks: 3
# khadas_yolov8n_multithread - 在 RK3588S NPU 上进行实时无人机检测
:~/programs/
```
运行:`./yolov8n_cap_multithread `
启动命令请参见 [docs/usage.md](docs/usage.md),关于 IPC 控制/数据平面、下游的追踪/时间特征/LLM 阶段以及 RTSP 流媒体设置,请参见
[docs/usage_advanced.md](docs/usage_advanced.md)。
## 仓库结构
```
yolov8n_cap_multithread/
├── CMakeLists.txt # builds main pipeline + all auxiliary processes
├── build.sh # convenience wrapper around CMake
├── toolchain-aarch64.cmake # cross-compile toolchain (WSL / x86 → aarch64)
├── data/
│ ├── coco_1_labels_list.txt
│ └── model/ # .rknn model files
│
├── include/ # YOLO pipeline headers
│ ├── camera_util.h
│ ├── drm_func.h
│ ├── local_display.h # HDMI output via DRM / Wayland
│ ├── model_utils.h
│ ├── postprocess.h # YOLOv8 decode + NMS
│ ├── rga_func.h # Rockchip RGA color-space conversion / resize
│ ├── rtsp_stream.h # GStreamer RTSP publisher
│ └── ipc/ # shared IPC layer (control + data planes)
│ ├── bounded_queue.h # drop-oldest queue used by all publishers
│ ├── i_control_server.h
│ ├── i_data_publisher.h
│ ├── messages.h # in-process DetectionMessage type
│ ├── unix_control_server.h
│ ├── unix_data_publisher.h
│ ├── wire_protocol.h # ALL on-the-wire structs + socket paths
│ └── yolo_control_state.h
│
├── src/ # YOLO pipeline implementation
│ ├── main.cc # multi-threaded RKNN pipeline (3 NPU cores)
│ ├── camera_util.cc
│ ├── local_display.cc
│ ├── model_utils.cc
│ ├── postprocess.cc
│ ├── rga_func.cc
│ ├── rtsp_stream.cc
│ └── ipc/
│ ├── unix_control_server.cc # JSON control plane over AF_UNIX
│ └── unix_data_publisher.cc # binary detection stream over AF_UNIX
│
├── tracker/ # ByteTrack stage (separate process)
│ ├── include/
│ │ └── bytetrack_adapter.h # IByteTracker interface
│ └── src/
│ ├── bytetrack_service.cc # main() — reads data, writes tracks
│ └── iou_tracker.cc # default IOU-greedy implementation
│
├── temporal/ # Temporal-features stage (separate process)
│ ├── include/
│ │ ├── track_state.h # per-track history + feature math
│ │ └── track_manager.h # lifecycle + per-frame orchestration
│ └── src/
│ ├── temporal_service.cc # main() — reads tracks, writes events
│ ├── track_state.cc
│ └── track_manager.cc
│
├── tools/ # Standalone client / debug binaries
│ ├── control_client.cc # send pause/resume/blackout/status commands
│ ├── data_receiver.cc # consume raw detections (yolo_data socket)
│ ├── tracks_receiver.cc # consume tracked dets (yolo_tracks socket)
│ ├── events_receiver.cc # consume temporal events (yolo_events socket)
│ └── event_summarizer.cc # presence FSM + on-demand LLM (production sink)
│
├── utility_board_scripts/ # board-side helpers (deployed to install tree)
│ └── run_qwen.sh # feeds a snapshot to Qwen2.5-0.5B via llm_demo
│
├── build/ # CMake out-of-source build tree
└── install/ # `make install` deploy tree (scp this to board)
└── yolov8n_cap_multithread/
├── yolov8n_cap_multithread
├── bytetrack_service
├── temporal_service
├── control_client
├── data_receiver
├── tracks_receiver
├── events_receiver
├── event_summarizer
├── data/ # models + labels
├── utility_board_scripts/ # run_qwen.sh
└── lib/ # librknnrt.so, librga.so
```
### 进程拓扑
每个阶段都是一个独立的操作系统进程;它们通过按设备划分的 Unix-domain socket(`` = V4L2 设备号,例如 `33`)进行通信。完整的软件架构 —— 包括内部的 `main.cc` pipeline 和多进程拓扑(均以 Mermaid 图表形式展示)—— 记录在
[docs/architecture.md](docs/architecture.md) 中。
## 许可证与免责声明
基于 **Apache License 2.0** 授权 —— 请参见 [LICENSE](LICENSE)。
这是一个**独立的个人项目**,仅供**教育与学术研究目的**使用。它**不隶属于作者的所有雇主或客户,也未获得其认可**,也**不适用于生产环境、关键业务、安全关键、监控或国防用途**。“UAV”(无人机)类别仅用于基准测试推理 pipeline 的示例检测目标。本软件**“按原样”提供,不提供任何形式的保证**,并且**您须自行负责**遵守所有适用的出口管制及其他相关法律法规。完整文本请参见 [DISCLAIMER.md](DISCLAIMER.md)。
标签:Bash脚本, RK3588S, YOLOv8, 嵌入式AI, 无人机检测, 目标检测, 计算机视觉, 边缘计算