YOLOv8 có thể chạy trên Orange Pi 5 series và các nền tảng RK3588 tương tự thông qua NPU Rockchip. Bài viết này hướng dẫn sử dụng model RKNN có sẵn trong repository rk3588-yolov8, đồng thời trình bày luồng chuyển đổi model YOLOv8 riêng sang định dạng .rknn khi cần.

Phạm vi và điều kiện cần có
- Orange Pi 5 series hoặc nền tảng dùng RK3588/RK3588S có môi trường Linux aarch64.
- Python 3.10: các gói RKNN trong README được cung cấp cho
cp310. - Camera USB hoặc nguồn video tương thích OpenCV. Mã mẫu đặt
source = 0, tương ứng thiết bị camera mặc định. - Repository
rk3588-yolov8và modelmodels/yolov8s.rknnđi kèm.
Lưu ý về phiên bản: README của repository chỉ định RKNN Toolkit 2 và RKNN Toolkit Lite 2 phiên bản 2.1.0. Hãy giữ đồng nhất bộ toolkit, runtime và model RKNN; không trộn lẫn tùy tiện các file runtime hoặc wheel từ phiên bản khác.
Bước 1: Chuẩn bị hệ điều hành
README đề cập Ubuntu cho Orange Pi 5/5B hoặc Armbian cho Orange Pi 5/5B. Sau khi ghi image vào thẻ nhớ và khởi động thiết bị, hãy cập nhật hệ thống trước khi tiếp tục. Bảo đảm Python đang dùng là 3.10 nếu bạn sẽ cài đúng các wheel cp310 bên dưới.
Bước 2: Lấy mã nguồn và model RKNN đã chuẩn bị
git clone https://github.com/thanhtantran/rk3588-yolov8
cd rk3588-yolov8
Repository đã có model models/yolov8s.rknn với dung lượng khoảng 11,9MB. Trong main.py, biến model_name mặc định là yolov8s.rknn; model được nạp từ thư mục models.

Bước 3: Cài RKNN runtime và thư viện Python trên Orange Pi
Trên Orange Pi, README yêu cầu cập nhật librknnrt.so, cài rknn_toolkit_lite2 cho aarch64, rồi cài OpenCV. Các lệnh theo phiên bản 2.1.0 trong README như sau:
# Download
wget https://github.com/airockchip/rknn-toolkit2/raw/v2.1.0/rknpu2/runtime/Linux/librknn_api/aarch64/librknnrt.so
# Move to /usr/lib
sudo mv ./librknnrt.so /usr/lib
# Download
wget https://github.com/airockchip/rknn-toolkit2/raw/v2.1.0/rknn-toolkit-lite2/packages/rknn_toolkit_lite2-2.1.0-cp310-cp310-linux_aarch64.whl
# Install
pip install rknn_toolkit_lite2-2.1.0-cp310-cp310-linux_aarch64.whl
pip install opencv-python
Mã trong utils/rk3588.py gọi RKNNLite.load_rknn() rồi khởi tạo runtime với async_mode=True và RKNNLite.NPU_CORE_0. Vì vậy, lỗi nạp model hoặc lỗi khởi tạo runtime cần được kiểm tra trước ở cặp model .rknn và runtime cài trên hệ thống.
Bước 4: Chạy nhận diện từ camera
Thiết lập mặc định trong main.py dùng input 640×640, ngưỡng đối tượng OBJ_THRESH = 0.25 và ngưỡng NMS NMS_THRESH = 0.25. Camera mặc định được mở qua OpenCV với source = 0.
python main.py
Chương trình mở cửa sổ Inf_results, vẽ khung nhận diện và in FPS trên terminal. Nhấn phím q trong cửa sổ hiển thị để thoát. Nếu dùng nguồn video khác, thay giá trị source trong main.py bằng đường dẫn file hoặc URL luồng video phù hợp với OpenCV.
Tùy chọn: Chuyển model YOLOv8 riêng sang RKNN
Phần này chỉ cần thiết khi không dùng model yolov8s.rknn có sẵn. Việc chuyển đổi thực hiện trên PC Linux x86_64 có Python 3.10, sau đó chép model .rknn sang Orange Pi.
Cài môi trường chuyển đổi
# Download
wget https://github.com/airockchip/rknn-toolkit2/raw/v2.1.0/rknn-toolkit2/packages/requirements_cp310-2.1.0.txt
# Install
pip install -r requirements_cp310-2.1.0.txt
# Download
wget https://github.com/airockchip/rknn-toolkit2/raw/v2.1.0/rknn-toolkit2/packages/rknn_toolkit2-2.1.0+708089d1-cp310-cp310-linux_x86_64.whl
# Install
pip install rknn_toolkit2-2.1.0+708089d1-cp310-cp310-linux_x86_64.whl
git clone https://github.com/airockchip/ultralytics_yolov8
cd ultralytics_yolov8
python setup.py install
Xuất YOLOv8 và chuyển ONNX sang RKNN
from ultralytics import YOLO
model = YOLO("yolov8.pt")
path = model.export(format="rknn") # Internal method written by airockchip, don't be fooled by the format name
Khi xuất model, hãy kiểm tra kích thước input. README lưu ý có thể cần điều chỉnh batch_size trong ultralytics/cfg/default.yaml. Nếu quá trình chuyển đổi có cảnh báo hoặc lỗi, README đề xuất thử opset 12, 17 hoặc 19 tùy phiên bản PyTorch; với RKNN 2.1.0, opset 19 được khuyến nghị.
git clone https://github.com/airockchip/rknn_model_zoo
cd rknn_model_zoo/examples/yolov8/python
python convert.py <path-to-onnx-model>/yolov8n.onnx rk3588 i8 ../model/yolov8n.rknn
Kiểm tra khi gặp lỗi
- Không nạp được model: kiểm tra file
.rknncó nằm đúng trong thư mụcmodelsvà tên model trongmain.pycó khớp không. - Không khởi tạo được runtime: kiểm tra kiến trúc aarch64, phiên bản
librknnrt.sovà wheelrknn_toolkit_lite2có cùng chuỗi phiên bản với model đã chuyển đổi hay không. - Không mở được camera: kiểm tra camera được hệ điều hành nhận diện; nếu camera không phải thiết bị mặc định, điều chỉnh
sourcethay vì để0. - Không thấy cửa sổ kết quả: mã mẫu dùng
cv2.imshow(); cần chạy trong môi trường có phiên desktop/hiển thị đồ họa phù hợp.
Kết luận
Với model RKNN sẵn có, Orange Pi 5 series có thể chạy ví dụ YOLOv8 trực tiếp thông qua RKNN Lite 2 và OpenCV. Khi cần model tùy biến, hãy thực hiện chuỗi chuyển đổi YOLOv8 → ONNX → RKNN trên PC, sau đó đưa file .rknn đã tạo vào thư mục models trên Orange Pi.

