|
|
||
|---|---|---|
| .. | ||
| lab | ||
| ObjectDetection.ipynb | ||
| README.md | ||
README.md
Phát Hiện Đối Tượng
Các mô hình phân loại hình ảnh mà chúng ta đã làm việc trước đây nhận một hình ảnh và đưa ra kết quả phân loại, chẳng hạn như lớp 'số' trong bài toán MNIST. Tuy nhiên, trong nhiều trường hợp, chúng ta không chỉ muốn biết rằng một bức ảnh có chứa các đối tượng - mà còn muốn xác định vị trí chính xác của chúng. Đây chính là mục tiêu của phát hiện đối tượng.
Câu hỏi trước bài giảng
Hình ảnh từ trang web YOLO v2
Một Cách Tiếp Cận Đơn Giản Để Phát Hiện Đối Tượng
Giả sử chúng ta muốn tìm một con mèo trong một bức ảnh, một cách tiếp cận rất đơn giản để phát hiện đối tượng sẽ là:
- Chia bức ảnh thành nhiều ô nhỏ.
- Chạy phân loại hình ảnh trên từng ô.
- Những ô có kết quả kích hoạt đủ cao có thể được coi là chứa đối tượng cần tìm.
Hình ảnh từ Notebook Bài Tập
Tuy nhiên, cách tiếp cận này còn xa mới đạt được lý tưởng, vì nó chỉ cho phép thuật toán xác định hộp giới hạn của đối tượng một cách rất không chính xác. Để có vị trí chính xác hơn, chúng ta cần chạy một loại hồi quy để dự đoán tọa độ của các hộp giới hạn - và để làm điều đó, chúng ta cần các tập dữ liệu cụ thể.
Hồi Quy Cho Phát Hiện Đối Tượng
Bài viết blog này cung cấp một giới thiệu nhẹ nhàng về việc phát hiện hình dạng.
Tập Dữ Liệu Cho Phát Hiện Đối Tượng
Bạn có thể gặp các tập dữ liệu sau cho nhiệm vụ này:
- PASCAL VOC - 20 lớp
- COCO - Các Đối Tượng Thông Thường Trong Ngữ Cảnh. 80 lớp, hộp giới hạn và mặt nạ phân đoạn
Các Chỉ Số Đánh Giá Phát Hiện Đối Tượng
Intersection over Union
Trong khi đối với phân loại hình ảnh, việc đo lường hiệu suất của thuật toán khá dễ dàng, thì đối với phát hiện đối tượng, chúng ta cần đo lường cả độ chính xác của lớp và độ chính xác của vị trí hộp giới hạn được suy ra. Đối với yếu tố sau, chúng ta sử dụng chỉ số Intersection over Union (IoU), đo lường mức độ chồng lấp giữa hai hộp (hoặc hai vùng bất kỳ).
Hình 2 từ bài viết blog xuất sắc về IoU này
Ý tưởng rất đơn giản - chúng ta chia diện tích giao nhau giữa hai hình cho diện tích hợp của chúng. Đối với hai vùng giống hệt nhau, IoU sẽ là 1, trong khi đối với các vùng hoàn toàn không giao nhau, nó sẽ là 0. Trong các trường hợp khác, nó sẽ dao động từ 0 đến 1. Chúng ta thường chỉ xem xét các hộp giới hạn có IoU trên một giá trị nhất định.
Độ Chính Xác Trung Bình
Giả sử chúng ta muốn đo lường mức độ nhận diện tốt của một lớp đối tượng C nào đó. Để đo lường điều này, chúng ta sử dụng chỉ số Độ Chính Xác Trung Bình (Average Precision - AP), được tính như sau:
- Xem xét đường cong Precision-Recall thể hiện độ chính xác phụ thuộc vào giá trị ngưỡng phát hiện (từ 0 đến 1).
- Tùy thuộc vào ngưỡng, chúng ta sẽ phát hiện được nhiều hay ít đối tượng trong hình ảnh, và các giá trị precision và recall sẽ khác nhau.
- Đường cong sẽ trông như thế này:
Hình ảnh từ NeuroWorkshop
Độ Chính Xác Trung Bình cho một lớp C là diện tích dưới đường cong này. Cụ thể hơn, trục Recall thường được chia thành 10 phần, và Precision được tính trung bình trên tất cả các điểm đó:
AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10})
AP và IoU
Chúng ta chỉ xem xét các phát hiện mà IoU vượt qua một giá trị nhất định. Ví dụ, trong tập dữ liệu PASCAL VOC, thường giả định \mbox{IoU Threshold} = 0.5, trong khi trong COCO, AP được đo lường cho các giá trị khác nhau của \mbox{IoU Threshold}.
Hình ảnh từ NeuroWorkshop
Độ Chính Xác Trung Bình Tổng Hợp - mAP
Chỉ số chính cho Phát Hiện Đối Tượng được gọi là Độ Chính Xác Trung Bình Tổng Hợp (Mean Average Precision - mAP). Đây là giá trị của Độ Chính Xác Trung Bình, được tính trung bình trên tất cả các lớp đối tượng, và đôi khi cũng trên cả \mbox{IoU Threshold}. Quá trình tính toán mAP được mô tả chi tiết hơn
trong bài viết blog này), và cũng ở đây với các ví dụ mã.
Các Phương Pháp Phát Hiện Đối Tượng Khác Nhau
Có hai nhóm chính của các thuật toán phát hiện đối tượng:
- Mạng Đề Xuất Vùng (R-CNN, Fast R-CNN, Faster R-CNN). Ý tưởng chính là tạo ra các Vùng Quan Tâm (ROI) và chạy CNN trên chúng, tìm kiếm kích hoạt tối đa. Điều này hơi giống với cách tiếp cận đơn giản, ngoại trừ việc các ROI được tạo ra một cách thông minh hơn. Một trong những nhược điểm lớn của các phương pháp này là chúng chậm, vì cần nhiều lần chạy bộ phân loại CNN trên hình ảnh.
- Một Lần Duy Nhất (YOLO, SSD, RetinaNet). Trong các kiến trúc này, chúng ta thiết kế mạng để dự đoán cả lớp và ROI trong một lần chạy.
R-CNN: Mạng CNN Dựa Trên Vùng
R-CNN sử dụng Selective Search để tạo ra cấu trúc phân cấp của các vùng ROI, sau đó được đưa qua các bộ trích xuất đặc trưng CNN và các bộ phân loại SVM để xác định lớp đối tượng, và hồi quy tuyến tính để xác định tọa độ hộp giới hạn. Bài báo chính thức
Hình ảnh từ van de Sande et al. ICCV’11
Hình ảnh từ bài blog này
F-RCNN - Fast R-CNN
Phương pháp này tương tự như R-CNN, nhưng các vùng được xác định sau khi các lớp tích chập đã được áp dụng.
Hình ảnh từ Bài báo chính thức, arXiv, 2015
Faster R-CNN
Ý tưởng chính của phương pháp này là sử dụng mạng nơ-ron để dự đoán các ROI - gọi là Mạng Đề Xuất Vùng (Region Proposal Network). Bài báo, 2016
Hình ảnh từ bài báo chính thức
R-FCN: Mạng Tích Chập Hoàn Toàn Dựa Trên Vùng
Thuật toán này thậm chí còn nhanh hơn Faster R-CNN. Ý tưởng chính là:
- Trích xuất đặc trưng bằng ResNet-101.
- Các đặc trưng được xử lý bởi Bản Đồ Điểm Nhạy Cảm Vị Trí. Mỗi đối tượng từ
Clớp được chia thànhk\times kvùng, và chúng ta huấn luyện để dự đoán các phần của đối tượng. - Đối với mỗi phần từ
k\times kvùng, tất cả các mạng bỏ phiếu cho các lớp đối tượng, và lớp đối tượng có số phiếu cao nhất được chọn.
Hình ảnh từ bài báo chính thức
YOLO - You Only Look Once
YOLO là một thuật toán một lần duy nhất thời gian thực. Ý tưởng chính là:
- Hình ảnh được chia thành
S\times Svùng. - Đối với mỗi vùng, CNN dự đoán
nđối tượng có thể, tọa độ hộp giới hạn và độ tin cậy = xác suất * IoU.
Hình ảnh từ bài báo chính thức
Các Thuật Toán Khác
- RetinaNet: bài báo chính thức
- Triển khai PyTorch trong Torchvision
- Triển khai Keras
- Phát Hiện Đối Tượng với RetinaNet trong Keras Samples
- SSD (Single Shot Detector): bài báo chính thức
✍️ Bài Tập: Phát Hiện Đối Tượng
Tiếp tục học trong notebook sau:
Kết Luận
Trong bài học này, bạn đã có một cái nhìn tổng quan về các cách khác nhau để thực hiện phát hiện đối tượng!
🚀 Thử Thách
Đọc qua các bài viết và notebook về YOLO và thử nghiệm chúng:
- Bài blog hay mô tả YOLO
- Trang web chính thức
- Yolo: Triển khai Keras, notebook từng bước
- Yolo v2: Triển khai Keras, notebook từng bước
Câu hỏi sau bài giảng
Ôn Tập & Tự Học
- Phát Hiện Đối Tượng của Nikhil Sardana
- So sánh tốt về các thuật toán phát hiện đối tượng
- Đánh giá các thuật toán học sâu cho phát hiện đối tượng
- Giới thiệu từng bước về các thuật toán phát hiện đối tượng cơ bản
- Triển khai Faster R-CNN trong Python cho phát hiện đối tượng
Bài tập: Phát Hiện Đối Tượng
Tuyên bố miễn trừ trách nhiệm:
Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI Co-op Translator. Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn tham khảo chính thức. Đối với các thông tin quan trọng, chúng tôi khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này.









