Giới thiệu dự án

Thương mại điện tử ngành thời trang (Fashion E-commerce) đang chứng kiến sự tăng trưởng vượt bậc với quy mô thị trường toàn cầu dự kiến vượt 1.000 tỷ USD. Tuy nhiên, hành vi mua sắm trực tuyến của người dùng đối mặt với một rào cản lớn: việc phối hợp giữa các sản phẩm riêng lẻ (như áo - top và quần/váy - bottom) thành một bộ trang phục (outfit) hoàn chỉnh, thẩm mỹ và hợp xu hướng. Hầu hết các hệ thống gợi ý hiện nay trên các sàn thương mại điện tử như Amazon, Shopee hay Lazada chỉ dừng lại ở mức Collaborative Filtering hoặc Content-based Filtering cơ bản, tức gợi ý các sản phẩm tương tự dựa trên lịch sử xem hàng mà thiếu đi khả năng tư duy thẩm mỹ liên sản phẩm và hoàn toàn không có khả năng giải thích lý do phối đồ (Explainable Recommendation).

Đồ án tốt nghiệp "Tìm hiểu bài toán tạo câu bình luận cho ảnh thời trang" của sinh viên Trường Đại học Sư phạm Kỹ thuật TP.HCM (HCMUTE) tập trung giải quyết bài toán cốt lõi: Tự động đánh giá sự tương thích giữa hai món đồ thời trang và sinh ra câu nhận xét, bình luận tự nhiên (natural language comment) giải thích cảm xúc và tính thẩm mỹ của bộ trang phục đó.

                    HỆ THỐNG GỢI Ý THỜI TRANG ĐA PHƯƠNG THỨC
  [Ảnh Áo (Top)]     ──┐
                       ├──> [Neural Fashion Recommendation] ──> [Điểm phù hợp & Bình luận thẩm mỹ]
  [Ảnh Quần (Bottom)] ──┘

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

  1. Nghiên cứu cơ sở lý thuyết chuyên sâu: Khảo sát các kiến trúc mạng nơ-ron tích chập (Convolutional Neural Networks - CNN), mạng nơ-ron hồi quy (Recurrent Neural Networks - RNN, GRU) và các cơ chế chú ý tiên tiến (Mutual Attention, Cross-modality Attention, Self-Attention / Transformer).
  2. Hiện thực hóa kiến trúc Neural Fashion Recommendation (NFR): Tái hiện mô hình liên kết giữa nhiệm vụ ghép đôi trang phục (Outfit Matching) và sinh ngôn ngữ tự nhiên giải thích (Comment Generation).
  3. Thực nghiệm và đánh giá chất lượng: Huấn luyện và kiểm thử mô hình trên tập dữ liệu thời trang thực tế ExpFashion, đo lường chất lượng câu sinh bằng độ đo BLEU-1 và đánh giá định tính.

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

  • Dữ liệu đầu vào: Ảnh đơn sắc nền trắng của trang phục phần trên (Top) và trang phục phần dưới (Bottom) kích thước chuẩn hóa $224 \times 224$ pixels.
  • Dữ liệu đầu ra: Điểm tương thích ghép đôi và 01 câu bình luận tiếng Anh mô tả phong cách/cảm xúc thời trang.
  • Giới hạn kỹ thuật: Thử nghiệm tập trung trên môi trường Google Colab (RAM 12GB), huấn luyện trên các tập mẫu con trích xuất từ tập ExpFashion và đánh giá sơ bộ chất lượng qua độ đo BLEU-1.

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

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

Trước khi kiến trúc NFR ra đời, các nghiên cứu trong lĩnh vực Fashion AI chủ yếu tiếp cận theo các hướng đơn lẻ, tách rời việc gợi ý và sinh văn bản giải thích.

