Giới thiệu dự án

Trong kỷ nguyên kinh tế số và bùng nổ truyền thông đa phương tiện, tiếp thị kỹ thuật số (Digital Marketing) đã trở thành trụ cột chiến lược của mọi doanh nghiệp. Theo các báo cáo thống kê ngành quảng cáo số, hơn 70% ngân sách truyền thông hiện nay tập trung vào các nền tảng mạng xã hội và nội dung video. Việc xuất hiện tự nhiên của các nhãn hàng (Product Placement) trong các video YouTube hàng triệu lượt xem (như Zoom TV, Vfacts, Người Nổi Tiếng) hay trên các bài đăng mạng xã hội đòi hỏi các hệ thống tự động đo lường tần suất và thời lượng xuất hiện của logo thương hiệu. Đồng thời, đối với người tiêu dùng, nhu cầu truy xuất tức thì nguồn gốc, thông tin doanh nghiệp và câu chuyện thương hiệu của sản phẩm xung quanh thông qua camera smartphone ngày càng tăng cao.

Tuy nhiên, bài toán nhận diện nhãn hiệu (Brand Logo Recognition) trong môi trường thực tế gặp phải nhiều thách thức kỹ thuật nghiêm trọng: logo thường bị biến dạng phối cảnh, méo mó do bề mặt vật thể (chai nước, nếp gấp áo thun), thay đổi tỉ lệ kích thước đột ngột, bị che khuất một phần (occlusion), hoặc nằm trong môi trường ánh sáng phức tạp và nền nhiễu. Các giải pháp thương mại như Google Cloud Vision hay Amazon Rekognition tuy mạnh mẽ nhưng lại có chi phí vận hành cao, phụ thuộc hoàn toàn vào dịch vụ đám mây đóng và khó tùy biến linh hoạt cho các tập nhãn hiệu đặc thù theo yêu cầu cục bộ.

Đồ án tốt nghiệp "Thiết kế mô hình ứng dụng nhận diện nhãn hiệu" được thực hiện bởi sinh viên Nguyễn Phạm Duy Đức (MSSV: 15119015), dưới sự hướng dẫn của ThS. Huỳnh Hoàng Hà tại Trường Đại học Sư phạm Kỹ thuật TP.HCM (Khoa Điện - Điện tử / Chất lượng cao, ngành Công nghệ Kỹ thuật Máy tính), nhằm giải quyết triệt để bài toán trên bằng cách xây dựng một hệ thống hoàn chỉnh từ mô hình Deep Learning đến ứng dụng di động theo thời gian thực.

graph TD
    A[Người dùng chụp/chọn ảnh trên Android] --> B[Mã hóa Base64 & Đẩy lên Firebase]
    B --> C[Firebase Realtime Database]
    C --> D[Server AI lắng nghe & Tải dữ liệu]
    D --> E[Faster R-CNN Inception V2 Inference]
    E --> F[Vẽ Bounding Box & Gán Label Tên Hãng]
    F --> G[Cập nhật kết quả lên Firebase]
    G --> H[Ứng dụng Android nhận diện & Hiển thị thông tin thương hiệu]

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

  1. Xây dựng mô hình thị giác máy tính Deep Learning: Huấn luyện mô hình phát hiện đối tượng (Object Detection) dựa trên kiến trúc Faster R-CNN kết hợp mạng trích xuất đặc trưng Inception V2, đạt độ chính xác nhận diện trung bình trên 85% trên tập dữ liệu thực tế.
  2. Thiết kế kiến trúc hệ sinh thái phân tán Client-Server: Xây dựng cơ chế giao tiếp thời gian thực giữa thiết bị di động biên và máy chủ tính toán GPU thông qua Google Firebase Realtime Database và chuẩn mã hóa chuỗi Base64.
  3. Phát triển ứng dụng di động Android: Hoàn thiện ứng dụng Android hỗ trợ chụp ảnh trực tiếp qua camera hoặc chọn ảnh từ thư viện, hiển thị đường bao (bounding box) chuẩn xác và cung cấp hồ sơ thông tin chi tiết của doanh nghiệp tương ứng.
  4. Tối ưu hóa hiệu năng thời gian thực: Đảm bảo toàn bộ quy trình từ lúc gửi ảnh đến khi nhận kết quả hiển thị diễn ra trong thời gian trễ dưới 10 giây trên đường truyền tiêu chuẩn.

Phạm vi và giới hạn của đề tài

  • Phạm vi nhận diện: Nhận diện và phân loại chính xác 10 thương hiệu toàn cầu và phổ biến: Adidas (dạng chữ), Adidas2 (dạng biểu tượng 3 lá), Apple, BMW, Chanel, Coca-Cola, Ferrari, Heineken, Pepsi, Puma.
  • Môi trường hoạt động: Ứng dụng di động hoạt động tương thích từ nền tảng Android 8.0 (API level 26) trở lên; máy chủ AI xử lý chạy trên môi trường Python 3.6 và TensorFlow Object Detection API.
  • Giới hạn: Mô hình tập trung vào việc phát hiện và định vị các logo đơn lẻ hoặc nhiều logo trong một khung hình tĩnh, chưa tích hợp trực tiếp việc theo dõi đối tượng liên tục (object tracking) trên luồng video trực tiếp ở mức 30 FPS tại thiết bị biên do giới hạn phần cứng di động lúc bấy giờ.

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

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

Trước khi thiết kế hệ thống, đề tài đã tiến hành khảo sát và phân tích so sánh các giải pháp nhận diện hình ảnh và phát hiện vật thể hiện có trên thị trường nhằm xác định rõ ưu và nhược điểm.

Giải pháp Nguyên lý hoạt động Ưu điểm Nhược điểm Chi phí & Khả năng tùy biến
Google Cloud Vision / Amazon Rekognition Cloud APIs độc quyền đa tác vụ Độ chính xác cao, hỗ trợ hàng nghìn nhãn đối tượng có sẵn Không thể can thiệp sâu vào kiến trúc mạng, độ trễ phụ thuộc API quốc tế Chi phí theo lượt gọi (Pay-per-request), không tùy biến được custom classes cục bộ
YOLO (You Only Look Once - Darknet) One-stage Detector (Hồi quy lưới trực tiếp) Tốc độ xử lý cực nhanh (Real-time FPS cao) Dễ bỏ sót các vật thể kích thước nhỏ (small objects) hoặc logo bị méo mó, biến dạng Mã nguồn mở, yêu cầu phần cứng vừa phải
Faster R-CNN (Kiến trúc đề xuất) Two-stage Detector kết hợp mạng RPN chuyên dụng Độ chính xác định vị và phân loại vượt trội, xử lý tốt logo nhỏ và nền phức tạp Tốn nhiều tài nguyên tính toán hơn One-stage khi training Hoàn toàn làm chủ mã nguồn, tùy biến linh hoạt số lượng và loại nhãn hiệu

Phân loại yêu cầu người dùng theo mô hình MoSCoW

  • Must have (Bắt buộc phải có): Chụp ảnh từ camera, tải ảnh từ bộ nhớ, gửi ảnh lên Firebase dưới dạng Base64, nhận diện chính xác 10 loại logo với Bounding Box, hiển thị thông tin thương hiệu chi tiết.
  • Should have (Nên có): Tự động phát hiện trạng thái kết nối mạng, hiển thị thanh tiến trình xử lý (loading indicator), nút quay về màn hình chính nhanh chóng.
  • Could have (Có thể có): Hỗ trợ zoom chi tiết ảnh sau khi đóng khung bounding box, lưu lịch sử quét logo vào bộ nhớ cục bộ SQLite.
  • Won't have (Chưa thực hiện trong giai đoạn này): Nhận diện trực tiếp qua video stream thời gian thực 60 FPS, quét mã vạch/QR code tích hợp.

Thiết kế hệ thống

Hệ thống được thiết kế theo mô hình kiến trúc Client - Server không đồng bộ (Asynchronous Event-Driven Architecture) với Google Firebase đóng vai trò là Message Broker và Realtime Data Store.

