zoukankan      html  css  js  c++  java
  • train yourself ssd network

    1、新建目录:caffeSSD/data/VOCdevkit/callsmoke

    2、将标注图片和标注文件放到目录 caffeSSD/data/VOCdevkit/callsmoke 下面,对应Annotations和JPEGImages两个文件夹

    3、目录 caffeSSD/data/VOCdevkit/callsmoke 下,建立ImageSets文件夹,在ImageSets文件夹下面建立Main文件夹

    4、制作训练、测试文本目录,在caffeSSD/data/VOCdevkit/callsmoke目录下面建立dir.py

    import os  
    import random  
    
    trainval_percent = 0.9995  
    train_percent = 0.9995
    xmlfilepath = 'Annotations'  
    #xmlfilepath='1jpgTest'
    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()  

    5、caffeSSD/data 目录下建立callsmoke文件夹,callsmoke文件夹下面建立create_data.sh、create_list.sh、labelmap_voc.prototxt三个文件

    (1)运行create_list.sh

    #!/bin/bash
    
    root_dir=/自己目录/workspace/caffeSSD/data/VOCdevkit/
    sub_dir=ImageSets/Main
    bash_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
    for dataset in trainval test
    do
      dst_file=$bash_dir/$dataset.txt
      if [ -f $dst_file ]
      then
        rm -f $dst_file
      fi
      for name in callsmoke
      do
        #if [[ $dataset == "test" && $name == "VOC2012" ]]
        #then
          #continue
        #fi
        echo "Create list for $name $dataset..."
        dataset_file=$root_dir/$name/$sub_dir/$dataset.txt
    
        img_file=$bash_dir/$dataset"_img.txt"
        cp $dataset_file $img_file
        sed -i "s/^/$name/JPEGImages//g" $img_file
        sed -i "s/$/.jpg/g" $img_file
    
        label_file=$bash_dir/$dataset"_label.txt"
        cp $dataset_file $label_file
        sed -i "s/^/$name/Annotations//g" $label_file
        sed -i "s/$/.xml/g" $label_file
    
        paste -d' ' $img_file $label_file >> $dst_file
    
        rm -f $label_file
        rm -f $img_file
      done
    
      # Generate image name and size infomation.
      if [ $dataset == "test" ]
      then
        $bash_dir/../../build/tools/get_image_size $root_dir $dst_file $bash_dir/$dataset"_name_size.txt"
      fi
    
      # Shuffle trainval file.
      if [ $dataset == "trainval" ]
      then
        rand_file=$dst_file.random
        cat $dst_file | perl -MList::Util=shuffle -e 'print shuffle(<STDIN>);' > $rand_file
        mv $rand_file $dst_file
      fi
    done

    (2)、create_data.sh

    cur_dir=$(cd $( dirname ${BASH_SOURCE[0]} ) && pwd )
    #root_dir=$cur_dir/../..
    
    
    root_dir=/home/zyw/workspace/caffeSSD
    
    cd $root_dir
    
    redo=1
    data_root_dir="/自己目录/workspace/caffeSSD/data/VOCdevkit"
    dataset_name="callsmoke"
    mapfile="$root_dir/data/$dataset_name/labelmap_voc.prototxt"
    anno_type="detection"
    db="lmdb"
    min_dim=0
    max_dim=0
    width=0
    height=0
    
    extra_cmd="--encode-type=jpg --encoded"
    if [ $redo ]
    then
      extra_cmd="$extra_cmd --redo"
    fi
    for subset in test trainval
    do
      python $root_dir/scripts/create_annoset.py --anno-type=$anno_type --label-map-file=$mapfile --min-dim=$min_dim --max-dim=$max_dim --resize-width=$width --resize-height=$height --shuffle --check-label $extra_cmd $data_root_dir $root_dir/data/$dataset_name/$subset.txt $data_root_dir/$dataset_name/$db/$dataset_name"_"$subset"_"$db examples/$dataset_name
    done

     (3)、labelmap_voc.prototxt

    写入自己要检测的物体类别和背景

    item {
      name: "none_of_the_above"
      label: 0
      display_name: "background"
    }
    item {
      name: "hand"
      label: 1
      display_name: "hand"
    }
    item {
      name: "head"
      label: 2
      display_name: "head"
    }
  • 相关阅读:
    645. Set Mismatch
    400. Nth Digit
    633. Sum of Square Numbers
    507. Perfect Number
    453. Minimum Moves to Equal Array Elements
    441. Arranging Coins
    Girls and Boys
    二分图
    Gap
    SZU-A22
  • 原文地址:https://www.cnblogs.com/crazybird123/p/12930858.html
Copyright © 2011-2022 走看看