Biến Raspberry Pi thành "Mắt thần" AI: Hướng dẫn chạy mô hình YOLOv10 nhận diện vật thể thời gian thực (30 FPS)

AI Hunter

Member
Biến Raspberry Pi thành "Mắt thần" AI: Hướng dẫn chạy mô hình YOLOv10 nhận diện vật thể thời gian thực (30 FPS)

Camera an ninh nhà bạn chỉ biết ghi hình? Quá lỗi thời.
Hãy tưởng tượng một chiếc camera biết:
- Nhắn tin cho bạn khi có "Người lạ" trèo rào (chứ không phải con mèo).
- Đếm số lượng khách vào cửa hàng mỗi ngày.
- Phát hiện ai đó quên đội mũ bảo hiểm trong công trường.

Biến Raspberry Pi thành Mắt thần AI Hướng dẫn chạy mô hình YOLOv10 nhận diện vật thể thời gian...jpg

Tất cả chạy trên một chiếc bo mạch chủ nhỏ bằng thẻ tín dụng: **Raspberry Pi 5**.
Bí mật nằm ở **YOLOv10** (You Only Look Once - Version 10) - phiên bản thuật toán thị giác máy tính nhẹ nhất và nhanh nhất lịch sử (tính đến 2026).

1. Tại sao lại là YOLOv10 + Raspberry Pi 5?​

  • YOLOv10 (Nano Version): Đã loại bỏ hoàn toàn các thành phần thừa (NMS-Free), giúp giảm 40% độ trễ so với YOLOv8 mà độ chính xác vẫn giữ nguyên.
  • Raspberry Pi 5: CPU mạnh gấp 3 lần Pi 4, và quan trọng nhất là hỗ trợ tập lệnh AI tốt hơn.
  • NCNN Framework: Chúng ta không chạy PyTorch (quá nặng). Chúng ta sẽ convert model sang định dạng NCNN của Tencent, tối ưu cực tốt cho chip di động.

2. Chuẩn bị phần cứng​

* 1 x Raspberry Pi 5 (8GB RAM càng tốt).
* 1 x Camera Module 3 (hoặc Webcam USB xịn).
* 1 x Quạt tản nhiệt (AI chạy sẽ rất nóng!).

3. Cài đặt phần mềm​

Chúng ta sử dụng thư viện `ultralytics` để export model và `ncnn` để chạy inference.

Bash:
# Cập nhật hệ điều hành
sudo apt update && sudo apt upgrade -y

# Cài đặt các thư viện cần thiết
pip install ultralytics opencv-python-headless ncnn

4. Triển khai Code (Python)​


Bước 1: Chuẩn bị Model (Thực hiện trên Laptop mạnh)​

Đừng train hay export trên Pi vì rất lâu. Hãy làm việc này trên PC của bạn.

Python:
from ultralytics import YOLO

# Tải model YOLOv10 bản Nano (nhẹ nhất)
model = YOLO("yolov10n.pt")

# Export sang định dạng NCNN (Tối ưu cho ARM CPU)
model.export(format="ncnn", imgsz=640)
# Kết quả: Bạn sẽ có folder 'yolov10n_ncnn_model' -> Copy folder này vào Raspberry Pi

Bước 2: Viết code chạy trên Raspberry Pi​

Tạo file ai_camera.py.

Python:
import cv2
import time
from ultralytics import YOLO

# Load model NCNN đã copy vào
# task='detect' giúp thư viện hiểu đang làm gì
print("👁️ Đang khởi động Mắt thần...")
model = YOLO("./yolov10n_ncnn_model", task='detect')

# Mở Camera (0 là camera mặc định)
cap = cv2.VideoCapture(0)
cap.set(3, 640) # Chiều rộng
cap.set(4, 480) # Chiều cao

# Biến tính FPS
prev_frame_time = 0
new_frame_time = 0

while True:
    success, frame = cap.read()
    if not success:
        break

    # --- AI INFERENCE ---
    # stream=True giúp xử lý luồng nhanh hơn
    results = model(frame, stream=True, conf=0.5) # Chỉ lấy độ tin cậy > 50%

    # Vẽ khung hình chữ nhật quanh vật thể
    for r in results:
        boxes = r.boxes
        for box in boxes:
            # Lấy tọa độ
            x1, y1, x2, y2 = box.xyxy[0]
            x1, y1, x2, y2 = int(x1), int(y1), int(x2), int(y2)
           
            # Lấy tên Class (Ví dụ: 'person', 'car')
            cls = int(box.cls[0])
            label = model.names[cls]
            conf = float(box.conf[0])

            # Vẽ lên hình
            cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2)
            cv2.putText(frame, f"{label} {conf:.2f}", (x1, y1 - 10),
                        cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)

            # [Logic mở rộng] Nếu phát hiện "person" -> Gửi cảnh báo
            if label == 'person':
                print("⚠️ Phát hiện người xâm nhập!")

    # --- TÍNH FPS ---
    new_frame_time = time.time()
    fps = 1 / (new_frame_time - prev_frame_time)
    prev_frame_time = new_frame_time
   
    cv2.putText(frame, f"FPS: {int(fps)}", (10, 30),
                cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2)

    # Hiển thị
    cv2.imshow("YOLOv10 Pi Cam", frame)

    # Nhấn 'q' để thoát
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

5. Kết quả thực tế & Tối ưu​

Khi chạy đoạn code trên Raspberry Pi 5:
  • Tốc độ: Đạt khoảng 25-32 FPS (Thời gian thực mượt mà).
  • Nhiệt độ: CPU sẽ nóng lên khoảng 70°C. Bắt buộc phải có quạt tản nhiệt.
  • Độ chính xác: Nhận diện tốt người, xe cộ, chó mèo, điện thoại...

Mẹo tối ưu thêm:
Nếu bạn muốn nhanh hơn nữa, hãy dùng kỹ thuật Overclock nhẹ Raspberry Pi 5 lên 2.8GHz (nhớ tản nhiệt kỹ).

Kết luận​

Chỉ với chi phí khoảng 2 triệu đồng (Pi + Camera), bạn đã sở hữu một hệ thống AI Edge mạnh mẽ không thua kém các camera công nghiệp ngàn đô. Đây là nền tảng tuyệt vời để phát triển các dự án IoT như: Robot tự hành, Hệ thống điểm danh tự động hay Cảnh báo cháy sớm.
 
Back
Top