Giới thiệu dự án

Trong kỷ nguyên bùng nổ thông tin số, dữ liệu video trực tuyến đang gia tăng với tốc độ cấp số nhân. Theo các báo cáo thống kê công nghệ toàn cầu, hơn 500 giờ video được tải lên YouTube mỗi phút và các nền tảng đa phương tiện như TikTok, Facebook Watch xử lý hàng tỷ lượt xem mỗi ngày. Sự tăng trưởng bùng nổ này đặt ra một thách thức kỹ thuật lớn: làm thế nào để lưu trữ, lập chỉ mục và truy xuất chính xác một phân cảnh cụ thể trong hàng nghìn giờ video khi các siêu dữ liệu truyền thống (tiêu đề, thẻ tag, mô tả văn bản thủ công) thường nghèo nàn, không đồng nhất hoặc thậm chí hoàn toàn vắng mặt.

+-----------------------------------------------------------------------------------+
|                           HỆ THỐNG TRUY VẤN VIDEO TƯƠNG TÁC                       |
|                       (Content-Based Video Retrieval System)                      |
+-----------------------------------------------------------------------------------+
                                          |
          +-------------------------------+-------------------------------+
          |                                                               |
          v                                                               v
+-----------------------+                                       +-------------------+
|   OFFLINE PIPELINE    |                                       |  ONLINE RETRIEVAL |
+-----------------------+                                       +-------------------+
| 1. Video Ingestion    |                                       | 1. Multi-modal    |
| 2. TransNetV2 Shots   |                                       |    Query Input    |
| 3. Keyframe Extraction|                                       | 2. CLIP Embedding |
| 4. Multi-modal Feature|                                       | 3. Faiss Top-K    |
|    - CLIP (Semantic)  |                                       | 4. Re-ranking:    |
|    - Faster R-CNN     |                                       |    - Object Filter|
|    - DBNet + VietOCR  |                                       |    - Scene Text   |
|    - Wav2Vec 2.0 ASR  |                                       |    - Speech ASR   |
| 5. Faiss Indexing     |                                       |    - Color Grid   |
+-----------------------+                                       +-------------------+
          |                                                               |
          +-------------------------------> <-----------------------------+
                                          |
                                          v
                                +-------------------+
                                | Ranked Video List |
                                | Keyframe Playback |
                                +-------------------+

Khóa luận tốt nghiệp cử nhân tài năng ngành Khoa học Máy tính tại Trường Đại học Công nghệ Thông tin – ĐHQG-HCM, do sinh viên Nguyễn Minh Huy thực hiện dưới sự hướng dẫn của ThS. Ngô Đức Thành, giải quyết bài toán: Xây dựng hệ thống truy vấn video thông qua tương tác dựa trên nội dung (Content-Based Interactive Video Retrieval System), được thử nghiệm trực tiếp trên tập dữ liệu thực tế quy mô lớn của cuộc thi HCMC AI Challenge 2022.

Vấn đề kỹ thuật cụ thể (Problem Statement)

Hầu hết các công cụ tìm kiếm truyền thống chỉ thực hiện khớp chuỗi ký tự trên metadata bên ngoài (text-based search). Khi người dùng cần tìm một đoạn video cụ thể dựa trên trí nhớ thị giác—chẳng hạn như "một phóng viên mặc áo xanh đứng trước tòa nhà UBND Thành phố lúc trời mưa" hoặc "đoạn phỏng vấn có biển hiệu ghi chữ Hội nghị Chuyển đổi số" (tác vụ Known-Item Search - KIS)—hệ thống văn bản truyền thống hoàn toàn bất khả thi. Các rào cản kỹ thuật chính bao gồm:

  • Khoảng cách ngữ nghĩa (Semantic Gap): Sự khác biệt giữa biểu diễn mức thấp của điểm ảnh (pixel values, RGB histograms) và khái niệm ngữ nghĩa mức cao trong tâm trí con người.
  • Kích thước dữ liệu khổng lồ: Bộ dữ liệu video tin tức thời sự của HCMC AI Challenge 2022 có thời lượng hơn 300 giờ phát sóng (dung lượng vượt 600 GB), tương đương hơn 27 triệu khung hình đơn lẻ nếu xử lý thô ở tốc độ 25 fps.
  • Tính đa phương thức phức tạp (Multi-modal complexity): Nội dung video chứa đồng thời tín hiệu thị giác (visual objects, scene context), âm thanh/tiếng nói (speech dialogue), và chữ viết xuất hiện trong cảnh (scene text/OCR).

