Back to articles
Technology Insight

Xây dựng hệ thống AI Video Analytics không cần GPU trên VPS: Nhận diện khuôn mặt và đếm người bằng CPU qua OpenVINO

May 25, 2026

Giới thiệu xu hướng AI Video Analytics tối ưu chi phí

Trong kỷ nguyên trí tuệ nhân tạo hiện nay, việc xây dựng các hệ thống xử lý video thông minh (AI Video Analytics) như nhận diện khuôn mặt hay đếm số lượng người thường gắn liền với những bộ nguồn phần cứng đắt đỏ, đặc biệt là các dòng card đồ họa chuyên dụng (GPU). Tuy nhiên, đối với các doanh nghiệp vừa và nhỏ (SMEs) hoặc các startup, chi phí thuê VPS có GPU là một rào cản tài chính vô cùng lớn.

Câu hỏi đặt ra là: Liệu có thể tận dụng kiến trúc hạ tầng VPS chỉ chạy hoàn toàn bằng CPU để xử lý các mô hình Deep Learning thời gian thực (Real-time) hay không?

Câu trả lời là Có, nhờ vào bộ công cụ tối ưu hóa Intel OpenVINO Toolkit. Bài viết này sẽ hướng dẫn bạn chi tiết cách thiết lập, chuyển đổi mô hình và lập trình một hệ thống camera thông minh, nhận diện khuôn mặt và đếm người chỉ trên môi trường VPS CPU thông thường một cách mượt mà.

---

Tại sao chọn OpenVINO cho hệ thống CPU-Only?

Thông thường, các framework phổ biến như TensorFlow hay PyTorch khi chạy trên CPU sẽ gặp hiện tượng nghẽn cổ chai dữ liệu do không được tối ưu hóa sâu xuống tầng phần cứng bên dưới. Intel OpenVINO (Open Visual Inference and Neural Network Optimization) ra đời nhằm giải quyết triệt để bài toán này.

  • Tối ưu hóa phần cứng (Hardware Acceleration): OpenVINO khai thác tối đa sức mạnh của các tập lệnh Vector cấp cao trên chip Intel như AVX-512, AVX2, và công nghệ Intel DL Boost giúp tăng tốc độ tính toán ma trận ma sát lên nhiều lần.
  • Cơ chế nén mô hình (Quantization): Cho phép chuyển đổi mô hình từ độ chính xác cao (FP32) xuống các dạng số nguyên nén dữ liệu thấp hơn (FP16 hoặc INT8) mà không làm suy giảm đáng kể độ chính xác, giúp giảm tải dung lượng bộ nhớ RAM và tăng tốc luồng xử lý frame hình.
  • Kho mô hình miễn phí đồ sộ (Open Model Zoo): Cung cấp sẵn hàng trăm mô hình đã được huấn luyện sẵn tối ưu sâu cho tác vụ nhận diện khuôn mặt (Face Detection/Recognition) và đếm người (Object/Person Counting).
Thực tế chứng minh: Một mô hình YOLOv8 hoặc SSD khi chạy qua môi trường OpenVINO runtime trên CPU có thể đạt mức cải thiện hiệu năng (FPS) từ 3x đến hơn 10x so với việc chạy trực tiếp trên môi trường PyTorch nguyên bản.
---

Kiến trúc hệ thống AI Video Analytics trên VPS

Hệ thống của chúng ta sẽ vận hành theo luồng xử lý luân phiên tuần tự (Pipeline) khép kín để đảm bảo hiệu năng tối ưu nhất trên môi trường VPS:

  1. Video Stream Input: Tiếp nhận luồng RTSP từ IP Camera hoặc đọc file video thông qua thư viện OpenCV.
  2. Frame Preprocessing: Trích xuất các frame hình, resize kích thước vật lý phù hợp với cổng vào của mô hình AI.
  3. OpenVINO Inference Engine:
    • Luồng 1: Sử dụng mô hình person-detection để vẽ khung (Bounding Box) và tăng biến đếm người.
    • Luồng 2: Cắt phân vùng khuôn mặt (Face ROI), đưa qua mô hình face-recognition để trích xuất Vector đặc trưng (Embedding) đối chiếu với cơ sở dữ liệu.
  4. Output & Alert: Xuất kết quả thống kê dạng dữ liệu JSON, lưu trữ Database hoặc kích hoạt Webhook đẩy cảnh báo về Telegram/Slack.
---

Hướng dẫn từng bước cài đặt và triển khai trên VPS Ubuntu

Để thực hiện cấu hình, bạn cần chuẩn bị một VPS chạy hệ điều hành Ubuntu Server (khuyến nghị phiên bản 22.04 LTS trở lên) có CPU của Intel.

Bước 1: Cài đặt các gói phụ thuộc và OpenVINO

Trước tiên, hãy cập nhật hệ thống và khởi tạo môi trường ảo Python để cô lập các gói thư viện tránh xung đột hệ thống:

sudo apt update && sudo apt upgrade -y
sudo apt install python3-venv python3-pip libgl1-mesa-glx -y

