Fast R-CNN 个人理解
Fast R-CNN是在R-CNN的基礎上進行的改進,大致框架是一致的。總體而言,Fast R-CNN相對于R-CNN而言,主要提出了三個改進策略:
1. 提出了RoIPooling,避免了對提取的region proposals進行縮放到224x224,然后經過pre-trained CNN進行檢測的步驟,加速了整個網絡的learning與inference過程,這個是巨大的改進,并且RoIPooling是可導的,因此使得整個網絡可以實現end-to-end learning,這個可以認為是Fast R-CNN相對于R-CNN最大的改進之處。
2. 采用了Multi-task loss進行邊框回歸,這個在R-CNN中也有這方面的實驗。
3. 利用了截斷的奇異值分解(Truncated SVD for faster detection)加速了網絡。
下圖是Fast R-CNN的總體框圖(以VGG16為骨干網)
這個圖比較詳細的表達了Fast R-CNN的結構以及操作,但是該圖中有些細節是沒有展示出來的,因此在這里我們指出這些細節,首先我們圈畫部分,region proposals是通過相關算法實現的,原論文中并沒有標明,提取的每一個region proposal都有一個對應的Ground-truth Bounding Box 和 Ground-truth class label。其中值得注意的是,這里的坐標均是對應原圖像的,而不是輸出的feature maps。因此,還需要把原圖像的坐標系映射到feature maps上。這一點也很簡單,比如采用的是pre-trained 網絡模型為VGG16的話,RoIPooling替換掉最后一個max pooling層的話,則原圖像要經過4個max pooling層,輸出的feature maps是原圖像的1/16,因此,將原圖像對應的四元數組轉換到feature maps上就是每個值都除以16,并量化到最接近的整數。這樣我們就實現了將原圖中region proposals 到特征圖中的轉換、接下來就是將region proposals框起來的那部分特征圖輸RoIPooling,得到固定大小的輸出特征圖,這里假設(原論文中分成了7x7)每一個框的被劃分為6x6的網格大小,根據規則我們知道,從每一個框中挑選出一個最大值,作為輸出,所以經過池化后,產生的特征圖的大小為6x6,由于是按通道池化(最大池化)的,所以每一個ROI對應一個6x6x256的特征圖,并且有P個類別,所以這些特征圖組合之后,形成6x6x256xP的特征圖,即為ROIPooling的層的輸出,然后進行全連接,形成4096*P的特征圖,這樣我們就可以利用得到的特征圖去進行線性回歸和分類,這就是對本人fast RCNN的一個個人理解,也有可能存在欠缺。
總結
以上是生活随笔為你收集整理的Fast R-CNN 个人理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用tensorflow建立简单的神经网
- 下一篇: 关于list 数据类型 和 ndarra