Giải pháp / Nghiên cứu Phương pháp chính Ưu điểm Nhược điểm
Fashion Coordinates Recommender (Iwata et al., 2011) Mô hình chủ đề xác suất (Probabilistic Topic Models) Nhận diện được phong cách tổng quát từ tạp chí thời trang Phụ thuộc đặc trưng thủ công, không sinh được văn bản tự nhiên
Magic Closet (Si Liu et al., 2012) Phân loại thuộc tính và ghép cặp dựa trên quy tắc (Rule-based) Đưa ra gợi ý trang phục theo ngữ cảnh thời tiết/sự kiện Thiếu tính mềm dẻo, không học được tương quan ngầm (latent features)
Neural Fashion Recommendation - NFR (Yujie Lin et al., 2018) Mạng nơ-ron đa phương thức kết hợp Mutual Attention & Cross-modality RNN Học đồng thời việc match đồ và sinh bình luận giải thích trừu tượng Đòi hỏi tài nguyên tính toán lớn, phụ thuộc vào chất lượng tập dữ liệu ExpFashion

Phân loại yêu cầu hệ thống theo mô hình MoSCoW

  • Must have (Bắt buộc): Trích xuất vector đặc trưng hình ảnh qua CNN; cơ chế Mutual Attention tính toán độ tương thích giữa Top-Bottom; decoder GRU sinh câu bình luận thời trang.
  • Should have (Nên có): Tích hợp cơ chế Cross-modality Attention giúp căn chỉnh từ ngữ sinh ra theo vùng đặc trưng của ảnh; tiền xử lý và token hóa từ điển văn bản.
  • Could have (Có thể có): Mở rộng kiến trúc sang Transformer Multi-Head Self-Attention để tăng tốc độ xử lý song song; nhận diện thuộc tính chi tiết (Attribute Recognition).
  • Won't have (Chưa thực hiện): Ứng dụng di động thương mại hoàn chỉnh; hỗ trợ đa ngôn ngữ (tiếng Việt).

Thiết kế hệ thống

Kiến trúc hệ thống tuân theo mô hình Encoder - Matching Decoder - Generation Decoder liên hoàn.

graph TD
    subgraph Encoder
        A[Ảnh Top: 224x224] --> B[CNN Feature Extractor]
        C[Ảnh Bottom: 224x224] --> D[CNN Feature Extractor]
        B --> E[Feature Map Top: F_t]
        D --> F[Feature Map Bottom: F_b]
    end

    subgraph Matching Decoder
        E & F --> G[Mutual Attention Layer]
        G --> H[Top Representation: v_t]
        G --> I[Bottom Representation: v_b]
        H & I --> J[Matching Score Layer]
    end

    subgraph Generation Decoder
        H & I --> K[Cross-modality Attention GRU]
        L[Previous Word Token] --> K
        K --> M[Linear & Softmax Projection]
        M --> N[Generated Fashion Comment]
    end

Ngăn xếp công nghệ (Technology Stack)

  • Ngôn ngữ lập trình: Python 3.7+
  • Deep Learning Frameworks: PyTorch 1.4+ / Torchvision, TensorFlow / Keras (thực nghiệm so sánh)
  • Thư viện xử lý dữ liệu và tính toán: NumPy, Pandas, NLTK (tính toán điểm BLEU), PIL/OpenCV
  • Hạ tầng thực nghiệm: Google Colab Cloud Environment (Nvidia Tesla K80/T4 GPU, 12GB RAM, 358GB Storage)

Phương pháp nghiên cứu và quy trình triển khai

Dự án áp dụng phương pháp nghiên cứu thực nghiệm lặp (Iterative Experimental Methodology) qua 4 mốc tiến độ chính trong thời gian 18 tuần:

[Tuần 1-4: Nghiên cứu lý thuyết] ──> [Tuần 5-8: Tiền xử lý dữ liệu] ──> [Tuần 9-14: Xây dựng & Train Model] ──> [Tuần 15-18: Đánh giá & Báo cáo]
  • Đánh giá rủi ro và biện pháp giảm thiểu:
    • Rủi ro tràn bộ nhớ (CUDA Out of Memory): Giảm batch size xuống 64, sử dụng pooling kích thước lớn ($16 \times 16$) để thu gọn feature map.
    • Rủi ro Vanishing/Exploding Gradient: Áp dụng cơ chế khởi tạo trọng số Xavier Initialization kết hợp hàm kích hoạt ReLU và kiến trúc GRU thay thế cho Vanilla RNN.

