caffe框架跑mycaffe

前提:配置caffe环境

1. export PYTHONPATH=/home/zhai/experiment/Mycaffe/python:$PYTHONPATH

2. cd Mycaffe/

3. make all -j8

4. make pycaffe

首选在$HOME/data中新建一个UAVDT文件夹,将数据集(VOC2007格式)都放到data中,这样有利于统一管理。

caffe框架跑mycaffe_第1张图片

生成lmdb格式文件(caffe输入格式)

首先先把从Mycaffe/data/VOC0712/ 以下几个文件拷贝到Mycaffe/data/UAVDT中:

caffe框架跑mycaffe_第2张图片

create_list.sh 是生成训练数据和样本对list的txt文件。create_data.sh是用来根据list生成trainval和test的lmdb文件的脚本。labelmap_voc.prototxt是VOC数据集的labelmap,即类别与名称的对应关系, 

这三个文件的修改要求参考:https://blog.csdn.net/zxmyoung/article/details/108463730

我的labelmap_voc.prototxt

item {
  name: "none_of_the_above"
  label: 0
  display_name: "background"
}
item {
  name: "1"
  label: 1
  display_name: "car"
}
item {
  name: "2"
  label: 2
  display_name: "bus"
}
item {
  name: "3"
  label: 3
  display_name: "truck"
}
item {
  name: "4"
  label: 4
  display_name: "motor"
}
item {
  name: "5"
  label: 5
  display_name: "bicycle"
}
item {
  name: "6"
  label: 6
  display_name: "tanker"
}

我的create_list.sh

#!/bin/bash

root_dir=$HOME/data  #修改
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 UAVDT #修改
  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

在Mycaffe/data/UAVDT下执行命令:

bash ./create_list.sh

 caffe框架跑mycaffe_第3张图片

我的create_data.sh

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

cd $root_dir

redo=1
data_root_dir="$HOME/data"
dataset_name="UAVDT"
mapfile="$root_dir/data/$dataset_name/labelmap_voc.prototxt"
anno_type="detection"
db="lmdb"
min_dim=0
max_dim=0
width=512
height=512

extra_cmd="--encode-type=jpg --encoded"
if [ $redo ]
then
  extra_cmd="$extra_cmd --redo"
fi
for subset in trainval test
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

如果训练图像不是.jpeg或.jpg格式,还需要对上述两个文件中出现的指定的图像后缀名做一下修改,需要修改的地方不多。

在Mycaffe/data/UAVDT下执行命令(执行之前,最好删掉##注释):

bash ./create_data.sh

 caffe框架跑mycaffe_第4张图片

caffe框架跑mycaffe_第5张图片

其次,发现在/home/zhai/experiment/Mycaffe/examples中有UAVDT里面为lmdb文件夹的超链接文件,后续训练使用

caffe框架跑mycaffe_第6张图片

caffe框架跑mycaffe_第7张图片

以上数据集完成

训练

首先在DJI_train.sh和resolver.prototxt(在$Mycaffe/models/VGGNet/VOC0712/)中更改路径,然后运行

cd $caffe/models/VGGNet/VOC0712/**method_folder**/
sh DJI_train.sh

 

 

 

 

 

评估:

 

待补充》》》》》》》》》》》》》》》》》》

 

你可能感兴趣的:(caffe,目标检测-实验)