---
# System prepended metadata

title: Object Detection Develop History-2
tags: [SAR, Object Detection, Deep learning, review]

---

# Object Detection Develop History-2

==Two Stage Method ==
stage 1 = region proposal
stage 2 = feature extract + bounding box

R-CNN
Fast R-CNN
Faster R-CNN
R-FCN

R-CNN
===

==Selective Search==
1. Selective Search
   傳統的Computer Vision會先把照片分成很多個小的region
   接著透過紋理//色彩等進行鄰近region的相似度測試，相似度高的---> 合併成新的region
   重複合併直到整張圖沒辦法再合併出一個新的region
   屬於階層式的作法
2. 用Selective Search 之後傳統方式是找region經過分類後分數較高的幾個出來，缺點是proposal可能會重疊
![](https://i.imgur.com/K6IjGtq.jpg)

==What did R-CNN DONE?==
:::warning
Selective Search ---> Rescale Region Proposal ---> CNN 
:::
![](https://i.imgur.com/X4XUuwV.png)

1. Rescale Region Proposal to 227x227: CNN use ImageNet(AlexNet)
2. 若SVM判斷為背景 ---> 不用做任何事
3. 若SVM判斷為物體 ---> 用Regression判斷物體框框位置與ground truth框框的差距
![](https://i.imgur.com/RhTSSFo.png)

---

IOU
===
Intersection of units
= (Predict Bounding Box 與 Ground Truth的交集面積)除以兩個BOX的聯集面積

IOU越大越好(越接近1) ---> 交集區域愈大 = 聯集區域愈小
會設一個threshold值來判定是否有偵測到物件: ex. IOU>0.5
![](https://i.imgur.com/ZRR0Wbq.png)

CNN: 對IOU要求不高，約0.5就可以找到物體，但也是容易overfitting
SVM: 正樣本在圖片中算是少數，SVM較適合這種少樣本的訓練，IOU約0.7比較適合
![](https://i.imgur.com/k3Nk2hg.png)



Non Maximum Suppresion
===
當最後的bounding box被生產出來，可能非常多個，占滿了整張圖片
其中有不少重疊或是可信度不高的box
所以可以用這個技巧(非極大值抑制)

選擇一個具有最高信心的眶，並刪除與這個框有一定重疊率的其他框
重疊率可以自行設定,ex 0.6


==Fast R-CNN==

將Region proposal之後的步驟都用在同一個網路來加速運算
並且設計更為合理(R-CNN 的 SVM & Bounding Box 的loss無法回傳到前面找feature的CNN)

==ROI Pooling==
因為CNN的輸入必須是相同的大小，所以用ROI Pooling 來達到統一大小
以下例子是要輸出2x2大小的feature map
ROI area = 7x5
所以將ROI分成4塊(2x2)
然後每一塊都做maxpooling(avg pooling 也是可以)
然後就取這4塊的max當作2x2的feature map輸出
![](https://i.imgur.com/SZ6pRTI.png)

----

Fast R-CNN訓練階段
===
分類和BOX回歸的LOSS要加在一起，實驗結果顯示表現更好
![](https://i.imgur.com/O9O2ueB.png)

---

==Faster R-CNN==
:::info
是時候把Selective Search用CNN取代了，因為還不夠快
接著feature也應該整張圖只算一次就交給region proposal + bounding box使用
:::
![](https://i.imgur.com/TANeBpp.png)

==CNN的region proposal==

透過事先定義好的9個anchor box
以sliding window的方式取找可能的anchor point(anchor box中心點)
找到中心點後記錄分數，有k個box---> 2k個分數(是否是物體) + 4k個數字(x,y,w,h)
*x,y是box的==左上座標==*
![](https://i.imgur.com/VCQ714s.png)
example
![](https://i.imgur.com/FAzJXIw.png)

cons: 對小物體的辨識不友好

---

==R-FCN==
Faster R-CNN還是不夠快
因為還是有地方不是共用CNN
為何不能共用?
:::success
classification = translation invariance = 位置不重要，只要知道是哪個物體就行
不管物體今天在照片的哪個地方，對它來說都一樣

object detection = translation variance = 位置重要
:::

![](https://i.imgur.com/72X1JIH.png)

R-FCN 決定第二部分所有的CNN都共用
在REGION PROPOSAL中對位置進行編碼，分成k x k個區域
之後在feature map 之後得到一個 k^2 x (C+1) 厚度的CNN
C = 物體總數
C + 1 = 加入一類 -->  背景
![](https://i.imgur.com/LODlmeg.jpg)
:::info
將人分為9個區域，中上區域是人的頭，愈亮代表分數愈高
概念是: 今天一個物體被區分成9分，每一份應該都含有可以被辨識的一些特徵(亮的地方)
若今天一張Proposal，9個區域內只有一兩個區域是亮的，那就代表: 
很多區域沒有被偵測到特徵 ----> 這就不是一個好的proposal
:::

那投票機制?
===
設有20類物體 + 1 類背景
k = 3
所以一個proposal的位置會產生厚度為3x3x21的feature map
將每一層feature map 9個格子的值去取平均
然後找出分數最高的那一個(21個平均值一起比) ---> 這個proposal就是該類


###### tags: `SAR` `Deep learning` `Object Detection` `review` 
