Chương 1. Giới thiệu tổng quan: Nêu hiện trạng thực tế, lý do chọn đề tài nghiên cứu và mục tiêu nghiên cứu. Mô hình SAM (Segment Anything Model): Giới thiệu về mô hình Segment Anything Model và thực nghiệm. So sánh khả năng phân vùng ảnh với các mô hình khác.
Thiết kế và triển khai ứng dụng tách đối tượng từ ảnh: Giới thiệu công cụ “Tách đối tượng từ ảnh”. Kết luận: Tổng kết lại kết quả đạt được và đề xuất hướng nghiên cứu, phát triển tiếp theo nhằm khai thác những điểm mạnh của mô hình SAM. 4 Chương 2 MÔ HÌNH SAM - SEGMENT ANYTHING MODEL 2.1 Giới thiệu mô hình SAM SAM (Segment Anything Model) là một mô hình phân vùng ảnh được phát triển bởi Meta (trước đây được biết đến là Facebook). Có hai phương pháp khác nhau để giải quyết vấn đề phân vùng ảnh.
Phương pháp đầu tiên là phân vùng tương tác, trong đó quá trình phân vùng được hướng dẫn và tinh chỉnh dựa trên các đầu vào của người dùng. Phương pháp này cho phép người dùng điều chỉnh quá trình để cải thiện kết quả phân vùng và hữu ích cho các hình ảnh phức tạp nơi các thuật toán tự động có thể gặp khó khăn trong việc xác định chính xác ranh giới đối tượng. Tuy nhiên, phương pháp này yêu cầu người dùng hướng dẫn, điều đó có nghĩa là nó không tự động. Do đó, chúng ta có phương pháp thứ hai, phân vùng tự động, bao gồm việc phân chia một hình ảnh thành nhiều phân vùng hoặc vùng hoàn toàn thông qua các thuật toán tính toán mà không cần sự can thiệp của con người.
Phương pháp này có thể phân vùng một tập hợp các lớp đối tượng đã được định nghĩa trước, nhưng nhược điểm là quá trình gán nhãn thủ công cho hàng chục nghìn ví dụ được sử dụng cho quá trình huấn luyện. Cả hai phương pháp đều không cung cấp một cách tiếp cận chung, hoàn toàn tự động cho phân vùng. SAM được thiết kế để trở thành một sự tổng quát hóa của hai lớp phương pháp này. Đây là một mô hình đơn lẻ có thể thực hiện cả phân vùng tương tác và phân vùng tự động.
Nó cho phép người dùng thiết kế các lời nhắc sử dụng cho mô hình và làm cho nhiều nhiệm vụ phân vùng trở nên khả thi. SAM cũng có khả năng tổng quát hóa, giúp nó hoạt động tốt với các loại đối tượng và hình ảnh mới ngoài những gì nó đã quan sát trong quá trình huấn luyện.Ví dụ về khả năng phân vùng của SAM 2.2 Hoạt động của mô hình SAM SAM (Segment Anything Model) là một mô hình nền tảng cho phân vùng hình ảnh, một mô hình được huấn luyện trước và có khả năng prompt, có khả năng tổng quát hóa giống như các mô hình nền tảng ngôn ngữ như ChatGPT, bằng cách sử dụng các kỹ thuật định hình lời nhắc. Nó yêu cầu một tập dữ liệu hình ảnh lớn và được chú thích đầy đủ để huấn luyện, điều này đòi hỏi nhiều công sức thủ công. Để xây dựng mô hình này, cần có: - Nhiệm vụ phân vùng có thể định hình prompt: Sử dụng prompt để hướng dẫn mô hình cách phân vùng đối tượng trong ảnh.
Prompt có thể là thông tin văn bản như hướng dẫn, đoạn mô tả hoặc thông tin không gian như điểm ảnh, hộp giới hạn, và mặt nạ. Lệnh nhập này giúp mô hình trả về một mặt nạ phân vùng hợp lệ. 6 - Mô hình: Mô hình sẽ sử dụng cả ảnh và lệnh nhập làm đầu vào, không giống như mô hình truyền thống. Nó cần hỗ trợ các lời nhắc linh hoạt, tính toán mặt nạ nhanh chóng trong thời gian thực, và phải nhận biết được sự mơ hồ.
Điều này được đạt được thông qua thiết kế đơn giản gồm 3 phần: một bộ mã hóa ảnh mạnh mẽ để chuyển đổi ảnh thành embedding, một bộ mã hóa lời nhắc để mã hóa lời nhắc, và một bộ giải mã mặt nạ để dự đoán các mặt nạ phân vùng. - Tập dữ liệu: Tập dữ liệu cần phải lớn và đa dạng để mô hình có thể đạt được mức độ tổng quát hóa. Tuy nhiên, mặt nạ phân vùng lớn và chất lượng cao không có sẵn trên web, và để tạo ra những mặt nạ này đòi hỏi nhiều thời gian và công sức. Vì vậy, một 'công cụ dữ liệu' được phát triển để tự động gán nhãn cho hình ảnh.
Với công cụ dữ liệu này, một tập dữ liệu gồm 11 triệu hình ảnh và hơn 1 tỷ mặt nạ đã được thu thập, được đặt tên là SA-1B và sẽ được sử dụng để huấn luyện mô hình.Ba thành phần kết nối với nhau được sử dụng trong phát triển mô hình 7 2.2 Kiến trúc mô hình SAM xử lý hình ảnh thông qua ba thành phần chính: Bộ mã hóa ảnh, bộ mã hóa lệnh, Hình 2.Các thành phần xử lý của SAM - Image encoder (Bộ mã hóa hình ảnh): Bộ mã hóa này sử dụng một Vision Transformer đã được tiền huấn luyện bằng phương pháp masked auto- encoder để chuyển đổi hình ảnh thành embedding (mã nhúng). - Prompt encoder (Bộ mã hóa đề xuất): Bộ mã hóa này mã hóa các điểm và hộp giới hạn (bounding boxes) bằng cách sử dụng các mã hóa vị trí (positional* encodings) và mã hóa văn bản bằng CLIP. Đối với các đề xuất mask (mask prompt), nó sử dụng các phép tích chập (convolutions) và cộng chúng với embedding hình ảnh. 8 - Mask decoder (Bộ giải mã mask): Đây là một thành phần nhẹ, nó ánh xạ embedding hình ảnh, embedding đề xuất, và một token đầu ra thành một mask.
Thiết kế này sử dụng một biến thể của khối giải mã Transformer, trong đó sử dụng attention tự động và cross-attention hai chiều (từ đề xuất đến hình ảnh và ngược lại) để cập nhật tất cả các embedding. Sau đó, embedding hình ảnh được tăng tỷ lệ (upsample) và một MLP ánh xạ đầu ra thành một bộ phân loại tuyến tính để tính toán điểm tin cậy cho mặt nạ. Nó sẽ trả về nhiều kết quả đầu ra cho một đề xuất duy nhất để giải quyết sự mơ hồ.3 Tập dữ liệu 2.1 Data engine Công cụ dữ liệu được sử dụng để tạo tập dữ liệu và huấn luyện SAM, bao gồm 3 giai đoạn: - Hỗ trợ thủ công: SAM được huấn luyện bằng tập dữ liệu công khai. Chuyên gia gán nhãn sử dụng công cụ chỉnh sửa của SAM để gán nhãn các mặt nạ.
Quá trình này được lặp lại sáu lần, tạo ra 4,3 triệu mặt nạ cho 120 nghìn hình ảnh. - Bán tự động: Chuyên gia gán nhãn các đối tượng mà SAM không nhận diện được để tăng tính đa dạng. Quá trình này được lặp lại năm lần, thu thập 10,2 triệu mặt nạ cho 300 nghìn hình ảnh. - Hoàn toàn tự động: Sử dụng lưới điểm 32x32 để dự đoán mặt nạ.
Mô-đun IoU chọn các mặt nạ đáng tin cậy và duy nhất. Hình ảnh được cắt thành các phần nhỏ để tăng chất lượng mặt nạ. Tổng cộng, 11 triệu hình ảnh được xử lý, tạo ra 1,1 tỷ mặt nạ chất lượng cao.2 Tập dữ liệu 9 Hình 2.Ảnh mô tả bộ dữ liệu overlaid mask. SA-1B Dataset Bộ dữ liệu SA-1B bao gồm 11 triệu hình ảnh đa dạng, độ phân giải cao và 1,1 tỷ mặt nạ phân vùng chất lượng cao được thu thập bởi công cụ dữ liệu.
Các hình ảnh có độ phân giải trung bình là 3300x4950, tuy nhiên để tiết kiệm dung lượng lưu trữ, chúng được giảm kích thước xuống còn 1500 pixel cho chiều ngắn của hình ảnh. Ngay cả sau khi giảm kích thước, các hình ảnh vẫn có độ phân giải cao hơn nhiều so với nhiều bộ dữ liệu hiện có. Bộ dữ liệu bao gồm hơn 1,1 tỷ mặt nạ, tất cả đều được tự động tạo ra. Để đánh giá chất lượng của các mặt nạ này, 500 hình ảnh với khoảng 50.000 mặt nạ được lấy mẫu ngẫu nhiên và một nhóm chuyên gia gán nhãn sẽ cải thiện chất lượng của tất cả các mặt nạ trong các hình ảnh này bằng cách sử dụng mô hình và công cụ chỉnh sửa.
Kết quả là các cặp mặt nạ được dự đoán tự động, trong đó 94% các cặp có IoU lớn hơn 90%. Thí nghiệm này xác nhận rằng chất lượng mask là cao và mô hình có thể được huấn luyện chỉ bằng mask tự động. 10 Khi so sánh với các bộ dữ liệu khác cho phân vùng hình ảnh, SA-1B có số lượng hình ảnh nhiều hơn 11 lần và số lượng mặt nạ nhiều hơn 400 lần so với Open Images, bộ dữ liệu lớn nhất hiện nay. Các hình ảnh có hơn 100 mặt nạ chiếm 80% của SA-1B, áp đảo so với các bộ dữ liệu khác, chỉ có khoảng 30%.
SA-1B có nhiều mặt nạ nhỏ hơn, điều này không bất ngờ vì số lượng mặt nạ nhiều hơn.4 Thực nghiệm Để thể hiện tính hiệu quả trong chất lượng phân vùng ảnh của SAM, em sử dụng mô hình YOLOv8 – mô hình phục vụ nhận diện và phân vùng ảnh nhằm so sánh độ đa dạng và số lượng nhận diện đối tượng trong một bức ảnh. Tại đây, nhận thấy cả hai mô hình đều xử lý tiến trình “Phân vùng đối tượng” (Instance Segmentation), do đó thực nghiệm được tiến hành đưa một mẫu ảnh thử vào hai mô hình và so sánh kết quả được trả về từ SAM và YOLOv8. Các mẫu ảnh thử được lựa chọn đa dạng từ chân dung, phong cảnh, tranh vẽ…. để đánh giá một cách trực quan nhất.1 Các bước thực hiện Hai mô hình được thực hiện bằng Notebook, triển khai trên ứng dụng Google Colab yêu cầu cấu hình: - Yêu cầu phần cứng: o GPU với bộ nhớ tối thiểu 8GB: Để đảm bảo việc xử lý các tác vụ phân vùng đối tượng, GPU cần có dung lượng bộ nhớ đủ lớn (Vd:NVIDIA GTX 1080 Ti) sẽ giúp tăng tốc độ xử lý, đặc biệt là khi làm việc với các mô hình deep learning lớn và phức tạp.
o CPU đa nhân: Một CPU mạnh với nhiều nhân (cores) sẽ giúp xử lý các tác vụ không thể thực hiện trên GPU và giảm thiểu thời gian chờ. o RAM ít nhất 16GB: Để đảm bảo đủ bộ nhớ cho việc tải và xử lý các mô hình, dữ liệu, và các tác vụ khác. 11 - Yêu cầu phần mềm: o Python >= 3.8: Để sử dụng các thư viện mới nhất và các tính năng của Python.1: Nếu sử dụng GPU NVIDIA, CUDA sẽ giúp tận dụng sức mạnh của GPU để tăng tốc độ tính toán. Phiên bản CUDA cần phải tương thích với phiên bản PyTorch bạn cài đặt.
o Cài đặt các thư viện cần thiết: Bao gồm PyTorch, OpenCV, và các thư viện cụ thể cho từng mô hình (SAM và YOLOv8).