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.
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 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!).
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ỹ).
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.
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 fileai_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ỹ).