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

Trong lĩnh vực thị giác máy tính và xử lý ảnh số, bài toán phân vùng và tách đối tượng giữ vai trò then chốt trong nhiều ứng dụng thực tiễn như y tế (phân tích ảnh chụp MRI, CT, X-quang), an ninh (nhận diện và theo dõi đối tượng trong camera giám sát), giao thông (theo dõi phương tiện, phát hiện vi phạm), thương mại điện tử (tự động phân loại và quản lý hình ảnh sản phẩm), cùng các hiệu ứng kỹ xảo điện ảnh và thực tế ảo tăng cường (AR).

Các phương pháp trích xuất truyền thống như Haar Cascade và HOG có ưu điểm về tốc độ nhưng độ chính xác suy giảm rõ rệt khi xử lý đối tượng phức tạp hoặc ảnh chụp trong điều kiện ánh sáng không thuận lợi. Sự ra đời của các mạng học sâu (Deep Learning) như R-CNN, YOLO và Mask R-CNN đã mang lại bước tiến lớn trong phân loại và phân đoạn đối tượng. Tuy nhiên, các mô hình này vẫn bộc lộ hạn chế: R-CNN tiêu tốn nhiều thời gian tính toán, YOLO chủ yếu nhận diện theo khung bao (bounding box), còn Mask R-CNN đòi hỏi tập dữ liệu gán nhãn chuyên biệt cho từng miền cụ thể.

Nhằm giải quyết bài toán phân vùng tổng quát không cần huấn luyện lại trên từng loại đối tượng, khóa luận tốt nghiệp ngành Hệ thống thông tin của tác giả Nguyễn Minh Trí (Trường Đại học Công nghệ – Đại học Quốc gia Hà Nội, 2024) tập trung nghiên cứu mô hình nền tảng Segment Anything Model (SAM) do Meta phát triển và xây dựng một ứng dụng hoàn chỉnh cho phép tách và chỉnh sửa đối tượng từ ảnh số.

Mục tiêu nghiên cứu của khóa luận được phân định cụ thể:

  • Mục tiêu chính:
    1. Phát triển ứng dụng có khả năng tách đối tượng từ hình ảnh một cách hiệu quả và chính xác dựa trên mô hình SAM.
    2. Thiết kế và phát triển giao diện người dùng thân thiện, dễ sử dụng, hỗ trợ tương tác trực quan.
    3. Sử dụng các ngôn ngữ lập trình và thư viện chuyên dụng để phát triển, kết nối và triển khai mô hình xử lý hình ảnh trên hệ thống web.
  • Mục tiêu phụ:
    1. Tìm hiểu, nghiên cứu các khái niệm cơ bản, cơ sở lý thuyết và các kỹ thuật phân vùng ảnh (Image Segmentation).
    2. Khảo sát, đánh giá và đối chiếu các mô hình phân vùng ảnh đương đại (cụ thể giữa SAM và YOLOv8).
    3. Vận dụng kiến thức đã học vào triển khai thực nghiệm phần mềm nhằm kiểm chứng tính khả thi và hiệu quả ứng dụng.

Đối tượng và phạm vi nghiên cứu:

  • Đối tượng nghiên cứu: Các mô hình học sâu cho bài toán phân vùng đối tượng (SAM, YOLOv8), mô hình khuếch tán chỉnh sửa ảnh (Stable Diffusion Inpainting), và kiến trúc hệ thống ứng dụng web tương tác.
  • Phạm vi dữ liệu và công nghệ: Khóa luận sử dụng tập dữ liệu SA-1B (11 triệu hình ảnh, 1,1 tỷ mặt nạ phân vùng) để tìm hiểu nguyên lý của SAM; thực hiện đánh giá thực nghiệm trên 6 loại hình ảnh thử nghiệm đa dạng (ảnh hỗn hợp, chân dung, phương tiện giao thông, tranh vẽ nghệ thuật, cảnh thiên nhiên, bảng chữ Nôm); phát triển hệ thống trên nền tảng Python, Flask, ReactJS và PyTorch.

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

