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 Số Lượng Người Qua OpenVINO

May 26, 2026

Giới Thiệu: Bài Toán Chi Phí Khi Triển Khai AI Video Analytics

Trong kỷ nguyên số hóa và quản trị thông minh, các giải pháp AI Video Analytics (Phân tích video bằng trí tuệ nhân tạo) đang trở thành công cụ cốt lõi giúp doanh nghiệp tối ưu hóa hoạt động vận hành. Từ việc giám sát an ninh, nhận diện khuôn mặt khách hàng VIP, đến đếm số lượng người ra vào tại các trung tâm thương mại, nhu cầu xử lý luồng camera theo thời gian thực là rất lớn. Tuy nhiên, rào cản lớn nhất đối với các doanh nghiệp vừa và nhỏ (SMEs) chính là chi phí hạ tầng phần cứng.

Thông thường, việc chạy các mô hình học sâu (Deep Learning) đòi hỏi các hệ thống máy chủ tích hợp GPU chuyên dụng (như NVIDIA T4, A100). Chi phí thuê VPS hoặc Server vật lý có cấu hình GPU này luôn ở mức đắt đỏ, dao động từ vài trăm đến hàng ngàn USD mỗi tháng. Điều này đặt ra câu hỏi lớn cho các nhà quản lý công nghệ: Liệu có thể tận dụng hạ tầng CPU sẵn có trên các gói VPS thông dụng để chạy các tác vụ AI phức tạp này mà vẫn đảm bảo độ trễ thấp?

Câu trả lời là hoàn toàn Có. Nhờ sự hỗ trợ của bộ công cụ Intel OpenVINO Toolkit, doanh nghiệp có thể tăng tốc độ suy luận (inference) của mô hình AI trên cấu hình CPU x86 tiêu chuẩn, biến các hệ thống VPS thông thường thành một máy chủ phân tích video chuyên nghiệp.

---

Giải Pháp Công Nghệ: Sự Kết Hợp Giữa OpenVINO, YOLOv8 và Deep SORT

Để xây dựng một hệ thống AI Video Analytics toàn diện phục vụ hai tính năng chính là Đếm số lượng người (People Counting) và Nhận diện khuôn mặt (Face Recognition), chúng tôi lựa chọn một kiến trúc tối ưu hóa sâu từ phần mềm đến phần cứng.

1. Intel OpenVINO Toolkit Là Gì?

Intel OpenVINO (Open Visual Inference and Neural Network Optimization) là bộ công cụ mã nguồn mở được thiết kế nhằm tối ưu hóa và tăng tốc độ triển khai các mô hình AI trên kiến trúc phần cứng của Intel. OpenVINO hoạt động bằng cách chuyển đổi các mô hình gốc từ PyTorch, TensorFlow hoặc ONNX sang định dạng trung gian IR (Intermediate Representation), bao gồm hai tệp:

  • .xml: Mô tả cấu trúc và topo mạng của mô hình.
  • .bin: Lưu trữ trọng số (weights) và dữ liệu nhị phân đã được tối ưu hóa.

Sau khi chuyển đổi, OpenVINO áp dụng kỹ thuật tối ưu hóa phần cứng như Vectorization (AVX-512, AMX) và lượng tử hóa (Quantization sang INT8/FP16) để tận dụng triệt để sức mạnh của các nhân CPU, mang lại tốc độ xử lý không thua kém các dòng GPU phân khúc phổ thông.

2. Khối Nhận Diện và Theo Dấu Đối Tượng (YOLOv8 & Deep SORT)

Đối với bài toán đếm số lượng người, hệ thống sử dụng mô hình YOLOv8 (bản Nano hoặc Small) được xuất khẩu trực tiếp sang định dạng OpenVINO. Khối này đảm nhận vai trò phát hiện đối tượng (Object Detection) trong từng khung hình. Tuy nhiên, để đếm chính xác luồng di chuyển qua một vạch giới hạn (Line Crossing), chỉ phát hiện thôi là chưa đủ. Chúng ta cần thuật toán Deep SORT (Simple Online and Realtime Tracking với Deep Association Metric).

