生成caffe所用的lmdb数据

本文只介绍在caffe框架下生成lmdb格式的数据,因为在caffe框架下训练和测试都只能用lmdb格式的数据:

准备:

1、ubuntu 18.04

2、新建data文件夹,内含train和test两个文件夹

3、train文件夹和test文件夹里面分别含img和xml两个文件夹,里面分别是原图像(.jpg格式)和标签(.xml格式,用LabelImage标注工具生成)

4、在train文件夹里,通过命令行敲入:ls img/* > img.txt 生成一个包含图像路径的txt文本文件,再次通过命令行敲入:ls xml/* > xml.txt;test文件夹同样如此。

5、编写脚本文件(根据4中生成的两个txt文本文件),这里用的是python脚本(也可以编写shell脚本)生成一个train.txt文本文件,里面一行对应一张图片的路径和对应一张图片的标注,脚本如下:

text1=open("/data_1/chepai_detection_SSD/train/img.txt","r")
text2=open("/data_1/chepai_detection_SSD/train/xml.txt","r")
new_text=open("/data_1/chepai_detection_SSD/train/train.txt","w")
text1_context=text1.readlines()
text2_context=text2.readlines()
for each_line1 in text1_context:
    each_line1=each_line1.strip()
    common_part=each_line1.split('/')[3].split('.')[0]
    for each_line2 in text2_context:
        each_line2 = each_line2.strip()
        common_part2=each_line2.split('/')[3].split('.')[0]
        if common_part2==common_part:
            new_text.write(each_line1+' '+each_line2+'\n')
new_text.close()
text1.close()
text2.close()

6、根据5中生成好的train.txt文本文件,编写脚本(这里用的是shell脚本)调用caffe中自带的create_annoset.py脚本文件生成lmdb格式的数据。

#!/bin/bash

caffe_dir="/home/sjw/SSD/caffe" #修改到自己的caffe目录
export PYTHONPATH=$PATHONPATH:/home/sjw/SSD/caffe/python    
#create_list.sh
dataset_name="lmdb_data" #生成的lmdb名称
data_root_dir="/data_1/chepai_detection_SSD/data"  #数据主目录,其中包含train和test两个文件夹
data_list_dir="/data_1/chepai_detection_SSD/ssd/" #保存生成的文件列表txt的地方
mapfile="${data_list_dir}labelmap_voc.prototxt"#标签分为几类的配置文件
redo=1
anno_type="detection"
db="lmdb"
min_dim=0
max_dim=0
width=0
height=0

extra_cmd="--encode-type=png --encoded"

echo "========== Beging create data... =========="
if [ $redo ]
then
  extra_cmd="$extra_cmd --redo"
fi
for subset in trainval
do
  python $caffe_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} ${data_list_dir}$subset.txt ${data_list_dir}$db/$dataset_name"_"$subset"_"$db ${caffe_dir}/examples/$dataset_name
done
echo "========== create data done! =========="

 

其中labelmap_voc.prototxt"#标签分为几类的配置文件的建立如下:

item {
  name: "none_of_the_above"
  label: 0
  display_name: "background"
}
item {
  name: "cat"
  label: 1
  display_name: "cat"
}
item {
  name: "dog"
  label: 2
  display_name: "dog"
}

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值