zoukankan      html  css  js  c++  java
  • Caffe: SSD模型

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

    参考博文:

    1. * ssd模型配置及运行demo

    2. * SSD: Signle Shot Detector 用于自然场景文字检测

    3. SSD的配置安装与测试

    4. * SSD: Single Shot MultiBox Detector检测单张图片

    简介:

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

    第一部分:安装SSD(caffe)

    1、安装Git

    终端输入:

    sudo apt-get install git  

    2、安装SSD

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

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

    会在examples目录下出现ssd项目 

    第二部分:配置SSD(caffe)

    终端输入:
    cd /home/**(您服务器的名字)/caffe

    cp Makefile.config.example Makefile.config

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

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

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

    第三部分:下载数据文件

    1、 预训练模型下载

    下载地址:VGG_ILSVRC_16_layers_fc_reduced.caffemodel

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

    2、下载VOC2007和VOC2012数据集

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

    终端输入:

    cd /home/**(您服务器的名字)/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  

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

    cd /home/**(您服务器的名字)/data
    tar -xvf VOCtrainval_11-May-2012.tar
    tar -xvf VOCtrainval_06-Nov-2007.tar
    tar -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/**(您服务器的名字)/caffe
    python 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-smi
    Tue 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服务器桌面环境下运行命令

      

      

  • 相关阅读:
    Python爬虫之记录一次下载验证码的尝试
    Python之学会测试,让开发更加高效(一)
    NLP(二十八)多标签文本分类
    NLP(二十七)开放领域的三元组抽取的一次尝试
    NLP(二十六)限定领域的三元组抽取的一次尝试
    Numpy之数据保存与读取
    TortoiseGit的首次使用
    NLP(二十五)实现ALBERT+Bi-LSTM+CRF模型
    NLP(二十四)利用ALBERT实现命名实体识别
    NLP(二十三)序列标注算法评估模块seqeval的使用
  • 原文地址:https://www.cnblogs.com/AbcFly/p/6425204.html
Copyright © 2011-2022 走看看