classDiagram
    class AndroidClient {
        +CameraCapture()
        +BitmapToBase64(Bitmap) String
        +SendToFirebase(String androidId, String base64)
        +ListenResponse(String androidId)
        +DisplayResult(String label, Bitmap boxedImage)
    }
    class FirebaseDatabase {
        +String android_id
        +String image_input
        +String image_output
        +String label
        +Boolean processing
    }
    class CentralServerAI {
        +TensorFlowModel model
        +ListenFirebaseQueue()
        +Base64ToCV2(String base64) Mat
        +Inference(Mat img) Tuple
        +DrawBoundingBox(Mat img, Array boxes, Array scores)
        +UpdateFirebaseResponse(String id, String outBase64, String label)
    }
    AndroidClient --> FirebaseDatabase : Gửi ảnh & Lắng nghe kết quả
    CentralServerAI --> FirebaseDatabase : Lắng nghe yêu cầu & Trả kết quả

Technology Stack và phiên bản chi tiết

  • Hệ điều hành Server: Ubuntu Linux / Windows 10 x64.
  • Môi trường lập trình AI: Python 3.6 (Anaconda Environment).
  • Framework học sâu: TensorFlow 1.x kết hợp TensorFlow Object Detection API.
  • Mô hình Base: Pre-trained faster_rcnn_inception_v2_coco_2018_01_28.
  • Thư viện phụ trợ Server: Protocol Buffers (Protobuf v3.x), OpenCV-Python (cv2), Pillow (PIL), Pandas, Cython, Matplotlib, python-firebase / google-cloud-firestore.
  • Môi trường phát triển di động: Android Studio 3.x, SDK Android 8.0 (Oreo - API Level 26), Java Native.
  • Giao tiếp Middleware: Firebase Realtime Database SDK for Android & Python.

Thiết kế cấu trúc cơ sở dữ liệu Firebase Realtime

Mỗi thiết bị Android được định danh duy nhất bằng ANDROID_ID của hệ thống để phân lập dữ liệu người dùng:

{
  "contacts": {
    "ANDROID_ID_DEVICE_01": {
      "image": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQ...",
      "processing": true,
      "label": "pepsi",
      "image_processed": "data:image/jpeg;base64,/9j/4AAQSkZJRgAB..."
    }
  }
}

Methodology

Quy trình phát triển dự án được vận hành theo mô hình Waterfall kết hợp các vòng lặp kiểm thử hiệu năng (Iterative Refinement):

  1. Giai đoạn 1 (Milestone 1 - Tuần 1-3): Thu thập và tiền xử lý dữ liệu từ tập dữ liệu học thuật WebLogo-2M kết hợp ảnh thực tế; làm sạch dữ liệu nhiễu và gán nhãn Bounding Box thủ công.
  2. Giai đoạn 2 (Milestone 2 - Tuần 4-7): Thiết lập môi trường huấn luyện TensorFlow Object Detection API, chuyển đổi dữ liệu sang TFRecord, cấu hình pipeline và huấn luyện mô hình Faster R-CNN Inception V2.
  3. Giai đoạn 3 (Milestone 3 - Tuần 8-10): Lập trình daemon server Python xử lý ảnh, tích hợp Firebase SDK và cơ chế chuyển đổi Base64 hai chiều.
  4. Giai đoạn 4 (Milestone 4 - Tuần 11-13): Thiết kế và lập trình giao diện người dùng (UI/UX) trên Android Studio, kết nối Firebase client, kiểm thử thực tế và đóng gói sản phẩm.

Đánh giá rủi ro và giải pháp khắc phục

  • Rủi ro rớt gói tin hoặc nghẽn mạng: Truyền tải file ảnh nhị phân kích thước lớn gây quá tải Firebase. Giải pháp: Nén ảnh trước khi chuyển đổi sang chuỗi ký tự Base64 (chuẩn 6-bit per character) và chuẩn hóa kích thước tối đa 800x600 px.
  • Rủi ro quá tải bộ nhớ GPU khi huấn luyện: Giải pháp: Thiết lập batch_size = 1 trong cấu hình training pipeline và sử dụng kỹ thuật Transfer Learning từ checkpoint COCO đã hội tụ sẵn.

Implementation và kết quả

Development process

Quá trình xây dựng mô hình trí tuệ nhân tạo nhận diện nhãn hiệu được triển khai thông qua các thuật toán cốt lõi của kiến trúc Faster R-CNN.

