Bối cảnh và vấn đề nghiên cứu

Trong quy trình phát triển phần mềm, việc chuyển đổi các bản thiết kế giao diện đồ họa (GUI thiết kế từ Figma, Sketch) thành mã nguồn giao diện web (web frontend) là công việc tiêu tốn nhiều thời gian và nhân lực của lập trình viên. Công đoạn hiện thực hóa mã nguồn này làm giảm đáng kể quỹ thời gian dành cho việc phát triển logic nghiệp vụ và các chức năng cốt lõi của hệ thống. Do đó, việc xây dựng một hệ thống tự động hóa quá trình chuyển đổi hình ảnh thiết kế sang mã nguồn frontend trở thành một nhu cầu cấp thiết nhằm rút ngắn chu kỳ phát hành sản phẩm và tối ưu hóa nguồn nhân lực kỹ thuật cao trong lĩnh vực công nghệ thông tin.

Mặc dù các mô hình đa phương thức thương mại hiện nay như GPT-4 Vision hay Claude 3.7 Sonnet đã hỗ trợ khả năng phân tích bố cục, màu sắc và tạo mã nguồn cho các framework như React, Vue, Angular hoặc Tailwind CSS, mã nguồn sinh ra thường thiếu tối ưu, chưa tuân thủ đầy đủ các chuẩn lập trình và gặp nhiều hạn chế khi xử lý các giao diện có cấu trúc phức tạp. Đối với các hướng nghiên cứu học thuật trước đó:

  • Nghiên cứu của Tuan Anh Nguyen sử dụng thị giác máy tính và nhận dạng ký tự quang học (OCR) để tái tạo giao diện Android từ ảnh chụp màn hình, song quá trình dựng lại vẫn dựa trên các tập quy luật thủ công định sẵn, dẫn đến độ cứng nhắc cao.
  • Mô hình pix2code của Tony Beltramelli kết hợp mạng tích chập (CNN) để trích xuất đặc trưng thị giác và mạng hồi quy (RNN/LSTM) để mô hình hóa chuỗi mã nguồn, nhưng bộ từ điển mã hóa còn thô sơ, chưa giải quyết được các thiết kế đa dạng.
  • Hướng tiếp cận thị giác - ngôn ngữ như LLaVA (kết hợp encoder thị giác CLIP/BLIP với mô hình ngôn ngữ lớn) đòi hỏi nguồn tài nguyên tính toán rất lớn để huấn luyện trực tiếp đầu cuối (end-to-end) từ ảnh sang mã nguồn, trong khi việc lập trình giao diện đòi hỏi phải bóc tách tỉ mỉ từng thuộc tính như văn bản, màu chữ, kích cỡ, hộp chứa và bo góc.

Nhằm khắc phục các nhược điểm trên, đề tài thực hiện 5 nhiệm vụ nghiên cứu chính theo văn bản đề cương:

  1. Nghiên cứu cơ sở lý thuyết về các phương pháp xử lý ảnh, nhận dạng thành phần giao diện web, mô hình ngôn ngữ lớn (LLM) và các kỹ thuật huấn luyện hiệu quả.
  2. Thu thập và xây dựng bộ dữ liệu mã nguồn trang web tương ứng với định dạng JSON mô tả cấu trúc trang web.
  3. Thiết kế hệ thống theo mô hình hai giai đoạn: tách biệt hoàn toàn khâu xử lý thị giác/ảnh số với khâu sinh mã nguồn bằng LLM.
  4. Phát triển ứng dụng web tích hợp hệ thống sinh mã nguồn phục vụ người dùng tương tác trực tiếp.
  5. Kiểm thử và tối ưu hóa hệ thống: đánh giá độ chính xác nhận dạng thành phần UI, kiểm tra chất lượng mã nguồn sinh ra so với thiết kế gốc và tối ưu hiệu suất xử lý.

