如何在Caffe下实现SSD caffe部署

   2023-03-08 学习力508
核心提示:一. 配置 Caffe环境及下载、编译、测试SSD源码1.下载源码git clone https://github.com/weiliu89/caffe.gitcd caffegit checkout ssd2. 编译源码配置Makefile.config【Instuction】【已配置好文件】编译python接口等make -j8# Make sure to include $CAFFE_RO

一. 配置 Caffe环境及下载、编译、测试SSD源码

1.下载源码

git clone https://github.com/weiliu89/caffe.git
cd caffe
git checkout ssd

2. 编译源码

make -j8
# Make sure to include $CAFFE_ROOT/python to your PYTHONPATH.
make py
make test -j8
# (Optional)
make runtest -j8

3.测试源码

  • 下载训练好的模型,放到$CAFFE_ROOT/models/
  • 下载VOC2007、VOC2012等数据集,解压缩,放到$HOME/caffe/data/
# Download the data.
cd $HOME/caffe/data
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
# Extract the data.
tar -xvf VOCtrainval_11-May-2012.tar
tar -xvf VOCtrainval_06-Nov-2007.tar
tar -xvf VOCtest_06-Nov-2007.tar
  • 生成LMDB格式数据集
    • 修改./data/VOC0712/create_list.sh中的root_dir、name等
    • 修改./data/VOC0712/create_data.sh中的data_root_dir、dataset_name等
cd $CAFFE_ROOT
# Create the trainval.txt, test.txt, and test_name_size.txt in data/VOC0712/
./data/VOC0712/create_list.sh
# You can modify the parameters in create_data.sh if needed.
# It will create lmdb files for trainval and test with encoded original image:
#   - $HOME/data/VOCdevkit/VOC0712/lmdb/VOC0712_trainval_lmdb
#   - $HOME/data/VOCdevkit/VOC0712/lmdb/VOC0712_test_lmdb
# and make soft links at examples/VOC0712/
./data/VOC0712/create_data.sh
  • 测试SSD源码
    • 注意修改gpu id及 device_id
    • mAP score在0.77左右
cd $CAFFE_ROOT
# You can modify the parameters in score_ssd_pascal.py if needed.
python examples/ssd/score_ssd_pascal.py

如何在Caffe下实现SSD

  • 单张图片测试
    • 使用jupyter notebook打开/home/amax/caffe/examples/ssd_detect.ipynb,另存为ssd_detect.py
    • 注释掉get_ipython().magic(u'matplotlib inline')
    • matplotlib.get_backend()设置为TkAgg
    • 末尾加上plt.show()
    • 更改caffe_root、model_def、image等路径,运行即可
labelmap_file = 'data/VOC0712/labelmap_voc.prototxt'
model_def = 'models/VGGNet/VOC0712/SSD_300x300/deploy.prototxt'
model_weights = 'models/VGGNet/VOC0712/SSD_300x300/VGG_VOC0712_SSD_300x300_iter_120000.caffemodel'
image = caffe.io.load_image('examples/images/cat.jpg')

如何在Caffe下实现SSD

二.使用SSD训练自己的数据集

1.生成训练数据、测试数据

  • 将JPEG等图片格式转换为VOC格式,存放于$caffe_root/data/VOCdevkit/ssd_test
    • 参考链接https://www.cnblogs.com/EstherLjy/p/8215596.html
  • 创建目录$CAFFE_ROOT/data/ssd_test,同时将data/VOC0712下的create_list.sh、create_data.sh、labelmap_voc.prototxt这三个文件copy到该目录下,分别重命名
  • 修改标注文件$CAFFE_ROOT/data/ssd_test/labelmap_voc_ssd_test.prototxt为自己的类别,注意保留label 0,background类别
  • 创建目录$CAFFE_ROOT/examples/ssd_test
  • 修改两个create_xxx_xxx.sh文件,将与VOC0712相关的信息替换成ssd_test,然后运行
cd $CAFFE_ROOT
./data/ssd_test/create_list.sh
./data/ssd_test/create_data.sh

2.训练

  • 下载预训练模型VGG_ILSVRC_16_layers_fc_reduced.caffemodel,放在 ./models/VGGNet/路径下
  • 修改训练文件$CAFFE_ROOT/data/example/ssd/ssd_pascal.py
    • train_data、test_data存放地址(82-84行)
    • mdel_name、save_dir等(236-246行)
    • name_size_file、pretrain_model、label_map_file等(258-263行)
    • 类别数:num_classes = open(label_map_file).read().count(‘label’)
    • 测试图片数量:num_test_image = len(open(name_size_file).readlines())
    • solver_param 中’max_iter’: 120000, 表示最大迭代次数;’test_interval’: 10000, 每次评估模型效果的间隔迭代次数,用于观察是否收敛及过拟合
    • gpus=''0''
