注意:使用Caffe-SSD打包Wider Face为LMDB格式,需要事先将Wider Face转化为VOC格式,可以看我的博客,将WIDER FACE数据集转为VOC格式
第一步:下载Caffe-SSD源码,源码地址:Caffe-SSD源码
下载后进行解压,然后用pycharm打开。
第二步:在pycharm打开后在data文件夹下新建名为widerface文件夹
第三步:在widerface文件夹里需要新建三个文件,分别为create_list.sh,create_data.sh和labelmap_voc.prototxt 。
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(<STDIN>);' > $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文件夹下生成以下文件,在文件夹下就有相应的打包好的数据了。
注意!!!!!
在pycharm中运行.sh文件需要安装Git