Nguyên lý hoạt động: YOLOv8 phát hiện bounding box của người, sau đó Deep SORT trích xuất vector đặc trưng (appearance embedding) và kết hợp bộ lọc Kalman để gán một ID duy nhất cho từng người. Khi ID này cắt qua vạch kiểm soát đã định nghĩa trước, hệ thống sẽ tăng biến đếm (In/Out) một cách chính xác, hạn chế tối đa việc đếm trùng khi một người đứng yên hoặc di chuyển qua lại tại một vị trí.

3. Khối Nhận Diện Khuôn Mặt (Face Detection & Recognition)

Hệ thống chia luồng xử lý khuôn mặt thành hai giai đoạn để tiết kiệm tài nguyên:

  1. Phát hiện khuôn mặt (Face Detection): Sử dụng các mô hình gọn nhẹ thuộc kho lưu trữ Open Model Zoo của OpenVINO (ví dụ: face-detection-retail) để cắt (crop) vùng chứa khuôn mặt với độ trễ cực thấp.
  2. Định danh khuôn mặt (Face Recognition): Vùng ảnh khuôn mặt được đưa qua mô hình trích xuất đặc trưng (Feature Extraction) để chuyển thành vector 128 hoặc 512 chiều. Vector này sẽ được so sánh khoảng cách Cosine hoặc Euclidean với cơ sở dữ liệu khuôn mặt nhân viên/khách hàng có sẵn để xác định danh tính.
---

Hướng Dẫn Triển Khai Từng Bước Trên VPS

Dưới đây là quy trình hiện thực hóa hệ thống trên một VPS Ubuntu tiêu chuẩn (Khuyến nghị: Tối thiểu 4 vCPU, 8GB RAM, chip Intel Xeon hoặc Intel Core thế hệ mới).

Bước 1: Khởi Tạo Môi Trường và Cài Đặt OpenVINO

Cập nhật hệ thống và thiết lập môi trường ảo Python để đảm bảo các thư viện không bị xung đột:

sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install python3-pip python3-venv libgl1-mesa-glx -y
python3 -m venv ai_env
source ai_env/bin/activate
pip install --upgrade pip
pip install openvino openvino-dev opencv-python ultralytics

Bước 2: Chuyển Đổi Mô Hình Sang Định Dạng OpenVINO IR

Chúng ta tải mô hình YOLOv8 từ Ultralytics và tiến hành chuyển đổi trực tiếp sang định dạng OpenVINO bằng Python để tối ưu hóa trên CPU:

from ultralytics import YOLO

# Tải mô hình YOLOv8n (bản Nano siêu nhẹ cho CPU)
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)
print("Chuyển đổi mô hình thành công! Kiểm tra thư mục yolov8n_openvino_model/")

Bước 3: Xây Dựng Pipeline Xử Lý Luồng Video (Inference Loop)

Đoạn mã cốt lõi dưới đây minh họa cấu trúc khởi tạo OpenVINO Runtime, cấu hình thiết bị suy luận là 'CPU' và tiến hành phân tích luồng video từ Camera IP (RTSP) hoặc tệp video đầu vào:

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

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

# 2. Đọc mô hình đã được tối ưu hóa (.xml)
model_path = "yolov8n_openvino_model/yolov8n.xml"
model = core.read_model(model=model_path)

# 3. Biên dịch mô hình cho thiết bị CPU
compiled_model = core.compile_model(model=model, device_name="CPU")
output_layer = compiled_model.output(0)

# 4. Cấu hình luồng video đầu vào
video_source = "rtsp://username:password@ip_address:port/stream" # Hoặc đường dẫn file video
cap = cv2.VideoCapture(video_source)

while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        break
        
    # Tiền xử lý ảnh (Resize phù hợp với kích thước đầu vào của mô hình, ví dụ 640x640)
    input_image = cv2.resize(frame, (640, 640))
    input_image = input_image.transpose((2, 0, 1)) # Chuyển đổi HWC sang CHW
    input_tensor = np.expand_dims(input_image, axis=0).astype(np.float32) / 255.0
    
    # Thực hiện suy luận (Inference)
    results = compiled_model([input_tensor])[output_layer]
    
    # [Hậu xử lý kết quả: Tích hợp Deep SORT để đếm người và vẽ bounding box]
    # ... (Nhúng logic xử lý tọa độ và vẽ lên frame ảnh)
    
    # Hiển thị hoặc stream kết quả đầu ra qua WebRTC/RTSP
    # cv2.imshow('AI Video Analytics CPU', frame)
    