Khóa luận thiết lập nền tảng lý thuyết dựa trên mô hình nền tảng SAM (Segment Anything Model) và phương pháp đánh giá thực nghiệm đối sánh.

1. Khung lý thuyết và mô hình học sâu

Mô hình SAM hoạt động như một mô hình nền tảng (Foundation Model) cho phân vùng ảnh, có khả năng tiếp nhận lời nhắc (prompt-driven) và tổng quát hóa zero-shot mà không cần huấn luyện lại trên dữ liệu đặc thù. Kiến trúc của SAM bao gồm ba thành phần kết nối:

  • Image Encoder (Bộ mã hóa hình ảnh): Sử dụng cấu trúc Vision Transformer (ViT) được tiền huấn luyện bằng phương pháp Masked Auto-Encoder (MAE) nhằm chuyển đổi ảnh đầu vào thành các vector nhúng (image embedding).
  • Prompt Encoder (Bộ mã hóa đề xuất/lời nhắc): Xử lý các dạng đề xuất từ người dùng: biểu diễn tọa độ điểm (points) và hộp giới hạn (bounding boxes) bằng positional encodings, biểu diễn văn bản (text prompt) thông qua mô hình CLIP, và biểu diễn mặt nạ (mask prompt) thông qua các phép tích chập (convolutions) cộng trực tiếp vào image embedding.
  • Mask Decoder (Bộ giải mã mặt nạ): Thành phần có kiến trúc nhẹ sử dụng biến thể khối giải mã Transformer với cơ chế self-attention và cross-attention hai chiều (giữa đề xuất và ảnh) để cập nhật embedding, sau đó dùng mạng MLP và bộ phân loại tuyến tính để dự đoán các mặt nạ phân vùng cùng điểm tin cậy IoU tương ứng.

Bộ dữ liệu nền tảng SA-1B được Meta xây dựng thông qua quy trình Data Engine gồm 3 giai đoạn:

  • Giai đoạn thủ công (Manual stage): Tạo 4,3 triệu mặt nạ trên 120.000 ảnh qua 6 chu kỳ chỉnh sửa bởi chuyên gia gán nhãn.
  • Giai đoạn bán tự động (Semi-automated stage): Chuyên gia gán nhãn bổ sung các đối tượng chưa được nhận diện, tạo 10,2 triệu mặt nạ trên 300.000 ảnh qua 5 chu kỳ.
  • Giai đoạn tự động hoàn toàn (Fully automated stage): Sử dụng lưới điểm 32x32 và mô-đun lọc IoU để tự động tạo ra 1,1 tỷ mặt nạ trên 11 triệu ảnh. Thử nghiệm trên 500 ảnh mẫu (khoảng 50.000 mặt nạ) xác nhận 94% các cặp mặt nạ đạt chỉ số IoU lớn hơn 90%.

Bên cạnh đó, tác giả sử dụng mô hình Stable Diffusion Inpainting (thuộc nhóm Diffusion Models) để tái tạo và chỉnh sửa vùng ảnh đã tách dựa trên cơ chế khử nhiễu tuần hoàn từ văn bản mô tả.

2. Phương pháp nghiên cứu và môi trường thực nghiệm

Tác giả áp dụng phương pháp thực nghiệm đối sánh định tính giữa mô hình SAM và YOLOv8 (phiên bản mô hình phân đoạn đối tượng phổ biến) trên 6 mẫu ảnh có đặc trưng khác biệt. Môi trường triển khai thực nghiệm trên Google Colab có cấu hình:

  • Phần cứng: GPU tối thiểu 8GB VRAM (khuyến nghị NVIDIA GTX 1080 Ti), CPU đa nhân, RAM tối thiểu 16GB.
  • Phần mềm: Python phiên bản $\ge$ 3.8, thư viện PyTorch, CUDA, OpenCV (opencv-python-headless), ultralytics (chạy YOLOv8), segment-anything (chạy SAM).

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

