zoukankan      html  css  js  c++  java
  • ssd制作数据和训练

    1.在/data/VOCdevkit下建立自己的数据集名称如MyDataSet,在MyDataSet目录下需包含Annotations、ImageSets、JPEGImages三个文件夹:

    2、ImageSets下建立Main文件夹

    3、新建dir.py 写入下面代码

    import os  
    import random  
    
    trainval_percent = 0.66  
    train_percent = 0.5  
    xmlfilepath = 'Annotations'  
    txtsavepath = 'ImageSetsMain'  
    total_xml = os.listdir(xmlfilepath)  
    
    num=len(total_xml)  
    list=range(num)  
    tv=int(num*trainval_percent)  
    tr=int(tv*train_percent)  
    trainval= random.sample(list,tv)  
    train=random.sample(trainval,tr)  
    
    ftrainval = open('ImageSets/Main/trainval.txt', 'w')  
    ftest = open('ImageSets/Main/test.txt', 'w')  
    ftrain = open('ImageSets/Main/train.txt', 'w')  
    fval = open('ImageSets/Main/val.txt', 'w')  
    
    for i  in list:  
        name=total_xml[i][:-4]+'
    '  
        if i in trainval:  
            ftrainval.write(name)  
            if i in train:  
                ftrain.write(name)  
            else:  
                fval.write(name)  
        else:  
            ftest.write(name)  
    
    ftrainval.close()  
    ftrain.close()  
    fval.close()  
    ftest .close()  

    4、运行python  dir.py,在ImageSetsMain里有四个txt文件:test.txt train.txt trainval.txt val.txt

    5、在caffe-ssd/data目录下创建一个自己的文件夹MyDataSet文件夹,把data/VOC0712目录下的create_list.sh 、create_data.sh、labelmap_voc.prototxt 这三个文件拷贝到MyDataSet下

    6、在caffe-ssd/examples下创建MyDataSet文件夹,用于存放后续生成的lmdb文件

    7、修改labelmap_voc.prototxt文件(改成自己的类别),以及create_list.sh和create_data.sh文件中的相关路径

    #labelmap_voc.prototxt需修改:
    item {
      name: "none_of_the_above"
      label: 0
      display_name: "background"
    }
    item {
      name: "aeroplane"
      label: 1
      display_name: "person"
    }
    
    #create_list.sh需修改:
    root_dir=/home/yi_miao/data/Mydataset/
    ...
    for name in yourownset
    ...
    #if [[ $dataset == "test" && $name == "VOC2012" ]]
    # then
    #  continue
    # fi
    
    #create_data.sh需修改:
    root_dir=/home/yi_miao/caffe-ssd
    data_root_dir="/home/yi_miao/data/Mydataset"
    dataset_name="Mydataset"

    8、运行脚本

    ./data/mydataset/create_list.sh
    ./data/mydataset/create_data.sh

    9、训练

     caffe/models/VGGNet/VGGNet 预训练模型

    2、

    82行:train_data路径;
    84行:test_data路径;
    237-246行:model_name、save_dir、snapshot_dir、job_dir、output_result_dir路径;
    259-263行:name_size_file、label_map_file路径;
    266行:num_classes修改为1 + 类别数;
    360行:num_test_image:测试集图片数目

    另外, 如果你只有一个GPU, 需要修改285行: gpus=”0,1,2,3” ===> 改为”0” ,如果出现 out of memory,则将batch size 相应改小一些。

    3、训练

    python ./examples/ssd/ssd_pascal.py 

    4、测试

    1.测试单张图片 
    测试程序为/examples/ssd/ssd_detect.py,运行之前,我们需要修改相关路径代码,ssd_detect.py作如下修改(#部分为修改内容):

    parser.add_argument('--labelmap_file',
                            default='data/VOC0712/labelmap_voc.prototxt')#**修改为你的路径**
        parser.add_argument('--model_def',
                            default='models/VGGNet/VOC0712/SSD_300x300/deploy.prototxt')#**修改为你的路径**
        parser.add_argument('--image_resize', default=300, type=int)
        parser.add_argument('--model_weights',
                            default='models/VGGNet/VOC0712/SSD_300x300/'#**修改为你的路径**
                            'VGG_VOC0712_SSD_300x300_iter_120000.caffemodel')
        parser.add_argument('--image_file', default='examples/images/fish-bike.jpg')#**修改为你的路径**

    Python ./example/ssd/ssd_detect.py

     c++测试

    cd ssd-caffe
    $ build/examples/ssd/ssd_detect.bin   models/VGGNet/VOC0712/SSD_300x300/deploy.prototxt   models/VGGNet/VOC0712/SSD_300x300/VGG_VOC0712_SSD_300x300_iter_120000.caffemodel  examples/images/test.txt 

    其中test.txt内容为

    examples/images/1.jpg 
    examples/images/2-bike.jpg 
    examples/images/3.jpg

     结果可视化

    $ python examples/ssd/plot_detections.py   examples/images/result.txt  /home/your path/ssd-caffe  --labelmap-file data/VOC0712/labelmap_voc.prototxt  --save-dir examples/
    找不到
    caffe.pb.h

    $ protoc src/caffe/proto/caffe.proto --cpp_out=. $ sudo mkdir include/caffe/proto $ sudo mv src/caffe/proto/caffe.pb.h include/caffe/proto

    参考:https://blog.csdn.net/yu734390853/article/details/79481660

  • 相关阅读:
    ubuntu16.04系统安装
    SQL注入之Sqli-labs系列第二十六关(过滤空格、注释符、逻辑运算符注入)和第二十六A
    提权心法(2)提权基本流程
    布尔盲注
    提权心法(1)信息搜集很重要
    POST注入-双注入
    POST型注入-报错注入
    字符型注入
    Web中间件常见安全漏洞总结
    SSRF 从入门到批量找漏洞
  • 原文地址:https://www.cnblogs.com/crazybird123/p/9378037.html
Copyright © 2011-2022 走看看