# 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`