Hệ thống được tổ chức theo kiến trúc phân tách Client – Server (Front-end và Back-end) với quy trình xử lý dữ liệu khép kín:

Thành phần Công nghệ / Thư viện Vai trò và Chức năng chính
Front-end ReactJS, JavaScript, Axios, HTML/CSS Cung cấp giao diện tương tác; xử lý sự kiện kéo thả tệp; hiển thị ảnh và danh sách mặt nạ; gửi tọa độ nhấp chuột $(x, y)$; quản lý hộp chứa ảnh (draggable container); gửi yêu cầu inpainting và tải ảnh kết quả.
Back-end Python, Flask, Flask-CORS, Werkzeug Xây dựng RESTful API; xác thực và lưu trữ tệp tin tải lên; chạy script tạo mặt nạ qua subprocess; quản lý metadata mặt nạ; thực hiện thuật toán lọc bounding box nhỏ nhất; chạy pipeline mô hình học sâu.
Xử lý ảnh & AI Pillow, Pandas, Hugging Face Diffusers, PyTorch Đọc/ghi và cắt xén ma trận điểm ảnh (Pillow); xử lý tệp CSV metadata (Pandas); thực thi mô hình Stable Diffusion Inpainting để thay đổi đối tượng theo prompt văn bản (Diffusers, PyTorch).

Luồng xử lý và giải thuật tách đối tượng

  1. Tải ảnh lên (Upload Image): Người dùng kéo thả hoặc chọn tệp ảnh từ máy khách. Tệp được gửi qua Axios đến điểm cuối API của Flask. Werkzeug tiến hành xác thực loại tệp, kích thước và lưu vào thư mục chỉ định trên máy chủ.
  2. Sinh mặt nạ tự động (Mask Generation): Back-end kích hoạt script của SAM thông qua thư viện subprocess để phân tích toàn bộ ảnh, sinh ma trận mặt nạ và lưu trữ thông tin tọa độ/kích thước vào tệp metadata.
  3. Đối chiếu và trích xuất theo tương tác (Mask Selection): Khi người dùng nhấp chuột vào vị trí bất kỳ trên ảnh ở giao diện Front-end:
    • Tọa độ $(x, y)$ của điểm nhấp được gửi về máy chủ.
    • Hệ thống tính toán và lọc từ metadata để tìm vùng hộp bao (bounding box) có diện tích nhỏ nhất chứa điểm $(x, y)$ đó.
    • Trích xuất mặt nạ tương ứng và áp dụng phép cắt ảnh (crop) để tách riêng đối tượng khỏi nền gốc.
  4. Chỉnh sửa nâng cao (Stable Diffusion Inpainting): Người dùng nhập chuỗi văn bản (prompt). Back-end tải mô hình Stable Diffusion qua thư viện diffusers, đưa đối tượng đã cắt cùng mặt nạ vào quy trình khử nhiễu để sinh ảnh mới hòa hợp với bối cảnh xung quanh.
  5. Xem và tải xuống (Download & View): Kết quả được trả về hiển thị trực tiếp trong hộp chứa ảnh nổi trên giao diện, hỗ trợ di chuyển vị trí hoặc tải tệp về máy cục bộ.

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

Chương 1: GIỚI THIỆU TỔNG QUAN

Chương 1 làm rõ bối cảnh công nghệ xử lý ảnh hiện đại, nêu bật tính cấp thiết của bài toán tách đối tượng trong các ngành y tế, an ninh, giao thông và thương mại điện tử. Tác giả chỉ ra hạn chế của các phương pháp cổ điển (Haar Cascade, HOG) và các mạng nơ-ron học sâu thế hệ trước (R-CNN, YOLO, Mask R-CNN). Chương này xác định rõ 3 mục tiêu nghiên cứu chính và 3 mục tiêu phụ, đồng thời tóm lược bố cục toàn bộ khóa luận gồm 4 chương.

Chương 2: MÔ HÌNH SAM - SEGMENT ANYTHING MODEL