Đối tượng và phạm vi nghiên cứu của đề tài được xác định cụ thể:

  • Đối tượng nghiên cứu: Các thuật toán thị giác máy tính, kỹ thuật nhận dạng ký tự quang học (OCR), các mô hình ngôn ngữ lớn mã nguồn mở định hướng lập trình (như DeepSeek Coder, CodeGemma) và các kỹ thuật tinh chỉnh tham số hiệu quả (PEFT/LoRA).
  • Phạm vi không gian và công nghệ: Xử lý các ảnh đầu vào là ảnh chụp màn hình trang web hoặc ảnh thiết kế giao diện tĩnh; triển khai mô hình trên máy chủ có bộ nhớ GPU tối thiểu 40 GB VRAM nhằm phục vụ tối đa 2 người dùng đồng thời cho tác vụ sinh mã.
  • Phạm vi thời gian: Đề tài được thực hiện từ ngày 06/01/2025 đến ngày 06/06/2025 tại Khoa Công nghệ Thông tin, Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh.

Cơ sở lý thuyết và phương pháp

Đề tài vận dụng nền tảng lý thuyết từ hai phân ngành chính là thị giác máy tính (Computer Vision) và xử lý ngôn ngữ tự nhiên (NLP) với các mô hình và kỹ thuật sau:

  • Nhận dạng ký tự quang học (OCR) với EasyOCR: Thư viện EasyOCR (xây dựng trên nền tảng Python và PyTorch) được sử dụng để phát hiện và nhận dạng văn bản. Kiến trúc gồm ba thành phần: trích xuất đặc trưng bằng mạng tích chập ResNet và VGG; gán nhãn chuỗi thời gian bằng mạng nơ-ron hồi quy LSTM để khắc phục vấn đề triệt tiêu đạo hàm (vanishing gradient); và giải mã chuỗi ký tự bằng hàm mất mát CTC (Connectionist Temporal Classification). Thư viện hỗ trợ 58 ngôn ngữ, trong đó nhóm nghiên cứu khai thác khả năng nhận diện đồng thời tiếng Việt và tiếng Anh.
  • Xử lý ảnh số với thư viện OpenCV: Thuật toán phát hiện cạnh Canny được triển khai thông qua chuỗi 5 bước toán học:
    1. Lọc nhiễu và làm mịn ảnh bằng tích chập với bộ lọc Gaussian kích thước $5 \times 5$.
    2. Xác định cường độ gradient $G = \sqrt{G_x^2 + G_y^2}$ và hướng gradient $\theta = \arctan(G_y / G_x)$ thông qua các toán tử đạo hàm bậc nhất (như Sobel).
    3. Triệt pha không cực đại (Non-maximum suppression) để giữ lại các điểm ảnh có cường độ biến thiên cục bộ mạnh nhất theo hướng gradient.
    4. Phân ngưỡng kép (Double thresholding) nhằm phân loại điểm ảnh thành biên mạnh, biên yếu hoặc loại bỏ nhiễu.
    5. Liên kết biên bằng kỹ thuật trễ (Hysteresis) để bảo toàn các biên yếu kết nối trực tiếp với biên mạnh. Ngoài ra, đề tài kết hợp phương pháp làm nét ảnh unsharp masking và kỹ thuật phân tích đường viền (contour analysis).
  • Kiến trúc Transformer và Mô hình ngôn ngữ lớn (LLM): Đề tài dựa trên kiến trúc Transformer chuẩn gồm khối Encoder (Multi-Head Attention với 8 đầu, Feed-Forward Network với hàm kích hoạt ReLU và tỷ lệ dropout 0.1, cơ chế Add & Normalize) và khối Decoder (Masked Self-Attention, Encoder-Decoder Attention). Đồng thời, tác giả khảo sát các dòng kiến trúc phái sinh gồm BERT (Encoder-only, học ngữ cảnh hai chiều qua Masked LM và NSP), GPT (Decoder-only, cơ chế tự hồi quy với Causal LM) và T5 (chuyển đổi text-to-text thống nhất).
  • Kỹ thuật tinh chỉnh tham số LoRA (Low-rank Adaptation): Thay vì tinh chỉnh toàn bộ trọng số (Full Fine-tuning) gây tốn kém tài nguyên hoặc dùng Adapter tuning làm tăng độ trễ tính toán tuần tự trong mô hình, đề tài áp dụng LoRA. Phương pháp này đóng băng ma trận trọng số gốc $W_0 \in \mathbb{R}^{d \times k}$ và biểu diễn độ biến thiên ma trận $\Delta W$ thành tích của hai ma trận hạng thấp $B \in \mathbb{R}^{d \times r}$ và $A \in \mathbb{R}^{r \times k}$ với hạng $r \ll \min(d, k)$: $$\Delta W = B \times A$$ Sau khi huấn luyện, hai ma trận $A$ và $B$ được tái tham số hóa (re-parameterization) trực tiếp vào trọng số ban đầu: $W = W_0 + B \times A$, bảo đảm tốc độ suy luận không bị suy giảm.

