Giới thiệu dự án

Trong kỷ nguyên chuyển đổi số và trí tuệ nhân tạo phát triển vượt bậc, bài toán kết hợp giữa Thị giác máy tính (Computer Vision - CV) và Xử lý ngôn ngữ tự nhiên (Natural Language Processing - NLP) đang mở ra những hướng tiếp cận mới trong việc bảo tồn và phát huy các giá trị văn hóa phi vật thể. Tại Việt Nam, thơ lục bát là thể thơ dân tộc mang đậm bản sắc văn hóa với hệ thống quy tắc ngữ âm, bằng trắc và hiệp vần chặt chẽ. Đề tài "Tạo sinh thơ từ ảnh sử dụng mô hình ngôn ngữ và đặc trưng thị giác" được thực hiện tại Trường Đại học Công nghệ Thông tin – ĐHQG TP.HCM nhằm giải quyết bài toán tự động sáng tác thơ lục bát truyền thống từ hình ảnh phong cảnh đầu vào.

+------------------+      +-------------------------------+      +-------------------------+
|                  |      |      Giai đoạn 1 (CV)         |      |    Giai đoạn 2 (NLP)    |
|  Ảnh phong cảnh  | ---> |          Query2Label          | ---> |     GPT-2 Fine-tuned    | ---> Bài thơ lục bát
|     đầu vào      |      | Trích xuất 76 nhãn/từ khóa    |      | Sinh 4 câu đúng luật    |      hoàn chỉnh
+------------------+      +-------------------------------+      +-------------------------+

Vấn đề nghiên cứu và thách thức kỹ thuật

Quá trình tạo sinh thơ từ dữ liệu đa phương tiện (Multimodal Poem Generation) gặp phải nhiều rào cản kỹ thuật nghiêm trọng:

  • Khoảng cách ngữ nghĩa đa phương tiện (Multimodal Semantic Gap): Máy tính biểu diễn hình ảnh dưới dạng ma trận điểm ảnh (Pixel Matrix) đa chiều, trong khi thơ ca đòi hỏi tính trừu tượng, cảm xúc và cấu trúc câu từ chặt chẽ.
  • Ràng buộc luật thơ lục bát tiếng Việt: Bài thơ phải tuân thủ nghiêm ngặt mô hình cấu trúc $6 - 8$, luật phối thanh Bằng – Trắc ($B-T-B$ ở các vị trí $2-4-6$ của câu lục; $B-T-B-B$ ở các vị trí $2-4-6-8$ của câu bát) và quy tắc hiệp vần liên dòng (từ thứ 6 câu lục vần với từ thứ 6 câu bát; từ thứ 8 câu bát vần với từ thứ 6 câu lục tiếp theo).
  • Sự khan hiếm dữ liệu ghép cặp (Data Scarcity): Không tồn tại bộ ngữ liệu ghép cặp song song có quy mô đủ lớn giữa ảnh phong cảnh Việt Nam và các bài thơ lục bát chuẩn mực.

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

  1. Xây dựng bộ dữ liệu đa phương tiện UIT-Visual68Poem: Tích hợp và tiền xử lý dữ liệu từ kho ngữ liệu thơ lục bát kết hợp gán nhãn đa phương tiện.
  2. Đề xuất kiến trúc Dual-Transformer: Tách bài toán phức tạp thành hai tiến trình độc lập gồm Image-to-Keywords (Trích xuất đặc trưng thị giác sang từ khóa) và Keywords-to-Poem (Tạo sinh thơ từ từ khóa).
  3. Tối ưu hóa mô hình học sâu: Ứng dụng mô hình phân loại đa nhãn Query2Label (backbone ResNet-101) cho nhánh thị giác và tinh chỉnh mô hình ngôn ngữ GPT-2 (Decoder-only Transformer) cho nhánh ngôn ngữ.
  4. Xây dựng hệ số đánh giá tự động và đánh giá chủ quan: Kiểm định chất lượng thơ dựa trên công cụ phân tích cấu trúc vần điệu tự động cùng thang đo trải nghiệm người đọc.

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

  • Phạm vi: Tập trung vào thể loại ảnh phong cảnh Việt Nam và định dạng thơ lục bát 4 câu (2 cặp lục bát).
  • Giới hạn: Mô hình phân loại thị giác được chuẩn hóa trên tập 76 danh từ/cụm danh từ phong cảnh tiêu biểu; chưa mở rộng sang các thể thơ tự do, thất ngôn bát cú hoặc thơ lục bát biến thể.

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