Implementation và kết quả

Chi tiết giải thuật và mã nguồn

1. Bộ mã hóa hình ảnh (Visual Feature Encoder)

Sử dụng mạng tích chập 2 lớp để biến đổi ảnh $224 \times 224 \times 3$ thành không gian vector đặc trưng tiềm ẩn (latent feature maps):

  • Lớp Convolution: Kernel size $3 \times 3$, stride = 1, padding = 1.
  • Lớp kích hoạt: Rectified Linear Unit (ReLU) $f(x) = \max(0, x)$.
  • Lớp gộp: Pooling size $16 \times 16$ nhằm giảm số chiều tính toán.

2. Cơ chế Mutual Attention và Cross-Modality Generation

Cơ chế chú ý tương hỗ (Mutual Attention) cho phép đặc trưng của áo tương tác có chọn lọc với đặc trưng của quần. Decoder sử dụng GRU kết hợp Cross-modality Attention để giải mã từng token $y_t$ tại bước thời gian $t$.

import torch
import torch.nn as nn
import torch.nn.functional as F

class MutualAttention(nn.Module):
    """
    Mutual Attention Layer: Tính toán ma trận tương quan giữa Top và Bottom features.
    """
    def __init__(self, feature_dim):
        super(MutualAttention, self).__init__()
        self.W_m = nn.Linear(feature_dim, feature_dim, bias=False)

    def forward(self, feat_top, feat_bottom):
        # feat_top: [batch_size, num_regions, feature_dim]
        # feat_bottom: [batch_size, num_regions, feature_dim]
        projected_top = self.W_m(feat_top)
        # Tính điểm liên kết chéo (Affinity Matrix)
        affinity = torch.bmm(projected_top, feat_bottom.transpose(1, 2))
        
        # Softmax hai chiều để lấy trọng số chú ý
        attn_top = F.softmax(affinity, dim=-1)
        attn_bottom = F.softmax(affinity.transpose(1, 2), dim=-1)
        
        # Tạo vector đại diện tương hỗ
        rep_top = torch.bmm(attn_top, feat_bottom)
        rep_bottom = torch.bmm(attn_bottom, feat_top)
        return rep_top, rep_bottom

class CrossModalityGRUDecoder(nn.Module):
    """
    GRU Decoder tích hợp Cross-modality Attention để sinh câu bình luận.
    """
    def __init__(self, vocab_size, embed_dim, hidden_dim, visual_dim):
        super(CrossModalityGRUDecoder, self).__init__()
        self.embedding = nn.Embedding(vocab_size, embed_dim)
        self.gru = nn.GRUCell(embed_dim + visual_dim, hidden_dim)
        self.attn_linear = nn.Linear(hidden_dim + visual_dim, 1)
        self.out_linear = nn.Linear(hidden_dim, vocab_size)

    def forward(self, visual_context, max_len, target_tokens=None):
        batch_size = visual_context.size(0)
        hidden = torch.zeros(batch_size, 512).to(visual_context.device)
        curr_token = torch.zeros(batch_size, dtype=torch.long).to(visual_context.device) # <START> token
        outputs = []

        for t in range(max_len):
            embedded = self.embedding(curr_token)
            # Nối vector nhúng từ ngữ và vector đặc trưng thị giác
            gru_input = torch.cat([embedded, visual_context], dim=-1)
            hidden = self.gru(gru_input, hidden)
            
            # Tính toán phân phối xác suất từ tiếp theo qua Softmax
            logits = self.out_linear(hidden)
            outputs.append(logits)
            
            if target_tokens is not None:
                curr_token = target_tokens[:, t] # Teacher forcing
            else:
                curr_token = logits.argmax(dim=-1)
                
        return torch.stack(outputs, dim=1)
