caffe用自己的数据生成lmdb并训练MobileNet-SSD

这篇博客详细介绍了如何基于Caffe训练MobileNet-SSD模型,包括从git克隆仓库,创建LMDB数据集,修改脚本,到训练模型的整个流程。重点涉及数据组织、txt文件生成、脚本修改以及训练配置文件的调整。适合熟悉Caffe并想进行目标检测模型训练的读者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0. 前言

1. 创建lmdb

  • 在caffe路径下执行
cd data
mkdir -p mydata/MobileNet-SSD
cd mydata/MobileNet-SSD
mkdir Annotations ImageSets JPEGImages
cd ImageSets
mkdir Main
cd ../..
cp ../VOC0712/* .   #coco_voc_map.txt用不着,只是为了省事,一起复制过来
cd ../../examples
mkdir mydata
  • 将图片复制到JPEGImages中,标签复制到Annotations中
  • Main里面放train.txt, trainval.txt, test.txt,val.txt,内容是你分好的不带后缀名的图片名字
    • 可以用类似这样的命令生成txt的内容ls|cut -d '.' -f 1 > ../ImageSets/Main/trainval.txt
  • 修改create_list.sh如下
#!/bin/bash
# 第一处修改
root_dir=/home/lwd/code/dl/ssd/caffe/data/mydata
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 MobileNet-SSD 
  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="/home/lwd/code/dl/ssd/caffe/data/mydata"
# 第二处修改
dataset_name="mydata"
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根据自己的类别修改

2. 训练

  • 在caffe目录下
mkdir snapshot
./build/tools/caffe train --solver=examples/MobileNet-SSD/voc/solver.prototxt
  • 配置文件里的路径要改成自己的
  • batch_size依照显卡口味设置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刀么克瑟拉莫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值