cd $CAFFE_ROOT
python example/ssd/ssd_pascal.py

3.测试训练结果

cd $CAFFE_ROOT
python example/ssd/score_ssd_pascal.py

三.其他

遇到的错误及相关解决方案

四.参考链接

【1】https://github.com/weiliu89/caffe/tree/ssd

【2】https://blog.csdn.net/zhy8623080/article/details/73188594

【3】https://www.cnblogs.com/EstherLjy/p/6863890.html

【4】https://blog.csdn.net/lilai619/article/details/53791420

【5】https://blog.csdn.net/jesse_mx/article/details/52965281

 
反对 0举报 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • caffe调试 ubuntu1404+eclipse
    转自:http://blog.csdn.net/yaoxingfu72/article/details/47999795首先确保你caffe编译成功,而且makefile.config中将DEBUG:=1那一行取消注释,我的caffe根目录为 caffe-master。你也可以在Eclipse中编译caffe,我是先编译好caffe,然后进入Eclipse中调试1
    03-08
  • caffe数据集——LMDB caffe scale
    caffe数据集——LMDB caffe scale
    LMDB介紹Caffe使用LMDB來存放訓練/測試用的數據集,以及使用網絡提取出的feature(為了方便,以下還是統稱數據集)。數據集的結構很簡單,就是大量的矩陣/向量數據平鋪開來。數據之間沒有什麼關聯,數據內沒有復雜的對象結構,就是向量和矩陣。既然數據並不復
    03-08
  • Caffe hdf5 layer data 大于2G 的导入
    问题:      Datatype class: H5T_FLOAT,      Check failed: error == cudaSuccess (2 vs. 0)  out of memory.      hdf5 layer 最大的导入的大小是2G, 超过会报错[1]。解决方法:     有人 h5repart -m1g 将数据集分割成多个文件每个是
    02-10
  • caffe神经网络中不同的lr_policy间的区别
    lr_policy可以设置为下面这些值,相应的学习率的计算为:- fixed:   保持base_lr不变.- step:    如果设置为step,则还需要设置一个stepsize,  返回 base_lr * gamma ^ (floor(iter / stepsize)),其中iter表示当前的迭代次数- exp:     返回base_lr
    02-10
  • Ubuntu配置GPU+CUDA+CAFFE ubuntu配置dns
    参考网站:http://blog.csdn.net/xizero00/article/details/43227019/ (主要参考)http://www.cnblogs.com/platero/p/3993877.html (caffe+cudaGPU)http://www.cnblogs.com/platero/p/4118139.html (cuDNN)http://developer.download.nvidia.com/compute/cuda/
    02-10
  • 关于深度学习(deep learning)的常见疑问 --- 谷
    问答环节问:在finetuning的时候,新问题的图像大小不同于pretraining的图像大小,只能缩放到同样的大小吗?” 答:对的:)问:目前dl在时序序列分析中的进展如何?研究思路如何,能简单描述一下么答:这个有点长,可以看看google最近的一系列machine trans
    02-10
  • 深度学习框架Caffe —— Deep learning in Prac
    因工作交接需要, 要将caffe使用方法及整体结构描述清楚。 鉴于也有同学问过我相关内容, 决定在本文中写个简单的tutorial, 方便大家参考。 本文简单的讲几个事情:Caffe能做什么?为什么选择caffe?环境整体结构Protocol buffer训练基本流程Python中训练Debu
    02-09
  • 使用caffe的HDF5数据完毕回归任务
        一直在研究怎样用caffe做行人检測问题。然而參考那些经典结构比方faster-rcnn等,都是自己定义的caffe层来完毕的检測任务。这些都要求对caffe框架有一定程度的了解。近期看到了怎样用caffe完毕回归的任务,就想把检測问题当成回归问题来解决。   
    02-09
  • caffe: train error:  Serializing 25 layers---  Check failed: proto.SerializeToOstream(&output)
    caffe: train error: Serializing 25 layers--
    I0221 21:47:41.826748  6797 solver.cpp:259]     Train net output #0: loss = 0.00413362 (* 1 = 0.00413362 loss)I0221 21:47:41.826756  6797 solver.cpp:590] Iteration 9980, lr = 0.001I0221 21:47:44.453655  6797 solver.cpp:468] Snapshott
    02-09
  • caffe添加自己的层
    caffe添加自己的层
    首先修改src/caffe/proto/下的caffe.proto,修改好后需要编译     然后修改include/caffe/layers/logwxl_layer.hpp然后修改src/caffe/layers/logwxl_layer.cpp和logwxl_layer.cu最后make all ,make test ,make runtest在make runtest的时候,卧槽有一个错
    02-09
点击排行