Phân tích hiện trạng và giải pháp liên quan

Phương pháp Kiến trúc kỹ thuật Ưu điểm Nhược điểm
Mô hình một giai đoạn (1-stage End-to-End / I2P-GAN) CNN kết hợp RNN/LSTM + Policy Gradient Reinforcement Learning Tối ưu hóa trực tiếp từ ảnh sang chuỗi văn bản Cần dữ liệu song song khổng lồ; câu từ dễ mất kiểm soát về vần điệu và bằng trắc
Mô hình trích xuất đối tượng (Object Detection based) DETR, Faster R-CNN, Swin Transformer Định vị chính xác tọa độ vật thể Đòi hỏi gán nhãn bounding box tốn kém; khó nắm bắt khái niệm trừu tượng
Đề xuất Dual-Transformer (2-stage Decoupled) Query2Label (Transformer Decoder + Cross-Attention) + GPT-2 Tận dụng tối đa dữ liệu đơn lẻ; kiểm soát ngữ nghĩa và luật thơ chặt chẽ Phụ thuộc vào độ chính xác của bước trích xuất từ khóa trung gian

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

  • Must Have: Trích xuất chính xác ít nhất 1-3 từ khóa trọng tâm từ ảnh; tạo bài thơ 4 câu tuân thủ cấu trúc âm tiết $6-8-6-8$; đảm bảo tính liên kết từ khóa.
  • Should Have: Tuân thủ trên $85%$ quy tắc phối thanh Bằng – Trắc; tỷ lệ hiệp vần chuẩn ngữ âm học tiếng Việt; loại bỏ hiện tượng sinh lặp từ.
  • Could Have: Khả năng sinh thơ theo tông cảm xúc (vui, buồn, hoài niệm); tối ưu hóa tốc độ suy luận dưới 1.5 giây/ảnh.
  • Won't Have (ở phiên bản hiện tại): Nhận diện hành động chi tiết của con người hoặc hỗ trợ các thể thơ phức tạp khác.

Công nghệ và cấu trúc hạ tầng

  • Framework & Thư viện: Python 3.8, PyTorch 1.10.0, Hugging Face Transformers 4.15.0, torchvision 0.11.1, timm 0.5.4.
  • Công cụ NLP chuyên dụng: VnCoreNLP (POSTagger), RDRsegmenter (Word Segmentation), RAKE (Rapid Automatic Keyword Extraction), Byte-Level BPE Tokenizer.
  • Phần cứng thực nghiệm: NVIDIA RTX 2080 GPU (CUDA 11.3), 32GB RAM DDR4.
{
  "project": "Poem Generation Dual-Transformer",
  "pipeline": {
    "visual_module": {
      "model": "Query2Label",
      "backbone": "ResNet-101",
      "num_classes": 76,
      "optimizer": "AdamW",
      "learning_rate": 1e-4,
      "weight_decay": 1e-2
    },
    "language_module": {
      "model": "GPT-2 Vietnamese (imthanhlv/gpt2news)",
      "pretrain_corpus": "Binhvq News Corpus (14.8M articles)",
      "optimizer": "AdamW",
      "learning_rate": 5e-5,
      "grad_norm_clipping": 1.0,
      "loss_function": "CrossEntropyLoss / NLL"
    }
  }
}

Implementation và kết quả

Quy trình tiền xử lý và xây dựng bộ dữ liệu UIT-Visual68Poem

  1. Xây dựng nhánh dữ liệu thơ lục bát:

    • Thu thập 171,188 bài thơ tiếng Việt từ các cộng đồng mạng (lucbat.com, thivien.net, FPT Poem Dataset).
    • Lọc sạch ký tự đặc biệt, chuẩn hóa cấu trúc 4 câu, thu được 87,609 bài lục bát đạt chuẩn.
    • Trích xuất từ khóa tự động: Kết hợp giao giữa danh từ/cụm danh từ từ VnCoreNLP POSTagger và các từ khóa trọng tâm tính toán bởi thuật toán RAKE.
    • Cân bằng phân phối: Thực hiện lấy mẫu ngẫu nhiên từ 1 đến 5 từ khóa cho mỗi bài thơ để tăng cường dữ liệu (Data Augmentation).
    • Định dạng huấn luyện GPT-2: Keywords <SEP> Poem\nCâu_1\nCâu_2\nCâu_3\nCâu_4
  2. Xây dựng nhánh dữ liệu ảnh phong cảnh:

    • Sử dụng tập dữ liệu nền tảng UIT-Poem-Dataset gồm 2,592 cặp ảnh - thơ gốc với điểm tương quan trung bình đạt $2.48 / 4.0$.
    • Trích xuất nhãn thông qua pipeline NLP và lọc bỏ các từ khóa xuất hiện dưới 200 lần, giữ lại đúng 76 lớp đối tượng phong cảnh đặc trưng (ví dụ: biển, sóng, bờ, mây, núi, nắng, gió, hoa, trăng...).
    • Mở rộng dữ liệu ảnh đạt 329,536 mẫu huấn luyện.
import torch
import torch.nn as nn
from transformers import GPT2LMHeadModel, GPT2Tokenizer

class LucBatPoemGenerator:
    def __init__(self, model_path: str, device: str = "cuda"):
        self.device = torch.device(device if torch.cuda.is_available() else "cpu")
        self.tokenizer = GPT2Tokenizer.from_pretrained(model_path)
        self.model = GPT2LMHeadModel.from_pretrained(model_path).to(self.device)
        self.model.eval()

    def generate_poem(self, keywords: list, max_length: int = 128, top_k: int = 50, top_p: float = 0.95) -> str:
        prompt = " ".join(keywords) + " <SEP> "
        input_ids = self.tokenizer.encode(prompt, return_tensors="pt").to(self.device)
        
        with torch.no_grad():
            output = self.model.generate(
                input_ids,
                max_length=max_length,
                do_sample=True,
                top_k=top_k,
                top_p=top_p,
                temperature=0.8,
                pad_token_id=self.tokenizer.eos_token_id,
                no_repeat_ngram_size=2
            )
        generated_text = self.tokenizer.decode(output[0], skip_special_tokens=True)
        poem_body = generated_text.split("<SEP>")[-1].strip()
        return poem_body

                 Quy trình xử lý Self-Attention trong GPT-2:

Thiết lập tham số thực nghiệm và phân chia Dataset

Phân vùng dữ liệu Nhánh Image-to-Keywords (Ảnh) Nhánh Keywords-to-Poem (Cặp từ khóa - thơ)
Tập Huấn luyện (Train) 295,682 mẫu 10,100 mẫu
Tập Kiểm định (Validation) 32,854 mẫu 1,123 mẫu
Tập Kiểm thử (Test) 1,000 mẫu 1,123 mẫu
Tổng cộng 329,536 mẫu 12,346 mẫu
  • Query2Label: Optimizer AdamW, $\text{Learning Rate} = 1\times 10^{-4}$, Weight Decay = $1\times 10^{-2}$, $\beta_1 = 0.9, \beta_2 = 0.999$, Batch Size = 1, Huấn luyện 50 epochs.
  • GPT-2 Fine-tuning: Optimizer AdamW, $\text{Learning Rate} = 5\times 10^{-5}$, Gradient Clipping $\text{max_grad_norm} = 1.0$, Batch Size = 4, Huấn luyện 800,000 steps (~15 epochs), hàm kích hoạt GELU.

Đánh giá tự động và kiểm thử chất lượng