Mục tiêu của dự án

  1. Nghiên cứu toàn diện các kiến trúc truy vấn video tương tác tiên tiến đạt giải cao tại cuộc thi quốc tế Video Browser Showdown (VBS) và hội nghị MultiMedia Modeling (MMM).
  2. Thiết kế và triển khai quy trình trích xuất đặc trưng đa phương thức (Multi-modal feature extraction pipeline) kết hợp thị giác máy tính (Computer Vision), nhận dạng tiếng nói (ASR) và xử lý ngôn ngữ tự nhiên (NLP).
  3. Ứng dụng các mô hình học sâu State-of-the-Art (SOTA): TransNetV2 cho phân đoạn cảnh quay (Boundary Shot Detection), OpenAI CLIP cho liên kết ngữ nghĩa văn bản - hình ảnh, Faster R-CNN cho phát hiện vật thể, DBNet + VietOCR cho trích xuất chữ trong cảnh, và Wav2Vec 2.0 cho chuyển đổi giọng nói tiếng Việt thành văn bản.
  4. Tối ưu hóa lập chỉ mục không gian đa chiều (High-dimensional Indexing) bằng thư viện Faiss, đảm bảo thời gian phản hồi truy vấn dưới 500ms trên không gian hàng trăm nghìn vector đặc trưng.
  5. Xây dựng hoàn chỉnh ứng dụng Web tương tác cho phép người dùng linh hoạt kết hợp văn bản tự nhiên, bộ lọc vật thể theo vị trí, văn bản OCR, hội thoại ASR và lưới màu không gian (spatial-color grid).

Phạm vi và Giới hạn

  • Phạm vi dữ liệu: 300+ giờ video bản tin thời sự tiếng Việt từ các đài truyền hình quốc gia và địa phương (VTV, HTV) thuộc khuôn khổ cuộc thi HCMC AI Challenge 2022.
  • Nhiệm vụ trọng tâm: Truy vấn đối tượng/phân cảnh đã biết (Known-Item Search - KIS) và truy vấn trực quan (Visual/Ad-hoc Item Search - AVS).
  • Giới hạn kỹ thuật: Không giải mã video theo thời gian thực (real-time stream decoding) trong lúc tìm kiếm mà dựa vào quy trình tiền xử lý ngoại tuyến (offline indexing pipeline) để đảm bảo tốc độ phản hồi trực tuyến.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Khóa luận tiến hành khảo sát ba hệ thống truy vấn video hàng đầu thế giới đã khẳng định vị thế tại đấu trường Video Browser Showdown (VBS):

Tiêu chí Hệ thống IVOS (2021) Hệ thống VISIONE (2021) Hệ thống IVS (2021) Hệ thống đề xuất (Khóa luận)
Phân đoạn video Ngưỡng màu / Heuristic Cắt đều cố định (Uniform sampling) Khung hình cố định theo thời gian TransNetV2 (Dilated DCNN 3D)
Truy vấn ngữ nghĩa Hạn chế (Dựa vào nhãn class) Mô hình TERN (Text-Image) Vector R-MAC (512 chiều) OpenAI CLIP (ViT Transformer Encoder)
Nhận diện vật thể YOLOv4 (80 lớp COCO) Bảng vẽ đối tượng thủ công NASNet (Top-10 confidence) Faster R-CNN (ResNet-50-FPN đa nhãn)
Xử lý Scene-Text Không hỗ trợ Không hỗ trợ Tesseract OCR + Apple Core API DBNet + Transformer VietOCR (Tiếng Việt)
Xử lý âm thanh Không hỗ trợ Không hỗ trợ Google Cloud Speech-to-Text Wav2Vec 2.0 Base Vietnamese (250h pre-trained)
Lập chỉ mục vector Inverted Index bảng thuộc tính Trực tiếp trong bộ nhớ Inverted File Index Faiss IndexFlatIP (Cosine Similarity tối ưu SIMD)

Phân tích yêu cầu người dùng (MoSCoW Prioritization)

  • Must-Have (Bắt buộc có): Phân đoạn shot tự động chính xác cao; trích xuất keyframe đại diện; tìm kiếm ngữ nghĩa văn bản tự do bằng CLIP; giao diện duyệt kết quả dạng lưới keyframe kèm mốc thời gian (timestamp).
  • Should-Have (Nên có): Bộ lọc vật thể tương tác (chọn lớp vật thể và vị trí tương đối trên khung hình); công cụ tìm kiếm chữ viết xuất hiện trên video (OCR) tối ưu cho tiếng Việt; công cụ tìm kiếm nội dung hội thoại bản tin (ASR).
  • Could-Have (Có thể có): Lọc theo phân bố màu sắc lưới không gian ($3 \times 3$ hoặc $4 \times 4$ color grid); phát lại phân đoạn video trực tiếp từ keyframe được chọn.
  • Won't-Have (Chưa thực hiện trong phạm vi này): Mô hình hóa liên tục theo chiều thời gian qua đồ thị hành động không-thời gian (Spatio-temporal action graph parsing).

Thiết kế hệ thống

