Skip to content

Latest commit

 

History

History
179 lines (101 loc) · 12.3 KB

File metadata and controls

179 lines (101 loc) · 12.3 KB

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 đích của phát hiện đối tượng.

Phát Hiện Đối Tượ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à:

  1. Chia bức ảnh thành nhiều ô nhỏ.
  2. Chạy phân loại hình ảnh trên từng ô.
  3. 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.

Phát Hiện Đối Tượng Đơn Giản

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ể.

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 bao và mặt nạ phân đoạn

COCO

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, 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ỳ).

IoU

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.

Độ 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:

  1. 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).
  2. 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.
  3. Đườ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 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: 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 bao. Bài báo chính thức

RCNN

Hình ảnh từ van de Sande et al. ICCV’11

RCNN-1

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.

FRCNN

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 - được gọi là Mạng Đề Xuất Vùng (Region Proposal Network). Bài báo, 2016

FasterRCNN

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à:

  1. Chúng ta trích xuất đặc trưng bằng ResNet-101.
  2. 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.
  3. Đố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.

r-fcn image

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 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độ tin cậy = xác suất * IoU.

YOLO

Hình ảnh từ bài báo chính thức

Các Thuật Toán Khác

✍️ Bài Tập: Phát Hiện Đối Tượng

Tiếp tục học trong notebook sau:

ObjectDetection.ipynb

Kết Luận

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!

🚀 Thử Thách

Đọc qua các bài viết và notebook về YOLO và thử nghiệm chúng:

Ôn Tập & Tự Học