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