Skip to main content

CIX Multi-Channel Video Recognition

This is a multi-channel video stream YOLO object detection inference system based on Radxa O6/O6N.

Environment Setup

The relevant environment needs to be configured in advance.

Features​

  • Multi-channel video stream parallel processing
  • Thread/process dual-mode inference
  • NPU hardware acceleration
  • Real-time FPS display
  • Multi-stream combined display, fullscreen switching

Project Structure​

cix-multistream-yolo/
├── main.py # Program entry point
├── src/
│ ├── capture/ # Video capture
│ │ ├── video_reader.py # Video frame reading
│ │ └── video_reader_pipeline.py # Read pipeline
│ ├── processing/ # Inference processing
│ │ ├── inference.py # NPU inference engine
│ │ ├── inference_pipeline.py # Inference pipeline
│ │ └── post_processing.py # Post-processing (NMS)
│ └── utils/
│ ├── manager.py # Main coordinator
│ ├── tools.py # Utility functions
│ ├── displaying.py # Display module
│ └── download_model.sh # Model download script
├── models/ # Model files
├── data/ # Test videos
│ ├── test_videos_360P/
│ └── test_videos_720P/
└── test/ # Test code

Dependencies​

  • Python 3.11+
  • OpenCV
  • FFmpeg
  • NumPy
  • libnoe (NPU library)

Usage​

Environment Dependencies​

O6 / O6N
pip install opencv-python numpy

Download Project​

O6 / O6N
git clone https://github.com/Ronin-1124/cix-multistream-yolo.git
cd cix-multistream-yolo

Basic Usage​

python main.py

Specify Parameters​

# Specify video source
python main.py -i video.mp4
python main.py -i video1.mp4 video2.mp4
python main.py -i data/test_videos_360P/

# Specify model
python main.py -m models/yolov8s.cix

# Select inference mode (thread or process)
python main.py -t process

Demo​

8-channel YOLOv8n inference demo

As shown, with 8-channel inference, it can achieve up to 173 FPS real-time throughput, with an average of about 20 FPS per channel.

Parameter Description​

ParameterDescriptionDefault
-i, --inputVideo file, directory or multiple pathsdata/test_videos_360P
-m, --modelModel file pathmodels/yolov8n.cix
-t, --typeInference mode: thread/t or process/pthread

Keyboard Shortcuts​

KeyFunction
qQuit program
fToggle fullscreen mode

Supported Models​

  • yolov8n - YOLOv8 Nano
  • yolov8s - YOLOv8 Small

Model files are automatically downloaded from ModelScope if not present.

Architecture Design​

Video Reading (VideoReader)
↓
Frame Queue (Queue)
↓
Preprocessing (pre_processing)
↓
NPU Inference (InferenceEngine)
↓
Post-processing (NMS)
↓
Result Queue
↓
Display Module (Display)

Testing​

pytest test/

    You need to be logged into GitHub to post a comment. If you are already logged in, please ignore this message.

    Radxa-docs © 2026 by Radxa Computer (Shenzhen) Co.,Ltd. is licensed under CC BY 4.0