Phương pháp nghiên cứu thực nghiệm: Nhóm tác giả lựa chọn phương pháp thiết kế hệ thống hai giai đoạn độc lập: chuyển hóa ảnh thành biểu diễn trung gian dạng cấu trúc (JSON UI tree) bằng các thuật toán xử lý ảnh số, sau đó sử dụng LLM được tinh chỉnh chuyên biệt để dịch bản mô tả JSON thành mã nguồn frontend.

Nguồn dữ liệu: Nhóm tác giả tự thu thập và tiền xử lý bộ dữ liệu huấn luyện gồm các cặp cấu trúc JSON mô tả thành phần trang web tương ứng với mã nguồn frontend thực tế.


Thiết kế và triển khai hệ thống

Hệ thống được thiết kế theo luồng kiến trúc tách biệt giữa khâu phân tích thị giác và khâu sinh mã tự động, loại bỏ việc đưa dữ liệu hình ảnh thô trực tiếp vào mô hình ngôn ngữ lớn.

[Ảnh giao diện đầu vào]
  1. Giai đoạn trích xuất hình ảnh sang cấu trúc JSON:

    • Nhận diện văn bản: EasyOCR quét toàn bộ ảnh để nhận dạng các chuỗi ký tự, xác định tọa độ vùng chứa văn bản và loại bỏ các vùng này khỏi ảnh gốc để tránh gây nhiễu cho các bước xử lý sau.
    • Nhận diện phần tử hình ảnh: Thực hiện phân tích đường biên (contour analysis) trên ảnh đã tách văn bản nhằm xác định vị trí các hình khối đồ họa và hình ảnh. Sau khi nhận diện, các phần tử này tiếp tục được loại bỏ.
    • Nhận diện phần tử hộp chứa (containers): Áp dụng kỹ thuật unsharp masking để làm sắc nét đường nét các khung khối, sau đó dùng thuật toán Canny để trích xuất cạnh và định vị các vùng hộp bao bọc, các góc bo (border-radius).
    • Tạo cây UI (UI Tree): Hệ thống kết hợp thông tin về tọa độ, quan hệ lồng nhau, màu sắc và thuộc tính hiển thị của từng phần tử đã bóc tách để xây dựng cây phân cấp giao diện, sau đó xuất ra bản mô tả định dạng JSON.
  2. Giai đoạn sinh mã nguồn bằng LLM:

    • Lựa chọn mô hình nền chuyên sâu về sinh mã nguồn (DeepSeek Coder).
    • Huấn luyện mô hình với thư viện PEFT/Hugging Face thông qua kỹ thuật LoRA trên tập dữ liệu JSON - Code đã chuẩn bị.
    • Khi nhận đầu vào là chuỗi JSON từ Giai đoạn 1, mô hình thực hiện giải mã tự hồi quy để tạo ra mã nguồn HTML/CSS hoàn chỉnh, tương ứng với cấu trúc phân cấp của cây UI.
  3. Triển khai ứng dụng Web:

    • Sử dụng micro-framework Flask trên nền tảng Python để xây dựng dịch vụ web.
    • Giao diện người dùng cho phép tải ảnh giao diện mẫu, theo dõi tiến trình xử lý, xem trước (live preview) giao diện dựng từ mã nguồn được sinh ra và cung cấp hộp hiển thị mã có tính năng làm nổi bật cú pháp lập trình.

Nội dung chính theo từng chương

Chương 1: Lý thuyết liên quan