flowchart LR
    Img[Ảnh đầu vào] --> Conv[Convolutional & Feature Map Inception V2]
    Conv --> RPN[Region Proposal Network - RPN]
    RPN --> Anchors[Anchor Boxes: 9 tỉ lệ/kích thước]
    Anchors --> RoIPool[Region of Interest Pooling]
    RoIPool --> FC[Fully Connected Layers]
    FC --> Cls[Softmax: Phân loại 10 Nhãn]
    FC --> Reg[Smooth L1: Hồi quy Bounding Box]

1. Nguyên lý Region Proposal Network (RPN) và kỹ thuật Anchor Boxes

Thay vì sử dụng thuật toán Selective Search truyền thống gây tiêu tốn thời gian, Faster R-CNN sử dụng mạng RPN trượt trực tiếp trên Feature Map trích xuất bởi Inception V2. Tại mỗi vị trí cửa sổ trượt (trượt theo bước nhảy 16 pixel), mô hình sinh ra 9 Anchor Boxes đại diện cho 3 tỉ lệ khung hình (Aspect Ratios: $1:1, 1:2, 2:1$) và 3 kích thước quy mô ($64\times64, 128\times128, 256\times256$).

  • Đối với ảnh kích thước chuẩn $400 \times 600$, số lượng tâm neo ước tính: $\frac{400 \times 600}{16 \times 16} \approx 938$ tâm.
  • Tổng số lượng Anchor Boxes ban đầu: $938 \times 9 = 8,442$ anchors.
  • Mạng RPN thực hiện dự đoán xác suất đối tượng (Objectness Score) và hồi quy 4 tọa độ sai lệch $(dx, dy, dw, dh)$. Sau khi áp dụng thuật toán triệt tiêu phi cực đại (Non-Maximum Suppression - NMS) với ngưỡng IoU xác định, mô hình giữ lại khoảng 1,000 region proposals tối ưu nhất để đưa vào tầng tiếp theo.

2. Hàm mất mát đa tác vụ (Multi-task Loss Function)

Hàm mất mát toàn diện để tối ưu hóa đồng thời bước đề xuất vùng và bước phân loại được định nghĩa toán học:

$$L({p_i}, {t_i}) = \frac{1}{N_{cls}} \sum_i L_{cls}(p_i, p_i^) + \lambda \frac{1}{N_{reg}} \sum_i p_i^ L_{reg}(t_i, t_i^*)$$

Trong đó:

  • $i$ là chỉ số của anchor trong một mini-batch ($N_{cls} = 256$).
  • $p_i$ là xác suất dự đoán anchor $i$ chứa nhãn hiệu; $p_i^* \in {0, 1}$ là nhãn Ground-truth ($p_i^=1$ nếu $\text{IoU} > 0.7$, $p_i^=0$ nếu $\text{IoU} < 0.3$).
  • $t_i = (t_x, t_y, t_w, t_h)$ là vector 4 tọa độ bounding box tham số hóa do mô hình dự đoán.
  • $t_i^*$ là tọa độ vector của ground-truth box thực tế.
  • $L_{cls}$ là hàm mất mát phân loại nhị phân log-loss.
  • $L_{reg}$ là hàm hồi quy mượt mà (Smooth L1 Loss):

$$\text{Smooth}_{L1}(x) = \begin{cases} 0.5 x^2 & \text{nếu } |x| < 1 \ |x| - 0.5 & \text{ngược lại} \end{cases}$$

3. Chuyển đổi dữ liệu và Cấu hình Pipeline TensorFlow

Dữ liệu huấn luyện sau khi gán nhãn Bounding Box được tổng hợp dưới dạng file CSV và chuyển hóa sang định dạng nhị phân chuẩn TFRecord thông qua file thực thi:

# Trích đoạn chuyển đổi nhãn chuỗi sang định danh số nguyên (generate_tfrecord.py)
def class_text_to_int(row_label):
    label_map = {
        'adidas': 1, 'adidas2': 2, 'apple': 3, 'bmw': 4,
        'chanel': 5, 'cocacola': 6, 'ferrari': 7,
        'heineken': 8, 'pepsi': 9, 'puma': 10
    }
    return label_map.get(row_label, None)

File cấu hình nhãn đối tượng labelmap.pbtxt được định nghĩa tương ứng:

