faster rcnn文件夾說明

faster rcnn根目錄下

1、caffe-fast-rcnn文件夾

這是caffe框架目錄

2、data文件夾

用來存放pretrained模型,比如imagenet上的,以及讀取文件的cache緩存

3、experiments文件夾

(1)logs

(2)scripts/faster_rcnn_alt_opt.sh

(3)cfgs/faster_rcnn_alt_opt.yml

存放配置文件以及運(yùn)行的log文件,另外這個(gè)目錄下有scripts可以用end2end或者alt_opt兩種方式訓(xùn)練。

4、tools文件夾

里面存放的是訓(xùn)練和測試的Python文件。

(1)_init_paths.py

用來初始化路徑的,也就是之后的路徑會(huì)join(path,*)

(2)compress_net.py

用來壓縮參數(shù)的,使用了SVD來進(jìn)行壓縮,這里可以發(fā)現(xiàn),作者對于fc6層和fc7層進(jìn)行了壓縮,也就是兩個(gè)全連接層。

(3)demo.py

通常,我們會(huì)直接調(diào)用這個(gè)函數(shù),如果要測試自己的模型和數(shù)據(jù),這里需要修改。這里調(diào)用了fast_rcnn中的test、config、nums_wrapper函數(shù)。vis_detections用來做檢測,parse_args用來進(jìn)行參數(shù)設(shè)置,以及damo和主函數(shù)。

(4)eval_recall.py

評估函數(shù)

(5)reval.py

re-evaluate,這里調(diào)用了fast_rcnn以及dataset中的函數(shù)。其中,from_mats函數(shù)和from_dets函數(shù)分別loadmat文件和pkl文件。

(6)rpn_genetate.py

這個(gè)函數(shù)調(diào)用了rpn中的genetate函數(shù),之后我們會(huì)對rpn層做具體的介紹。這里,主要是一個(gè)封裝調(diào)用的過程,我們在這里調(diào)用配置的參數(shù)、設(shè)置rpn的test參數(shù),以及輸入輸出等操作。

(7)test_net.py

測試fast rcnn網(wǎng)絡(luò)。主要就是一些參數(shù)配置。

(8)train_faster_rcnn_alt_opt.py

訓(xùn)練faster rcnn網(wǎng)絡(luò)使用交替的訓(xùn)練,這里就是根據(jù)faster rcnn文章中的具體實(shí)現(xiàn)。可以在主函數(shù)中看到,其包括的步驟為:

RPN 1,使用imagenet model進(jìn)行初始化參數(shù),生成proposal,這里存儲(chǔ)在mp_kwargs

fast rcnn 1,使用 imagenet model 進(jìn)行初始化參數(shù),使用剛剛生成的proposal進(jìn)行fast rcnn的訓(xùn)練

RPN 2使用fast rcnn中的參數(shù)進(jìn)行初始化(這里要注意哦),并生成proposal

fast rcnn 2,使用RPN 2 中的 model進(jìn)行初始化參數(shù),

(9)train_net.py

使用fast rcnn,訓(xùn)練自己數(shù)據(jù)集的網(wǎng)絡(luò)模型。

(10)train_svms.py

使用最原始的RCNN網(wǎng)絡(luò)訓(xùn)練post-hoc SVMs。

5、lib文件夾

用來存放一些python接口文件,如其下的datasets主要負(fù)責(zé)數(shù)據(jù)庫讀取,config負(fù)責(zé)cnn一些訓(xùn)練的配置選項(xiàng)。

lib/rpn

這就是RPN的核心代碼部分,有生成proposals和anchor的方法

(1)generate_anchors.py

生成多尺度和多比例的錨點(diǎn)。這里由generate_anthors函數(shù)主要完成,可以看到,使用了 3 個(gè)尺度( 128, 256, and 512)以及 3 個(gè)比例(1:1,1:2,2:1)。一個(gè)錨點(diǎn)由w, h, x_ctr, y_ctr固定,也就是寬、高、x center和y center固定。

(2)proposal_layer.py

這個(gè)函數(shù)是用來將RPN的輸出轉(zhuǎn)變?yōu)閛bject proposals的。作者新增了ProposalLayer類,這個(gè)類中,重新了set_up和forward函數(shù),其中forward實(shí)現(xiàn)了:生成錨點(diǎn)box、對于每個(gè)錨點(diǎn)提供box的參數(shù)細(xì)節(jié)、將預(yù)測框切成圖像、刪除寬、高小于閾值的框、將所有的(proposal, score) 對排序、獲取 pre_nms_topN proposals、獲取NMS 、獲取 after_nms_topN proposals。(注:NMS,nonmaximum suppression,非極大值抑制)

(3)anchor_target_layer.py

生成每個(gè)錨點(diǎn)的訓(xùn)練目標(biāo)和標(biāo)簽,將其分類為1 (object), 0 (not object) , -1 (ignore).當(dāng)label>0,也就是有object時(shí),將會(huì)進(jìn)行box的回歸。其中,forward函數(shù)功能:在每一個(gè)cell中,生成9個(gè)錨點(diǎn),提供這9個(gè)錨點(diǎn)的細(xì)節(jié)信息,過濾掉超過圖像的錨點(diǎn),測量同GT的overlap。

(4)proposal_target_layer.py

對于每一個(gè)object proposal 生成訓(xùn)練的目標(biāo)和標(biāo)簽,分類標(biāo)簽從0-k,對于標(biāo)簽>0的box進(jìn)行回歸。(注意,同anchor_target_layer.py不同,兩者一個(gè)是生成anchor,一個(gè)是生成proposal)

(5)generate.py

使用一個(gè)rpn生成object proposals。

lib/nms文件夾

做非極大抑制的部分,有g(shù)pu和cpu兩種實(shí)現(xiàn)方式

(1)py_cpu_nms.py

核心函數(shù)

lib/datasets文件夾

在這里修改讀寫數(shù)據(jù)的接口主要是datasets目錄下

(1)factory.py

(2)imdb.py

(3)pascal_voc.py

(4)voc_eval.py

lib/fast_rcnn文件夾

主要存放的是python的訓(xùn)練和測試腳本,以及訓(xùn)練的配置文件config.py

(1)config.py

(2)nms_wrapper.py

(3)test.py

(4)train.py

lib/roi_data_layer文件夾

主要是一些ROI處理操作

(1)layer.py

(2)minibatch.py

(3)roidb.py

lib/utils文件夾

(1)blob.py

(2)timer.py

lib/transform文件夾

6、models/pascal_voc/VGG16/faster_rcnn_alt_opt文件夾

里面存放了三個(gè)模型文件,小型網(wǎng)絡(luò)的ZF,大型網(wǎng)絡(luò)VGG16,中型網(wǎng)絡(luò)VGG_CNN_M_1024。推薦使用VGG16,如果使用端到端的approximate joint training方法,開啟CuDNN,只需要3G的顯存即可。

(1)fast_rcnn_test.pt

(2)rpn_test.pt

(3)stage1_rpn_train.pt

(4)stage1_fast_rcnn_train.pt

(5)stage2_rpn_train.pt

(6)stage2_fast_rcnn_train.pt

7、output

這里存放的是訓(xùn)練完成后的輸出目錄,默認(rèn)會(huì)在faster_rcnn_end2end文件夾下

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容