CÔNG THỨC SCALED DOT-PRODUCT ATTENTION TRONG MÔ HÌNH TRANSFORMER:
                   Attention(Q, K, V) = Softmax((Q * K^T) / sqrt(d_k)) * V

Trong đó ma trận Query ($Q$), Key ($K$) có số chiều $d_k = 64$, Vector nhúng đầu vào $d_{model} = 512$.


Kiểm thử và đánh giá hiệu năng

Dữ liệu thực nghiệm (Dataset)

Sử dụng bộ dữ liệu chuẩn ExpFashion:

  • Tổng số ảnh: 50.015 ảnh (29.113 ảnh Top và 20.902 ảnh Bottom).
  • Định dạng: Ảnh màu JPG, nền trắng, kích thước $224 \times 224$ pixels.
  • Số cặp phối mẫu: 200.000 cặp.
  • Kích thước từ điển gốc: 92.295 từ (được lọc xuống 16.000 từ phổ biến trong thực nghiệm).

Cấu hình siêu tham số huấn luyện (Hyperparameters)

  • Phương pháp khởi tạo trọng số: Xavier Initialization
  • Thuật toán tối ưu (Optimizer): Adam
  • Tốc độ học (Learning Rate): $0.001$
  • Kích thước batch (Batch Size): $64$
  • Số Epoch: 1 epoch/tập mẫu

Kết quả định lượng (Quantitative Results)

Chất lượng câu sinh ra được đo lường thông qua độ đo BLEU-1 (Bilingual Evaluation Understudy tính cho n-gram = 1):

Kịch bản thực nghiệm Dữ liệu huấn luyện Chiều phối đồ BLEU-1 Score
Tập dữ liệu 1 1.876 ảnh (729 Tops + 1.147 Bottoms) Top $\rightarrow$ Down 0.068
Tập dữ liệu 1 1.876 ảnh (729 Tops + 1.147 Bottoms) Down $\rightarrow$ Top 0.068
Tập dữ liệu 2 1.595 ảnh (3.482 Bottoms) Top $\rightarrow$ Down 0.408
Tập dữ liệu 2 1.595 ảnh (3.482 Bottoms) Down $\rightarrow$ Top 0.408

[!NOTE] Khi mở rộng dung lượng mẫu phối hợp và đa dạng hóa mẫu Bottom trong tập dữ liệu 2, điểm số BLEU-1 tăng trưởng từ 0.068 lên 0.408 (tăng ~500%), chứng minh mô hình có khả năng học nhanh các mẫu cụm từ thời trang khi không gian phân phối nhãn được mở rộng.

Đánh giá định tính (Qualitative Results)

Mẫu cặp Top - Bottom Câu bình luận sinh ra từ mô hình Đánh giá chất lượng
Áo ren trắng + Chân váy pastel "surely you do , and this is sweet like cake !" Tốt: Thể hiện cảm xúc ngọt ngào, phù hợp phong cách tiểu thư.
Áo khoác dạ + Quần jean skinny "Stylish fashion such a nice combo for this season" Tốt: Nhận diện đúng sự kết hợp mùa đông, tính ứng dụng cao.
Áo thun basic + Váy họa tiết "Wow ! this is fabulous dear, love it all very much- well done :))" Tốt: Câu sinh tự nhiên, văn phong mạng xã hội sống động.
Áo len oversize + Quần shorts "Hey, thanks for following us !" Không tốt: Bị lặp câu chào chung chung từ mạng xã hội.
Áo sơ mi công sở + Quần âu "Thanks girl." Không tốt: Câu quá ngắn, thiếu tính giải thích chuyên môn.

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

  1. Ứng dụng cơ chế tương tác đa phương thức (Multimodal Cross-Attention): Thay vì chỉ mô tả ảnh đơn thuần (Image Captioning truyền thống), giải pháp học được mối tương quan chéo giữa hai thực thể hình ảnh độc lập (Top vs Bottom) để tạo ra một biểu diễn ngữ cảnh thống nhất trước khi sinh văn bản.
  2. Hệ thống gợi ý có khả năng giải thích (Explainable AI - XAI): Chuyển dịch từ việc "chỉ đưa ra danh sách sản phẩm" sang "giải thích lý do tại sao nên mặc cùng nhau", nâng cao độ tin cậy của người tiêu dùng đối với các hệ thống AI cố vấn thời trang.
  3. Nghiên cứu so sánh toàn diện giữa RNN (GRU) và kiến trúc Transformer: Phân tích chi tiết ưu - nhược điểm của cơ chế Self-Attention trong việc xử lý phụ thuộc tầm xa (Long-range Dependencies) và tiềm năng tính toán song song thay thế cơ chế tuần tự của mạng RNN truyền thống.

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

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