item { id: 1 name: 'adidas' }
item { id: 2 name: 'adidas2' }
item { id: 3 name: 'apple' }
item { id: 4 name: 'bmw' }
item { id: 5 name: 'chanel' }
item { id: 6 name: 'cocacola' }
item { id: 7 name: 'ferrari' }
item { id: 8 name: 'heineken' }
item { id: 9 name: 'pepsi' }
item { id: 10 name: 'puma' }

4. Kiến trúc Server Backend Python và Giao tiếp Firebase

Server chạy một tiến trình daemon liên tục giám sát nhánh contacts trên Firebase Realtime Database. Khi cờ processing = true được kích hoạt từ client, server sẽ giải mã Base64 sang ảnh OpenCV, thực hiện suy luận mô hình và cập nhật kết quả:

import cv2
import numpy as np
import base64
from firebase import firebase

fb = firebase.FirebaseApplication('https://logo-recognition-project.firebaseio.com', None)

def process_image_request(android_id):
    # Lấy dữ liệu Base64 từ Firebase
    base64_data = fb.get('/contacts/' + android_id, 'image')
    if base64_data:
        # Giải mã chuỗi Base64 sang ảnh OpenCV
        img_bytes = base64.b64decode(base64_data)
        np_arr = np.frombuffer(img_bytes, np.uint8)
        image_np = cv2.imdecode(np_arr, cv2.IMREAD_COLOR)
        
        # Thực hiện nhận diện qua TensorFlow Frozen Graph
        boxes, scores, classes, num_detections = run_inference_for_single_image(image_np, detection_graph)
        
        # Đóng khung vật thể và lấy nhãn có điểm tin cậy cao nhất (> 0.5)
        top_label = draw_boxes_and_get_label(image_np, boxes, classes, scores, category_index)
        
        # Mã hóa lại sang Base64 để gửi về Firebase
        _, buffer = cv2.imencode('.jpg', image_np)
        out_base64 = base64.b64encode(buffer).decode('utf-8')
        
        # Cập nhật kết quả lên Firebase
        fb.put('/contacts/' + android_id, 'image_processed', out_base64)
        fb.put('/contacts/' + android_id, 'label', top_label)
        fb.put('/contacts/' + android_id, 'processing', False)

Testing và validation

1. Phân chia tập dữ liệu huấn luyện và kiểm thử

Tập dữ liệu gốc WebLogo-2M của Queen Mary University of London bao gồm 2,190,757 ảnh thuộc 194 lớp logo với tỉ lệ nhiễu trung bình 25.8%. Đề tài đã tiến hành lọc bỏ toàn bộ ảnh nhiễu, lọc trích 10 lớp thương hiệu mục tiêu và thu thập bổ sung ảnh thực tế, thu được tập dữ liệu chất lượng cao gồm 7,158 ảnh đã được đánh dấu bounding box chính xác:

  • Tập huấn luyện (Training Set): 6,442 ảnh (chiếm 90%).
  • Tập kiểm thử (Testing Set): 716 ảnh (chiếm 10%).

2. Quá trình hội tụ và đánh giá hàm mất mát (Loss Convergence)

Mô hình được huấn luyện bằng thuật toán tối ưu hóa Gradient Descent có sử dụng Momentum. Sau khoảng 3,000 bước huấn luyện đầu tiên, hàm mất mát bắt đầu đi vào vùng ổn định:

  • Tại bước 9,283 (Step 9283): Hàm mất mát tổng cộng đạt mức thấp cục bộ.
  • Tại bước 11,391 (Step 11391): Hàm mất mát (Total Loss) đạt điểm cân bằng tối ưu giữa RPN Localization Loss, RPN Classification Loss, Final Classification Loss và Box Regression Loss. Mô hình tại checkpoint 11,391 được xuất ra định dạng frozen_inference_graph.pb để triển khai thực tế do đạt độ chính xác thực nghiệm cao hơn trên tập dữ liệu kiểm thử.
xychart-beta
    title "Biểu đồ suy giảm Total Loss theo số bước huấn luyện"
    x-axis ["Step 0", "Step 1500", "Step 3000", "Step 6000", "Step 9283", "Step 11391"]
    y-axis "Total Loss" 0.0 --> 3.5
    line [3.2, 1.8, 0.95, 0.52, 0.38, 0.31]

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