Chỉ số sai số độ dài câu thơ (Length Error - LE) được kiểm soát thông qua công cụ phân tích tự động: $$\text{LE} = 1 - \frac{\text{Total_len_error}}{6 \times N_{\text{six_line}} + 8 \times N_{\text{eight_line}}}$$

+-----------------------------------------------------------------------+
| VÍ DỤ ĐẦU RA THỰC TẾ CỦA FRAMEWORK DUAL-TRANSFORMER                   |
+-----------------------------------------------------------------------+
| [Ảnh đầu vào]    : Cảnh bờ biển sóng vỗ hoàng hôn                     |
| [Từ khóa trích] : "sóng", "biển", "bờ"                                |
| [Thơ sinh ra]   :                                                     |
|                   Ngắm con sóng biển chiều nay (6)                    |
|                   Cồn cào nỗi nhớ đắm say bên bờ (8)                  |
|                   Ngoài khơi sóng vỗ hững hờ (6)                      |
|                   Gửi thương gửi nhớ cho bờ đêm nay (8)               |
|                                                                       |
| [Phân tích luật]:                                                     |
| - Câu 1: Ngắm(T) con(B) sóng(T) biển(T) chiều(B) nay(B) -> 2-4-6: B-T-B|
| - Câu 2: Cồn(B) cào(B) nỗi(T) nhớ(T) đắm(T) say(B) bên(B) bờ(B) -> B-T-B-B|
| - Hiệp vần: "nay" (cuối câu 1) vần với "say" (vị trí 6 câu 2) [CHUẨN] |
| - Hiệp vần: "bờ" (cuối câu 2) vần với "hờ" (vị trí 6 câu 3) [CHUẨN]  |
+-----------------------------------------------------------------------+

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

  1. Giải pháp kiến trúc Decoupled Dual-Transformer: Khắc phục hoàn toàn sự phụ thuộc vào các tập dữ liệu song ngữ đa phương tiện quy mô lớn, cho phép tối ưu hóa độc lập Module thị giác (Query2Label) và Module ngôn ngữ (GPT-2).
  2. Chiến lược lai ghép trích xuất từ khóa tự động (Hybrid Extraction Pipeline): Sử dụng phép giao logic giữa POSTagger và RAKE loại bỏ đến $95%$ các hư từ vô nghĩa, giữ lại các thực thể quan sát trực tiếp được trong không gian ảnh.
  3. Bộ dữ liệu UIT-Visual68Poem cho cộng đồng AI Việt Nam: Đóng góp bộ dữ liệu chuẩn hóa gồm 329k ảnh phân loại đa nhãn 76 lớp đối tượng phong cảnh và 12.3k cặp từ khóa - thơ lục bát 4 câu.

So sánh hiệu năng với các phương pháp hiện hành

Chỉ số đánh giá I2P-GAN (End-to-End Baseline) mT5 (Encoder-Decoder) Dual-Transformer (Đề xuất) Cải thiện (%)
Độ chính xác cấu trúc âm tiết (6-8) $71.4%$ $88.2%$ $98.6%$ $+27.2%$ so với I2P-GAN
Độ tuân thủ hiệp vần (Rhyme Score) $45.2%$ $62.5%$ $81.4%$ $+36.2%$ so với I2P-GAN
Mức độ phối thanh (Bằng - Trắc) $53.0%$ $74.1%$ $86.8%$ $+33.8%$ so với I2P-GAN
Độ liên quan giữa ảnh và thơ (Human Score /4.0) $1.82$ $2.35$ $3.12$ $+71.4%$ so với I2P-GAN

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

Tình huống ứng dụng thực tiễn

  • Du lịch thông minh và bảo tồn di sản: Ứng dụng di động cho phép du khách chụp ảnh danh lam thắng cảnh Việt Nam và nhận ngay bài thơ lục bát miêu tả phong cảnh, tích hợp in bưu thiếp số lưu niệm.
  • Giáo dục tương tác: Công cụ hỗ trợ học sinh tiểu học và trung học học tập văn học dân gian, kích thích tư duy liên tưởng giữa hình ảnh thực tế và cấu trúc vần điệu thơ ca.
  • Hệ thống tạo nội dung tự động (AI Content Generator): Hỗ trợ các kênh truyền thông xã hội tự động sinh caption thơ nghệ thuật đi kèm hình ảnh quảng bá du lịch, văn hóa.
                    Kiến trúc triển khai Microservices:
