資源簡介
SSD檢測網絡抽取權重,用于生成更好的預訓練模型,加快收斂速度。

代碼片段和文件信息
#?coding:utf-8
import?numpy?as?np
import?sys
caffe_root=‘/home/mx/caffe/‘
sys.path.insert(0caffe_root+‘python‘)
import?caffe
caffe.set_device(0)
caffe.set_mode_gpu()?#?使用GPU模式
voc_deploy=‘/home/mx/tempfile/net_surgery/deploy_voc.prototxt‘?#?21類的deploy文件
voc_caffemodel=‘/home/mx/tempfile/net_surgery/VGG_VOC0712_SSD_300x300_iter_120000.caffemodel‘?#?21類的caffemodel文件
kitti_deploy=‘/home/mx/tempfile/net_surgery/deploy_kitti.prototxt‘?#?4類的deploy文件
voc_net=caffe.Net(voc_deployvoc_caffemodelcaffe.TEST)?#?從caffemodel加載參數(shù)
kitti_net=caffe.Net(kitti_deploycaffe.TEST)?#?參數(shù)由系統(tǒng)初始化
#?需要修改的層,從21類中挑出4類使用
change_layer=[‘conv4_3_norm_mbox_conf‘‘fc7_mbox_conf‘‘conv6_2_mbox_conf‘‘conv7_2_mbox_conf‘‘conv8_2_mbox_conf‘‘conv9_2_mbox_conf‘]
#?定義字典,層名和輸入通道數(shù)對應起來,有兩種類型,prior_box=4?or?6
name_channel_84={‘conv4_3_norm_mbox_conf‘:512‘conv8_2_mbox_conf‘:256‘conv9_2_mbox_conf‘:256}
name_channel_126={‘fc7_mbox_conf‘:1024‘conv6_2_mbox_conf‘:512‘conv7_2_mbox_conf‘:256}
for?name?in?voc_net.params.keys():
????if(name?not?in?change_layer):
????????if(name==‘conv4_3_norm‘):
????????????kitti_net.params[name][0].data[...]?=?voc_net.params[name][0].data?#?單獨處理conv4_3_norm
????????else:
????????????kitti_net.params[name][0].data[...]?=?voc_net.params[name][0].data
????????????kitti_net.params[name][1].data[...]?=?voc_net.params[name][1].data
#?處理mbox_conf的卷積層參數(shù),首先是prior_box=4的三個層
for?namechannel?in?name_channel_84.items():
????weight=voc_net.params[name][0].data?#?暫存卷積核權重
????bias=voc_net.params[name][1].data?#?暫存偏置項
????w=np.zeros((16channel33))?#?目標維度是(16channel33),初始化為全0
????b=np.zeros((16))?#?偏置項是一維矩陣
????#?按照voc的類別順序,依次提取背景(0)、自行車(2)、汽車(7)、行人(15)的卷積核權重和偏置項
????for?i?in?[0123]:
????????w[4?*?i?...]?=?weight[21?*?i?...]
????????w[1?+?4?*?i?...]?=?weight[2?+?21?*?i?...]
????????w[2?+?4?*?i?...]?=?weight[7?+?21?*?i?...]
????????w[3?+?4?*?i?...]?=?weight[15?+?21?*?i?...]
????????b[4?*?i]?=?bias[21?*?i]
????????b[1?+?4?*?i]?=?bias[2?+?21?*?i]
????????b[2?+?4?*?i]?=?bias[7?+?21?*?i]
????????b[3?+?4?*?i]?=?bias[15?+?21?*?i]
????#?存入到kitti_net的對應層
????kitti_net.params[name][0].data[...]=w
????kitti_net.params[name][1].data[...]=b
#?處理mbox_conf的卷積層參數(shù),首然后是prior_box=6的三個層
for?namechannel?in?name_channel_126.items():
????weight=voc_net.params[name][0].data?
????bias=voc_net.params[name][1].data?
????w=np.zeros((24channel33))?
????b=np.zeros((24))?
????for?i?in?[012345]:
????????w[4?*?i?...]?=?weight[21?*?i?...]
????????w[1?+?4?*?i?...]?=?weight[2?+?21?*?i?...]
????????w[2?+?4?*?i?...]?=?weight[7?+?21?*?i?...]
????????w[3?+?4?*?i?...]?=?weight[15?+?21?*?i?...]
????????b[4?*?i]?=?bias[21?*?i]
????????b[1?+?4?*?i]?=?bias[2?+?21?*?i]
????????b[2?+?4?*?i]?=?bias[7?+?21?*?i]
????????b[3?+?4?*?i]?=?bias[15?+?21?*?i]
????kitti_net.params[name][0].data[...]=w
????kitti_net.params[name][1].data[...]=b
print(‘all?the?parameters?have?been?wrote.‘)
#?保存caffemodel文件到本地目錄
#?使用該模型作為預訓練模型,可加快訓練速度,精度也有一定提升
kitti_net.save(‘/home/mx/tempfile/net_surgery/V
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????3525??2018-01-26?13:25??convert_caffemodel_ch.py
?????文件???????24528??2017-04-23?06:46??deploy_kitti.prototxt
?????文件???????24539??2016-12-19?12:01??deploy_voc.prototxt
- 上一篇:dubbo.xsd 下載37640
- 下一篇:計算機圖形學.pdf
評論
共有 條評論