Chương 1 cung cấp toàn bộ cơ sở lý thuyết phục vụ cho việc xây dựng hệ thống:

  • Trình bày tổng quan về kỹ thuật OCR và phân tích chi tiết cơ chế hoạt động 4 giai đoạn của EasyOCR (tiền xử lý, phát hiện vùng văn bản, nhận dạng ký tự bằng ResNet/VGG + LSTM + CTC, tái cấu trúc kết quả).
  • Hệ thống hóa các phương pháp xử lý ảnh số trong OpenCV: kỹ thuật làm mờ, phân tích biểu đồ tần suất (histogram), phép lọc làm mịn Gaussian, thuật toán phát hiện cạnh Canny và phân tích đường biên contour.
  • Phân tích chi tiết kiến trúc Transformer nguyên bản (Encoder-Decoder) và cơ chế Attention; phân định ba nhánh mô hình chuyển hóa: BERT (chuyên phân tích ngữ cảnh hai chiều), GPT (chuyên sinh văn bản tiếp nối) và T5 (hướng tiếp cận văn bản sang văn bản).
  • Khái quát tiến trình phát triển của LLM từ giai đoạn nền móng (2017–2018), mở rộng quy mô (2019–2020), chuyên biệt hóa theo tập lệnh (2021), bùng nổ mã nguồn mở (2022) đến giai đoạn đa phương thức và MoE (2023).
  • So sánh hai kỹ thuật tinh chỉnh tham số hiệu quả là Adapter tuning và LoRA, chỉ ra cơ chế phân rã ma trận hạng thấp và phép tái tham số hóa của LoRA giúp loại bỏ độ trễ tính toán.
  • Giới thiệu hệ sinh thái Hugging Face (Transformers, Model Hub, Datasets, PEFT) và công nghệ phát triển web Flask.

Chương 2: Xây dựng hệ thống

Chương 2 mô tả quá trình thiết kế, tích hợp và thử nghiệm các module trong hệ thống:

  • Mô tả chi tiết sơ đồ luồng dữ liệu tổng thể và quy trình trích xuất từng bước: nhận dạng văn bản -> nhận dạng hình ảnh qua đường biên và phân tích contour -> làm nét ảnh bằng unsharp masking -> nhận diện hộp chứa qua phát hiện cạnh Canny -> trích xuất phần tử và sinh cây UI định dạng JSON.
  • Đánh giá hiệu năng trích xuất hình ảnh sang cấu trúc JSON thông qua việc kiểm thử khả năng nhận dạng chính xác từng loại phần tử giao diện người dùng cụ thể (trình bày tại Bảng 1 của luận văn).
  • Trình bày quy trình triển khai mô hình ngôn ngữ lớn: lựa chọn mô hình nền DeepSeek Coder dựa trên các chỉ số hiệu năng trên nhiều ngôn ngữ lập trình; quy trình tiền xử lý dữ liệu huấn luyện cặp JSON - Mã nguồn; thiết lập các tham số huấn luyện (learning rate, batch size, LoRA rank $r$, LoRA alpha) được thống kê tại Bảng 2.
  • Ghi nhận diễn biến suy giảm của hàm mất mát (loss) qua biểu đồ huấn luyện nhằm chứng minh sự hội tụ của mô hình; đánh giá chất lượng mã nguồn đầu ra (Bảng 3), minh họa cây UI đầu vào cùng giao diện thực tế do mã nguồn sinh ra hiển thị trên trình duyệt.

Chương 3: Triển khai hệ thống trên nền tảng Web

Chương 3 tập trung vào việc hiện thực hóa giải pháp thành ứng dụng thực tiễn:

  • Cấu trúc kiến trúc web backend bằng Flask xử lý việc nhận tệp ảnh tải lên, chuyển tiếp tới các pipeline xử lý ảnh số và kích hoạt tiến trình sinh mã của mô hình LLM.
  • Hiện thực giao diện web chính cho phép người dùng thao tác đưa hình ảnh đầu vào lên hệ thống.
  • Xây dựng module kết xuất và hiển thị xem trước giao diện web (HTML/CSS) theo thời gian thực từ kết quả của mô hình.
  • Tích hợp khung hiển thị mã nguồn có tính năng tô sáng cú pháp (syntax highlighting), hỗ trợ người dùng kiểm tra, sao chép hoặc trích xuất mã nguồn để tái sử dụng trong các dự án phần mềm thực tế.