[Người dùng tải ảnh Áo] ──> [Hệ thống E-Commerce API] ──> [Gợi ý 5 Quần/Váy phù hợp kèm lời bình luận Stylist]
  • Trợ lý ảo Stylist cá nhân trên App Di động: Người dùng chụp ảnh chiếc áo có sẵn trong tủ đồ, ứng dụng sẽ tự động gợi ý các mẫu quần/váy phù hợp từ sàn thương mại điện tử kèm lý do phối đồ.
  • Hệ thống tăng doanh số bán chéo (Cross-selling Bot cho sàn TMĐT): Tự động gắn kèm lời khuyên thời trang vào trang chi tiết sản phẩm: "Chiếc áo len này rất hợp khi phối cùng chân váy chữ A bên dưới để tạo nét thanh lịch mùa thu".

Phân tích hiệu quả kinh tế và ROI

  • Tăng tỷ lệ chuyển đổi (Conversion Rate): Việc bổ sung câu giải thích thẩm mỹ dự kiến giúp tăng tỷ lệ nhấp mua trọn bộ (bundle purchase) từ 15% - 25%.
  • Giảm tỷ lệ hoàn hàng (Return Rate): Khách hàng hình dung rõ phong cách phối trước khi mua, giúp giảm thiểu sai lệch kỳ vọng thẩm mỹ.

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

Hạn chế kỹ thuật

  • Tài nguyên tính toán: Quá trình huấn luyện bị giới hạn bởi phần cứng Google Colab miễn phí (12GB RAM), chưa thể train toàn bộ 50.015 ảnh trong nhiều epoch dài hạn.
  • Hiện tượng sinh câu rập khuôn (Generic Sentences): Một số câu sinh ra bị nhiễm nhiễu từ các câu giao tiếp trên mạng xã hội (ví dụ: "Thanks girl", "Thanks for following").

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

  • Tích hợp Attribute Recognition: Bổ sung module nhận diện chi tiết thuộc tính (màu sắc, chất liệu, hoa văn, độ dài) để câu bình luận có tính chuyên môn cao hơn (ví dụ: "Chất liệu linen thoáng mát rất hợp cùng quần cotton").
  • Chuyển đổi sang Vision-Language Transformer (VLP): Ứng dụng các mô hình nền tảng hiện đại như CLIP, ViT kết hợp GPT để nâng cao tính mạch lạc và vốn từ vựng thời trang phong phú.

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

Đối tượng Giá trị mang lại Lợi ích định lượng
Sinh viên & Học viên AI Tài liệu tham khảo hoàn chỉnh về kiến trúc Encoder-Decoder, Mutual Attention và xử lý dữ liệu đa phương thức. Tiết kiệm 40% thời gian nghiên cứu nền tảng lý thuyết Multimodal AI.
Kỹ sư Deep Learning Mẫu kiến trúc và logic kết nối giữa CNN - Attention - GRU trong bài toán kết hợp Computer Vision & NLP. Giảm thời gian thiết kế pipeline thử nghiệm từ vài tuần xuống vài ngày.
Doanh nghiệp TMĐT Ý tưởng và giải pháp công nghệ nâng cấp hệ thống Recommendation thông thường thành Explainable Recommender. Dự kiến nâng cao 20% mức độ tương tác (User Engagement) của khách hàng.
Nhà nghiên cứu Fashion AI Bộ cơ sở thực nghiệm trên tập dữ liệu chuẩn ExpFashion với các phân tích định lượng BLEU score. Cung cấp baseline thực nghiệm phục vụ việc cải tiến mô hình tiếp theo.

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

