Tensorflow版Faster RCNN源碼解析(TFFRCNN) (21)推斷(測試)過程使用RPN時代碼運行流程


代碼作用:梳理在使用RPN時代碼運行流程,區別上一篇不使用RPN時的情形,運行流程主要涉及的py文件有demo.py、test.py、VGGnet_test.py

主要函數及作用

(1)demo.py函數為實例程序,主函數中首先get_network()獲取推斷過程要用的網絡結果函數(如VGGnet_test()),調用本py文件中定義的demo()函數,

默認情形使用RPN ,同樣demo()中主要關注test.py中的im_detect()函數

(2)當使用RPN時bbox=None

  

 首先調用本代碼段中_get_blobs(im,boxes)

 

當使用RPN時,cfg.TEST.HAS_RPN為true。首先構造blobs字典,內含data字段、rois字段。

調用_get_image_blob()函數,確定當前im是以長邊還是短邊縮放,計算當前im的縮放比,默認情況下未使用圖像金字塔,返回當前im縮放后的圖像組成的blob(構成blobs中的data字段)以及im對應的縮放因子列表(不使用圖像金字塔時列表長度為1),由於rois是通過RPN網絡產生的,因此blobs中只有data字段有值傳回。  

構造blobs中im_info字段(包含當前縮放后圖像寬、高、縮放因子)im_blob.shape[0]應為原圖像經圖像金字塔處理后的圖像張數,但使用RPN時不允許使用圖像金字塔,因此每張圖像縮放后的圖像只有一張。構造feed_dict字典,包含blobs的data、im_info字段,與VGGnet_test.py中預先定義的占位符定義維度一一照應,其中data維度為[none,none,none,3],3表示3個圖像通道、im_info維度為[none,3]

  

(3)rois的產生

首先需要了解VGGnet_test.py的運行原理,可參考第一篇代碼解析。使用RPN時rois是由proposal_layer層產生的,具體產生過程細節后面將會一一進行解讀。這里我們主要關注proposal_layer()返回rpn_rois的維度同樣與不使用RPN維度時一致,為[none,5]

 

注意:由rpn網絡生成proposal的過程需要繼續解讀proposal_layer_tf.py的源碼來分析,后面將會談到。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM