Saturday, June 19, 2021

PFPNet(三):Illustrated

  PFPNet(三):Illustrated

2021/04/08

-----


https://pixabay.com/zh/%E6%9D%B1%E6%B5%B7%E5%A4%A7%E5%AD%B8-%E6%95%99%E5%A0%82-%E7%90%89%E7%92%83%E7%93%A6-%E5%BB%BA%E7%AD%91-%E7%8E%B0%E4%BB%A3-%E5%B1%8B%E9%A1%B6-%E4%BA%A4%E5%8F%89-%E5%AE%97%E6%95%99-1937884/

-----


# Deep learning for generic object detection: A survey

說明:

2005 HOG 用 SVM 分類固定大小的圖片。

2008 DPM 用 SVM 分類照片中部分區域的圖片(可搭配 SS 或 R-CNN)。

◎ 2011 SS 提供約兩千個建議框(可搭配 DPM 或 R-CNN 或 Fast R-CNN)。

2014 R-CNN

2015 Fast R-CNN

2015 Faster R-CNN

-----


# Object Detection in 20 Years: A Survey

說明:

2005 HOG

2008 DPM

2014 R-CNN

◎ 2015 SPPNet(RoI Region of Interest,被 Fast R-CNN 與 Faster R-CNN 使用)。

2015 Fast R-CNN

2015 Faster R-CNN

-----


# A Survey of Deep Learning-based Object Detection

說明:

Two-stage and one-stage。

-----


Modified from # A Survey of Deep Learning-based Object Detection

說明:

一、主架構。Faster R-CNN 提供建議框。R-CNN 抽取特徵。Fast R-CNN 利用抽取的特徵進行分類與回歸。

二、RPN 架構。

1. 分類為有物件或無物件兩類。回歸先做一次。

2. 「而最後的 Proposal 層則負責綜合 positive anchors 和對應 bounding box regression 偏移量獲取 proposals,同時剔除太小和超出邊界的 proposals。其實整個網路到了 Proposal Layer 這裡,就完成了相當於目標定位的功能。」回歸在正式分類還會再做一次,細調。

3. anchors 共有幾個?以 800 x 600 為例:向上取整數(800/16) x 向上取整數(600/16) x 9 = 17100。

4. 「全部 anchors 拿去訓練太多了,訓練程式會在合適的 anchors 中隨機選取 128 個postive anchors+128 個 negative anchors 進行訓練。」

5. 到此跟一階段演算法如 YOLO 類似,只是分類數為 2 而不是多分類。

https://zhuanlan.zhihu.com/p/31426458

-----


# R-CNN

說明:

R-CNN。

-----


Modified from # R-CNN

說明:

先用 SS 建議的 2000 個左右的建議框,每個建議框用 CNN 抽取特徵。然後對每一類進行 SVM 判別。

-----


# Fast R-CNN

說明:

Fast R-CNN。

-----


# SPPNet

說明:

SPPNet 的 RoI 主要用來解決 crop 與 warp 兩個問題。

-----


# SPPNet

說明:

ROI 之後進行 Spatial Pyramid Pooling。

-----


Modified from # Fast R-CNN

說明:

先用 CNN 抽取特徵。然後把 SS 提供的 2000 個建議框,用 SPPNet 的 RoI 框住特徵圖,然後用 CNN 進行分類與回歸。

-----


# Faster R-CNN

說明:

k anchor boxes, k = 9。

2k scores, 2 = positive and negative。

4k coordinates, 4 = (x, y, w, h) x y 中心點,w h 寬高。

a box-regression layer (reg) 回歸。

a box-classification layer (cls) 分類。

最後一層的特徵圖,每個點(錨點),有三個 scale、每個 scale,有三種框。每個框預測有物件或沒物件。一共 18 種預測。種類參考本張圖。大小參考下一張圖。

-----


# Faster R-CNN

說明:

「全部 anchors 拿去訓練太多了,訓練程序會在合適的 anchors 中隨機選取 128 個 postive anchors + 128 個 negative anchors 進行訓練。」

https://zhuanlan.zhihu.com/p/31426458

-----


# PUP

說明:

RPN 的損失函數,cross entropy and smooth L1。PU 部分參考即可。

-----


# Wing Loss

說明:

1. L2 收斂比 L1 快。一般選 L2。

2. 但若有誤差樣本為 1000,其他為 1 時,此誤差為 1000 的樣本會佔太大比重。將 L2 改為 L1 則將平方改為線性,減低此項效應。

3. L1 在 0 處,導數不唯一(在正負 1 之間跳動),有可能影響收斂(?此說明不佳)。0 處改為平方,則兼具 L1 與 L2 之優點。

https://zhuanlan.zhihu.com/p/48426076


(?)

1. L2 的導數為 2x。

2. L1 的導數為 正負 1。

3. smooth L1,當預測框與 ground truth 差別大時,導數不置於太大。當差別很小時,導數夠小(此說明佳)。

https://www.zhihu.com/question/58200555

-----


# Faster R-CNN

說明:

損失函數的英文說明。請參考下方損失函數的中文說明。

-----


# Faster R-CNN

說明:

RPN 的損失函數。


L:Loss function。

p:positive softmax probability。

t:predict bounding box。

i:anchors index。


Ncls:mini-batch size (i.e., Ncls = 256)。圖片張數。

Lcls:Loss function of classification。rpn_cls_loss 層計算的 softmax loss(log loss)。

pi:參考 p 與 i。

pi*:對應的 GT predict 概率。「(即當第 i 個 anchor 與 GT 間 IoU > 0.7,認為是該 anchor 是positive,[公式];反之 IoU <0.3 時,認為是該 anchor 是 negative,[公式];至於那些 0.3 < IoU < 0.7 的 anchor 則不參與訓練)」。pi 是預測機率,pi* 是 label。positive 的 anchor,pi* 為 1,negative 的 anchor,pi* 為 0。此為二分類 cross entropy loss。

https://zhuanlan.zhihu.com/p/31426458


Nreg:the number of anchor locations (i.e., Nreg = 2400)。圖片張數的框張數的總和。

Lreg:Loss function of regression。

ti:參考 t 與 i。

ti*:對應 positive anchor 對應的 GT box。


乘上 pi*,代表只關心 positive 的 box。

λ:= Nreg / Ncls = 2400 / 256,大約等於 10。用以平衡兩者的個數。

-----


# Fast R-CNN

說明:

smooth L1 損失函數。希望預測框跟 GT 框的位置與大小越接近越好。


Lloc = Lreg。名稱不一樣而已。都是用來做位置與大小的回歸(先平移再縮放)。

tu「t:predict bounding box。」(預測框)。t 如何取得,參考下一張圖。

v「ti*:對應 positive anchor 對應的 GT box。」(GT 框)。t* 如何取得,參考下一張圖。

i「x y w h。」(位置與大小)。

-----


# Faster R-CNN

說明:

如何從原始的錨框 A,經過變換得到一個接近 GT 框 G 的 預測框 G' 呢?先做平移,再做縮放。

x:框的中心點 x 座標。

y:框的中心點 y 座標。

w:框的寬度。

h:框的高度。


x:預測框。

xa:錨框。

x*:GT 框。


t 與 t*:預測框的四個元素與 GT 框的四個元素(越近越好)。

https://zhuanlan.zhihu.com/p/31426458

-----


# DeepFood

說明:

如何從原始的 anchor A,經過變換得到一個接近真實窗口 G 的 G' 呢?先做平移,再做縮放。

公式與上圖相反。

-----


# Object Detection in 20 Years: A Survey

說明:

複習。

-----


Figure 1: Panoptic FPN: (a) We start with an FPN backbone [36], widely used in object detection, for extracting rich multi-scale features. (b) As in Mask R-CNN [24], we use a region-based branch on top of FPN for instance segmentation. (c) In parallel, we add a lightweight denseprediction branch on top of the same FPN features for semantic segmentation. This simple extension of Mask RCNN with FPN is a fast and accurate baseline for both tasks.

圖1:全景 FPN:(a)我們從 FPN 主幹 [36] 開始,該主幹廣泛用於物件偵測,以提取豐富的多尺度特徵。 (b)就像在 Mask R-CNN [24] 中一樣,我們在 FPN 的頂部使用基於區域的分支進行實例分割。 (c)並行地,我們在相同的 FPN 功能之上添加了一個輕量級的密集預測分支,用於語義分割。 使用 FPN 對 Mask RCNN 進行的這種簡單擴展是這兩項任務的快速而準確的基準。