Kết quả và đóng góp

Kết quả chính của đề tài

  1. Xây dựng hoàn chỉnh mô hình xử lý hai giai đoạn: Đề tài đã hoàn thành chu trình tự động hóa chuyển đổi từ ảnh giao diện sang mã nguồn frontend bằng cách tách biệt khâu bóc tách thị giác (OpenCV + EasyOCR) và khâu sinh mã (LLM fine-tuned), giải quyết bài toán tiêu tốn tài nguyên của các mô hình end-to-end.
  2. Hiện thực hóa quy trình trích xuất cây UI dạng JSON: Tách lọc thành công từng lớp thông tin trên ảnh (chữ viết tiếng Việt/tiếng Anh, phần tử ảnh đồ họa, các khối hộp chứa và bo góc) để tổng hợp thành bản mô tả JSON phân cấp.
  3. Huấn luyện thành công mô hình sinh mã: Áp dụng kỹ thuật LoRA để tinh chỉnh mô hình ngôn ngữ lớn nền tảng trên bộ dữ liệu cặp JSON - Mã nguồn, đạt được sự hội tụ ổn định trên biểu đồ loss và sinh ra mã nguồn có cấu trúc rõ ràng, hiển thị đúng bố cục thiết kế.
  4. Triển khai ứng dụng hoàn chỉnh: Xây dựng thành công hệ thống web trên nền tảng Flask tích hợp chức năng tải ảnh, xem trước giao diện và hiển thị mã nguồn tô sáng cú pháp. Hệ thống được cấu hình vận hành trên máy chủ trang bị GPU tối thiểu 40 GB VRAM, hỗ trợ phục vụ đồng thời tối đa 2 người dùng.

Bảng tổng hợp các thành phần kỹ thuật trong hệ thống

Thành phần hệ thống Công nghệ / Thuật toán sử dụng Vai trò và chức năng chính
Nhận dạng văn bản EasyOCR (ResNet + VGG + LSTM + CTC) Phát hiện, nhận diện chữ tiếng Việt và tiếng Anh, trích xuất tọa độ văn bản.
Xử lý ảnh số OpenCV, Canny, Unsharp Masking, Contour Loại bỏ nhiễu, làm sắc nét cạnh, nhận diện đường viền hình ảnh và hộp chứa.
Mô tả trung gian JSON (Cây UI - UI Tree) Chuẩn hóa cấu trúc lồng nhau, màu sắc, tọa độ và kiểu dáng của các thành phần giao diện.
Mô hình sinh mã DeepSeek Coder, LoRA (PEFT), Transformers Đọc bản mô tả JSON và sinh mã nguồn web frontend (HTML/CSS) tương ứng.
Giao diện người dùng Python Flask, Syntax Highlighter Cung cấp cổng tải ảnh, hiển thị màn hình xem trước (preview) và tải mã nguồn.

Đóng góp của đề tài so với các nghiên cứu trước

  • So với nghiên cứu của Tuan Anh Nguyen: Đề tài loại bỏ cơ chế dựng giao diện dựa trên quy luật lập trình thủ công cứng nhắc; việc sử dụng LLM giúp mã nguồn sinh ra có cấu trúc linh hoạt và khả năng biểu đạt giao diện phức tạp tốt hơn.
  • So với mô hình pix2code của Tony Beltramelli: Vượt qua giới hạn của từ điển mã hóa đơn giản và kiến trúc CNN-LSTM cổ điển, hệ thống ứng dụng mô hình ngôn ngữ lớn dựa trên Transformer và cấu trúc cây UI trung gian, giúp mô hình hóa đầy đủ các chi tiết giao diện web hiện đại.
  • So với mô hình LLaVA: Đề tài giảm thiểu yêu cầu tài nguyên phần cứng bằng cách không huấn luyện trực tiếp mô hình thị giác - ngôn ngữ đa phương thức từ ảnh sang code. Thay vào đó, việc sử dụng các thuật toán xử lý ảnh số truyền thống để đưa về văn bản JSON giúp quá trình huấn luyện LLM diễn ra nhanh chóng, nhẹ nhàng và chính xác hơn về mặt thông số thuộc tính.

Hạn chế và hướng nghiên cứu tiếp

