這篇文章是學習時整理的一些筆記,讓自己複習時方便,文章內容原文於文末參考

Introduction

目前的物件偵測 Object Detection 演算法主要分為兩部分: Two-stage vs One-stage、Anchor-based vs Anchor-free

ob
figure source

Two-stage

在電腦視覺物件偵測中,一般作法都是先用特殊方法(比如Selective Search)先選出物件,然後針對選出的物件(Region Proposals)再進行物件辨識 (選出物件的過程稱為Region Proposal)。

但因為選出的物件大小可能不一樣,所以物件辨識有可能只有分類,也可能包含特徵擷取加分類。
這種需要先找出Region Proposal然後再做辨識的做法通常就稱為two stage learning。
ob
Figure source

這類two stage的方法通常有一個問題是如果選出來的物件太多,假設一張圖選出一千個物件,後面的辨識就用重複做一千次(如下圖),假設辨識的部分用了一個很複雜的辨識系統,比如一個物件辨識要0.1秒,那一千個物件就要100秒了,除非你用一個很強的GPU平行運算,那還可能減低運算時間,但如果是手機這類型的算法幾乎沒辦法做到即時運算,因此才有one stage的方法。

Two stage 物件偵測的方法比較有名的方法為 Region-based convolutional neural network:

  1. 最早的 R-CNN
  2. 改良版 fast R-CNN
  3. 進化版 faster R-CNN

One-stage

One-stage Learning從名稱就很主觀,物件位置偵測和物件辨識一步到位,也就是一個神經網路能同時偵測物件位置也可以辨識物件,如同Google在2015年12月提出Single Shot Detector (SSD),Google在文章摘要第一句話就寫「We present a method for detecting objects in images using a single deep neural network.」,一個深度神經網路就可以做完所有的物件偵測。
ob
這種方式通常速度很快,但整體辨識精度可能沒有two stage的方法來的好,但整體辨識率仍在可接受範圍內,因此One stage的方法是目前比較多人研發用在行動裝置上的方法。

One stage 物件偵測的方法比較有名的方法為:

  1. YOLO (You only look once)系列: YOLOv1, YOLOv2, YOLOv3, Tiny YOLO
  2. Single Shot Detector (SSD)

Two-stage vs One-stage

早期演算法以 Two-stage 為大宗,但因為物件位置檢測與分類分開進行,造成速度上有一定的限制,代表演算法有 RCNN、 Fast-RCNN和 Faster-RCNN

RCNN相關文章筆記指路

為了改善剛剛說的 Two-stage 檢測速度問題,而有了 One-stage 演算法。作法是將物件位置檢測與分類同時進行,代表演算法有 YOLO、SSD、RetinaNet、EfficientDet

YOLO相關文章筆記指路

References

  1. 物件偵測 Object Detection 概述
  2. 深度學習-什麼是one stage,什麼是two stage 物件偵測