Ở bài viết trước, tôi đã cài đặt và test thử YOLOv5 trên Orange Pi 3B, mặc dù chỉ dùng camera USB và NPU 0.8TOPS các bạn đã thấy Orange Pi 3B đạt tới khoảng 28 frames/ giây theo thư viện training sẵn. Do đó ở bài này, tôi sẽ sử dụng Orange Pi 5 Plus với cấu hình mạnh hơn và đầu vào camera tốt hơn để xem sao.
Orange Pi 5 Plus, sản phẩm mạnh mẽ nhất của Orange Pi trong năm 2023 này với chip RK3588 với 8 lõi ARM và NPU đạt mức 6 TOPS, 2 đầu ra HDMI 8K, 2 đầu camera MIPI DSI tới 4K và 1 đầu vào HDMI fullsize cũng 4Kp60, đây thực sự là sản phẩm mạnh mẽ nhất cho các ứng dụng AI hoặc Computer Vision.
Thị giác máy tính (tiếng Anh: computer vision) là một lĩnh vực bao gồm các phương pháp thu nhận, xử lý ảnh kỹ thuật số, phân tích và nhận dạng các hình ảnh và, nói chung là dữ liệu đa chiều từ thế giới thực để cho ra các thông tin số hoặc biểu tượng, ví dụ trong các dạng quyết định.[1][2][3][4] Việc phát triển lĩnh vực này có bối cảnh từ việc sao chép các khả năng thị giác con người bởi sự nhận diện và hiểu biết một hình ảnh mang tính điện tử.[5] Sự nhận diện hình ảnh có thể xem là việc giải quyết vấn đề của các biểu tượng thông tin từ dữ liệu hình ảnh qua cách dùng các mô hình được xây dựng với sự giúp đỡ của các ngành lý thuyết học, thống kê, vật lý và hình học.[6] Thị giác máy tính cũng được mô tả là sự tổng thể của một dải rộng các quá trình tự động và tích hợp và các thể hiện cho các nhận thức thị giác
Khác với Orange Pi 3B, khi sử dụng file rkcat.sh trong github của tôi, các bạn sẽ thấy NPU chỉ có 1 luồng xử lý duy nhất; còn đối với Orange Pi 5 Plus, NPU xử lý là đa luồng, hay còn gọi là multi-threaded. Với code sử dụng đa luồng, tôi có tham khảo một số code nguồn và có tối ưu hóa code nguồn này để sử dụng trên Orange Pi 5 Plus. https://github.com/thanhtantran/rknn-multi-threaded-3588
Các bước tiến hành
Bước 1: Cài đặt hệ điều hành
Orange Pi 5 Plus có thể cài được nhiều hệ điều hành, ngoài Ubuntu / Debian còn có cả Centos, OpenFyde, BredOS, Rocky-Linux, Kali, DietPi … .v.v Tuy nhiên theo tôi tốt nhất vẫn cứ cài 1 bản Debian hoặc Ubuntu để dễ sử dụng, sử dụng bản desktop để thao tác trực tiếp trên Orange Pi
- Debian (Bulleye hoặc Bookworm) https://drive.google.com/drive/folders/1I_asEsyjMf_nixpymLdco7SCxr9AveYH
- Ubuntu (Jammy hoặc Focal) https://drive.google.com/drive/folders/1wOmKUla8CwUPTfxvfCGutj8lbMZFtFCm
Bước 2: Cài đặt các phần mềm cần thiết
Chạy cập nhật cho hệ điều hành của bạn bằng câu lệnh sudo apt update && sudo apt upgrade -y
Tiếp đến có thể HDH của bạn sẽ có 2 bản Python, chỉ dùng Python3 bằng cách cài như sau sudo apt install python-is-python3
Cài Python PIP: sudo apt install python3-pip python3-dev
Cài các phần mềm khác phòng khi HDH bạn chưa có sudo apt install gcc build-essential
Bước 3: Chuẩn bị cho việc test nhận diện đồ vật (object-detection)
- Orange Pi 5 Plus bạn có thể sử dụng hẳn 1 camera chất lượng cao cho đầu vào HDMI IN lên tới 4K, ở đây vì không có camera 4K nên tôi sử dụng camera Action của Yi, độ phân giải tối đa là fullHD, camera này có đường HDMI out và tôi sử dụng cable HDMI to HDMI để cắm vào đầu HDMI In trên Orange Pi 5 Plus
- Một đường mạng internet tốt để tải về mã nguồn và các thư viện python, việc này rất cần thiết vì khi cài các phần mềm python, chúng sẽ tự tải về các thư viện phụ thuộc (dependencies). Tôi đã nhiều lần bị cài không được vì không kết nối được tới máy chủ thư viện để tải về, mà cứ nghĩ rằng mình sai ở đâu đó. Trên thực tế, chỉ là đường truyền quá kém 🙁
- Màn hình bàn phím thao tác trực tiếp trên Orange Pi 5 Plus, bạn không thể chạy việc này qua màn hình câu lệnh CLI, vì vậy hãy cắm màn hình và thêm bàn phím chuột để sử dụng nó cho các thao tác sau này.
Mở terminal trên hệ điều hành, tải về mã nguồn này trên github:
git clone https://github.com/thanhtantran/rknn-multi-threaded-3588
Đối với Orange Pi 5 Plus tôi vẫn dùng rknn_toolkit_lite2-1.5.2 trên Python 3.9, bạn có thể sử dụng phiên bản mới hơn của rknn_toolkit_lite trên github này: https://github.com/rockchip-linux/rknn-toolkit2. Điều này cũng không ảnh hưởng đến kết quả lắm, hoặc có thể sử dụng phiên bản Python mới hơn, ví dụ 3.10. Về cơ bản bạn cần phải cài được rknn_toolkit_lite thông qua PIP của Python.
Tiếp đó cài openCV trên Python
pip install opencv-python
Trong quá trình cài, PIP sẽ cài luôn cho bạn các thư viện cần thiết như numpy, psutils hay ruamel. Nếu không chắc bạn có thể cài riêng lẻ.
Tiếp đến nữa, bạn cần tìm được Camera HDMI nó nằm ở đâu, để làm được việc này bạn cần 1 công cụ là V4L2 Test trên linux, nó sẽ cho bạn thử hết các đầu vào video trong /dev/ và tìm ra được đầu vào HDMI của bạn. Với đầu vào HDMI In của Orange Pi 5 Plus, card driver sẽ là hdmi-rx. Nếu chưa thấy trong V4L2 Test Bench, có thể bạn sẽ cần vào sudo orangepi-config
để activate nó lên.
Sau khi tìm được đầu vào HDMI IN của Orange Pi 5 Plus, bạn dùng trình soạn thảo trên Linux sửa trong file main.py, ví dụ là /dev/video0 hoặc /dev/video1 thì dòng này sẽ sửa theo số tương ứng
cap = cv2.VideoCapture(0)
hoặc cap = cv2.VideoCapture(1)
Lưu file main.py lại và tại Terminal, đánh lệnh python main.py
và chờ đợi kết quả. Nếu bạn muốn tăng số frame hoặc sử dụng ít hơn số thread, sửa file func.py dòng này
OBJ_THRESH, NMS_THRESH, IMG_SIZE = 0.25, 0.45, 640
, và file main.py dòng này TPEs = 3
Còn nếu bạn muốn kiểm tra xem NPU chạy như thế nào, trong source của tôi vẫn có file rkcat.sh để kiểm tra, và các bạn sẽ thấy NPU có 4 core đều chạy đồng thời khoảng 20% nhưng Orange Pi 5 Plus đã đạt được gần 38 frames/ giây
Video demo của tôi: