资源简介
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加载参数
kitti_net=caffe.Net(kitti_deploycaffe.TEST) # 参数由系统初始化
# 需要修改的层,从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‘]
# 定义字典,层名和输入通道数对应起来,有两种类型,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的卷积层参数,首先是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的卷积层参数,首然后是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
相关资源
- VOC 扩展数据集已处理,直接可用
-
UA-DETRAC的xm
l转换 - VOC2007数据集.txt
- SSD3 所有练习答案
- processdemo.rar
- STM32F103驱动SSD1353主控OLED程序 使用硬
- pascalvoc2012数据集链接.txt
- ddo放大教程+脚本-ssdp
- 64位驱动SSDTHOOK教程
- win7 64位 ssdthook
- 易语言源码编写驱动加载SSDT内核
- SSD-Z V15.03.22 汉化版(固态硬盘检测使
- 现代煤化工行业VOCs排放在线监测系统
- vocab.txt词典
- SSD1306OLED驱动芯片中文手册.pdf
- res10_300x300_ssd_iter_140000.caffemodel与dep
- SSD规范SOLID-STATE DRIVE (SSD) ENDURANCE
- Merriam-Webster‘s+Vocabulary+Builder+-+Merri
- SSD3-Exercise7
- VGG_ILSVRC2016_SSD_300x300_iter_440000.txt
- 完整版 NVMeExpressDxE.ffs.ffs
- HI3559V100SDK.rar
- sgp30-3.0.0.rar
- 群联ssd工具箱PhisonSATAToolboxV1.18绿色免
- 中景园电子0.91寸OLED模块资料
-
GaussDB_100_1.0.1-DATAba
se-REDHAT-64bit.tar - AS_SSD_Benchmark 2018-02-09
- AS SSD Benchmark 汉化版
- Windows版 SSD 擦除工具,Intel_SSD_Toolbo
-
制作VOC数据集的xm
l文件
评论
共有 条评论