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
存放配置文件以及運行的log文件震贵,另外這個目錄下有scripts可以用end2end或者alt_opt兩種方式訓練利赋。
4、tools文件夾
里面存放的是訓練和測試的Python文件猩系。
(1)_init_paths.py
用來初始化路徑的媚送,也就是之后的路徑會join(path,*)
(2)compress_net.py
用來壓縮參數(shù)的寇甸,使用了SVD來進行壓縮塘偎,這里可以發(fā)現(xiàn),作者對于fc6層和fc7層進行了壓縮拿霉,也就是兩個全連接層吟秩。
(3)demo.py
通常,我們會直接調(diào)用這個函數(shù)绽淘,如果要測試自己的模型和數(shù)據(jù)涵防,這里需要修改。這里調(diào)用了fast_rcnn中的test沪铭、config壮池、nums_wrapper函數(shù)。vis_detections用來做檢測杀怠,parse_args用來進行參數(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
這個函數(shù)調(diào)用了rpn中的genetate函數(shù)窗骑,之后我們會對rpn層做具體的介紹女责。這里,主要是一個封裝調(diào)用的過程慧域,我們在這里調(diào)用配置的參數(shù)鲤竹、設置rpn的test參數(shù),以及輸入輸出等操作昔榴。
(7)test_net.py
測試fast rcnn網(wǎng)絡。主要就是一些參數(shù)配置碘橘。
(8)train_faster_rcnn_alt_opt.py
訓練faster rcnn網(wǎng)絡使用交替的訓練互订,這里就是根據(jù)faster rcnn文章中的具體實現(xiàn)《徊穑可以在主函數(shù)中看到仰禽,其包括的步驟為:
RPN 1,使用imagenet model進行初始化參數(shù)纺蛆,生成proposal吐葵,這里存儲在mp_kwargs
fast rcnn 1,使用 imagenet model 進行初始化參數(shù)桥氏,使用剛剛生成的proposal進行fast rcnn的訓練
RPN 2使用fast rcnn中的參數(shù)進行初始化(這里要注意哦)温峭,并生成proposal
fast rcnn 2,使用RPN 2 中的 model進行初始化參數(shù)字支,
(9)train_net.py
使用fast rcnn凤藏,訓練自己數(shù)據(jù)集的網(wǎng)絡模型。
(10)train_svms.py
使用最原始的RCNN網(wǎng)絡訓練post-hoc SVMs堕伪。
5揖庄、lib文件夾
用來存放一些python接口文件,如其下的datasets主要負責數(shù)據(jù)庫讀取欠雌,config負責cnn一些訓練的配置選項蹄梢。
lib/rpn
這就是RPN的核心代碼部分,有生成proposals和anchor的方法
(1)generate_anchors.py
生成多尺度和多比例的錨點富俄。這里由generate_anthors函數(shù)主要完成禁炒,可以看到,使用了 3 個尺度( 128, 256, and 512)以及 3 個比例(1:1,1:2,2:1)蛙酪。一個錨點由w, h, x_ctr, y_ctr固定齐苛,也就是寬、高桂塞、x center和y center固定凹蜂。
(2)proposal_layer.py
這個函數(shù)是用來將RPN的輸出轉(zhuǎn)變?yōu)閛bject proposals的。作者新增了ProposalLayer類,這個類中玛痊,重新了set_up和forward函數(shù)汰瘫,其中forward實現(xiàn)了:生成錨點box、對于每個錨點提供box的參數(shù)細節(jié)擂煞、將預測框切成圖像混弥、刪除寬、高小于閾值的框对省、將所有的(proposal, score) 對排序蝗拿、獲取 pre_nms_topN proposals、獲取NMS 蒿涎、獲取 after_nms_topN proposals哀托。(注:NMS,nonmaximum suppression劳秋,非極大值抑制)
(3)anchor_target_layer.py
生成每個錨點的訓練目標和標簽仓手,將其分類為1 (object), 0 (not object) , -1 (ignore).當label>0玻淑,也就是有object時嗽冒,將會進行box的回歸。其中补履,forward函數(shù)功能:在每一個cell中添坊,生成9個錨點,提供這9個錨點的細節(jié)信息干像,過濾掉超過圖像的錨點帅腌,測量同GT的overlap。
(4)proposal_target_layer.py
對于每一個object proposal 生成訓練的目標和標簽麻汰,分類標簽從0-k速客,對于標簽>0的box進行回歸。(注意五鲫,同anchor_target_layer.py不同溺职,兩者一個是生成anchor,一個是生成proposal)
(5)generate.py
使用一個rpn生成object proposals位喂。
lib/nms文件夾
做非極大抑制的部分浪耘,有g(shù)pu和cpu兩種實現(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的訓練和測試腳本,以及訓練的配置文件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文件夾
里面存放了三個模型文件七冲,小型網(wǎng)絡的ZF,大型網(wǎng)絡VGG16规婆,中型網(wǎng)絡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
這里存放的是訓練完成后的輸出目錄操漠,默認會在faster_rcnn_end2end文件夾下