# Tạo môi trường ảo
python3 -m venv openvino_env
source openvino_env/bin/activate

# Cài đặt OpenVINO và OpenCV
pip install --upgrade pip
pip install openvino==2024.6.0 opencv-python numpy

Bước 2: Tải mô hình tối ưu từ Open Model Zoo hoặc Ultralytics

Bạn có thể chuyển đổi mô hình YOLOv8 trực tiếp sang định dạng OpenVINO Intermediate Representation (IR) bao gồm hai file .xml (cấu trúc mạng) và .bin (trọng số mạng) bằng đoạn script ngắn sau:

from ultralytics import YOLO

# Tải mô hình YOLOv8 định dạng Nano siêu nhẹ
model = YOLO("yolov8n.pt")

# Xuất mô hình sang định dạng OpenVINO với độ chính xác FP16
model.export(format="openvino", half=True)

Bước 3: Viết mã nguồn xử lý đếm người và nhận diện

Dưới đây là cấu trúc mã nguồn cốt lõi sử dụng OpenVINO API để load mô hình nén và thực thi suy luận (inference) trực tiếp trên CPU theo chế độ tối ưu độ trễ thấp (Latency Mode):

import cv2
import numpy as np
from openvino.runtime import Core

# 1. Khởi tạo OpenVINO Core
ie = Core()

# 2. Đọc và biên dịch mô hình cho thiết bị CPU
model_path = "yolov8n_openvino_model/yolov8n.xml"
model = ie.read_model(model=model_path)
compiled_model = ie.compile_model(model=model, device_name="CPU", config={"PERFORMANCE_HINT": "LATENCY"})

input_layer = compiled_model.input(0)
output_layer = compiled_model.output(0)

# Open luồng video stream
cap = cv2.VideoCapture("rtsp://your_camera_stream_url")

while cap.isOpened():
    ret, frame = cap.read()
    if not ret: break
    
    # Tiền xử lý hình ảnh
    resized_frame = cv2.resize(frame, (640, 640))
    input_data = np.expand_dims(np.transpose(resized_frame, (2, 0, 1)), axis=0).astype(np.float32) / 255.0
    
    # Thực hiện AI Inference trên CPU
    results = compiled_model([input_data])[output_layer]
    
    # Xử lý hậu kỳ (Post-processing) vẽ khung và đếm đối tượng ở đây...
    # ... (Mã xử lý lọc class người và đếm)
    
    # Đo hiệu năng thực tế
    # cv2.putText(frame, f"FPS: {calculated_fps}", (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)

cap.release()
---

Kinh nghiệm thực tế để tối ưu hiệu năng cao nhất trên VPS

Khi vận hành hệ thống AI Video Analytics trên các gói cloud VPS giá rẻ không có card đồ họa bổ trợ, bạn nhất định phải áp dụng các kỹ thuật tinh chỉnh kiến trúc sau đây để đảm bảo hệ thống không bị tràn CPU (CPU Overload):

  • Bỏ qua khung hình (Frame Skipping): Thay vì bắt CPU xử lý toàn bộ 30 frame mỗi giây từ luồng video, bạn chỉ nên cấu hình trích xuất xử lý 5 đến 10 frames/giây. Tần suất này hoàn toàn đủ tiêu chuẩn đối với các bài toán giám sát an ninh hoặc đếm người di chuyển thông thường.
  • Hạ độ phân giải luồng phụ (Sub-stream Resolution): Đừng truyền trực tiếp hình ảnh gốc độ phân giải 4K hay Full HD vào mô hình AI. Hãy cấu hình camera truyền luồng phụ với độ phân giải khoảng 640x480 hoặc 1280x720 để giảm thiểu tối đa khối lượng ma trận điểm ảnh mà CPU cần tính toán.
  • Sử dụng chế độ bất đồng bộ (Asynchronous Inference): Tận dụng hàm StartAsync của OpenVINO. Phương pháp này cho phép luồng đọc camera (Video Capture) và luồng xử lý AI chạy song song độc lập, ngăn chặn việc nghẽn tiến trình của nhau, đẩy cao chỉ số FPS tổng thể lên rất nhiều.
---

Kết luận

Xây dựng một hệ thống AI Video Analytics không cần GPU hoàn toàn là một giải pháp mang tính chiến lược và khả thi ở thời điểm hiện tại. Bằng sự bổ trợ đắc lực từ Intel OpenVINO, sức mạnh phần cứng của các dòng CPU phổ thông trên hệ thống VPS đã được giải phóng hoàn toàn, giúp giải quyết bài toán kinh tế đau đầu cho doanh nghiệp khi triển khai ứng dụng thị giác máy tính vào vận hành thực tế. Hãy bắt đầu cài đặt ngay hôm nay để tự mình trải nghiệm hiệu năng đột phá vượt giới hạn của CPU!

Xây dựng hệ thống AI Video Analytics không cần GPU trên VPS: Nhận diện khuôn mặt và đếm người bằng CPU qua OpenVINO | DPTCloud