cap.release()
cv2.destroyAllWindows()
---

Chi Lược Tối Ưu Hóa Hiệu Năng Cao Cấp (Performance Tuning)

Để đạt được chỉ số FPS (Frames Per Second) mượt mà ổn định từ 20-30 FPS cho một luồng camera Full HD trên cấu hình VPS không có GPU, bạn cần áp dụng các chiến lược tối ưu nâng cao sau:

  • Kích Hoạt Chế Độ Multi-stream & Async Inference: Thay vì xử lý tuần tự (Đọc khung hình -> Chạy AI -> Xuất kết quả), hãy sử dụng cơ chế suy luận bất đồng bộ (Asynchronous Inference). OpenVINO cho phép bạn đẩy khung hình n+1 vào hàng đợi suy luận trong khi CPU đang xử lý hậu xử lý cho khung hình n, giúp loại bỏ thời gian chết của phần cứng.
  • Sử Dụng Tính Năng Hỗ Trợ Thiết Bị Tự Động (AUTO Device Hint): Bằng cách thiết lập device_name="AUTO", OpenVINO sẽ tự động phát hiện và kết hợp năng lực xử lý giữa CPU và GPU tích hợp (iGPU - nếu có trên cấu hình VPS cao cấp) để phân phối tải một cách tối ưu.
  • Áp Dụng Lượng Tử Hóa INT8 (Quantization): Chuyển đổi mô hình từ độ chính xác dấu phẩy động (FP32/FP16) sang dạng số nguyên 8-bit (INT8) thông qua công cụ Neural Network Compression Framework (NNCF) của OpenVINO. Quá trình này giúp giảm dung lượng mô hình đi 4 lần và tăng tốc độ xử lý trên CPU lên gấp 2-3 lần với mức suy giảm độ chính xác chưa tới 1%.
  • Bỏ Qua Khung Hình (Frame Skipping): Đối với các tác vụ giám sát an ninh hoặc đếm người, tần suất di chuyển không quá nhanh. Bạn có thể cấu hình chỉ gửi các khung hình chính (ví dụ: lấy 1 khung hình từ mỗi 3 khung hình liên tiếp) vào mô hình AI, giúp giảm tải đến 66% áp lực tính toán cho CPU mà vẫn đảm bảo độ chính xác nhờ thuật toán tracking dự báo chuyển động.
---

Kết Luận: Lợi Ích Kinh Tế Cho Doanh Nghiệp

Việc dịch chuyển giải pháp AI Video Analytics từ hạ tầng phụ thuộc GPU sang kiến trúc tối ưu hóa CPU bằng OpenVINO mang lại những lợi thế chiến lược rõ rệt cho doanh nghiệp:

Tiết kiệm chi phí vận hành tối đa: Chi phí thuê một VPS tiêu chuẩn dựa trên CPU thấp hơn từ 70% đến 85% so với một VPS có kèm card đồ họa rời. Điều này cho phép doanh nghiệp dễ dàng mở rộng quy mô (Scale-out) hệ thống sang nhiều điểm chi nhánh khác nhau mà không gặp áp lực lớn về ngân sách.

Khả năng linh hoạt và độc lập phần cứng: Hệ thống mã nguồn được xây dựng trên OpenVINO có tính tương thích cực cao. Doanh nghiệp có thể dễ dàng triển khai giải pháp này từ các máy chủ đám mây (Cloud VPS), máy chủ vật lý đặt tại văn phòng (On-premise Servers), cho đến các thiết bị Edge Gateway nhỏ gọn đặt tại cửa hàng mà không cần phải tái cấu trúc lại toàn bộ mã nguồn ứng dụng.

Tóm lại, tối ưu hóa AI trên CPU không còn là giải pháp tình thế, mà đã trở thành một hướng đi công nghệ thông minh, hiệu quả và bền vững cho mọi bài toán thị giác máy tính hiện nay.

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 Số Lượng Người Qua OpenVINO | DPTCloud