Chương 2 trình bày chi tiết về mô hình nền tảng SAM do Meta công bố. Nội dung phân tích sâu sự khác biệt giữa hai phương pháp phân vùng truyền thống (phân vùng tương tác và phân vùng tự động), từ đó khẳng định SAM là mô hình tổng quát hóa giải quyết được cả hai hướng tiếp cận trên. Tác giả trình bày cấu trúc 3 thành phần của mô hình (Image Encoder, Prompt Encoder, Mask Decoder) và quy trình 3 giai đoạn của công cụ dữ liệu (Data Engine) thu thập bộ dữ liệu SA-1B (11 triệu ảnh, 1,1 tỷ mặt nạ).

Phần thực nghiệm so sánh SAM và YOLOv8 trên 6 loại ảnh thử nghiệm đưa ra các kết quả cụ thể:

Mẫu ảnh thử nghiệm Kết quả phân vùng của YOLOv8 Kết quả phân vùng của SAM
Ảnh hỗn hợp (người, động vật, xe cộ) Chỉ nhận diện và tạo mask cho các đối tượng gần, phổ biến. Phân vùng toàn diện, chi tiết cả đối tượng chính và nền.
Ảnh chân dung Tạo một mặt nạ duy nhất bao quanh toàn bộ cơ thể người. Tách chi tiết từng bộ phận riêng biệt trên khuôn mặt và trang phục.
Ảnh phương tiện Nhận diện và phân vùng tốt các phương tiện trên đường phố. Nhận diện và phân vùng tốt các phương tiện trên đường phố.
Tranh vẽ nghệ thuật Hoàn toàn không thể nhận diện và không tạo được mặt nạ. Nhận diện và phân vùng chính xác các nhân vật/chi tiết trong tranh.
Bảng chữ Nôm Không nhận diện được bộ chữ cái, không tạo được mặt nạ ký tự. Tạo mặt nạ phân tách độc lập từng ký tự chữ Nôm riêng lẻ.
Cảnh thiên nhiên Chỉ tách được chi tiết con người xuất hiện trong ảnh. Tách được cả con người và toàn bộ các thành phần cảnh quan tự nhiên.

Chương 3: ỨNG DỤNG TÁCH ĐỐI TƯỢNG TỪ ẢNH

Chương 3 mô tả toàn bộ quá trình thiết kế, hiện thực hóa và đánh giá phần mềm. Tác giả liệt kê chi tiết các công nghệ (ReactJS, Flask, Python, JavaScript), thư viện hỗ trợ (Axios, Werkzeug, Flask-CORS, Pillow, Pandas, Diffusers, PyTorch, subprocess) cùng sơ đồ luồng hoạt động của 5 tác vụ cơ bản: tải ảnh lên, tách đối tượng, tải ảnh tách, chỉnh sửa đối tượng, tải ảnh sau chỉnh sửa.

Chương này cũng thực hiện đánh giá ứng dụng trên 5 tình huống ảnh thực tế (ảnh người, ảnh thiên nhiên, ảnh hoạt hình với tỷ lệ nhận diện chi tiết đạt 80%, ảnh chụp y học, ảnh có độ phân giải thấp) và kiểm thử chức năng Inpainting với các câu lệnh prompt cụ thể (thay đổi âu phục: "A red man suit, in high resolution", thêm kính mát: "A sun-glasses, high resolution", đổi nền trời đêm: "The night sky with full of stars", thêm động vật/phong cảnh: "A horse", "An owl", "A riverside with many trees").

Chương 4: KẾT LUẬN

Chương 4 tổng kết các kết quả đạt được về mặt lý thuyết và ứng dụng phần mềm, đồng thời phân tích các hạn chế còn tồn đọng và đề xuất 3 định hướng phát triển cụ thể trong tương lai.


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