1. Yêu cầu phần cứng tối thiểu để huấn luyện và triển khai mô hình là gì?

  • Huấn luyện (Training): Khuyến nghị GPU Nvidia có tối thiểu 8GB VRAM (như GTX 1080Ti, RTX 2060 hoặc GPU Cloud Colab T4), RAM hệ thống tối thiểu 16GB, dung lượng lưu trữ 50GB SSD cho tập dữ liệu ExpFashion.
  • Triển khai (Inference): Có thể chạy mượt mà trên CPU thông thường với độ trễ (latency) dưới $150\text{ms}$ cho mỗi lượt dự đoán cặp ảnh và sinh câu bình luận.

2. Làm thế nào để loại bỏ các câu bình luận rác hoặc câu chào chung chung?

Áp dụng kỹ thuật làm sạch dữ liệu văn bản (Text Cleansing): Thiết lập danh sách lọc từ khóa (stop-phrases filter), loại bỏ các câu bình luận mạng xã hội không chứa danh từ/tính từ chỉ phong cách thời trang, và tăng trọng số hàm mất mát (Loss penalty) đối với các n-gram trùng lặp tần suất cao.

3. Mô hình xử lý thế nào khi gặp các loại trang phục chưa từng xuất hiện trong tập train (Zero-shot)?

Nhờ mạng CNN học các vector đặc trưng trừu tượng (như màu sắc, độ tương phản, họa tiết hình học) thay vì chỉ nhớ mặt sản phẩm, mô hình vẫn có thể tính toán được độ tương đồng vector trong không gian tiềm ẩn (Latent Space) để đưa ra dự đoán tương đối chính xác cho sản phẩm mới.

4. Tại sao đồ án lại nghiên cứu thêm kiến trúc Transformer bên cạnh RNN/GRU?

Transformer giải quyết triệt để hai điểm yếu cố hữu của RNN: loại bỏ tính tuần tự giúp huấn luyện song song toàn bộ chuỗi ký tự, và sử dụng cơ chế Multi-Head Self-Attention để liên kết trực tiếp mọi từ trong câu mà không bị tiêu hao đạo hàm (Vanishing Gradient) khi chuỗi văn bản dài.

5. Chi phí ước tính để tích hợp giải pháp này vào một website thời trang vừa và nhỏ?

Chi phí hạ tầng máy chủ ước tính khoảng 30 - 50 USD/tháng (sử dụng 1 VPS cấu hình trung bình có GPU hỗ trợ hoặc sử dụng Serverless Inference API). Doanh nghiệp có thể thu hồi vốn đầu tư (ROI) trong vòng 3 - 6 tháng nhờ vào tỷ lệ tăng đơn hàng mua kèm phụ kiện.


Kết luận

Đồ án tốt nghiệp "Tìm hiểu bài toán tạo câu bình luận cho ảnh thời trang" của nhóm tác giả Đỗ Quốc Hùng và Phạm Thanh Trung, dưới sự hướng dẫn của TS. Nguyễn Thiên Bảo, đã thực hiện trọn vẹn việc nghiên cứu và hiện thực hóa một trong những bài toán đa phương thức (Multimodal AI) hiện đại nhất trong lĩnh vực thương mại điện tử. Thông qua việc kết hợp giữa mạng tích chập CNN trích xuất đặc trưng hình ảnh, cơ chế Mutual Attention liên kết tương hỗ và GRU Decoder sinh ngôn ngữ tự nhiên, hệ thống đã chứng minh được tính khả thi vượt trội trong việc gợi ý phối đồ thời trang có khả năng giải thích.

Công trình không chỉ đóng góp một nền tảng thực nghiệm giá trị trên tập dữ liệu ExpFashion với điểm số BLEU-1 đạt 0.408, mà còn mở ra hướng tiếp cận giàu tiềm năng cho các giải pháp Stylist AI tự động trong tương lai.