资源简介
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
相关资源
- SSD4 exercise8答案
- SSD的开卡工具,适用于主控是JMF606-
- NVMeExpressDxE.ffs
- Avocent解决方案助力厦门海关IDC集中控
- 研祥智能股份的\\EVOC\\ POS结构单板电
- 研祥“EVOC”嵌入式智能平台在
- 在Infortrend ESVA存储系统中使用SSD硬盘
- Delphi Windows7环境获取硬盘序列号(支
- 基于SSD的车辆检测与识别
- SSD论文翻译
- 台湾悠景oled 12864 ssd1309 驱动程序 并口
- 川大数据库系统(SSD6)历年考题、
- ssd1305最简测试代码
- SSD目标检测算法论文-英文原版
- 天锐绿盾客户端补丁-解决文件上鼠标
- 论文研究-基于改进SSD的高效目标检测
- SSD测试介绍
- cyUSB.cyperssd的官方类库带说明
- 海力士SK hynix原厂SSD固件升级文件(
- 3DTLC技术详解
- ssda算法源码
- SSD7练习及答案
- SSD1331详细资料
- SSD1306资料手册
- ssd3全部答案,最全的
- processDesigner easyui web在线流程设计
- SSD3答案包含两个版本
- SSD5数据结构实验网上拍卖系统实验
- 200922CrossDarkhgz2009-77169.com.zip
- 精通CSS+DIV网页样式与布局
评论
共有 条评论