1. Kết quả đạt được từ văn bản

  • Xây dựng thành công ứng dụng thực tế: Triển khai hoàn chỉnh ứng dụng web tích hợp mô hình SAM ở back-end, cho phép tự động sinh mặt nạ từ ảnh tải lên, phân tích tọa độ nhấp chuột để tách chính xác đối tượng dựa trên thuật toán tìm diện tích bounding box nhỏ nhất.
  • Khả năng phân đoạn zero-shot vượt trội: Thực nghiệm chứng minh SAM hoạt động hiệu quả trên nhiều miền ảnh mà các mô hình phát hiện đối tượng thông thường (như YOLOv8) thất bại hoàn toàn, tiêu biểu như tranh vẽ nghệ thuật không gian ảo và văn bản chữ Nôm cổ.
  • Tích hợp pipeline chỉnh sửa Inpainting: Kết hợp thành công mô hình Stable Diffusion thông qua thư viện Diffusers, cho phép thay đổi chi tiết đối tượng hoặc thay thế bối cảnh nền dựa trên mặt nạ phân vùng với độ hòa hợp màu sắc và ánh sáng cao.
  • Độ chính xác phân vùng chi tiết: Ứng dụng nhận diện và tách được 80% số lượng chi tiết đối tượng trên mẫu ảnh hoạt hình phức tạp, đồng thời bóc tách tốt các cấu trúc giải phẫu trên ảnh y tế và các vùng nhận diện rõ ràng trên ảnh độ phân giải thấp.

2. Đóng góp của đề tài

  • Hệ thống hóa cơ sở lý thuyết về mô hình nền tảng phân vùng ảnh (SAM) và phân tích chi tiết cấu trúc bộ dữ liệu quy mô lớn SA-1B.
  • Đưa ra giải pháp kỹ thuật cụ thể để tích hợp mô hình học sâu kích thước lớn vào ứng dụng web thông qua kiến trúc phân tán API Flask và ReactJS.
  • Cung cấp dữ liệu thực nghiệm đối sánh trực quan giữa SAM và YOLOv8 trên các loại dữ liệu hình ảnh đặc thù tại Việt Nam (như tài liệu chữ Nôm).

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

Hạn chế được xác định trong văn bản

  • Yêu cầu phần cứng cao: Quá trình tải và thực thi mô hình SAM cùng Stable Diffusion đòi hỏi tài nguyên tính toán lớn (GPU $\ge$ 8GB VRAM).
  • Tốc độ xử lý chưa tối ưu: Thời gian phân vùng và sinh mặt nạ phụ thuộc lớn vào kích thước mô hình, gây độ trễ trong lần tải ảnh đầu tiên.
  • Hạn chế trong thao tác chọn vùng: Khi các chi tiết trong ảnh bị chia nhỏ ở mức cực tiểu (tối đa độ phân giải mặt nạ của SAM), người dùng gặp khó khăn trong việc chọn đúng vùng đối tượng lớn theo ý muốn chỉ bằng một cú nhấp chuột đơn lẻ.

Hướng phát triển tiếp theo

  1. Áp dụng kỹ thuật Matte (Matte Anything / Alpha Matting): Tích hợp thuật toán xử lý mờ biên để tăng chất lượng bóc tách các chi tiết siêu nhỏ và phức tạp (sợi tóc, lông thú, viền mờ), loại bỏ hoàn toàn hiện tượng viền trắng (halo effect) quanh đối tượng.
  2. Cải tiến giao diện tương tác người dùng: Bổ sung công cụ vẽ/quét cọ trực tiếp (brush tool) trên màn hình giúp người dùng chủ động gộp hoặc khoanh vùng khu vực cần tách thay vì chỉ dùng thao tác click điểm đơn lẻ.
  3. Tích hợp thêm các mô hình thị giác máy tính bổ trợ:
    • Super Resolution: Nâng cao độ phân giải và độ sắc nét của đối tượng sau khi tách.
    • Image Inpainting chuyên sâu: Mở rộng khả năng xóa và bù đắp các vùng khuyết thiếu phức tạp.
    • Colorization: Tự động phục hồi và tô màu cho các bức ảnh tư liệu đen trắng.

Giá trị tham khảo

