? ? ? 文章地址:https://chrischoy.github.io/publication/r2n2/
? ? ? 代碼地址:https://github.com/chrischoy/3d-r2n2/
? ? ? 整體代碼基于theano框架,github上有詳細(xì)的安裝過程,所有代碼均在virtualenv中實(shí)現(xiàn)肖爵,代碼對(duì)應(yīng)python版本應(yīng)在3.5及其以上
1咨演、該代碼的主程序使用demo為直接調(diào)用已有的模型參數(shù),進(jìn)行demo的重建喧笔,
2、訓(xùn)練程序主要通過sh工程文件中的參數(shù)來運(yùn)行
3、solver來運(yùn)行程序
? ? ? 代碼主程序有demo.py和main.py兩個(gè)部分沈矿,其中demo.py是為了直接運(yùn)行已有權(quán)重,main.py則是加入了訓(xùn)練的部分咬腋。網(wǎng)絡(luò)結(jié)構(gòu)結(jié)構(gòu)放在model中羹膳,res_gru_net為論文主要模型。其余主要庫文件在lib文件夾下根竿。本代碼中的網(wǎng)絡(luò)結(jié)構(gòu)多數(shù)為自寫陵像,少量使用了theano部分代碼,主要使用函數(shù)為theano.function和theano.scan寇壳。
? ? ? ?lib文件夾下醒颖,config.py存放全局所有調(diào)用的參變量。lib中的layer編寫了每個(gè)層面的各個(gè)操作以及最優(yōu)化所用的方法壳炎。
? ? ? ?demo流程:1泞歉、記錄保存的文件名,2匿辩、load圖片 3腰耙、下載模型4、netclass 通過load——model調(diào)用铲球,load_model的返回值為兩個(gè)model的object挺庞,netclass為models中的ResidualGRUNet,5稼病、net調(diào)用ResidualGRUNet所繼承的net中的load函數(shù)选侨,通過函數(shù)enumerate(http://blog.csdn.net/churximi/article/details/51648388),讀取路徑文件的各個(gè)數(shù)據(jù)的索引 權(quán)重然走,按順序依次存放在net.params中援制,6、這時(shí)調(diào)用theano.function,以net.x=demo_imgs芍瑞,net.y=none為輸入晨仑,以net.output net.loss為輸出,其中函數(shù)調(diào)用為gru_net中的net.output和net.loss
? ? ? ?如何修改程序:
1、調(diào)用部分網(wǎng)絡(luò)參數(shù)部分依然可以沿用load函數(shù)寻歧,返回的是list掌栅,而在額外初始化的部分可以繼續(xù)append添加添加層的參數(shù),
main流程:
1码泛、附加參數(shù)初始化猾封,
2、train_net()
3噪珊、train_net()中的main()
4晌缘、train_net()中的train_net(),讀取網(wǎng)絡(luò)類型參數(shù)值為cfg.CONST.NETWORK_CLASS痢站,通過函數(shù)make_data_processes讀取測(cè)試數(shù)據(jù)磷箕,調(diào)用solver中的train函數(shù)