Kiến trúc hệ thống được phân tách nghiêm ngặt thành hai phân hệ: Quy trình xử lý ngoại tuyến (Offline Processing Pipeline)Công cụ tìm kiếm tương tác trực tuyến (Online Interactive Retrieval Engine).

+------------------------------------------------------------------------------------+
|                         KIẾN TRÚC THÀNH PHẦN HỆ THỐNG                              |
+------------------------------------------------------------------------------------+

   [ KHO VIDEO THÔ (300+ Giờ) ]
                 |
                 v
   +---------------------------+
   |   TransNetV2 Segmentation | ---> Xác định Shot Boundaries & Chọn Keyframes
   +---------------------------+
                 |
                 +-----------------------+------------------------+------------------------+
                 |                       |                        |                        |
                 v                       v                        v                        v
        +------------------+   +-------------------+   +--------------------+   +--------------------+
        |  CLIP ViT-B/32   |   | Faster R-CNN FPN  |   | DBNet + VietOCR    |   | Wav2Vec 2.0 ASR    |
        |  (Visual Embed)  |   | (Object & BBox)   |   | (Tiếng Việt Scene) |   | (Audio Transcript) |
        +------------------+   +-------------------+   +--------------------+   +--------------------+
                 |                       |                        |                        |
                 v                       v                        v                        v
        [ Vector 512-dim ]     [ BBox Metadata DB]     [ Text Inverted DB ]     [ Text Inverted DB ]
                 |                       |                        |                        |
                 +-----------------------+------------------------+------------------------+
                                         |
                                         v
                         +-------------------------------+
                         |   FAISS INDEX & DATABASE      |
                         +-------------------------------+
                                         ^
                                         | (Query Processing & Re-ranking)
                                         v
                         +-------------------------------+
                         |      FASTAPI REST BACKEND     |
                         +-------------------------------+
                                         ^
                                         | (HTTP/JSON API)
                                         v
                         +-------------------------------+
                         |   REACT.JS WEB UI INTERFACE   |
                         +-------------------------------+

Technology Stack và Phiên bản công nghệ

  • Ngôn ngữ cốt lõi: Python 3.9+, JavaScript/ES6.
  • Deep Learning Frameworks: PyTorch 1.12.1 (CUDA 11.6 backend), Torchvision 0.13.1, Transformers 4.21.0.
  • Mô hình thị giác máy tính: TransNetV2, OpenAI CLIP (ViT-B/32 & ViT-L/14), Faster R-CNN ResNet-50-FPN.
  • Mô hình OCR & ASR: DBNet (Real-time Scene Text Detection), VietOCR (VGG-Transformer architecture), Wav2Vec 2.0 Vietnamese 250h.
  • Vector Search Engine: Facebook AI Similarity Search (faiss-gpu / faiss-cpu 1.7.2).
  • Backend & Middleware: FastAPI 0.85.0, Uvicorn, SQLite/JSON metadata storage.
  • Frontend Client: React 18.2, Axios, HTML5 Video Canvas API, TailwindCSS.

Thiết kế lược đồ dữ liệu và chỉ mục (Storage & Schema)

Mỗi phân cảnh video (Shot) được định danh duy nhất và quản lý qua cấu trúc bản ghi chuẩn hóa:

{
  "shot_id": "video_0124_shot_0045",
  "video_name": "HTV9_20220915_1800.mp4",
  "start_frame": 1125,
  "end_frame": 1350,
  "keyframe_index": 1238,
  "timestamp_sec": 49.52,
  "clip_embedding_idx": 45102,
  "detected_objects": [
    {"class": "person", "score": 0.94, "bbox": [0.12, 0.35, 0.45, 0.88]},
    {"class": "car", "score": 0.88, "bbox": [0.60, 0.55, 0.95, 0.90]}
  ],
  "scene_text": "TRUNG TÂM BÁO CHÍ TP HỒ CHÍ MINH",
  "speech_transcript": "hôm nay hội nghị chuyển đổi số đã chính thức khai mạc",
  "color_grid_histogram": [2, 2, 4, 1, 0, 5, 3, 3, 1]
}

Đặc tả API tương tác hệ thống

Hệ thống cung cấp chuẩn giao tiếp RESTful API tối ưu cho truy vấn có độ trễ thấp:

Endpoint Method Payload tham số Mô tả chức năng
/api/v1/search/semantic POST {"query": string, "top_k": int} Trả về Top-K keyframe khớp vector ngữ nghĩa CLIP
/api/v1/search/object POST {"class_name": string, "region": [x,y,w,h]} Lọc tập ứng viên chứa đối tượng tại vùng chỉ định
/api/v1/search/ocr POST {"text_query": string, "fuzzy": bool} So khớp toàn văn/ký tự gần đúng trên văn bản biển hiệu
/api/v1/search/speech POST {"transcript_keyword": string} Tìm kiếm phân cảnh dựa trên nội dung hội thoại thuyết minh
/api/v1/search/hybrid POST {"semantic": {...}, "filters": {...}} Hợp nhất đa tiêu chuẩn (Late-fusion re-ranking)

Methodology

Quy trình nghiên cứu và triển khai được tổ chức theo phương pháp luận lặp linh hoạt (Agile-based Experimental Methodology) qua 5 giai đoạn trong 16 tuần:

[Tuần 1 - 4]   Khảo sát SOTA, nghiên cứu kiến trúc VBS, phân tích tập dữ liệu HCMC AI Challenge
[Tuần 5 - 8]   Cài đặt pipeline trích xuất: TransNetV2, CLIP, Faster R-CNN, DBNet, Wav2Vec 2.0
[Tuần 9 - 11]  Tối ưu hóa lập chỉ mục Faiss, thuật toán lọc đa tầng, đánh giá mAP trên tập KIS
[Tuần 12 - 13] Xây dựng Web Interface, tích hợp API Backend và trực quan hóa tương tác người dùng
[Tuần 14 - 16] Kiểm thử toàn diện, đánh giá lỗi (Error Analysis), hoàn thiện báo cáo khóa luận

Ma trận quản trị rủi ro kỹ thuật (Risk Assessment)

  • Rủi ro bùng nổ tài nguyên bộ nhớ (OOM): Việc nạp đồng thời toàn bộ video 600GB vào RAM để trích xuất đặc trưng gây tràn bộ nhớ. Giải pháp: Thiết lập cơ chế xử lý stream theo batch ($N=64$ frames/batch) và giải phóng GPU cache tức thời sau mỗi video.
  • Độ lệch chính xác ASR do tiếng ồn nền: Bản tin ngoài hiện trường có tiếng còi xe, tiếng gió làm giảm độ chính xác mô hình giọng nói. Giải pháp: Tích hợp thuật toán lọc nhiễu dải tần cơ bản trước khi đưa vào Wav2Vec 2.0 và áp dụng giải thuật tìm kiếm văn bản xấp xỉ (Fuzzy string matching).

Implementation và kết quả

Development process & Key Algorithms

Hệ thống triển khai 5 khối giải thuật toán học và xử lý học sâu chuyên biệt:

1. Boundary Shot Detection với TransNetV2

TransNetV2 sử dụng các khối tích chập giãn nở 3 chiều không gian - thời gian (Dilated 3D Convolutional Neural Networks - DDCNN V2) kết hợp kỹ thuật Skip Connections để bảo toàn gradient:

$$\mathbf{x}l = \mathbf{x}{l-2} + \mathbf{x}_{l-1}$$

Tích chập giãn nở cho phép mở rộng trường tiếp nhận (receptive field) lên hơn 97 khung hình liên tiếp mà không làm tăng số lượng tham số học, kết hợp lớp Spatial Average Pooling giúp phát hiện chính xác cả chuyển cảnh đột ngột (hard cuts) lẫn chuyển cảnh từ từ (dissolve, fade transitions).

import torch
import numpy as np

def extract_keyframe_indices(shot_predictions, threshold=0.5):
    """
    Xác định khung hình biên và chọn keyframe trung tâm cho mỗi shot
    """
    shots = []
    in_shot = False
    start_idx = 0
    
    for idx, prob in enumerate(shot_predictions):
        if prob >= threshold and not in_shot:
            in_shot = True
            start_idx = idx
        elif prob < threshold and in_shot:
            in_shot = False
            end_idx = idx
            keyframe_idx = (start_idx + end_idx) // 2
            shots.append({
                "start": start_idx,
                "end": end_idx,
                "keyframe": keyframe_idx
            })
    return shots

2. Biểu diễn ngữ nghĩa liên phương thức (OpenAI CLIP)

Khóa luận sử dụng backbone Vision Transformer (ViT-B/32). Hình ảnh kích thước $224 \times 224$ được chia thành các patch không gian $32 \times 32$, chuyển qua cơ chế Scaled Dot-Product Attention:

$$\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V$$

Vector đặc trưng hình ảnh $\mathbf{f}_I \in \mathbb{R}^{512}$ và vector truy vấn văn bản $\mathbf{f}_T \in \mathbb{R}^{512}$ sau khi chuẩn hóa $L_2$ ($|\mathbf{f}|_2 = 1$) được so khớp thông qua độ tương đồng Cosine:

$$\text{Cosine Sim}(\mathbf{f}_T, \mathbf{f}_I) = \mathbf{f}_T \cdot \mathbf{f}_I^T$$

import torch
import clip
from PIL import Image

device = "cuda" if torch.cuda.is_available() else "cpu"
model, preprocess = clip.load("ViT-B/32", device=device)

def compute_multimodal_similarity(text_query: str, keyframe_paths: list):
    # Chuẩn bị văn bản truy vấn
    text_token = clip.tokenize([text_query]).to(device)
    
    # Xử lý và mã hóa hình ảnh
    images = torch.stack([preprocess(Image.open(p)) for p in keyframe_paths]).to(device)
    
    with torch.no_grad():
        image_features = model.encode_image(images)
        text_features = model.encode_text(text_token)
        
        # Chuẩn hóa vector đặc trưng L2
        image_features /= image_features.norm(dim=-1, keepdim=True)
        text_features /= text_features.norm(dim=-1, keepdim=True)
        
        # Tính toán điểm Cosine Similarity
        similarity = (100.0 * image_features @ text_features.T).squeeze()
        scores = similarity.cpu().numpy()
        
    return scores

3. Lập chỉ mục không gian cao chiều với Faiss

Để truy vấn trên hơn 350.000 vector CLIP 512 chiều trích xuất từ toàn bộ kho dữ liệu, hệ thống sử dụng cấu trúc IndexFlatIP (Inner Product trên vector chuẩn hóa đơn vị, tương đương tính toán Cosine Similarity song song bằng tập lệnh AVX-512 / CUDA Core):

import faiss
import numpy as np

class VideoVectorIndexer:
    def __init__(self, dimension=512):
        self.dimension = dimension
        # Khởi tạo chỉ mục Inner Product phẳng tối ưu SIMD
        self.index = faiss.IndexFlatIP(self.dimension)
        self.metadata_map = {}
        
    def add_vectors(self, vectors: np.ndarray, shot_ids: list):
        faiss.normalize_L2(vectors)
        start_idx = self.index.ntotal
        self.index.add(vectors)
        for i, sid in enumerate(shot_ids):
            self.metadata_map[start_idx + i] = sid
            
    def search(self, query_vector: np.ndarray, top_k=50):
        faiss.normalize_L2(query_vector)
        distances, indices = self.index.search(query_vector, top_k)
        results = [(self.metadata_map[idx], float(score)) 
                   for idx, score in zip(indices[0], distances[0]) if idx != -1]
        return results

Testing và validation

Hiệu năng của hệ thống được kiểm thử định lượng thông qua bộ kịch bản kiểm tra nghiêm ngặt:

1. Đo lường thời gian xử lý và tài nguyên (System Benchmarks)

  • Tốc độ phân đoạn TransNetV2: Đạt $540 \text{ fps}$ trên GPU NVIDIA RTX 3090 (xử lý toàn bộ 300 giờ video trong ~14 giờ ngoại tuyến).
  • Tốc độ trích xuất đặc trưng CLIP ViT-B/32: Đạt trung bình $115 \text{ frames/giây}$.
  • Thời gian phản hồi truy vấn Faiss IndexFlatIP: Chỉ $12.4\text{ ms}$ cho tập 350.000 vectors với Top-K = 100.
  • Thời gian phản hồi End-to-End API (bao gồm Network I/O & Re-ranking): $310\text{ ms}$, đáp ứng tiêu chuẩn phản hồi thời gian thực của các cuộc thi quốc tế.

2. Đánh giá độ chính xác truy vấn (KIS & Visual Search Evaluation)

Thử nghiệm trên 50 câu truy vấn chuẩn (ground-truth annotated KIS queries) mô phỏng bài thi HCMC AI Challenge:

Phương pháp truy vấn Recall@1 Recall@5 Recall@10 Mean Inverted Rank (MRR) Thời gian tìm ra trung bình (giây)
Text Search đơn thuần (Metadata) 0.04 0.10 0.14 0.08 > 120s (Thường thất bại)
Chỉ sử dụng mô hình CLIP (Baseline) 0.42 0.68 0.78 0.54 48.2s
CLIP + Lọc đối tượng (Faster R-CNN) 0.54 0.76 0.84 0.63 32.5s
Hệ thống đề xuất (CLIP + Faster R-CNN + OCR + ASR) 0.68 0.86 0.92 0.76 18.7s

Kết quả đạt được

  • Hoàn thiện 100% các tính năng mục tiêu đã cam kết trong đề cương khóa luận.
  • Khả năng định vị chính xác phân cảnh (Known-Item Search) tăng $35.9%$ so với việc chỉ sử dụng một phương thức ngữ nghĩa đơn lẻ.
  • Giảm thiểu hơn $98.7%$ số lượng khung hình dư thừa cần lưu trữ nhờ thuật toán TransNetV2, giữ lại trung bình 1 keyframe tối ưu cho mỗi 2.8 giây thời lượng video.

Đổi mới và đóng góp

  1. Kiến trúc hợp nhất đa phương thức linh hoạt (Multi-modal Late-Fusion Retrieval): Khắc phục triệt để điểm mù của mô hình CLIP khi gặp các chi tiết ngữ cảnh cụ thể (chữ viết tiếng Việt nhỏ, phát biểu hội thoại, vị trí tọa độ đối tượng không gian) bằng cách kết hợp cơ chế xếp hạng đa tầng (multi-stage re-ranking).
  2. Quy trình phân đoạn video tối ưu hóa không gian - thời gian: Ứng dụng TransNetV2 với mạng tích chập giãn nở 3D thay thế hoàn toàn các phương pháp cắt đều cố định (Uniform Sampling) hoặc phân đoạn dựa trên ngưỡng biến thiên màu sắc truyền thống (Pixel/Histogram Differencing), đảm bảo keyframe trích xuất không bị nhòe mờ hay rơi vào các đoạn chuyển cảnh fade/dissolve.
  3. Bản địa hóa dữ liệu tiếng Việt chuyên sâu: Tích hợp thành công VietOCR và Wav2Vec 2.0 huấn luyện trên 250 giờ tiếng Việt, cho phép nhận diện biển báo đường phố, bảng tên nhân vật trên bản tin và nội dung phát thanh với độ chính xác cao trong miền ngữ cảnh tin tức Việt Nam.
  4. Cơ chế lọc không gian trực quan (Spatial Interactive Grid): Thiết kế cho phép người dùng khoanh vùng vị trí vật thể trên khung $4 \times 4$ và kết hợp bộ lọc histogram màu cục bộ, tăng cường trực giác điều khiển của con người trong quá trình tương tác truy vấn.

Ứng dụng thực tế và triển khai

+-------------------------------------------------------------------------------+
|                       MÔ HÌNH TRIỂN KHAI HỆ THỐNG THỰC TẾ                     |
+-------------------------------------------------------------------------------+

   [ Người dùng / Chuyên viên ]
               |
               v (HTTPS / Web Browser)
   +-------------------------------------------------------------+
   |   NGINX REVERSE PROXY & LOAD BALANCER                       |
   +-------------------------------------------------------------+
               |
               +-----------------------------+
               | (Static Files)              | (REST API Calls)
               v                             v
   +-----------------------+     +-------------------------------+
   |   React.js Web Client |     |   FastAPI Service Instances   |
   |   (Static Hosting S3) |     |   (Gunicorn Multi-workers)    |
   +-----------------------+     +-------------------------------+
                                                 |
                               +-----------------+-----------------+
                               |                                   |
                               v                                   v
                 +---------------------------+       +---------------------------+
                 |  Faiss GPU Vector Index   |       |   PostgreSQL / SQLite     |
                 |  (RAM 16GB, Dedicated)   |       |   (Keyframe Metadata DB)  |
                 +---------------------------+       +---------------------------+
                               |                                   |
                               +-----------------+-----------------+
                                                 |
                                                 v
                               +-----------------------------------+
                               |   MinIO / S3 Keyframe Storage     |
                               +-----------------------------------+

Kịch bản ứng dụng trong đời sống (Use Cases)

  • Cơ quan Báo chí và Đài truyền hình: Hỗ trợ phóng viên, biên tập viên tra cứu nhanh kho tư liệu phát sóng hàng nghìn giờ để tìm chính xác đoạn tư liệu lịch sử, sự kiện chính trị trong vài giây phục vụ dựng bản tin nóng.
  • Giám sát an ninh và Điều tra số (Digital Forensics): Định vị phương tiện giao thông (màu sắc, biển số xe qua OCR) hoặc đối tượng khả nghi xuất hiện trong mạng lưới camera giám sát đô thị.
  • Bảo hộ bản quyền và Quản lý tài sản số (Digital Asset Management - DAM): Kiểm tra các đoạn video trùng lặp hoặc phát hiện phân cảnh vi phạm bản quyền trên không gian mạng.

Hướng dẫn triển khai và Cấu hình hệ thống (Deployment Guide)

Yêu cầu phần cứng tối thiểu (System Requirements)

  • CPU: Intel Xeon hoặc AMD Ryzen 7 (tối thiểu 8 cores, 16 threads).
  • RAM: Tối thiểu 32 GB DDR4 (khuyến nghị 64 GB để nạp toàn bộ Faiss Index và Caching).
  • GPU: NVIDIA RTX 3060 12GB trở lên (Khuyến nghị RTX 3090 / A5000 24GB VRAM cho quá trình trích xuất Offline).
  • Lưu trữ: Tối thiểu 1 TB SSD NVMe (tốc độ đọc $> 3000\text{ MB/s}$ phục vụ stream keyframe).

Quy trình cài đặt qua Docker

# 1. Clone mã nguồn dự án
git clone https://github.com/nguyenminhhuy/content-based-video-retrieval.git
cd content-based-video-retrieval

# 2. Xây dựng môi trường Docker Container
docker build -t video-retrieval-system:v1.0 .

# 3. Khởi chạy dịch vụ với GPU Passthrough
docker run -d --gpus all \
  -p 8000:8000 \
  -p 3000:3000 \
  -v /data/video_dataset:/app/data \
  -v /data/indexes:/app/indexes \
  --name cbvr-app video-retrieval-system:v1.0

Hạn chế và hướng phát triển

Hạn chế kỹ thuật

  • Suy luận quan hệ thời gian phức tạp (Complex Temporal Reasoning): Mô hình CLIP xử lý độc lập từng keyframe đơn lẻ nên gặp khó khăn đối với các truy vấn đòi hỏi chuỗi hành động phụ thuộc thời gian (ví dụ: "người đàn ông đứng lên sau đó bắt tay người phụ nữ rồi rời đi").
  • Chất lượng âm thanh môi trường: Các bản tin có tiếng ồn nền quá lớn hoặc âm thanh tạp âm phức tạp dẫn đến lỗi sinh từ (word error rate - WER) ở tầng Wav2Vec 2.0.
  • Chi phí bộ nhớ đồ họa (VRAM footprint): Việc vận hành đồng thời 5 mô hình deep learning đòi hỏi tài nguyên GPU đáng kể trong giai đoạn trích xuất đặc trưng ngoại tuyến.

Hướng phát triển trong tương lai

  • Tích hợp Video-Language Models (Video-LLMs): Nghiên cứu tích hợp các kiến trúc như Video-LLaVA hoặc InternVideo nhằm hiểu sâu sắc ngữ cảnh chuỗi hành động xuyên suốt theo trục thời gian.
  • Định vị thời gian phân cảnh (Temporal Video Grounding): Cho phép hệ thống không chỉ trả về keyframe đơn lẻ mà xác định chính xác cặp mốc thời gian $[t_{\text{start}}, t_{\text{end}}]$ của hành động trong video dài.
  • Lượng tử hóa chỉ mục vector (Vector Quantization): Ứng dụng Faiss IndexIVFPQ để nén vector 512 chiều xuống 64 bytes, cho phép mở rộng quy mô hệ thống lên hơn 10.000 giờ video trên máy chủ có cấu hình RAM tiêu chuẩn.

Đối tượng hưởng lợi

+-----------------------------------------------------------------------------------+
|                            ĐỐI TƯỢNG HƯỞNG LỢI & GIÁ TRỊ                          |
+-----------------------------------------------------------------------------------+

  [ SINH VIÊN & HỌC VIÊN ]  -----> Mã nguồn chuẩn mực, tài liệu SOTA, học tập Multi-modal AI
  [ KỸ SƯ / DEVELOPERS ]    -----> Pipeline xử lý video thực chiến, tối ưu hóa Faiss GPU
  [ ĐÀI TRUYỀN HÌNH / BÁO ] -----> Giảm 85% thời gian tìm kiếm tư liệu, tối ưu chi phí vận hành
  [ CỘNG ĐỒNG NGHIÊN CỨU ]  -----> Bộ benchmark thực nghiệm hoàn chỉnh trên dữ liệu Việt Nam
  • Sinh viên và Học viên Công nghệ thông tin: Tiếp cận mã nguồn mở được module hóa rõ ràng, hiểu sâu sắc cách ứng dụng và liên kết các mô hình học sâu hiện đại (Transformers, Contrastive Learning, Object Detection) vào giải quyết bài toán lớn.
  • Kỹ sư AI và Lập trình viên: Cung cấp mẫu kiến trúc (pattern) chuẩn về quy trình xử lý dữ liệu lớn (Big Data Multimedia Pipeline), kỹ thuật lập chỉ mục vector đa chiều tối ưu thời gian thực trên GPU.
  • Tổ chức Báo chí và Truyền thông: Giảm thiểu hơn $85%$ thời gian tác nghiệp của biên tập viên khi tìm kiếm video tư liệu, số hóa và tự động hóa khâu quản lý kho lưu trữ phát thanh - truyền hình.
  • Cộng đồng Nghiên cứu Thị giác Máy tính: Đóng góp bộ tham chiếu thực nghiệm có giá trị về hiệu năng của các mô hình đa phương thức trên tập dữ liệu đặc thù tiếng Việt và văn hóa Việt Nam.

Câu hỏi thường gặp

1. Cấu hình phần cứng tối thiểu để triển khai và chạy thử nghiệm hệ thống là gì?

Để chạy thử nghiệm trực tiếp (Inference & Retrieval UI), hệ thống chỉ yêu cầu máy tính có CPU 4 cores, 16 GB RAM và 1 GPU NVIDIA GTX 1660 (6GB VRAM) hoặc thậm chí có thể chạy trên CPU thuần túy với thời gian phản hồi ~1.2 giây. Tuy nhiên, đối với quy trình trích xuất đặc trưng ngoại tuyến (Offline Processing) cho hàng trăm giờ video, khuyến nghị sử dụng GPU tối thiểu 12GB–24GB VRAM (RTX 3060/3090/A5000) để xử lý batch size lớn.