Hệ thống đã đạt được các chỉ số hiệu năng và độ chính xác phân loại vượt mức chỉ tiêu ban đầu đề ra:

Tên nhãn hiệu (Brand Class) Số lượng ảnh Test Tỷ lệ nhận diện đúng (Recall) Độ chính xác (Precision)
Adidas (Chữ) 72 88.9% 87.5%
Adidas2 (Ba lá) 68 86.8% 85.5%
Apple 75 93.3% 92.1%
BMW 70 91.4% 89.2%
Chanel 69 85.5% 86.0%
Coca-Cola 74 90.5% 88.7%
Ferrari 71 87.3% 86.4%
Heineken 73 89.0% 87.8%
Pepsi 74 91.9% 90.3%
Puma 70 88.6% 87.1%
Trung bình toàn hệ thống 716 89.32% 88.06%
  • Độ chính xác trung bình: Đạt 88.06%, vượt mục tiêu thiết kế ban đầu (>85%).
  • Thời gian xử lý vòng đời một yêu cầu (End-to-End Latency):
    • Tải ảnh lên Firebase: 1.2 - 2.0 giây (với kết nối 4G/Wi-Fi).
    • Suy luận mô hình trên Server (Inference Time): 0.8 - 1.5 giây.
    • Tải ảnh kết quả về điện thoại: 1.0 - 1.8 giây.
    • Tổng thời gian trễ: Dao động từ 3.5 đến 5.5 giây, đáp ứng tốt yêu cầu kỹ thuật (< 10 giây).

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

  1. Ứng dụng giải thuật Deep Learning hiện đại vào bài toán thực tiễn: Thay thế các phương pháp trích xuất đặc trưng truyền thống (như SIFT, SURF, HOG kết hợp SVM) bằng mô hình tích hợp đồng nhất Faster R-CNN Inception V2, giúp tăng độ chính xác định vị logo trong môi trường nền phức tạp lên hơn 23.5% so với các bộ phân loại cổ điển.
  2. Kiến trúc tích hợp Edge-to-Cloud linh hoạt: Đề xuất mô hình kết nối di động - máy chủ thông qua Firebase Realtime Database phân tán theo ANDROID_ID, giải quyết triệt để bài toán hạn chế tài nguyên phần cứng của smartphone di động mà không cần phải xây dựng hạ tầng RESTful API phức tạp từ đầu.
  3. Cơ chế nén dữ liệu Base64 tối ưu băng thông: Ứng dụng quy trình chuyển đổi Base64 6-bit song song với nén ảnh JPEG giúp giảm kích thước gói tin truyền qua mạng internet tới 60%, đảm bảo hệ thống vận hành ổn định ngay cả trong điều kiện mạng di động có độ trễ cao.
  4. Đóng góp tập dữ liệu tinh chỉnh: Đã làm sạch, chuẩn hóa và gán nhãn chi tiết 7,158 ảnh chất lượng cao từ nguồn dữ liệu học thuật WebLogo-2M của Queen Mary University, tạo ra bộ dữ liệu chuẩn cho các nghiên cứu tiếp theo về nhận diện logo thương hiệu tại Việt Nam.

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

Kịch bản ứng dụng thực tế (Use Cases)

  • Người tiêu dùng thông minh: Khi đi mua sắm, người dùng có thể quét logo trên bao bì sản phẩm, quần áo, thiết bị điện tử để kiểm tra nguồn gốc, phân biệt hàng thật/giả và xem thông tin giới thiệu công ty ngay lập tức.
  • Đo lường hiệu quả quảng cáo số (Media Monitoring): Tự động quét và thống kê số lần, thời lượng xuất hiện của logo thương hiệu tài trợ trong các sự kiện thể thao, video ca nhạc hoặc chương trình truyền hình thực tế.
  • Hỗ trợ giáo dục và đào tạo: Cung cấp công cụ tra cứu trực quan các thương hiệu toàn cầu cho học sinh, sinh viên ngành truyền thông và kinh tế.
sequenceDiagram
    autonumber
    actor User as Người dùng Android
    participant App as Ứng dụng Android
    participant FB as Firebase Realtime DB
    participant Srv as Server AI (Python)

    User->>App: Mở camera/thư viện & Chọn ảnh logo
    App->>App: Nén ảnh & Encode Base64
    App->>FB: Ghi dữ liệu vào /contacts/{ANDROID_ID} (processing=true)
    FB-->>Srv: Phát sự kiện thay đổi dữ liệu (Data Event)
    Srv->>Srv: Decode Base64 -> Inference Faster R-CNN
    Srv->>Srv: Vẽ Bounding Box & Xác định Brand Label
    Srv->>FB: Ghi ảnh kết quả + Label (processing=false)
    FB-->>App: Bắn sự kiện cập nhật kết quả
    App->>App: Render ảnh đóng khung & Hiển thị Info Card
    App->>User: Trình bày chi tiết thông tin thương hiệu

Yêu cầu triển khai hệ thống (Deployment Requirements)

  • Phía Máy chủ (Server):
    • CPU: Intel Core i5/i7 thế hệ 7 trở lên hoặc AMD Ryzen tương đương.
    • RAM: Tối thiểu 8 GB RAM (khuyến nghị 16 GB).
    • GPU: NVIDIA GeForce GTX 1060 (hoặc chuyên dụng Tesla K80/T4) với bộ nhớ VRAM $\ge$ 6 GB để tối ưu hóa thời gian suy luận.
    • Môi trường: Python 3.6, CUDA Toolkit 9.0, cuDNN v7.0.
  • Phía Thiết bị Di động (Client):
    • Smartphone chạy hệ điều hành Android 8.0 (API level 26) trở lên.
    • Camera có độ phân giải tối thiểu 5.0 Megapixels, hỗ trợ lấy nét tự động (Auto-focus).
    • Kết nối mạng ổn định (3G/4G/Wi-Fi).

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

Hạn chế kỹ thuật hiện tại

  • Phụ thuộc vào kết nối mạng: Hệ thống hoạt động theo mô hình Client-Server nên hoàn toàn phụ thuộc vào đường truyền Internet; không thể nhận diện offline tại biên.
  • Quy mô danh mục nhãn hiệu: Hiện tại mới chỉ hỗ trợ nhận diện 10 thương hiệu phổ biến, chưa bao quát toàn bộ các thương hiệu nội địa Việt Nam.
  • Tài nguyên máy chủ: Quá trình suy luận trên CPU máy chủ thông thường vẫn mất khoảng 1.5 giây/ảnh; cần có GPU chuyên dụng để phục vụ đồng thời hàng trăm người dùng.

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

  1. Chuyển đổi mô hình sang Edge AI: Tối ưu hóa mô hình sang dạng TensorFlow Lite (TFLite) hoặc ONNX Runtime kết hợp lượng tử hóa trọng số (INT8 Quantization) để nhúng trực tiếp mô hình AI vào trong ứng dụng Android, cho phép nhận diện tức thì offline không cần internet.
  2. Mở rộng cơ sở dữ liệu nhãn hiệu: Nâng cấp tập dữ liệu lên 500 - 1,000 nhãn hàng, tập trung vào các thương hiệu nông sản, hàng tiêu dùng và doanh nghiệp khởi nghiệp tại Việt Nam.
  3. Phát triển luồng quét trực tiếp (Live Augmented Reality): Áp dụng kiến trúc YOLOv8-tiny hoặc MobileNet-SSD để nhận diện và hiển thị thông tin thương hiệu dạng thực tế tăng cường (AR) trực tiếp trên khung ngắm máy ảnh 30 FPS.

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

  • Sinh viên chuyên ngành Công nghệ thông tin / Kỹ thuật máy tính: Cung cấp tài liệu tham khảo hoàn chỉnh về quy trình xây dựng đồ án thực tế từ khâu chuẩn bị dữ liệu, huấn luyện TensorFlow API đến đóng gói sản phẩm di động.
  • Kỹ sư phát triển phần mềm di động và AI: Tham khảo kiến trúc kết nối thời gian thực giữa Android và Python Server qua Firebase mà không cần triển khai hạ tầng Web Server phức tạp.
  • Doanh nghiệp và Đơn vị truyền thông: Sở hữu giải pháp mẫu để tích hợp vào các hệ thống tự động kiểm duyệt nội dung và đo lường tần suất xuất hiện quảng cáo thương hiệu với chi phí tối ưu.
  • Người dùng đại chúng: Có một công cụ tra cứu thông tin sản phẩm, lịch sử hình thành thương hiệu trực quan và tiện lợi ngay trên điện thoại thông minh.

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

1. Cần chuẩn bị phần cứng máy chủ như thế nào để triển khai hệ thống nhận diện này?

Để triển khai thực tế cho nhóm người dùng thử nghiệm, máy chủ cần trang bị tối thiểu CPU Intel Core i5/i7 (hoặc máy ảo Cloud AWS/GCP 4 vCPU), RAM 8 GB và tốt nhất nên có card đồ họa rời NVIDIA GPU VRAM từ 6 GB trở lên (hỗ trợ CUDA) để đảm bảo thời gian suy luận dưới 1 giây/ảnh.

2. Tại sao đồ án không chọn mạng YOLOv3 mà lại sử dụng Faster R-CNN Inception V2?

Mặc dù YOLO có ưu thế vượt trội về tốc độ khung hình (thích hợp cho bài toán video tracking), nhưng Faster R-CNN sử dụng mạng RPN hai giai đoạn (Two-stage detector) cho độ chính xác định vị cao hơn đáng kể đối với các vật thể có kích thước nhỏ, logo bị biến dạng, méo mó hoặc bị che khuất một phần trong môi trường ánh sáng phức tạp.

3. Hệ thống xử lý thế nào khi có nhiều thiết bị gửi yêu cầu nhận diện cùng lúc?

Hệ thống sử dụng mã định danh duy nhất ANDROID_ID cho mỗi thiết bị di động để tạo các nhánh dữ liệu độc lập trên Firebase Realtime Database (/contacts/{ANDROID_ID}). Server Python lắng nghe theo mô hình bất đồng bộ và có thể dễ dàng mở rộng thành cụm Worker đa tiến trình (Multi-threading / Celery Queue) để xử lý song song các yêu cầu từ nhiều thiết bị.

4. Chi phí duy trì và vận hành hệ thống Firebase có tốn kém không?

Trong giai đoạn thử nghiệm và phát triển, gói dịch vụ miễn phí (Spark Plan) của Google Firebase hoàn toàn đáp ứng đủ băng thông và dung lượng lưu trữ cho hàng trăm lượt quét mỗi ngày nhờ cơ chế chỉ lưu tạm chuỗi Base64 và xóa dữ liệu đệm sau khi xử lý xong.

5. Độ trễ 3.5 - 5.5 giây có thể tối ưu thêm được không?

Có thể tối ưu xuống dưới 1 giây bằng cách: (1) Giảm kích thước ảnh đầu vào trước khi mã hóa Base64; (2) Sử dụng giao thức kết nối Socket trực tiếp (gRPC/WebSocket) thay cho Firebase; (3) Chuyển mô hình sang TensorRT trên máy chủ GPU hoặc chạy mô hình TensorFlow Lite trực tiếp tại chip xử lý NPU của smartphone.


Kết luận

Đồ án tốt nghiệp "Thiết kế mô hình ứng dụng nhận diện nhãn hiệu" của sinh viên Nguyễn Phạm Duy Đức đã giải quyết thành công và trọn vẹn bài toán tích hợp giữa thị giác máy tính học sâu (Deep Learning Computer Vision) và kỹ thuật phát triển ứng dụng di động thực tế. Bằng việc làm chủ kiến trúc Faster R-CNN Inception V2 trên nền tảng TensorFlow Object Detection API cùng giải pháp truyền thông thời gian thực qua Firebase, hệ thống đạt độ chính xác nhận diện trung bình ấn tượng 88.06% với thời gian phản hồi nhanh chóng (3.5 - 5.5 giây).

Thành công của đề tài không chỉ khẳng định tính khả thi của việc ứng dụng các mạng nơ-ron tích chập hiện đại vào các bài toán thương mại di động, mà còn mở ra nền tảng vững chắc cho các nghiên cứu tiếp theo về giám sát truyền thông tự động, bảo vệ quyền sở hữu trí tuệ thương hiệu và nâng cao trải nghiệm mua sắm thông minh cho người tiêu dùng tại Việt Nam.