# PFPNet

說明:

PFPNet = 

1. FPN(based on Faster R-CNN + Pyramid) + 

2. FCN + 

3. Mask R-CNN(based on Faster R-CNN)。

所以本文後半部主要討論 Faster R-CNN。

-----


Figure 3: Semantic segmentation branch. Each FPN level (left) is upsampled by convolutions and bilinear upsampling until it reaches 1/4 scale (right), theses outputs are then summed and finally transformed into a pixel-wise output.

圖3:語義分割分支。 每個 FPN 層(左)通過卷積和雙線性上採樣進行上採樣,直到達到 1/4 的比例(右),然後將這些輸出求和,最後轉換為像素輸出。

# PFPNet

說明:

八倍 + 四倍 + 兩倍,所以比 FCN 多一個八倍的圖。

-----


Figure 5: Backbone architectures for increasing feature resolution. (a) A standard convolutional network (dimensions are denoted as #blocks×#channels×resolution). (b) A common approach is to reduce the stride of select convolutions and use dilated convolutions after to compensate. (c) A U-Net [49] style network uses a symmetric decoder that mirrors the bottom-up pathway, but in reverse. (d) FPN can be seen as an asymmetric, lightweight decoder whose top-down pathway has only one block per stage and uses a shared channel dimension. For a comparison of the efficiency of these models, please see Figure 4.

圖5:用於增加特徵解析度的骨幹架構。 (a)一個標準的卷積網路(尺寸表示為 #blocks x #channels x resolution)。 (b)一種常見的方法是減小選擇卷積的步幅,並在補償後使用擴張卷積。 (c)U-Net [49] 樣式的網路使用對稱的解碼器,該對稱的解碼器鏡像了自下而上的路徑,但相反。 (d)FPN 可以看作是一種非對稱,輕量級的解碼器,其自上而下的路徑每級只有一個塊,並且使用共享的通道尺寸。 為了比較這些模型的效率,請參見圖4。

# PFPNet

說明:

a. 標準的卷積網路。

b. 使用擴張卷積。

c. 加上對稱的如 U-Net 的解碼器。

d. 加上非對稱的如 FPN 的輕量解碼器(特徵圖較少)。

-----


Figure 4: Backbone architecture efficiency. We compare methods for increasing feature resolution for semantic segmentation, including dilated networks, symmetric decoders, and FPN, see Figure 5. We count multiply-adds and memory used when applying ResNet-101 to a 2 megapixel image. FPN at output scale 1/4 is similar computationally to dilation-16 (1/16 resolution output), but produces a 4× higher resolution output. Increasing resolution to 1/8 via dilation uses a further 3× more compute and memory.

圖4:骨幹架構效率。 我們比較了用於提高語義分割的特徵解析度的方法,包括擴張網路,對稱解碼器和 FPN,請參見圖5。我們計算了將 ResNet-101 應用於 2 百萬像素圖像時的乘加和內存。 FPN 在輸出比例為 1/4 時在計算上與 dilation-16(1/16分辨率輸出)相似,但會產生 4 倍更高的分辨率輸出。 通過膨脹將分辨率提高到 1/8 會使用更多 3 倍的計算和內存。

# PFPNet

說明:

1. FPN 在輸出比例為 1/4 時在計算上與 dilation-16(1/16分辨率輸出)相似,但會產生 4 倍更高的分辨率輸出。(左圖)

2. 通過膨脹將分辨率提高到 1/8 會使用更多 3 倍的計算和內存。(左圖與右圖)

-----

References


# PFPNet

Kirillov, Alexander, et al. "Panoptic feature pyramid networks." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2019.

https://openaccess.thecvf.com/content_CVPR_2019/papers/Kirillov_Panoptic_Feature_Pyramid_Networks_CVPR_2019_paper.pdf


# Deep learning for generic object detection: A survey

Liu, Li, et al. "Deep learning for generic object detection: A survey." International journal of computer vision 128.2 (2020): 261-318.

https://www.researchgate.net/profile/Li-Liu-76/publication/327550187_Deep_Learning_for_Generic_Object_Detection_A_Survey/links/5ddf876aa6fdcc2837f083ea/Deep-Learning-for-Generic-Object-Detection-A-Survey.pdf


# Object Detection in 20 Years: A Survey

Zou, Zhengxia, et al. "Object detection in 20 years: A survey." arXiv preprint arXiv:1905.05055 (2019).

https://arxiv.org/pdf/1905.05055.pdf


# A Survey of Deep Learning-based Object Detection

Jiao, Licheng, et al. "A survey of deep learning-based object detection." IEEE Access 7 (2019): 128837-128868.

https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8825470


# HOG

Dalal, Navneet, and Bill Triggs. "Histograms of oriented gradients for human detection." 2005 IEEE computer society conference on computer vision and pattern recognition (CVPR'05). Vol. 1. Ieee, 2005.

https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=1467360&casa_token=QOyuWL6dcCAAAAAA:NS0hEBYvdhXiXuunJcNPlO8oXzuYmbzjjukntt_Q4B3BZYgWqmVu2OBPdPeWSUGP1grg3v3o&tag=1


# DPM

Felzenszwalb, Pedro F., et al. "Object detection with discriminatively trained part-based models." IEEE transactions on pattern analysis and machine intelligence 32.9 (2010): 1627-1645.

https://ttic.uchicago.edu/~dmcallester/lsvm-pami.pdf


# SS

Uijlings, Jasper RR, et al. "Selective search for object recognition." International journal of computer vision 104.2 (2013): 154-171.

https://ivi.fnwi.uva.nl/isis/publications/2013/UijlingsIJCV2013/UijlingsIJCV2013.pdf


# R-CNN

Girshick, Ross, et al. "Rich feature hierarchies for accurate object detection and semantic segmentation." Proceedings of the IEEE conference on computer vision and pattern recognition. 2014.

https://www.cv-foundation.org/openaccess/content_cvpr_2014/papers/Girshick_Rich_Feature_Hierarchies_2014_CVPR_paper.pdf


# SPPNet

He, Kaiming, et al. "Spatial pyramid pooling in deep convolutional networks for visual recognition." european conference on computer vision. Springer, Cham, 2014.

https://arxiv.org/pdf/1406.4729.pdf


# Fast R-CNN

Girshick, Ross. "Fast R-CNN." Proceedings of the IEEE international conference on computer vision. 2015.

http://openaccess.thecvf.com/content_iccv_2015/papers/Girshick_Fast_R-CNN_ICCV_2015_paper.pdf


# Faster R-CNN

Ren, Shaoqing, et al. "Faster R-CNN: Towards real-time object detection with region proposal networks." Advances in neural information processing systems. 2015.

http://papers.nips.cc/paper/5638-faster-r-cnn-towards-real-time-object-detection-with-region-proposal-networks.pdf


# FPN

Lin, Tsung-Yi, et al. "Feature pyramid networks for object detection." CVPR. Vol. 1. No. 2. 2017.

http://openaccess.thecvf.com/content_cvpr_2017/papers/Lin_Feature_Pyramid_Networks_CVPR_2017_paper.pdf


# Wing Loss

Feng, Zhen-Hua, et al. "Wing loss for robust facial landmark localisation with convolutional neural networks." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2018.

https://openaccess.thecvf.com/content_cvpr_2018/papers/Feng_Wing_Loss_for_CVPR_2018_paper.pdf


# DeepFood

Jiang, Landu, et al. "DeepFood: Food image analysis and dietary assessment via deep model." IEEE Access 8 (2020): 47477-47489.

https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8998172


# PUP

Yang, Yuewei, Kevin J. Liang, and Lawrence Carin. "Object detection as a positive-unlabeled problem." arXiv preprint arXiv:2002.04672 (2020).

https://arxiv.org/pdf/2002.04672.pdf


一文讀懂Faster RCNN - 知乎

https://zhuanlan.zhihu.com/p/31426458


Object Detection : R-CNN, Fast-RCNN, Faster RCNN | by chunchiang shen | Medium

https://medium.com/@ccshenyltw/object-detection-r-cnn-fast-rcnn-faster-rcnn-mask-rcnn-retinanet-to-be-continued-71b67640445

-----

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.