MDNet(轉(zhuǎn))

原文地址 http://www.reibang.com/p/2e1dd35c2763#comment-12556518

這篇文章結(jié)構(gòu)比較簡單康栈,但是效果還不錯(cuò)漏麦,主要就三點(diǎn)

  1. hard negative mining
  2. long-term 和 short-term 更新
  3. bb回歸

起作用比較大的是hard negative mining

MDnet--master 源代碼目錄###

  • dataset (存放數(shù)據(jù)集的文件夾)
    seqList (存放otb或者vot數(shù)據(jù)集的子序列名稱列表)
  • matconvnet (這個(gè)不用說了例书,是matlab下的CNN框架)
  • models (存放已訓(xùn)練模型的文件夾)
  • pretraining (實(shí)現(xiàn)模型訓(xùn)練功能模塊的文件夾)
  • tracking
  • utils

pretraining (訓(xùn)練網(wǎng)絡(luò))

1友多、調(diào)用mdnet_prepare_model,準(zhǔn)備CNN網(wǎng)絡(luò)模型;
2、調(diào)用mdnet_pretrain,完成網(wǎng)絡(luò)的訓(xùn)練和保存)
mdnet_prepare_model (為MDnet準(zhǔn)備初始的卷積網(wǎng)絡(luò)模型:
1闲昭、conv1-3直接采用VGG-M的結(jié)構(gòu)和初始化權(quán)重罐寨,注意新的網(wǎng)絡(luò)結(jié)構(gòu)里filters對(duì)應(yīng)原weight{1},
biases對(duì)應(yīng)weight{2};pad由原來的格式[0,0汤纸,0衩茸,0],變換為0。
2贮泞、添加fc4層和相應(yīng)的relu和dropout層楞慈,fc5層和相應(yīng)的relu和dropout層,fc6層和softmax層,
fc4-6隨機(jī)初始化啃擦,fc6構(gòu)造為K個(gè)分支
注意:fc層的stride為數(shù)字1囊蓝,conv層的stride為數(shù)組[1,1],
為了保證fc層的更新令蛉,還要設(shè)置w和B的倍乘速率和decay)

  • mdnet_pretrain (三個(gè)參數(shù):seqslist聚霜、outFile、roiDir
    首先設(shè)置各種參數(shù)opts珠叔,
    然后通過調(diào)用mdnet_setup_data獲得所有圖像序列的圖像列表以及正負(fù)樣本bb蝎宇,保存為roidb,
    初始化mdnet祷安,設(shè)置fc6的1×1×K×2結(jié)構(gòu)姥芥,設(shè)置最后一層為softmax_k
    訓(xùn)練mdnet,調(diào)用的函數(shù)為mdnet_train,過程中嵌套調(diào)用了生成minibatch的函數(shù)getBatch;
    最后汇鞭,調(diào)用mdnet_finish_train凉唐,將fc6還原為1×1×1×2結(jié)構(gòu),保存網(wǎng)絡(luò)到layers
  • getBatch(輸入為:1霍骄、roidb某個(gè)子序列所有的圖像路徑台囱,正樣本和負(fù)樣本bb;
    2、img_idx為了組成一個(gè)minibatch抽到的8幀圖像標(biāo)號(hào);
    3读整、batch_pos-已設(shè)置為32;batch_neg已設(shè)置為96;opts代表各個(gè)參數(shù)結(jié)構(gòu)體
    中間變量含義:pos_boxes表示正樣本的組合:8幀圖像簿训,每幀50個(gè)正樣本,一共400個(gè)正樣本
    然后從0-400隨機(jī)抽取32個(gè)序號(hào)idx米间,得到長度為32的pos_boxes,
    再用pos_idx來標(biāo)記其所在幀處于8幀里的第幾個(gè)煎楣。
    同樣的方法得到一個(gè)minibatch里的96個(gè)負(fù)樣本,然后正負(fù)樣本拼接起來;
    調(diào)用get_batch函數(shù)生成minibatch
    輸出為:128個(gè)im和對(duì)應(yīng)的labels车伞,數(shù)字2代表正,1為負(fù))
  • mdnet_train(輸入:net,roidb,getBatch函數(shù)
    首先喻喳,網(wǎng)絡(luò)參數(shù)初始化設(shè)定
    然后另玖,按照每個(gè)序列8幀一個(gè)batch,一個(gè)序列迭代100次來計(jì)算,打亂序列的圖像次序后組一個(gè)800幀的序列,保存在frame_list里
    接著谦去,是訓(xùn)練過程:
    外循環(huán)是cycle100慷丽,內(nèi)循環(huán)是子序列總數(shù)K
    在內(nèi)循環(huán)里,首先得到每一個(gè)batch里亂序8幀的編號(hào)鳄哭,調(diào)用getBatch生成圖像和label;
    然后是backprop要糊,將label送入loss層,調(diào)用mdnet_simplenn妆丘,實(shí)現(xiàn)網(wǎng)絡(luò)的前向反向計(jì)算
    注意:mdnet_simplenn中softmax_k是作者自己定義的層锄俄,是為fc6的多域設(shè)計(jì)的
    接著是梯度更新
    最后是打印訓(xùn)練中的信息
  • get_batch(輸入:8張圖像的列表images,正負(fù)樣本bb和對(duì)應(yīng)幀1-8編號(hào)組成的數(shù)組boxes,varargin
    輸出:128張107×107×3的圖像組)

tracking###

  • mdnet_run(主代碼-實(shí)現(xiàn)tracking

1勺拣、調(diào)用mdnet_init執(zhí)行初始化
2奶赠、bbox回歸訓(xùn)練
1.調(diào)用gen_samples,生成10000個(gè)回歸樣本
2.調(diào)用overlap_ratio計(jì)算樣本與gt的重疊率
3.選出重疊率大于0.6的樣本药有,隨機(jī)從中選擇1000個(gè)作為正樣本
4.調(diào)用mdnet_features_convX得到正樣本經(jīng)過卷積層處理后的特征圖表示
5.將第4步的結(jié)果進(jìn)行維度變換并拉伸為一行毅戈,輸入到tran_bbox_regressor訓(xùn)練回歸模型
3、提取第一幀圖像的正負(fù)樣本經(jīng)過三層卷積后的特征
4愤惰、調(diào)用mdnet_finetune_hnm選出hard負(fù)樣本苇经,并和正樣本一起微調(diào)net的fc層
5、為在線更新做好數(shù)據(jù)樣本準(zhǔn)備
6宦言、從第二幀開始進(jìn)入主循環(huán)
1.在當(dāng)前幀調(diào)用gen-sample選出256個(gè)candidate樣本扇单,得到卷積后特征;
2.送入fc層,得到fc6二進(jìn)制輸出蜡励,正得分最高的五個(gè)取平均如果大于0令花,則為最佳結(jié)果,否則凉倚,擴(kuò)大搜索范圍
3.bounding box回歸調(diào)整最后結(jié)果
4.做下一幀的數(shù)據(jù)樣本準(zhǔn)備兼都,保存正負(fù)樣本的特征)

  • mdnet_finetune_hnm(用hard minibatch來訓(xùn)練CNN:
    輸入:要微調(diào)的net部分(fc層),正樣本特征稽寒,負(fù)樣本特征扮碧,其他參數(shù)
    注意hard體現(xiàn)在負(fù)樣本的選擇上,從1024個(gè)負(fù)樣本選出得分最高的96個(gè)
    輸出:微調(diào)后的net杏糙,以及所有選中的正負(fù)樣本序號(hào)
  • mdnet_features_convX(提取輸入圖像樣本bbox的卷積特征:
    輸入:卷積層慎王、圖像、該圖像樣本box宏侍、參數(shù)opts
    調(diào)用mdnet_extract_regions得到樣本圖像赖淤,然后將這些樣本圖像送入網(wǎng)絡(luò)vl_simplenn
    輸出:計(jì)算得到其經(jīng)過卷積層處理后的特征圖)
  • mdnet_extract_regions(從輸入圖像提取bounding box regions并調(diào)用im_crop去均值并resize到107×107:
    輸入:圖像、該圖像樣本bbox谅河、參數(shù)opts
    輸出:resize后的各樣本圖像)
  • mdnet_init(初始化tracker:
    輸入:圖像序列image咱旱、已訓(xùn)練好的網(wǎng)絡(luò)net
    幾乎所有參數(shù)的設(shè)置都在這里确丢,返回卷積層net_conv,全連接層net_fc,學(xué)習(xí)和跟蹤過程中各
    參數(shù)的結(jié)構(gòu)體opts)
  • gen_samples(根據(jù)第一個(gè)輸入?yún)?shù)決定采樣方式,返回采樣得到的矩陣box
    gaussian,uniform,uniform_aspect,whole四種類型吐限,針對(duì)采樣的不同需求鲜侥,如樣本正/負(fù))
  • utils(一些用來支撐算法實(shí)現(xiàn)的函數(shù))
    -parseImage(得到圖像列表imgList)
    -genConfig(得到圖像信息conf:
    conf.dataset:數(shù)據(jù)集(是otb/vot)
    conf.seqName:序列名稱('divng'/'Divid')
    conf.imgDir:圖像所在目錄
    conf.imgList:圖像列表(../../0001.jpg)
    conf.gt:ground truth列表(double類型數(shù)組))
    -overlap_ratio(計(jì)算圖像塊的重疊率overlap)
    -im_crop(-----這是RCNN里的函數(shù)------
    對(duì)輸入圖像按照?qǐng)D像樣本box crop,減去均值(默認(rèn)128),然后按照比例resize到統(tǒng)一大小107
    因邊界條件不足比例的補(bǔ)0
    輸入中有參數(shù)padding目前只看到其會(huì)影響bbox的尺度,即按照padding擴(kuò)大區(qū)域后再處理)
  • train_bbox_regressor(-----這是rcnn里的函數(shù)----
    輸入:每一個(gè)3×3的特征圖都拉伸為一行诸典,512個(gè)拼接成一行X;采樣的bbox;groundtruth
    輸出:一個(gè)結(jié)構(gòu)體包含訓(xùn)練好的model和參數(shù)
    SANet基于MDNet描函,代碼有很大的相似性。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末狐粱,一起剝皮案震驚了整個(gè)濱河市舀寓,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌脑奠,老刑警劉巖基公,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異宋欺,居然都是意外死亡轰豆,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門齿诞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來酸休,“玉大人,你說我怎么就攤上這事祷杈“咚荆” “怎么了?”我有些...
    開封第一講書人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵但汞,是天一觀的道長宿刮。 經(jīng)常有香客問我,道長私蕾,這世上最難降的妖魔是什么僵缺? 我笑而不...
    開封第一講書人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮踩叭,結(jié)果婚禮上磕潮,老公的妹妹穿的比我還像新娘。我一直安慰自己容贝,他們只是感情好自脯,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著斤富,像睡著了一般膏潮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上满力,一...
    開封第一講書人閱讀 52,682評(píng)論 1 312
  • 那天戏罢,我揣著相機(jī)與錄音屋谭,去河邊找鬼。 笑死龟糕,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的悔耘。 我是一名探鬼主播讲岁,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼衬以!你這毒婦竟也來了缓艳?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤看峻,失蹤者是張志新(化名)和其女友劉穎阶淘,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體互妓,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡溪窒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了冯勉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片澈蚌。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖灼狰,靈堂內(nèi)的尸體忽然破棺而出宛瞄,到底是詐尸還是另有隱情,我是刑警寧澤交胚,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布份汗,位于F島的核電站,受9級(jí)特大地震影響蝴簇,放射性物質(zhì)發(fā)生泄漏杯活。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一军熏、第九天 我趴在偏房一處隱蔽的房頂上張望轩猩。 院中可真熱鬧,春花似錦荡澎、人聲如沸均践。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽彤委。三九已至,卻和暖如春或衡,著一層夾襖步出監(jiān)牢的瞬間焦影,已是汗流浹背车遂。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留斯辰,地道東北人舶担。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像彬呻,于是被迫代替她去往敵國和親衣陶。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容