使用Caffe-SSD打包Wider Face为LMDB格式

 注意:使用Caffe-SSD打包Wider Face为LMDB格式,需要事先将Wider Face转化为VOC格式,可以看我的博客,将WIDER FACE数据集转为VOC格式

 

第一步:下载Caffe-SSD源码,源码地址:Caffe-SSD源码

使用Caffe-SSD打包Wider Face为LMDB格式_第1张图片

下载后进行解压,然后用pycharm打开。

第二步:在pycharm打开后在data文件夹下新建名为widerface文件夹

使用Caffe-SSD打包Wider Face为LMDB格式_第2张图片

第三步:在widerface文件夹里需要新建三个文件,分别为create_list.sh,create_data.sh和labelmap_voc.prototxt 。

使用Caffe-SSD打包Wider Face为LMDB格式_第3张图片

 create_list.sh代码:

#!/bin/bash

root_dir=$D:\pytorch      #这里需要注意,$后的路径需要改为你自己的wider face的上一级目录
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 wider_face         #  in后的wider_face需要根据你自己的文件名字进行修改
  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();' > $rand_file
    mv $rand_file $dst_file
  fi
done

create_data.sh代码:

cur_dir=$(cd $( dirname ${BASH_SOURCE[0]} ) && pwd )
root_dir=$cur_dir/../..

cd $root_dir

redo=1
data_root_dir="$D:\pytorch"   #这里和create_list.sh一样
dataset_name="widerface"      #这里需要注意一下,双引号里面是你在data文件夹里所新建的文件名
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 --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

 labelmap_voc.prototxt,因为我只是进行人脸检测,所以只需要识别出背景和人脸即可,

item{
  name: "none_of_the_above"
  label: 0
  display_name: "background"
}
item{
  name: "face"
  label: 1
  display_name: "face"
}

 第四步:在pycharm中的Terminal分别输入./data/widerface/create_list.sh和./data/widerface/create_data.sh运行即可。运行成功后会在widerface文件夹下生成以下文件,在文件夹下就有相应的打包好的数据了。

使用Caffe-SSD打包Wider Face为LMDB格式_第4张图片

 注意!!!!!

在pycharm中运行.sh文件需要安装Git

你可能感兴趣的:(目标检测,python,深度学习,pycharm)