2. Hệ thống mở rộng quy mô (Scalability) như thế nào khi kho video tăng từ 300 giờ lên 10.000 giờ?

Khi dữ liệu tăng lên gấp nhiều lần, việc lưu trữ vector phẳng (IndexFlatIP) trong RAM sẽ đòi hỏi lượng bộ nhớ quá lớn. Giải pháp nâng cấp kiến trúc là chuyển sang sử dụng chỉ mục phân cụm và lượng tử hóa tích (Faiss IndexIVFPQ kết hợp HNSW graph). Kỹ thuật này giúp nén dung lượng vector đặc trưng tới $87.5%$ mà vẫn bảo toàn hơn $95%$ độ chính xác Top-10, đảm bảo thời gian truy vấn duy trì dưới 100ms trên kho dữ liệu hàng triệu phân cảnh.

3. Hệ thống xử lý thế nào đối với các truy vấn bằng tiếng Việt có dấu và không dấu?

Ở mô đun tìm kiếm ngữ nghĩa CLIP, hệ thống tích hợp bộ tiền xử lý chuẩn hóa Unicode UTF-8 và dịch thuật tự động (nếu sử dụng phiên bản CLIP gốc tiếng Anh) hoặc tích hợp Text Encoder đa ngôn ngữ (Multilingual-CLIP). Đối với mô đun OCR và ASR, hệ thống áp dụng kỹ thuật tách từ và thuật toán tìm kiếm mờ (Fuzzy String Matching với Levenshtein Distance), đảm bảo người dùng gõ có dấu hay không dấu đều nhận được kết quả chính xác.

4. Chi phí vận hành và bảo trì hệ thống hàng tháng ước tính là bao nhiêu?

Hệ thống hoàn toàn dựa trên các công nghệ mã nguồn mở (PyTorch, Faiss, FastAPI, React), loại bỏ hoàn toàn chi phí bản quyền phần mềm định kỳ. Nếu triển khai trên hạ tầng đám mây (Cloud Server như AWS với 1 instance g4dn.xlarge trang bị GPU T4 16GB), chi phí vận hành ước tính dao động từ $150 - $250 USD/tháng cho kho dữ liệu phục vụ hàng chục nghìn lượt truy vấn mỗi ngày.

5. Tại sao hệ thống sử dụng TransNetV2 thay vì cắt khung hình theo khoảng thời gian cố định?

Việc cắt khung hình cố định (ví dụ mỗi 1 giây cắt 1 ảnh) tạo ra lượng khung hình dư thừa khổng lồ đối với các cảnh quay tĩnh, đồng thời có nguy cơ bỏ sót các chi tiết diễn ra nhanh trong các cảnh chuyển động. TransNetV2 phân đoạn video theo cấu trúc nội dung thực tế (shot boundaries), đảm bảo mỗi phân cảnh ngữ nghĩa chỉ lấy 1 keyframe đại diện sắc nét nhất, giúp tiết kiệm hơn $98%$ dung lượng lưu trữ và giảm hàng chục lần thời gian tính toán của các mô hình phía sau.


Kết luận

Khóa luận tốt nghiệp "Xây dựng hệ thống truy vấn video thông qua tương tác dựa trên nội dung" của tác giả Nguyễn Minh Huy đã giải quyết xuất sắc bài toán truy xuất thông tin đa phương tiện quy mô lớn trên tập dữ liệu thực tế HCMC AI Challenge 2022. Bằng cách phối hợp tối ưu các công nghệ học sâu tiên tiến nhất hiện nay—từ phát hiện chuyển cảnh bằng mạng tích chập giãn nở 3D TransNetV2, liên kết ngữ nghĩa liên phương thức qua OpenAI CLIP, trích xuất thực thể với Faster R-CNN, đến bản địa hóa xử lý chữ viết và giọng nói tiếng Việt bằng DBNet, VietOCR và Wav2Vec 2.0—hệ thống đã chứng minh được tính khả thi vượt trội và độ chính xác cao.

Kết quả thực nghiệm cho thấy hệ thống đạt thời gian phản hồi trung bình chỉ $310\text{ ms}$, độ chính xác định vị phân cảnh Known-Item Search đạt $92%$ trong Top-10, vượt xa các phương pháp tìm kiếm văn bản metadata truyền thống. Đây không chỉ là một công trình nghiên cứu học thuật chuẩn mực mà còn là giải pháp kỹ thuật có tính ứng dụng thực tiễn cao, sẵn sàng phục vụ công tác chuyển đổi số và khai thác tài nguyên số trong lĩnh vực báo chí, truyền thông và an ninh thông tin.