Hạn chế của đề tài

  • Yêu cầu tài nguyên phần cứng cao: Hệ thống đòi hỏi máy chủ phải trang bị GPU có bộ nhớ tối thiểu 40 GB VRAM để vận hành mô hình ngôn ngữ lớn, trong khi năng lực phục vụ đồng thời tại một thời điểm còn hạn chế (tối đa 2 người dùng).
  • Phụ thuộc vào chất lượng ảnh đầu vào: Các giao diện có độ tương phản thấp hoặc chứa các thành phần lồng nhau phức tạp có thể làm giảm độ chính xác của thuật toán phát hiện cạnh Canny và phân tích đường viền contour, dẫn đến sai sót trong bản mô tả JSON.
  • Tính hoàn thiện của mã nguồn sinh ra: Mặc dù mã nguồn HTML/CSS sinh ra có cấu trúc tốt và hiển thị được bố cục cơ bản, lập trình viên vẫn cần can thiệp thủ công để tối ưu hóa hoàn toàn theo các tiêu chuẩn mã hóa riêng hoặc tích hợp logic chức năng phức tạp.

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

  • Tối ưu hóa hiệu năng và lượng chiếm dụng bộ nhớ của mô hình LLM nhằm giảm yêu cầu phần cứng xuống dưới mức 40 GB VRAM, từ đó nâng cao số lượng người dùng phục vụ đồng thời.
  • Mở rộng tập dữ liệu huấn luyện để hỗ trợ sinh mã nguồn trực tiếp cho các framework frontend phổ biến như React, Vue, Angular hoặc Tailwind CSS.
  • Nâng cao độ chính xác của các thuật toán thị giác máy tính trong việc phát hiện và xử lý các thành phần giao diện lồng nhau phức tạp hoặc các thuộc tính đồ họa đặc thù.

Giá trị tham khảo

Đồ án tốt nghiệp này mang lại giá trị tham khảo học thuật và ứng dụng thực tiễn trong các khía cạnh:

  • Đối tượng tham khảo: Sinh viên, học viên cao học và kỹ sư thuộc các chuyên ngành Công nghệ thông tin, Trí tuệ nhân tạo và Kỹ thuật phần mềm đang thực hiện các đề tài nghiên cứu về ứng dụng thị giác máy tính, tinh chỉnh mô hình ngôn ngữ lớn hoặc bài toán tự động hóa chuyển đổi thiết kế thành mã nguồn (design-to-code).
  • Nội dung đáng chú ý:
    • Mô hình kiến trúc hai giai đoạn: Cách tiếp cận phân tách bài toán thị giác máy tính (bóc tách cấu trúc bằng OpenCV, EasyOCR) và bài toán sinh ngôn ngữ (LLM) là giải pháp thực tế để xử lý các bài toán đa phương thức khi nguồn tài nguyên tính toán bị giới hạn.
    • Phương pháp tiền xử lý và bóc tách tuần tự: Quy trình loại bỏ dần từng lớp thông tin (văn bản -> hình ảnh -> hộp chứa qua unsharp masking và Canny) để xây dựng cây phân cấp UI tree dưới dạng JSON là tài liệu tham khảo chi tiết cho các nghiên cứu xử lý giao diện.
    • Kỹ thuật tinh chỉnh LoRA: Cơ sở toán học về phân rã ma trận hạng thấp và quy trình tích hợp LoRA thông qua thư viện PEFT/Hugging Face phục vụ cho các tác vụ lập trình chuyên biệt.

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

1. Tại sao nhóm tác giả lại lựa chọn mô hình hai giai đoạn thay vì huấn luyện một mô hình thị giác - ngôn ngữ đa phương thức trực tiếp như LLaVA?
Mô hình LLaVA đòi hỏi tài nguyên tính toán cực kỳ lớn để huấn luyện bộ encoder thị giác kết hợp với decoder ngôn ngữ. Bên cạnh đó, việc xây dựng mã nguồn trang web đòi hỏi trích xuất rất chi tiết các thông số như văn bản, màu sắc, kích cỡ, hộp chứa và bo góc. Do đó, tác giả sử dụng xử lý ảnh số và OCR để trích xuất các thông số này thành bản mô tả JSON trung gian, sau đó dùng LLM để sinh mã, giúp tiết kiệm đáng kể tài nguyên huấn luyện và tăng tính chính xác của các thuộc tính.

