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 đích của phát hiện đối tượng.
Hình ảnh từ trang web YOLO v2
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 bao đố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 bao - và để làm điều đó, chúng ta cần các tập dữ liệu cụ thể.
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.
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 bao và mặt nạ phân đoạn
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, cũng như độ chính xác của vị trí hộp bao đượ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 khu vực 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 khu vực giống hệt nhau, IoU sẽ là 1, trong khi đối với các khu vực 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 bao có IoU vượt qua một giá trị nhất đị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
- 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 hoặc ít đối tượng trong hình ảnh, và các giá trị precision và recall 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
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
Hình ảnh từ NeuroWorkshop
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ả
Có hai loại thuật toán phát hiện đối tượng chính:
- 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.
- Các phương pháp 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 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 bao. 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
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
Ý 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 - được 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
Thuật toán này thậm chí còn nhanh hơn Faster R-CNN. Ý tưởng chính là:
- Chúng ta 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ừ
$C$ lớp được chia thành các vùng$k\times k$ , 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ừ các vùng
$k\times k$ , 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 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 các vùng
$S\times S$ . - Đối với mỗi vùng, CNN dự đoán
$n$ đối tượng có thể, tọa độ hộp bao và độ tin cậy = xác suất * IoU.
Hình ảnh từ bài báo chính thứ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
Tiếp tục học trong notebook sau:
Trong bài học này, bạn đã có một cái nhìn tổng quan nhanh về tất cả các cách khác nhau mà phát hiện đối tượng có thể được thực hiện!
Đọ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
- 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











