博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Caffe: SSD模型
阅读量:5887 次
发布时间:2019-06-19

本文共 3948 字,大约阅读时间需要 13 分钟。

SSD模型配置(训练)与运行

参考博文:

1. * 

2. * 

3. 

4. * 

简介:

SSD基于Caffe框架实现,在Github上可以获得开源代码。SSD 是用来检测物体的,那么同样可以将 SSD 用来检测自然场景图像中的文字。

第一部分:安装SSD(caffe)

1、安装Git

终端输入:

sudo apt-get install git  

2、安装SSD

在主文件下终端输入(即/home/***(您的服务器名字)这个目录):

git clone https://github.com/weiliu89/caffe.gitcd caffegit checkout ssd(出现“分支”则说明copy-check成功)

会在examples目录下出现ssd项目 

第二部分:配置SSD(caffe)

终端输入:

cd /home/**(您服务器的名字)/caffe

cp Makefile.config.example Makefile.config

打开Makefile.config,开始修改,保存退出;或者从之前caffe项目复制其配置文件到这里

终端输入:

cd /home/**(您服务器的名字)/caffemkdir buildcd build# 下面的命令都在build目录下执行cmake ..(cmake和..中间又一个空格)make all -j16("‐j16"是使用 CPU 的多核进行编译,可以极大地加速编译的速度)make pycaffe(编译pycaffe)  

注:编译最新的caffe使用cudnn,其版本要求至少为v4,否则出错.[2017-02-21]

第三部分:下载数据文件

1、 预训练模型下载

下载地址:

在caffe/models文件夹下新建文件夹,命名为VGGNet,将刚刚下载下来的文件放入这个VGGNet文件夹当中

2、下载VOC2007和VOC2012数据集

在用户主目录下(即/home/**(您服务器的名字)/)新建data/目录

终端输入:

cd /home/**(您服务器的名字)/datawget http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tarwget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tarwget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar  

解压这三个文件,终端输入(请严格按照这个顺序解压):

cd /home/**(您服务器的名字)/datatar -xvf VOCtrainval_11-May-2012.tartar -xvf VOCtrainval_06-Nov-2007.tartar -xvf VOCtest_06-Nov-2007.tar  

 

第四部分:生成LMDB文件

终端输入:

cd /home/**(您服务器的名字)/caffe./data/VOC0712/create_list.sh./data/VOC0712/create_data.sh  
 

在运行第三步时如果出现no module named caffe或者是no module named caffe-proto,则在终端输入:

export PYTHONPATH=$PYTHONPATH:/home/**(您服务器的名字)/caffe/Python

然后再次运行

第五部分:训练测试演示

1、 训练

打开caffe/examples/ssd/ssd_pascal.py这个文件,找到gpus='0,1,2,3'这一行,如果您的服务器有一块显卡,则将123删去,如果有两个显卡,则删去23,以此类推。

如果您服务器没有gpu支持,则注销以下几行,程序会以cpu形式训练。(这个是解决问题cudasuccess(10vs0)的方法) 

#Ifnum_gpus >0:    # batch_size_per_device =int(math.ceil(float(batch_size) / num_gpus))#iter_size =int(math.ceil(float(accum_batch_size) / (batch_size_per_device * num_gpus)))# solver_mode =P.Solver.GPU# device_id =int(gpulist[0]) 

保存后终端运行:

cd  /home/**(您服务器的名字)/caffepython examples/ssd/ssd_pascal.py

如果出现问题cudasuccess(2vs0)则说明您的显卡计算量有限,则编辑文件 vim examples/ssd/ssd_pascal.py ,找到batch_size = 32这一行,修改数字32为16或8或4,保存后再次终端运行 python examples/ssd/ssd_pascal.py 

注意,SSD模型训练过程中GPU显存需求略小于 8GB。这意味着4GB或6GB显存的GPU无法直接训练SSD[实验室配置为GT980,显存6GB,cudnn加速能力5],可以通过减小batchsize来绕过这个问题。

wang@VisInt:~$ nvidia-smiTue Feb 21 17:30:36 2017       +------------------------------------------------------+                       | NVIDIA-SMI 346.82     Driver Version: 346.82         |                       |-------------------------------+----------------------+----------------------+| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC || Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. ||===============================+======================+======================||   0  GeForce GTX 980 Ti  Off  | 0000:02:00.0     N/A |                  N/A ||  0%   37C    P8    N/A /  N/A |     48MiB /  6143MiB |     N/A      Default |+-------------------------------+----------------------+----------------------+                                                                               +-----------------------------------------------------------------------------+| Processes:                                                       GPU Memory ||  GPU       PID  Type  Process name                               Usage      ||=============================================================================||    0            C+G   Not Supported                                         |+-----------------------------------------------------------------------------+  

2、 测试

终端输入:

python examples/ssd/score_ssd_pascal.py  

演示detection的训练结果,数值在0.728左右

3、 用训练好的 model 进行 predict

>>演示网络摄像头识别效果,终端输入:

python examples/ssd/ssd_pascal_webcam.py  

要求机器上有摄像头,Linux服务器桌面环境下运行命令  

>>检测图片:

jupyter notebook  

打开 ~/caffe/examples/ssd_detect.ipynb

指定好 caffemodel

 

要求在Linux服务器桌面环境下运行命令

  

  

 

转载于:https://www.cnblogs.com/AbcFly/p/6425204.html

你可能感兴趣的文章
详解消息队列的设计与使用
查看>>
使用Sqoop从mysql向hdfs或者hive导入数据时出现的一些错误
查看>>
控制子窗口的高度
查看>>
处理 Oracle SQL in 超过1000 的解决方案
查看>>
Alpha线性混合实现半透明效果
查看>>
chkconfig 系统服务管理
查看>>
ORACLE---Unit04: SQL(高级查询)
查看>>
贪食蛇
查看>>
201521123009 《Java程序设计》第11周学习总结
查看>>
Python3之多线程学习
查看>>
MVC和MTV结构分析
查看>>
(转)微信网页扫码登录的实现
查看>>
mariadb启动报错:[ERROR] Can't start server : Bind on unix socket: Permission denied
查看>>
nginx的信号量
查看>>
云im php,网易云IM
查看>>
河南农业大学c语言平时作业答案,河南农业大学2004-2005学年第二学期《C语言程序设计》期末考试试卷(2份,有答案)...
查看>>
c语言打开alist文件,C语言 文件的打开与关闭详解及示例代码
查看>>
c语言 中的共用体和结构体如何联合定义,结构体(Struct)、联合体(Union)和位域
查看>>
SDL如何嵌入到QT中?!
查看>>
P1026 统计单词个数
查看>>