2. Thư viện EasyOCR trong đề tài hoạt động dựa trên những kiến trúc mạng học sâu nào?
EasyOCR được triển khai dựa trên PyTorch và kết hợp ba thành phần mạng nơ-ron chính: mạng tích chập ResNet và VGG đảm nhận khâu trích xuất đặc trưng thị giác từ ảnh; mạng nơ-ron hồi quy LSTM (Long Short-Term Memory) đảm nhận khâu gán nhãn chuỗi và mô hình hóa phụ thuộc thời gian; và hàm mất mát CTC (Connectionist Temporal Classification) đảm nhận khâu giải mã dự đoán chuỗi ký tự có độ dài biến đổi.

3. Thuật toán Canny trong đề tài được thực hiện qua các bước toán học nào để phát hiện thành phần giao diện?
Thuật toán Canny gồm 5 bước: (1) Làm mịn ảnh để khử nhiễu bằng bộ lọc Gaussian kích thước $5 \times 5$; (2) Tính cường độ và hướng gradient thông qua các đạo hàm bậc nhất $G_x$ và $G_y$; (3) Triệt pha không cực đại để làm mảnh các đường biên; (4) Phân ngưỡng kép bằng hai giá trị ngưỡng cao/thấp để phân loại biên mạnh và biên yếu; (5) Liên kết biên bằng hysteresis để giữ lại các biên yếu nối liền với biên mạnh và loại bỏ nhiễu cô lập.

4. Kỹ thuật LoRA có ưu thế gì so với Adapter thông thường trong quá trình tinh chỉnh mô hình ngôn ngữ lớn?
Mặc dù cả hai đều đóng băng mô hình gốc, Adapter thông thường chèn thêm các lớp nơ-ron vào mô hình làm tăng số phép tính tuần tự và giảm khả năng tính toán song song của GPU trong quá trình suy luận. Ngược lại, LoRA phân tách ma trận cập nhật trọng số $\Delta W$ thành tích của hai ma trận hạng thấp $A$ và $B$. Sau khi hoàn tất huấn luyện, hai ma trận này được cộng trực tiếp vào ma trận trọng số gốc ($W_0 + B \times A$) thông qua cơ chế tái tham số hóa, giúp tốc độ suy luận của mô hình hoàn toàn không bị ảnh hưởng.

5. Yêu cầu cấu hình phần cứng để triển khai hệ thống là gì và khả năng phục vụ đồng thời đạt mức nào?
Theo kết quả dự kiến và thiết kế của đề tài, hệ thống được cấu hình triển khai trên máy chủ trang bị GPU có bộ nhớ VRAM tối thiểu 40 GB. Với mức tài nguyên này, hệ thống đáp ứng khả năng phục vụ tối đa cho 2 người dùng tương tác đồng thời cho tác vụ chuyển đổi ảnh giao diện thành mã nguồn.


Kết luận

Đồ án tốt nghiệp "Công cụ hỗ trợ xây dựng web frontend từ ảnh đầu vào ban đầu" của sinh viên Lê Phúc Hậu và Nguyễn Quang Vinh đã giải quyết bài toán tự động hóa chuyển đổi thiết kế giao diện sang mã nguồn thông qua kiến trúc hai giai đoạn kết hợp giữa thị giác máy tính và mô hình ngôn ngữ lớn. Bằng cách sử dụng OpenCV và EasyOCR để bóc tách thông tin giao diện thành cây UI định dạng JSON, kết hợp tinh chỉnh mô hình DeepSeek Coder bằng kỹ thuật LoRA, hệ thống đã sinh ra mã nguồn frontend HTML/CSS có cấu trúc tốt và hiển thị chính xác bố cục thiết kế. Ứng dụng web xây dựng trên nền tảng Flask cung cấp đầy đủ chức năng tải ảnh, xem trước giao diện và trích xuất mã nguồn, đóng góp một giải pháp kỹ thuật hữu ích nhằm hỗ trợ lập trình viên tối ưu hóa quy trình phát triển phần mềm.