Khóa luận là tài liệu tham khảo hữu ích cho các nhóm đối tượng:

  • Sinh viên và học viên ngành Công nghệ thông tin, Hệ thống thông tin, Khoa học máy tính: Cung cấp tài liệu tổng quan mạch lạc về nguyên lý hoạt động của Vision Transformer trong mô hình SAM, cấu trúc dữ liệu của bộ dữ liệu SA-1B và phương pháp xây dựng pipeline AI.
  • Kỹ sư và lập trình viên phát triển ứng dụng AI/Web: Cung cấp thiết kế kiến trúc thực tế để kết nối mô hình học sâu (PyTorch, Hugging Face Diffusers) với giao diện người dùng tương tác thời gian thực (ReactJS, Flask RESTful API).
  • Phần nội dung có giá trị tham khảo cao nhất: Phần phân tích kiến trúc 3 thành phần của SAM (Chương 2), giải pháp xử lý tọa độ metadata để trích xuất mặt nạ cục bộ (Chương 3), và quy trình tích hợp Stable Diffusion Inpainting vào ứng dụng web.

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

1. Khóa luận sử dụng phiên bản mô hình nào để làm đối chứng phân vùng với SAM?
Tác giả sử dụng mô hình YOLOv8 để thực hiện thực nghiệm đối sánh tính năng phân vùng đối tượng (Instance Segmentation) trên 6 bộ mẫu ảnh thử nghiệm.

2. Dữ liệu huấn luyện SA-1B của mô hình SAM có quy mô và chất lượng như thế nào?
Bộ dữ liệu SA-1B bao gồm 11 triệu hình ảnh (được thu nhỏ về cạnh ngắn 1500 pixel) và hơn 1,1 tỷ mặt nạ phân vùng tự động. Đánh giá chất lượng trên 500 ảnh mẫu ngẫu nhiên cho thấy 94% các cặp mặt nạ có chỉ số IoU lớn hơn 90%.

3. Làm thế nào ứng dụng xác định được đúng đối tượng cần tách khi người dùng nhấp chuột vào ảnh?
Hệ thống thu nhận tọa độ $(x, y)$ từ cú nhấp chuột của người dùng trên giao diện ReactJS, gửi về máy chủ Flask để đối chiếu với tệp metadata do SAM sinh ra, sau đó thuật toán sẽ tìm và chọn ra vùng hộp bao (bounding box) có diện tích nhỏ nhất chứa điểm đó để tiến hành cắt đối tượng.

4. Ứng dụng sử dụng công nghệ nào để thực hiện tính năng chỉnh sửa đối tượng sau khi tách?
Ứng dụng sử dụng mô hình học sâu Stable Diffusion Inpainting được triển khai thông qua thư viện diffusers của Hugging Face và thư viện torch (PyTorch) trên nền tảng Python ở Back-end.

5. Những công cụ và thư viện chính nào được sử dụng để xây dựng hệ thống phần mềm trong khóa luận?
Hệ thống sử dụng ReactJS, JavaScript, Axios ở Front-end; Python, Flask, Flask-CORS, Werkzeug, Pillow, Pandas, Diffusers, PyTorch và thư viện hệ thống subprocess ở Back-end.


Kết luận

Khóa luận tốt nghiệp của tác giả Nguyễn Minh Trí đã nghiên cứu toàn diện về mô hình nền tảng Segment Anything Model (SAM) và hiện thực hóa thành công một ứng dụng web tách đối tượng tự động kết hợp chỉnh sửa ảnh bằng Stable Diffusion. Thông qua các thực nghiệm đối sánh với YOLOv8 trên nhiều loại dữ liệu hình ảnh phức tạp, đề tài đã chứng minh tính hiệu quả và khả năng tổng quát hóa vượt trội của SAM trong bài toán phân vùng. Công trình cung cấp một tài liệu tham khảo hoàn chỉnh từ lý thuyết mô hình học sâu đến giải pháp triển khai phần mềm ứng dụng thực tế trong lĩnh vực thị giác máy tính.