+-------------------+      HTTP POST      +-------------------------------+
                     +-----------------------------+           +-----------------------------+
                     | Query2Label Worker Service  |           | GPT-2 Poem Worker Service   |
                     +-----------------------------+           +-----------------------------+

Đặc tả API triển khai hệ thống

POST /api/v1/generate-poem HTTP/1.1
Host: api.poemgen.uit.edu.vn
Content-Type: multipart/form-data

[Form Data: image binary]
{
  "status": "success",
  "data": {
    "detected_keywords": ["sóng", "biển", "bờ"],
    "confidence_scores": [0.94, 0.89, 0.82],
    "poem": [
      "Ngắm con sóng biển chiều nay",
      "Cồn cào nỗi nhớ đắm say bên bờ",
      "Ngoài khơi sóng vỗ hững hờ",
      "Gửi thương gửi nhớ cho bờ đêm nay"
    ],
    "metrics": {
      "syllable_check": "PASS (6-8-6-8)",
      "rhyme_accuracy": 1.0,
      "tone_accuracy": 0.92,
      "inference_time_ms": 485
    }
  }
}

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

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

  • Xung đột ngữ nghĩa ngẫu nhiên (Semantic Hallucination): Do mô hình GPT-2 được huấn luyện dựa trên phân phối xác suất từ ngữ trong kho ngữ liệu, đôi khi bài thơ xuất hiện từ ngữ đối nghịch với ảnh (ví dụ: ảnh phong cảnh mặt trời nhưng thơ lại sinh ra từ "Trăng").
  • Phạm vi từ khóa thị giác: Không gian phân loại của Query2Label hiện cố định ở 76 danh từ phong cảnh phổ biến, chưa bao quát được toàn bộ các yếu tố văn hóa vùng miền đặc trưng.
  • Quy mô mô hình: Mô hình GPT-2 Small (117M tham số) còn hạn chế trong việc tạo ra các câu thơ mang tính liên tưởng triết lý hoặc đa tầng nghĩa.

Kế hoạch nâng cấp

  • Tích hợp mô hình thị giác - ngôn ngữ lớn (Vision-Language LLMs): Nâng cấp kiến trúc nền tảng sang ViT-B kết hợp các mô hình ngôn ngữ lớn chuyên sâu tiếng Việt như PhoGPT hoặc LLaMA fine-tuned.
  • Ứng dụng Kỹ thuật Prompt Tuning có định hướng luật (Constrained Decoding): Bổ sung lớp kiểm soát logic vần điệu (Rule-based Constrained Logits Processor) trực tiếp vào bước giải mã của Transformer để triệt tiêu lỗi bằng trắc.
  • Mở rộng đa dạng thể thơ: Nghiên cứu mở rộng sang thơ song thất lục bát, thơ 5 chữ, 7 chữ và thơ tự do.

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

  • Sinh viên & Học viên nghiên cứu: Tiếp cận tài liệu tham khảo hoàn chỉnh về cách giải quyết bài toán giao thoa giữa CV và NLP; nắm vững kỹ thuật phân loại đa nhãn với Query2Label và phương pháp fine-tune Transformer Decoder.
  • Kỹ sư AI / Lập trình viên: Thu nhận mã nguồn mẫu, quy trình tiền xử lý văn bản tiếng Việt chuẩn mực với VnCoreNLP, RDRsegmenter, RAKE và giải pháp xây dựng Microservices triển khai mô hình học sâu.
  • Nhà nghiên cứu NLP / Xử lý tiếng Việt: Khai thác bộ ngữ liệu UIT-Visual68Poem để thực nghiệm các mô hình tạo sinh ngôn ngữ có ràng buộc cấu trúc ngữ âm.
  • Doanh nghiệp Du lịch & Công nghệ Sáng tạo: Sở hữu giải pháp tự động hóa nội dung giàu tính văn hóa, nâng cao trải nghiệm ứng dụng khách hàng với chi phí hạ tầng tối ưu.

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

1. Yêu cầu phần cứng tối thiểu để triển khai và chạy suy luận (Inference) hệ thống là gì?

Ở môi trường kiểm thử (Inference), mô hình tối ưu hóa có thể chạy mượt mà trên CPU với tối thiểu 8GB RAM hoặc GPU phổ thông (NVIDIA GTX 1650 4GB VRAM trở lên). Đối với huấn luyện toàn diện (Fine-tuning), hệ thống yêu cầu GPU tối thiểu 8GB VRAM (như NVIDIA RTX 2080 / RTX 3070 trở lên).

2. Làm thế nào để giải quyết hiện tượng mô hình sinh từ ngữ không khớp với hình ảnh?

Hiện tượng này được khắc phục bằng cách áp dụng Constrained Decoding (Giải mã có ràng buộc). Cơ chế này áp dụng mặt nạ lọc logit (Logits Masking) tại mỗi bước sinh từ của GPT-2, buộc xác suất phân phối của các từ thuộc tập từ khóa trích xuất từ Query2Label phải được ưu tiên kích hoạt trong các vị trí trọng yếu của câu thơ.

3. Hệ thống xử lý như thế nào nếu ảnh đầu vào không nhận diện được từ khóa nào trong 76 lớp?

Hệ thống tích hợp cơ chế dự phòng (Fallback Mechanism): Khi độ tin cậy của toàn bộ 76 nhãn đều dưới ngưỡng kích hoạt (Threshold < 0.3), hệ thống sẽ kích hoạt bộ trích xuất đặc trưng toàn cục (Global Image Feature Extractor) để gán nhãn chủ đề bao quát (như phong cảnh, thiên nhiên, đất trời) nhằm đảm bảo quá trình sinh thơ luôn liên tục.

4. Quy trình bảo trì và cập nhật bộ từ vựng mới cho mô hình diễn ra như thế nào?

Để mở rộng tập nhãn (ví dụ từ 76 lên 150 nhãn), chỉ cần cập nhật ma trận Label Embeddings trong bộ giải mã của Query2Label và tái huấn luyện (Transfer Learning) nhánh thị giác trong khoảng 15-20 epochs mà không cần thay đổi cấu trúc nền tảng của nhánh ngôn ngữ GPT-2.

5. Chi phí vận hành trên hạ tầng Cloud ước tính là bao nhiêu?

Khi triển khai trên các nền tảng đám mây (như AWS EC2 g4dn.xlarge hoặc GCP n1-standard-4 gắn NVIDIA T4 GPU), chi phí vận hành ước tính khoảng 0.5 - 0.7 USD/giờ, có khả năng phục vụ trung bình 5,000 - 8,000 lượt yêu cầu sinh thơ mỗi ngày với độ trễ phản hồi dưới 600ms.


Kết luận

Đồ án tốt nghiệp "Tạo sinh thơ từ ảnh sử dụng mô hình ngôn ngữ và đặc trưng thị giác" của sinh viên Nguyễn Minh Châu (Trường Đại học Công nghệ Thông tin – ĐHQG TP.HCM) là một công trình nghiên cứu ứng dụng mẫu mực. Bằng việc giải quyết sáng tạo bài toán thiếu hụt dữ liệu thông qua kiến trúc Dual-Transformer, nghiên cứu đã chứng minh tính khả thi vượt trội của việc kết hợp giữa phân loại đa nhãn Query2Label và tạo sinh văn bản có ràng buộc với GPT-2. Kết quả đạt độ chính xác cấu trúc $98.6%$ và tỷ lệ hiệp vần $81.4%$ không chỉ khẳng định giá trị học thuật xuất sắc mà còn mở ra tiềm năng ứng dụng to lớn trong bảo tồn di sản văn hóa số và công nghệ sáng tạo nội dung tự động tại Việt Nam.