Giới thiệu Introduction● Giới thiệu về bài toán: Trong lĩnh vực thị giác máy tính, nhận diện đối tượng và phân đoạn đối tượng là hai nhiệm vụ cơ bản nhưng quan trọng, ảnhhưởng đến nhiều
Trang 1TRƯỜNG ĐẠI HỌC PHENIKAA
KHOA CÔNG NGHỆ THÔNG TIN
Trang 219/11/2024 – Hà Nội
Trang 3Mục lục
Liệt kê các mục lớn và mục con cùng số trang tương ứng
Trang 5Danh sách hình vẽ
1 Hình 1 vẽ hình đẹp
2 Hình 2 nội dung gì3
Trang 7Danh sách bảng biểu
1 Bảng 1
2
3
Trang 91 Giới thiệu ( Introduction)
● Giới thiệu về bài toán: Trong lĩnh vực thị giác máy tính, nhận diện đối
tượng và phân đoạn đối tượng là hai nhiệm vụ cơ bản nhưng quan trọng, ảnhhưởng đến nhiều ứng dụng thực tế, như hệ thống giám sát an ninh, phân tíchvideo, xe tự lái, và trong y tế để phân tích hình ảnh X-quang hoặc MRI Bàitoán Dynamic Object Detection and Segmentation tập trung vào phát hiệnđối tượng trong môi trường động (chẳng hạn trong video) và phân đoạnchính xác từng đối tượng, giúp phân tích chi tiết và phục vụ các ứng dụngyêu cầu độ chính xác cao
● Lý do chọn đề tài: Với sự phát triển mạnh mẽ của trí tuệ nhân tạo và thị
giác máy tính, nhu cầu về các mô hình có thể xử lý thông tin trực quan vớitốc độ và độ chính xác cao ngày càng tăng Đặc biệt trong môi trường động,việc phát hiện và phân đoạn đối tượng là một thách thức, khi mà các đốitượng có thể thay đổi vị trí, hình dạng hoặc thậm chí bị che khuất Đề tài này
sử dụng mô hình YOLOv9 để nhận diện đối tượng và kết hợp với SAM(Segment Anything Model) để thực hiện phân đoạn đối tượng, cung cấp giảipháp toàn diện cho bài toán
● Mô tả vấn đề nghiên cứu: Bài toán đặt ra là phát hiện và phân đoạn các đối
tượng trong một cảnh quay hoặc hình ảnh, nơi các đối tượng có thể thay đổitheo thời gian và không gian Việc nhận diện chính xác và phân đoạn chi tiếtmỗi đối tượng là điều kiện cần để ứng dụng vào các bài toán như phân tíchhành vi đối tượng, nhận diện trong môi trường phức tạp, và nhiều ứng dụngkhác
● Các phương pháp và công nghệ sử dụng:
o YOLOv9 (You Only Look Once) là một trong những mô hình tiêntiến trong lĩnh vực phát hiện đối tượng, nổi bật với khả năng xử lý ảnh
và video nhanh chóng và chính xác
o SAM (Segment Anything Model) là một mô hình phân đoạn mạnh
mẽ, có khả năng phân đoạn các đối tượng với độ chính xác cao màkhông cần huấn luyện lại cho từng đối tượng riêng biệt
o PyTorch: Đây là framework học sâu mạnh mẽ mà chúng tôi sử dụng
để huấn luyện và triển khai mô hình
o OpenCV và Matplotlib: Được dùng để xử lý ảnh và trực quan hóa kếtquả
● Mục tiêu của báo cáo: Mục tiêu của báo cáo này là nghiên cứu và triển khai
giải pháp kết hợp YOLOv9 và SAM để giải quyết bài toán nhận diện vàphân đoạn động Báo cáo sẽ đánh giá hiệu suất của mô hình qua các chỉ sốđánh giá hiệu năng, đồng thời phân tích các kết quả thu được từ các thínghiệm
2 Cơ sở lý thuyết (Background)
● Các khái nhiệm cơ bản:
o YOLO (You Only Look Once): YOLO là một trong những mạng học
Trang 10sâu tiên tiến được sử dụng rộng rãi trong phát hiện đối tượng Mô hình
Trang 11này chia ảnh thành các lưới và dự đoán các bounding box cho các đốitượng trong từng ô lưới YOLOv9 là phiên bản mới nhất của YOLO,cải tiến hiệu suất với nhiều công nghệ mới như cải thiện độ chính xác
và tốc độ
o Phân đoạn đối tượng: Phân đoạn là quá trình xác định các vùng ảnh
tương ứng với các đối tượng Một trong những kỹ thuật phân đoạnhiện đại là masking, nơi mỗi đối tượng sẽ được bao phủ bởi một mặt
nạ (mask) đặc trưng
o SAM (Segment Anything Model): SAM là mô hình phân đoạn mạnh
mẽ của Meta, có thể phân đoạn bất kỳ đối tượng nào trong ảnh màkhông cần huấn luyện cụ thể cho mỗi đối tượng SAM có thể nhậndiện các đối tượng bằng cách sử dụng hộp giới hạn (bounding box)hoặc điểm chỉ dẫn
● Các phương pháp trước đây:
o YOLO Version 1, 2, 3, 4, 5, 6, 7, 8: Những phiên bản trước của
YOLO cũng rất mạnh mẽ trong việc phát hiện đối tượng, nhưng khảnăng phân đoạn hạn chế Các mô hình này chủ yếu dựa vào boundingboxes để xác định các đối tượng
o Mask R-CNN: Đây là một trong những mô hình phân đoạn nổi tiếng,
được xây dựng dựa trên Faster R-CNN nhưng cải tiến thêm khả năngphân đoạn chính xác Tuy nhiên, tốc độ của Mask R-CNN chưa thểđáp ứng yêu cầu về thời gian thực cho các ứng dụng như video phântích
Trang 12So sánh hiệu suất của YOLOv9 với các phiên bản cũ
Trang 133 Phương pháp đề xuất(Methodology)
3.1 Bài toán
● Bài toán đặt ra là phát hiện và phân đoạn các đối tượng trong ảnh và video.Chúng em sẽ kết hợp mô hình YOLOv9 để nhận diện các đối tượng và sử.dụng SAM để phân đoạn chi tiết từng đối tượng đã phát hiện
3.2 Mô hình và thuật toán
● YOLOv9:
○ Tổng quan về YOLOv9: YOLOv9, như các phiên bản trước của
YOLO, sử dụng một mạng nơ-ron duy nhất để phân tích toàn bộ hìnhảnh và dự đoán các bounding boxes (hộp giới hạn) cho các đối tượng,đồng thời xác định xác suất của các lớp đối tượng Tuy nhiên,YOLOv9 đã được cải tiến để xử lý những thách thức khó khăn hơntrong phát hiện đối tượng và phân đoạn, với khả năng nhận diện đốitượng động (dynamic object detection), tức là nhận diện các đối tượngthay đổi và di chuyển trong không gian
○ Cấu trúc mô hình YOLOv9:
■ Mạng Nơ-ron chính (Backbone): YOLOv9 sử dụng một mạng
nơ-ron CNN mạnh mẽ làm phần lõi (backbone), có nhiệm vụtrích xuất các đặc trưng của hình ảnh Các đặc trưng này làthông tin quan trọng để mô hình hiểu được các đối tượng tronghình ảnh Trong YOLOv9, phần backbone có thể là một cấu
Trang 14trúc đã được tối ưu hóa hơn so với các phiên bản cũ, có thể bao
Trang 15gồm các lớp sâu hơn và cải tiến, giúp mô hình phát hiện đốitượng tốt hơn.
■ Neck (Cổ): Sau khi các đặc trưng được trích xuất từ phần
backbone, YOLOv9 sử dụng một phần mô hình gọi là neck để
xử lý các đặc trưng này thêm nữa Các công cụ như PANet(Path Aggregation Network) hay FPN (Feature PyramidNetwork) được sử dụng trong phần này để tối ưu hóa việc kếthợp các đặc trưng từ các tầng khác nhau trong mạng nơ-ron,giúp mô hình nhận diện đối tượng ở nhiều tỉ lệ khác nhau tronghình ảnh
■ Head (Đầu): Đây là phần cuối của YOLOv9, nơi mô hình đưa
ra dự đoán cuối cùng Các dự đoán này bao gồm các boundingboxes, lớp đối tượng, và xác suất cho mỗi lớp Phần head có thể
sử dụng các phương pháp như multi-scale prediction để nhậndiện đối tượng ở các kích thước khác nhau, đồng thời tối ưu hóacác dự đoán thông qua việc sử dụng hàm mất mát (lossfunction) như IoU Loss, Confidence Loss, và ClassificationLoss
■ Dynamic Object Detection (Nhận diện đối tượng động):
YOLOv9 được tối ưu hóa để phát hiện các đối tượng động,nghĩa là các đối tượng có thể thay đổi vị trí, hình dạng và tìnhtrạng trong suốt quá trình theo dõi Điều này làm cho YOLOv9đặc biệt hiệu quả trong các ứng dụng yêu cầu phát hiện đốitượng trong video hay cảnh quay động, như giám sát giaothông, tự lái xe, hay phân tích hành vi
● SAM:
○ Tổng quan về SAM: Segmentation Anything Model (SAM) là một
mô hình phân đoạn hình ảnh mạnh mẽ và linh hoạt, được phát triển đểphân đoạn tất cả các đối tượng trong một hình ảnh mà không cần yêucầu huấn luyện riêng biệt cho mỗi loại đối tượng SAM có thể phânđoạn mọi loại đối tượng, từ các đối tượng cụ thể như xe hơi, người,cho đến các đối tượng trừu tượng, tất cả trong một mô hình duy nhất
Mô hình này kết hợp các công nghệ tiên tiến của thị giác máy tính,bao gồm học sâu và cơ chế chú ý (attention mechanism) để tự độngphát hiện và phân đoạn bất kỳ đối tượng nào trong hình ảnh
Trang 17○ Cấu trúc mô hình của SAM:
Sơ đồ kiến trúc của SAM
■ Mạng Nơ-ron Convolutional (CNN) Pre-trained: SAM sử
dụng một mạng nơ-ron convolutional (CNN) đã được huấnluyện trước để trích xuất đặc trưng từ ảnh đầu vào Mạng CNNnày giúp nhận dạng các đặc trưng không gian của đối tượngtrong ảnh, ví dụ như các cạnh, hình dạng, màu sắc và kết cấu
■ Cơ Chế Chú Ý (Attention Mechanism): Một yếu tố quan trọng
trong SAM là cơ chế chú ý không gian (spatial attentionmechanism), giúp mô hình tập trung vào các vùng quan trọngtrong ảnh Điều này giúp cải thiện độ chính xác của phân đoạnđối tượng, đặc biệt trong các tình huống khi đối tượng có kíchthước nhỏ hoặc có sự thay đổi mạnh trong hình ảnh
■ Phân Đoạn Bất Kỳ (Any Object Segmentation): SAM không
yêu cầu huấn luyện cho mỗi loại đối tượng riêng biệt, mà có thểphân đoạn bất kỳ đối tượng nào trong hình ảnh Khi người dùngchỉ định một vùng quan tâm (ví dụ, thông qua một hộp giới hạn(bounding box) hoặc điểm đánh dấu), SAM sẽ tạo ra phân đoạnchính xác cho đối tượng trong khu vực đó
■ Bản Đồ Chú Ý Không Gian (Spatial Attention Map): Một bản
đồ chú ý không gian được sinh ra trong quá trình tính toán phânđoạn Bản đồ này sẽ xác định vùng nào trong ảnh chứa đốitượng cần phân đoạn Mô hình sẽ tập trung vào các vùng có tỷ
lệ chú ý cao và bỏ qua các vùng có tỷ lệ chú ý thấp
■ Tạo Mask Phân Đoạn: Sau khi tính toán bản đồ chú ý không
gian, SAM sử dụng thông tin này để tạo ra mask phân đoạn chođối tượng trong hình ảnh Mask này sẽ xác định chính xác cácpixel thuộc về đối tượng, từ đó giúp phân đoạn đối tượng hiệuquả
■ Đầu Ra - Mask Phân Đoạn: Cuối cùng, mô hình SAM cung
cấp kết quả phân đoạn cho mọi đối tượng trong ảnh, bao gồmmask phân đoạn cho mỗi đối tượng, cùng với các điểm quantrọng như độ tin cậy (confidence score) và tên đối tượng nếu có
● Các siêu tham số của mô hình và cách bạn lựa chọn chúng:
○ Kích thước ảnh (Image Size): Kích thước ảnh đầu vào ảnh hưởng
trực tiếp đến thời gian huấn luyện và khả năng phát hiện đối tượngcủa mô hình Thường sử dụng các kích thước như [640, 640] hoặc[416, 416] để cân bằng giữa độ chính xác và tốc độ Trong bài toánnày, chúng tôi sử dụng kích thước [640, 640] để có sự cân bằng tốtgiữa chi tiết và tốc độ xử lý
○ Conf Thresh (Ngưỡng xác suất): Đây là ngưỡng quyết định liệu một
đối tượng có được phát hiện hay không dựa trên xác suất mà mô hìnhđưa ra Một ngưỡng thấp (ví dụ 0.1) giúp phát hiện nhiều đối tượnghơn nhưng có thể bao gồm nhiều lỗi, trong khi ngưỡng cao (ví dụ 0.5)giúp giảm lỗi nhưng có thể bỏ lỡ một số đối tượng Trong bài toánnày, chúng tôi lựa chọn ngưỡng xác suất là 0.1 để tăng khả năng phát
Trang 18y, g ự ọ g g g g phiện các đối tượng nhỏ và khó nhận diện.
Trang 19○ IoU Thresh (Ngưỡng Intersection over Union): Được sử dụng để lọc
các bounding box chồng lấp IoU là thước đo độ chính xác trong việcchồng lấp các hộp giới hạn Ngưỡng phổ biến là 0.45, giúp loại bỏ cácđối tượng không chính xác trong khi vẫn giữ được các đối tượng cóxác suất cao
○ Số Epochs và Batch Size: Số lượng epoch quyết định số lần mô hình
được huấn luyện trên toàn bộ dữ liệu, trong khi batch size quyết định
số lượng mẫu được xử lý trong một lần cập nhật trọng số Thôngthường, batch size có thể là 16, 32, hoặc 64, tùy thuộc vào dung lượng
bộ nhớ và kích thước của dữ liệu Chúng tôi chọn batch size là 16 và
số epoch là 50 để đảm bảo mô hình có đủ thời gian học nhưng khôngquá lâu gây lãng phí tài nguyên
○ Learning Rate: Learning rate quyết định tốc độ cập nhật trọng số của
mô hình trong mỗi bước huấn luyện Một learning rate quá lớn có thểkhiến mô hình học không ổn định, trong khi một learning rate quá nhỏ
có thể khiến mô hình học chậm Trong bài toán này, learning rateđược chọn là 0.001, dựa trên các thí nghiệm trước đó
● Cách mô hình hoạt động:
○ Tiền xử lý dữ liệu: Dữ liệu hình ảnh được tải lên và tiền xử lý như
chuẩn hóa kích thước, thay đổi tỷ lệ và chuẩn hóa màu sắc
○ Dự đoán đối tượng: Mô hình YOLOv9 xử lý hình ảnh đầu vào và dự
đoán các bounding box cho các đối tượng
○ Áp dụng Spatial Attention: SAM được áp dụng để chú ý đến các khu
vực quan trọng trong hình ảnh, đặc biệt là các đối tượng động
○ Phân đoạn và nhận diện: Các đối tượng và vùng quan trọng được
phân đoạn, và các kết quả được trình bày
● Công cụ và thư viện:
○ PyTorch: Được sử dụng để xây dựng và huấn luyện mô hình
YOLOv9 và SAM
○ OpenCV: Được sử dụng để xử lý ảnh và tiền xử lý dữ liệu.
○ Matplotlib: Được sử dụng để trực quan hóa kết quả phân đoạn và
nhận diện
● Môi trường làm việc:
○ Phần cứng: GPU NVIDIA Tesla V100 để tăng tốc quá trình huấn
luyện
○ Phần mềm: Python 3.8, PyTorch, OpenCV, Matplotlib.
4 Thực Nghiệm (Experiments)
● Dữ liệu đầu vào và xử lý dữ liệu:
○ Chuẩn bị môi trường và tài nguyên cần thiết để làm việc với mô
Trang 20hình YOLOv9
Trang 21○ Kết nối Google Drive: Giúp truy cập dữ liệu lưu trữ trên Google
○ Cài đặt thư viện yêu cầu: Đảm bảo các thư viện cần thiết được cài đặt.
○ Lấy đường dẫn thư mục hiện tại: Dễ dàng tham chiếu đến thư mục
làm việc trong các bước tiếp theo
○ Tải xuống các tệp trọng số (weights) cần thiết cho mô hình YOLOv9
○ Tạo thư mục lưu trữ trọng số: Đảm bảo các tệp trọng số được lưu ở
một vị trí dễ quản lý
○ Tải trọng số từ GitHub:
■ Mỗi tệp trọng số đại diện cho một phiên bản mô hình đã được
huấn luyện trước, sẵn sàng sử dụng để phát hiện hoặc phân đoạn đối tượng
Trang 22■ Các tệp trọng số được lưu cục bộ để sử dụng trong các bước
tiếp theo mà không cần tải lại
Trang 23● Thiết lập thí nghiệm:
○ Dữ liệu: Bộ dữ liệu hình ảnh từ Roboflow.
○ Các tham số huấn luyện: Learning rate = 0.001, batch size = 16, số
epoch = 50
○ Thuật toán tối ưu hóa: Adam optimizer.
● Quy trình huấn luyện và kiểm tra:
○ Phát hiện đối tượng với YOLOv9:
○ Tải mô hình và trọng số: Tệp gelan-c.pt được tải vào để thiết lập mô
hình YOLO
○ Xử lý hình ảnh đầu vào: Hình ảnh được đọc, chuẩn bị, và đưa qua mô
hình để phân tích và đặt ngưỡng độ tin cậy là 0.1 giúp phát hiện nhiềuđối tượng hơn
○ Phát hiện đối tượng
■ Dự đoán bounding boxes (hộp bao quanh đối tượng) cho các
đối tượng có trong ảnh
■ Gắn nhãn (label) các đối tượng dựa trên tập class mà mô hình
đã được huấn luyện
○ Lưu kết quả
■ Kết quả phát hiện được lưu trong thư mục mặc định (thường là
runs/detect/exp/) dưới dạng hình ảnh và tệp txt bao gồm cảđiểm số độ tin cậy cho từng đối tượng được phát hiện
Trang 25○ Sử dụng IPython.display để hiển thị hình ảnh đầu ra từ thư mục kết
quả Hình ảnh được điều chỉnh chiều rộng xuống 600 pixel để thuậntiện hơn khi xem trong notebook, cung cấp xác nhận trực quan về kếtquả phát hiện được thực hiện bởi mô YOLOv9:
Trang 27○ Phân đoạn với SAM:
○ Xử lý tệp văn bản đầu ra của YOLOv9
■ Đọc ảnh và lấy kích thước ảnh
■ Đọc tệp kết quả phát hiện từ YOLOv9
■ Chuyển đổi tọa độ chuẩn hóa thành tọa độ thực tế
■ Lưu và in thông tin
○ Khởi tạo Spatial Attention Module để phân đoạn ảnh sử dụng thư viện
Segment-Anything Nó chỉ định đường dẫn đến trọng số đã được huấnluyện trước (sam_vit_h_4b8939.pth) và chọn loại mô hình vit_h từsam_model_registry Sau đó, nó tạo một thể hiện của mô hình SAMvới trọng số đã được tải Cuối cùng, một SamPredictor được khởi tạo
với mô hình SAM, làm cho nó sẵn sàng để tạo ra các mặt nạ phânđoạn cho các đối tượng đã được phát hiện trong ảnh Cài đặt này làcần thiết để áp dụng phân đoạn chi tiết, nâng cao kết quả của các tác
vụ phát hiện đối tượng
○ Đọc và chuyển đổi ảnh, sau đó cung cấp ảnh cho SAM Predictor (đối
tượng predictor) để chuẩn bị cho quá trình dự đoán phân đoạn Nếu
Trang 28ợ g p ) ị q ự p ạ
Trang 29ảnh không được chuyển sang không gian màu RGB hoặc không đượccung cấp đúng định dạng, mô hình có thể hoạt động không chính xác.
○ Kết hợp YOLOv9 và SAM
○ Đọc nhãn lớp từ tệp YAML
○ Tạo ánh xạ màu sắc cho mỗi lớp: Một dictionary ánh xạ mỗi lớp đối
tượng (class ID) với một màu RGBA ngẫu nhiên (RGB + độ trong
suốt alpha = 0.6)
○ Hiển thị mặt nạ
○ Hiển thị hộp chứa