Segment anything in medical images | Báo cáo bài tập lớn học phần Thị giác máy tính
Một trong những lý do chính khiến chúng tôi lựa chọn đề tài này là nhu cầu cấp thiết của việc nâng cao chất lượng và hiệu quả trong việc chuẩn đoán y tế. Hình ảnh y tế, chẳng hạn như MRI, CT scan và X-quang, đóng vai trò quan trọng trong việc xác định và điều trị nhiều loại bệnh. Tuy nhiên, quá trình phân tích những hình ảnh này thường phức tạp và đòi hỏi sự can thiệp của các chuyên gia có trình độ chuyên môn cao. Bằng cách áp dụng các thuật toán học sâu và AI vào việc phân đoạn hình ảnh y tế, chúng ta có thể tự động hóa quá trình này, giảm thiểu sai sót và tiết kiếm thời gian cho bác sĩ. Tài liệu giúp bạn tham khảo, ôn tập và đạt kết quả cao. Mời bạn đón xem.
Preview text:
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC PHENIKAA
------------oOo-----------
BÀI THI CUỐI HỌC PHẦN MÔN THỊ GIÁC MÁY TÍNH
ĐỀ TÀI: “Segment Anything in Medical Images”
Nhóm sinh viên thực hiên: Nhóm 9
Sinh viên thực hiện: Dương Ngọc Hà 21012868 Nguyễn Anh Minh 21012076 Đặng Quang Huy 21012062
Giảng viên hỗ trợ: Đặng Thị Thúy An
Khoa chuyên môn: Công nghệ thông tin HÀ NỘI, tháng 7 năm 2024
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC PHENIKAA
------------oOo-----------
BÀI THI CUỐI HỌC PHẦN MÔN THỊ GIÁC MÁY TÍNH
ĐỀ TÀI: “Segment Anything in Medical Images”
Nhóm sinh viên thực hiên: Nhóm 9 Họ và tên Mã số sinh viên Điểm bằng số Điểm bằng chữ Dương Ngọc Hà 21012868 Nguyễn Anh Minh 21012076 Đặng Quang Huy 21012062
Giảng viên hỗ trợ: Đặng Thị Thúy An
Khoa chuyên môn: Công nghệ thông tin HÀ NỘI, tháng 6 năm 2024
PHẦN THÔNG TIN CƠ BẢN
1. Thông tin cán bộ hỗ trợ, hướng dẫn
1.1. Họ và tên: Đặng Thị Thúy An
1.2. Email: an.dangthithuy@phenikaa-uni.edu.vn
1.3. Điện thoại: 0962199453
2. Tên tập thể tác giả
2.1. Họ và tên trưởng nhóm: Dương Ngọc Hà
2.2. Ngày tháng năm sinh: 15/08/2003
2.3. Mã số sinh viên: 21012868
2.4. Lớp: CNTT4 Khoa: Công nghệ thông tin
2.5. Số điện thoại liên hệ: 0396930803 2.6.
Email: 21012868@st.phenikaa-uni.edu.vn
2.7. Danh sách thành viên nhóm: STT Họ và Lớp Email Điện thoại Mã sinh Khoa tên - Khóa viên - Ngành 1 Dương
CNTT4 21012868@st.phenik 0396930803 21012868 CNTT Ngọc – K15 – aa-uni.edu.vn Hà CNTT 2
Nguyễn CNTT4 21012076@st.phenik 0928969538 21012076 CNTT Anh – K15 – aa-uni.edu.vn Minh CNTT 3 Đặng
CNTT4 21012062@st.phenik 0973531878 21012062 CNTT Quang – K15 – aa-uni.edu.vn Huy CNTT
3. Bảng phân chia công việc
BẢNG PHÂN CHIA CÔNG VIỆC Công việc
Dương Ngọc Hà Nguyễn Anh Minh Đặng Quang Huy
Viết lại đặc tả yêu cầu (chức x
năng, phi chức năng) cho phần mềm
Ngôn ngữ lập trình và công nghệ x sử dụng Lập SQA&Test Plan x
Xây dựng và thực hiện các x
checklist: test plan, test case, GUI, code, Web test, system test
Viết test case, thực hiện test x Giao diện hệ thống x x x
Test tự động bằng Selenium-IDE x
Test hiệu năng bằng Jmeter x x x (http://jmeter.apache.org) 2 LỜI MỞ ĐẦU
Trong thế kỷ XXI, công nghệ đã thay đổi sâu sắc nhiều lĩnh vực trong cuộc sống, từ giao
thông vận tải, giáo dục đến y tế. Đặc biệt lĩnh vực y tế đã chứng kiến sự tiến bộ vượt
bậc nhờ vào sự kết hợp của trí tuệ nhân tạo (AI) và học máy (Machine learning). Một
trong những lĩnh vực đáng chú ý nhất của công nghệ này là khả năng phân đoạn hình
ảnh y tế, được gọi là Segment Anything in Medical Images.
Phân đoạn hình ảnh y tế không chỉ giúp cải thiện độ chính xác trong chuẩn đoán mà còn
mở ra nhiều cơ hội mới trong nghiên cứu và điều trị. Trước đây việc phân đoạn hình ảnh
y tế chủ yếu dựa vào sự phân tích và đánh giá thủ công của các chuyên gia, điều này
không chỉ tốn thời gian mà còn có nguy cơ mắc phải những sai sót chủ quan. Tuy nhiên,
với sự phát triển của các thuật toán học sâu (deep learning) và mạng nơ-ron tích chập
(Convolutional Neural Networks – CNNs), chúng ta có thể tự động hóa quy trình này
với độ chính xác cao và tốc độ nhanh chóng.
Báo cáo này sẽ đi sâu vào việc nghiên cứu và ứng dụng phương pháp Segment Anything
in Medical Images. Chúng tôi sẽ trình bày chi tiết về các thuật toán và mô hình học sâu
được sử dụng, những thách thức gặp phải trong quá trình triển khai và những thành tựu
đã đạt được. Đồng thời chúng tôi cũng sẽ khám phá các trường hợp thực tế và lợi ích
mà SAM mang lại cho nghành y tế.
Bên cạnh đó, báo cáo cũng sẽ thảo luận về tiềm năng tương lai của công nghệ này, những
cải tiến cần thiết và cách mà nó có thể được ứng dụng rộng rãi hơn trong việc cải thiện
chất lượng chăm sóc sức khỏe. Với sự kỳ vọng rằng SAM sẽ trở thành một công cụ
không thể thiếu trong y học hiện đại, chúng tôi hy vọng rằng báo cáo này sẽ cung cấp
một cái nhìn toàn diện và sâu sắc về chủ đề này. NỘI DUNG
I. Introduction 1. Lí do chọn đề tài
Một trong những lý do chính khiến chúng tôi lựa chọn đề tài này là nhu cầu cấp thiết
của việc nâng cao chất lượng và hiệu quả trong việc chuẩn đoán y tế. Hình ảnh y tế,
chẳng hạn như MRI, CT scan và X-quang, đóng vai trò quan trọng trong việc xác định
và điều trị nhiều loại bệnh. Tuy nhiên, quá trình phân tích những hình ảnh này thường
phức tạp và đòi hỏi sự can thiệp của các chuyên gia có trình độ chuyên môn cao. Bằng
cách áp dụng các thuật toán học sâu và AI vào việc phân đoạn hình ảnh y tế, chúng ta
có thể tự động hóa quá trình này, giảm thiểu sai sót và tiết kiếm thời gian cho bác sĩ.
Thứ hai, công nghệ phân đoạn hình ảnh y tế không chỉ giúp cải thiện độ chính xác trong
chuẩn đoán mà còn mở ra nhiều hướng nghiên cứu và phát triển mới. Ví dụ như bệnh
ung thư, việc phân đoạn chính xác các khối u có thể giúp các bác sĩ xác định chính xác
kích thước, vị trí và mức độ phát triển của khối u, từ đó lựa chọn phương pháp điều trị
phù hợp nhất. Điều này không chỉ giúp tăng cơ hội sống sót cho bệnh nhân mà còn cải
thiện chất lượng cuộc sống của họ trong quá trình điều trị.
Ngoài ra, đề tài này cũng phản ánh sự quan tâm của chúng tôi đối với sự kết hợp giữa
công nghệ và y học, hai lĩnh vực luôn có sự tương tác và bổ sung lẫn nhau. Chúng tôi
tin rằng việc nghiên cứu và phát triển các giải pháp công nghệ tiên tiến cho y tế không
chỉ góp phần vào sự phát triển của nghành y mà còn có ý nghĩa nhân văn sâu sắc, giúp
cải thiện sức khỏe và chất lượng cuộc sống của con người.
Một lý do khác khiến chúng tôi lựa chọn đề tài này là tính thách thức và độ phức tạp của
nó. Việc phát triển các mô hình học sâu để phân đoạn hình ảnh y tế đòi hỏi kiến thức
sâu rộng về cả y học và khoa học máy tính. Điều này tạo ra một cơ hội tuyệt vời để
chúng tôi mở rộng kiến thức, kỹ năng và khám phá những tiềm năng mới của AI trong y tế
Chúng tôi mong muốn rẳng nghiên cứu này sẽ không chỉ dừng lại ở mức lý thuyết mà
còn có thể áp dụng vào thực tiễn, mang lại lợi ích cụ thể cho nghành y tế cộng đồng.
Chúng tôi hy vọng rằng, thông qua việc chia sẻ những phát hiện và kết quả nghiên cứu,
chúng tôi có thể góp phần vào sự phát triển của công nghệ y tế và tạo ra những thay đổi tích cực cho xã hội.
2. Mô tả vấn đề
Phân đoạn hình ảnh y tế, tức là quá trình xác định và phân tách các cấu trúc quan trọng
như cơ quan, mô và tổn thương từ hình ảnh y tế là một trong những bước quan trọng
nhất. Tuy nhiên, việc phân đoạn này thường phức tạp và tốn nhiều thời gian, đặc biệt là
khi phải xử lý một lượng lớn dữ liệu hình ảnh. Hơn nữa, sự phức tạp và đa dạng của cấu
trúc trong cơ thể người làm cho việc phân đoạn chính xác trở nên khó khăn hơn. 4
Trong thực tế, việc phân đoạn hình ảnh y tế thủ công không chỉ đòi hỏi nhiều thời gian
mà còn có nguy cơ mắc phải những sai sót chủ quan. Điều này có thể dẫn đến những
hậu quả nghiêm trọng, như chuẩn đoán sai, điều trị không hiệu quả hoặc thậm chí gây
hại cho bệnh nhân. Do đó, việc tìm kiếm các giải pháp tự động hóa và nâng cao độ chính
xác trong phân đoạn hình ảnh y tế là vô cùng cấp thiết.
Với sự phát triển của trí tuệ nhân tạo (AI) và học máy (Machine learning), đặc biệt là
các mô hình học sâu (Deep learning), chúng ta đang chứng kiến một bước tiến vượt bậc
trong việc phân đoạn hình ảnh y tế. Những mô hình này có khả năng học hỏi dữ liệu lớn,
nhận diện và phân tách các cấu trúc phức tạp trong hình ảnh với độ chính xác cao.
Tuy nhiên, việc áp dụng các mô hình học sâu vào phân đoạn hình ảnh y tế cũng đối mặt
với nhiều thách thức. Đầu tiên, việc thu thập và gán nhãn dữ liệu y tế lớn đòi hỏi nguồn
lực lớn và sự hợp tác từ nhiều bên liên quan. Thứ hai, các mô hình học sâu thường yêu
cầu sức mạnh tính toán lớn và thời gian huấn luyện dài. Cuối cùng, việc đảm bảo rằng
các mô hình này hoạt động tốt trên các dữ liệu từ nhiều nguồn khác nhau, với độ đa dạng
về cấu trúc và chất lượng hình ảnh là một thách thức không nhỏ. 3. Giới thiệu
Phân đoạn là một nhiệm vụ cơ bản trong phân tích hình ảnh y tế, bao gồm việc xác định
và phân định các vùng quan tâm (ROI) trong các hình ảnh y tế khác nhau, chẳng hạn
như các cơ quan, tổn thương và mô. Phân đoạn chính xác là điều cần thiết cho nhiều
ứng dụng lâm sàng, bao gồm chẩn đoán bệnh, lập kế hoạch điều trị và theo dõi tiến triển
của bệnh. Phân đoạn thủ công từ lâu đã là tiêu chuẩn vàng để phân định cấu trúc giải
phẫu và vùng bệnh lý, nhưng quá trình này tốn nhiều thời gian, tốn nhiều công sức và
thường đòi hỏi trình độ chuyên môn cao. Các phương pháp phân đoạn bán tự động hoặc
hoàn toàn tự động có thể giảm đáng kể thời gian và công sức cần thiết, tăng tính nhất
quán và cho phép phân tích các bộ dữ liệu quy mô lớn.
Các mô hình dựa trên học sâu đã cho thấy nhiều hứa hẹn trong phân đoạn hình ảnh y tế
nhờ khả năng tìm hiểu các đặc điểm hình ảnh phức tạp và mang lại kết quả phân đoạn
chính xác trên nhiều nhiệm vụ khác nhau, từ phân đoạn các cấu trúc giải phẫu cụ thể
đến xác định các vùng bệnh lý. Tuy nhiên, một hạn chế đáng kể của nhiều mô hình phân
đoạn hình ảnh y tế hiện nay là tính chất nhiệm vụ cụ thể của chúng. Các mô hình này
thường được thiết kế và huấn luyện cho một nhiệm vụ phân đoạn cụ thể và hiệu suất của
chúng có thể giảm đáng kể khi áp dụng cho các nhiệm vụ mới hoặc các loại dữ liệu hình
ảnh khác nhau. Sự thiếu tổng quát này đặt ra một trở ngại đáng kể cho việc áp dụng rộng
rãi hơn các mô hình này trong thực hành lâm sàng. Ngược lại, những tiến bộ gần đây
trong lĩnh vực phân đoạn hình ảnh tự nhiên đã chứng kiến sự xuất hiện của các mô hình
nền tảng phân đoạn, chẳng hạn như mô hình phân đoạn (SAM) và Segment Everything
Everywhere với các gợi ý đa phương thức đồng thời, thể hiện tính linh hoạt và hiệu suất
vượt trội trong nhiều tác phụ phân đoạn khác nhau.
Nhu cầu ngày càng tăng về các mô hình phổ quát trong phân đoạn hình ảnh y tế: các mô
hình có thể được huấn luyện một lần và sau đó áp dụng cho nhiều nhiệm vụ phân đoạn.
Những mô hình như vậy không chỉ thể hiện tính linh hoạt cao hơn về mặt năng lực của
mô hình mà còn có khả năng mang lại kết quả nhất quán hơn cho các nhiệm vụ khác
nhau. Tuy nhiên, khả năng áp dụng các mô hình nền tảng phân đoạn (ví dụ SAM) vào
phân đoạn hình ảnh y tế vẫn còn hạn chế do sự khác biệt đáng kể giữa hình ảnh tự nhiên
và hình ảnh y tế. Về cơ bản, SAM là một phương pháp phân đoạn có thể được chỉ định
bằng các điểm hoặc hộp giới hạn để xác định các mục tiêu phân đoạn. Điều này giống
với các phương pháp phân đoạn tương tác thông thường nhưng SAM có khả năng khái
quát hóa tốt hơn, trong khi các phương pháp phân đoạn tương tác dựa trên học sâu hiện
tại tập trung chủ yếu vào các nhiệm vụ và phương thức hình ảnh hạn chế.
Nhiều nghiên cứu đã áp dụng các mô hình SAM có sẵn cho các nhiệm vụ phân đoạn
hình ảnh y tế điển hình và các tình huống đầy thách thức khác. Ví dụ: các nghiên cứu
đồng thời đã tiến hành đánh giá toàn diện về SAM trên nhiều hình ảnh y tế khác nhau,
nhấn mạnh rằng SAM đã đạt được kết quả phân đoạn thỏa đáng chủ yếu trên các mục
tiêu được đặc trưng bởi các ranh giới riêng biệt. Tuy nhiên, mô hình này bộc lộ những
hạn chế đáng kể trong việc phân đoạn các mục tiêu y tế với ranh giới yếu hoặc độ tương
phản thấp. Để phù hợp với những quan sát này, chúng tôi giới thiệu thêm MedSAM,
một mô hình nền tảng được cải tiến giúp nâng cao đáng kể hiệu suất phân đoạn của
SAM trên hình ảnh y tế. MedSAM thực hiện được điều này bằng cách tinh chỉnh SAM
trên tập dữ liệu chưa từng có với hơn một triệu cặp hình ảnh y khoa.
Chúng tôi đánh giá kỹ lưỡng MedSAM thông qua các thử nghiệm toàn diện về 86 nhiệm
vụ xác nhận bên trong và 60 nhiệm vụ xác nhận bên ngoài, trải rộng trên nhiều cấu trúc
giải phẫu, tình trạng bệnh lý và phương thức hình ảnh y tế. Kết quả thử nghiệm chứng
minh rằng MedSAM luôn vượt trội so với mô hình nền tảng phân đoạn hiện đại (SOTA), 6
đồng thời đạt được hiệu suất ngang bằng hoặc thậm chí vượt qua các mô hình chuyên
dụng đã được huấn luyện trên các hình ảnh từ cùng một phương thức. Những kết quả
này nêu bật tiềm năng của MedSAM như một mô hình mới cho phân đoạn hình ảnh y tế linh hoạt. II. Related works
Trong những năm gần đây, đã có nhiều nghiên cứu và công trình khoa học tập trung vào
việc phát triển các phương pháp và thuật toán để phân đoạn hình ảnh y tế. Những nỗ lực
này đã mang lại nhiều tiến bộ đáng kể, góp phần nâng cao chất lượng và hiệu quả trong
chẩn đoán và điều trị y tế. Dưới đây là một số công trình tiêu biểu và các phương pháp
nổi bật trong lĩnh vực này:
1. UNet: Convolutional Networks for Biomedical Image Segmentation
Hình 1: UNet: Convolutional Networks for Biomedical Image Segmentation
o Tác giả: Olaf Ronneberger, Philipp Fischer, Thomas Brox
o Nội dung: UNet là một trong những mô hình phổ biến nhất được sử dụng cho
phân đoạn hình ảnh y tế. Mô hình này có kiến trúc đối xứng với một đường dẫn
giảm chiều và một đường dẫn tăng chiều, giúp nó có khả năng nắm bắt được ngữ
cảnh toàn cục cũng như chi tiết cục bộ. UNet đã được chứng minh hiệu quả trong
nhiều ứng dụng y tế khác nhau như phân đoạn tế bào, mô và các cấu trúc khác.
2. V-Net: Fully Convolutional Neural Networks for Volumetric Medical Image Segmentation
Hình 2: V-Net: Fully Convolutional Neural Networks for Volumetric Medical Image Segmentation
o Tác giả: Fausto Milletari, Nassir Navab, Seyed-Ahmad Ahmadi
o Nội dung: V-Net là một mô hình học sâu được thiết kế đặc biệt cho việc phân
đoạn hình ảnh 3D. Kiến trúc của V-Net tương tự như UNet nhưng được tối ưu
hóa cho dữ liệu volumetric, chẳng hạn như MRI và CT scans. Mô hình này sử
dụng hàm mất Dice, giúp tối ưu hóa trực tiếp độ đo chất lượng phân đoạn.
3. DeepMedic: A Deep Convolutional Neural Network for Automatic Brain Tumor Segmentation
Hình 3: DeepMedic: A Deep Convolutional Neural Network for Automatic Brain Tumor Segmentation
o Tác giả: Konstantinos Kamnitsas, Christian Ledig, Virginia FJ Newcombe,
Joanna P. Simpson, Andrew D. Kane, David K. Menon, Daniel Rueckert, Ben Glocker. 8
o Nội dung: DeepMedic là một mô hình học sâu với kiến trúc đa lớp và đa đường
dẫn, được thiết kế để phân đoạn các khối u não từ hình ảnh MRI. Mô hình này
có khả năng học từ các thông tin không gian ở nhiều mức độ phân giải khác nhau,
giúp nâng cao độ chính xác trong việc phát hiện và phân đoạn khối u.
4. Attention U-Net: Learning Where to Look for the Pancreas
Hình 4: Attention U-Net: Learning Where to Look for the Pancreas
o Tác giả: Oktay, Ozan, et al.
o Nội dung: Attention U-Net là một phiên bản cải tiến của UNet, tích hợp cơ chế
Attention để tập trung vào các vùng quan trọng trong hình ảnh. Mô hình này đã
cho thấy sự cải thiện đáng kể trong việc phân đoạn các cấu trúc nhỏ và khó nhận
biết, như tuyến tụy trong hình ảnh CT.
5. 3D U-Net: Learning Dense Volumetric Segmentation from Sparse Annotation
Hình 5: 3D U-Net: Learning Dense Volumetric Segmentation from Sparse Annotation
o Tác giả: Ozgun Cicek, Ahmed Abdulkadir, Soeren S. Lienkamp, Thomas Brox,
Olaf Ronneberger o Nội dung: 3D U-Net mở rộng mô hình UNet sang không
gian ba chiều, giúp phân đoạn hiệu quả hơn trên các tập dữ liệu volumetric. Mô hình
này đặc biệt hữu ích trong các ứng dụng yêu cầu phân đoạn chi tiết và chính xác
trong hình ảnh 3D, như trong chẩn đoán các bệnh liên quan đến não và phổi.
6. nnU-Net: Self-adapting Framework for U-Net-Based Medical Image Segmentation
Hình 6: nnU-Net: Self-adapting Framework for U-Net-Based Medical Image Segmentation
III. Methods 1. Phương pháp truyền thống
Phương pháp phân đoạn hình ảnh y tế truyền thống dựa trên các đặc điểm và thuật toán
được thiết kế thủ công cho từng loại hình ảnh hoặc đối tượng cụ thể. Một số kỹ thuật phổ biến bao gồm:
o Ngưỡng hóa: Phân loại pixel dựa trên giá trị cường độ của chúng. o Phát
hiện cạnh: Xác định các cạnh của các đối tượng trong ảnh. o Phát triển
vùng: Mở rộng một vùng ban đầu có chứa đối tượng mục tiêu.
o Đường viền hoạt động: Sử dụng các đường cong để mô tả ranh giới của đối tượng. 10
Ưu điểm của phương pháp truyền thống là dễ hiểu và dễ triển khai. Tuy nhiên, chúng
thường đòi hỏi chuyên môn cao để thiết kế và điều chỉnh các thuật toán cho từng nhiệm
vụ cụ thể. Khả năng khái quát hóa của chúng cho các dữ liệu hoặc nhiệm vụ mới cũng bị hạn chế.
2. Phương pháp học sâu
Sự ra đời của học sâu đã mang đến một bước tiến đột phá cho phân đoạn hình ảnh y tế.
Các phương pháp học sâu, như mạng nơ-ron nhân tạo (CNN), có thể đọc các đặc điểm
phức tạp từ dữ liệu một cách tự động mà không cần can thiệp thủ công. MedSAM là
một ví dụ điển hình về mô hình học sâu được thiết kế cho phân đoạn hình ảnh y tế. Nó
được đào tạo trên một tập dữ liệu khổng lồ gồm hình ảnh y tế và mặt nạ phân đoạn tương
ứng, cho phép nó phân đoạn nhiều cấu trúc và tổn thương khác nhau với độ chính xác cao.
Ưu điểm của phương pháp học sâu bao gồm:
o Khả năng khái quát hóa cao: Có thể học từ một tập dữ liệu đa dạng và áp dụng
kiến thức đó cho các nhiệm vụ mới mà không cần đào tạo lại nhiều.
o Độ chính xác và độ mạnh: Đạt được kết quả tốt hơn so với các phương pháp
truyền thống trong nhiều nhiệm vụ phân đoạn.
Tuy nhiên, phương pháp học sâu cũng có một số hạn chế:
o Yêu cầu dữ liệu lớn: Cần một lượng lớn dữ liệu được đánh nhãn chất lượng cao để đào tạo mô hình.
o Tính minh bạch: Có thể khó hiểu cách mô hình đưa ra quyết định, dẫn đến lo ngại về độ tin cậy. 3. Kết luận
Phân đoạn hình ảnh y tế đóng vai trò quan trọng trong y học hiện đại. Phương pháp học
sâu đã mang đến những tiến bộ vượt bậc cho lĩnh vực này, hứa hẹn cải thiện chẩn đoán,
điều trị và theo dõi bệnh. Tuy nhiên, phương pháp truyền thống vẫn có vai trò nhất định
trong một số trường hợp. Việc lựa chọn phương pháp nào phụ thuộc vào nhiều yếu tố
như loại hình ảnh, đối tượng cần phân đoạn, độ chính xác mong muốn và nguồn lực sẵn có. IV. Experiments
Hình 7: Hình ảnh từ thí nghiệm mô hình phân đoạn MedSAM
Kết quả mà nhóm em thu được từ thí nghiệm o Phân đoạn chính xác: Mô hình
MedSAM đã phân đoạn thành công vùng quan tâm trong ảnh CT scan. Vùng màu
vàng là khu vực mà mô hình xác định và phân đoạn.
o Hộp bao: Hộp bao màu xanh lam giúp xác định vị trí và kích thước của vùng
quan tâm trước khi áp dụng phân đoạn.
o Hỗ trợ chẩn đoán: Kết quả phân đoạn này có thể hỗ trợ các chuyên gia y tế trong
việc chẩn đoán và điều trị, bằng cách cung cấp một hình ảnh rõ ràng và chi tiết về vùng cần quan tâm.
Ý nghĩa của kết quả o Hiệu quả của MedSAM: Hình ảnh minh họa hiệu quả của mô
hình MedSAM trong việc phân đoạn các vùng quan trọng trong ảnh y tế, giúp tự
động hóa quá trình này và có thể tăng độ chính xác và hiệu quả của chẩn đoán.
o Ứng dụng trong y tế: Phân đoạn hình ảnh y tế là một bước quan trọng trong nhiều
ứng dụng y khoa, bao gồm chẩn đoán bệnh, lập kế hoạch điều trị, và theo dõi tiến trình bệnh. 12
a) Giải thích
Hình ảnh bên trái (Input Image and Bounding Box):
o Đây là hình ảnh gốc của một lát cắt CT scan của vùng bụng.
o Một hộp bao (bounding box) màu xanh dương được vẽ lên vùng quan tâm trong
hình ảnh. Hộp bao này có tác dụng xác định khu vực cụ thể mà ta muốn phân đoạn (segmentation).
Hình ảnh bên phải (MedSAM Segmentation):
o Đây là kết quả phân đoạn (segmentation) sử dụng mô hình MedSAM.
o Vùng được phân đoạn nằm trong hộp bao màu xanh dương từ hình ảnh bên trái
và được tô màu vàng. Vùng này có thể là một cơ quan hoặc một tổ chức cụ thể
trong cơ thể, ví dụ như một phần của gan hoặc một khối u.
b) Chi tiết thí nghiệm
Bounding Box o Hộp bao trong hình ảnh bên trái chỉ ra vùng mà mô hình sẽ tập trung để phân đoạn.
o Kích thước và vị trí của hộp bao này được xác định thủ công hoặc tự động để bao
gồm toàn bộ khu vực quan tâm.
MedSAM Segmentation o MedSAM là một mô hình phân đoạn y tế (Medical
Segmentation AI Model) dựa trên kiến trúc SAM (Segmentation Attention Model).
o Kết quả phân đoạn là một vùng màu vàng bên trong hộp bao, thể hiện khu vực
đã được mô hình nhận diện và phân loại từ hình ảnh y tế ban đầu.
Ý nghĩa của Phân đoạn
o Quá trình phân đoạn là bước quan trọng trong xử lý hình ảnh y tế, giúp các bác
sĩ và nhà nghiên cứu xác định và đánh giá các vùng quan trọng, chẳng hạn như
các cơ quan, mô bệnh lý, hoặc khối u.
o Phân đoạn chính xác giúp hỗ trợ chẩn đoán, lập kế hoạch điều trị và theo dõi tiến triển của bệnh.
c) Mục tiêu của thí nghiệm
Phân đoạn chính xác một khu vực cụ thể trên ảnh CT scan của vùng bụng, chẳng hạn
như một cơ quan hoặc mô bệnh lý, để hỗ trợ chẩn đoán và điều trị.
d) Các bước thực hiện thí nghiệm
Hình 8: Quy trình các bước thực hiện một mô hình MedSAM (Ảnh này chỉ mang tính
chất đại diện chung cho một mô hình MedSAM nào đó)
Bước 1: Thu thập dữ liệu o Thu thập ảnh CT scan: Ảnh CT scan của vùng bụng được
thu thập từ cơ sở dữ liệu y tế.
o Chuẩn bị dữ liệu: Ảnh này có thể cần phải được xử lý trước, như chuẩn hóa cường
độ pixel và cắt bỏ các vùng không quan trọng.
Bước 2: Xác định vùng quan tâm o Vẽ hộp bao (Bounding Box): Một hộp bao được
vẽ xung quanh vùng quan tâm trên ảnh CT scan. Hộp bao này xác định khu vực cụ
thể mà mô hình sẽ tập trung để phân đoạn. Hộp bao có thể được xác định thủ công
bởi chuyên gia hoặc tự động bởi một thuật toán khác.
Bước 3: Áp dụng mô hình phân đoạn (MedSAM) o Cài đặt mô hình MedSAM: Mô
hình phân đoạn y tế MedSAM được cài đặt và cấu hình để xử lý ảnh CT scan.
o Phân đoạn: Mô hình MedSAM được áp dụng để phân đoạn khu vực bên trong
hộp bao. Mô hình sẽ nhận diện và tô màu vùng quan tâm, như được thấy trong
hình ảnh bên phải (MedSAM Segmentation).
Bước 4: Đánh giá kết quả o So sánh kết quả: Kết quả phân đoạn (vùng màu vàng)
được so sánh với kết quả thủ công hoặc kết quả từ các phương pháp khác để đánh giá độ chính xác. 14
o Hiệu chỉnh mô hình: Nếu cần thiết, mô hình MedSAM có thể được hiệu chỉnh lại
để cải thiện kết quả phân đoạn, bằng cách điều chỉnh các tham số hoặc sử dụng
thêm dữ liệu huấn luyện.
Bước 5: Sử dụng kết quả o Hỗ trợ chẩn đoán: Kết quả phân đoạn có thể được sử dụng
bởi các bác sĩ để hỗ trợ chẩn đoán và lập kế hoạch điều trị.
o Nghiên cứu khoa học: Kết quả cũng có thể được sử dụng cho các nghiên cứu
khoa học, chẳng hạn như phân tích mô bệnh lý hoặc đánh giá hiệu quả điều trị. e) Kết luận
Thí nghiệm này minh họa quy trình sử dụng mô hình MedSAM để phân đoạn hình ảnh
y tế, giúp tự động hóa quá trình nhận diện các vùng quan trọng trong ảnh CT scan. Kết
quả phân đoạn chính xác không chỉ hỗ trợ trong y tế mà còn có thể được áp dụng trong
nhiều lĩnh vực khác của nghiên cứu và phát triển. V. Code
!pip install git+https://github.com/bowang-lab/MedSAM.git import numpy as np
import matplotlib.pyplot as plt import os
join = os.path.join import torch from
segment_anything import sam_model_registry from
skimage import io, transform import torch.nn.functional as F
def show_mask(mask, ax, random_color=False): if random_color:
color = np.concatenate([np.random.random(3), np.array([0.6])], axis=0) else:
color = np.array([251/255, 252/255, 30/255, 0.6]) h,w =
mask.shape[-2:] mask_image = mask.reshape(h,w,1) *
color.reshape(1,1,-1) ax.imshow(mask_image)
def show_box(box, ax): x0, y0 = box[0], box[1] w, h = box[2] - box[0], box[3] -
box[1] ax.add_patch(plt.Rectangle((x0, y0), w, h, edgecolor='blue', facecolor=(0,0,0,0), lw=2))
@torch.no_grad() def medsam_inference(medsam_model, img_embed, box_1024, H, W): box_torch = torch.as_tensor(box_1024,
dtype=torch.float, device=img_embed.device)
if len(box_torch.shape) == 2:
box_torch = box_torch[:, None, :]
sparse_embeddings, dense_embeddings = medsam_model.prompt_encoder( points=None, boxes=box_torch, masks=None, ) low_res_logits, _ =
medsam_model.mask_decoder( image_embeddings=img_embed,
image_pe=medsam_model.prompt_encoder.get_dense_pe(),
sparse_prompt_embeddings=sparse_embeddings,
dense_prompt_embeddings=dense_embeddings, multimask_output=False, 16 )
low_res_pred = torch.sigmoid(low_res_logits)
low_res_pred = F.interpolate( low_res_pred, size=(H, W), mode="bilinear", align_corners=False, )
low_res_pred = low_res_pred.squeeze().cpu().numpy()
medsam_seg = (low_res_pred > 0.5).astype(np.uint8) return medsam_seg
img_id = '1Qf0IQF1zTwOJ4Fh4Ix5rtVhR9cnNbI2M' !gdown $img_id model_id =
"1UAmWL88roYR7wKlnApw5Bcuzf2iQgk6_&confirm=t" !gdown $model_id
MedSAM_CKPT_PATH = "medsam_vit_b.pth" device = "cuda:0" if torch.cuda.is_available(): device = "cuda:0" else:
device = "cpu" # Fallback to CPU if no GPU is available print("Warning: No
CUDA device found. Using CPU instead.") medsam_model =
sam_model_registry['vit_b'](checkpoint=MedSAM_CKPT_PATH) medsam_model
= medsam_model.to(device) medsam_model.eval()
img_np = io.imread('img_demo.png') if len(img_np.shape) == 2:
img_3c = np.repeat(img_np[:, :, None], 3, axis=-1) else: img_3c = img_np H, W, _ = img_3c.shape
img_1024 = transform.resize(img_3c, (1024, 1024), order=3, preserve_range=True,
anti_aliasing=True).astype(np.uint8) img_1024 = (img_1024 - img_1024.min()) /
np.clip( img_1024.max() - img_1024.min(), a_min=1e-8, a_max=None )
img_1024_tensor = torch.tensor(img_1024).float().permute(2, 0, 1). unsqueeze(0).
to(device) box_np = np.array([[95, 255, 190, 350]]) box_1024 = box_np / np.array([W,
H, W, H]) * 1024 with torch.no_grad(): image_embedding =
medsam_model.image_encoder(img_1024_tensor)
medsam_seg = medsam_inference(medsam_model, image_embedding, box_1024, H, W)
fig, ax = plt.subplots(1, 2, figsize=(10, 5))
ax[0].imshow(img_3c) show_box(box_np[0],
ax[0]) ax[0].set_title("Input Image and
Bounding Box") ax[1].imshow(img_3c) show_mask(medsam_seg, ax[1]) show_box(box_np[0], ax[1])
ax[1].set_title("MedSAM Segmentation") plt.show 18