ONE:
首先当然是caffe的编译和安装啦,这里不详细阐述,下面内容都是基于caffe-ssd版本来做的。进行下一步之前,确保你的caffe是ssd版本且没有任何问题!
TWO:
— 准备数据集,jpeg,jpg,png…都可以,反正是你自己的数据集。
—创建文件夹,在你的caffe/data/路径下创建一个数据集文件,博主为如下图:
然后在imageSets文件夹再新建空文本:labelmap_fire.prototxt(当然,你也可以自己命名)
(按照自己情况自己修改)
—用标注工具对你自己的数据集进行标记:(将脚本放在data/fire/ImageSets下进行,比较方便)
博主在这里用的是labelImg,标注后会生成对应的xml文件,存在Annotations文件夹内。标注完成后将你的所有图片全都存进JPEGImages文件夹中,并在该文件夹下创建trainval和test两个文件,分别存放你要进行训练和测试的数据集,博主按照4:1进行存放
—接下来:
编辑trainval.txt和test.txt。用如下脚本进行:(路径自行修改)
#! /usr/bin/python
# -*- coding:UTF-8 -*-
import os, sys
import glob
#训练集和测试集路径
trainval_dir = "/home/ff/caffe-ssd/data/fire/JPEGImages/trainval"
test_dir = "/home/ff/caffe-ssd/data/fire/JPEGImages/test"
trainval_img_lists = glob.glob(trainval_dir + '/*.jpg') #获取trainval中所有.jpg的文件
trainval_img_names = [] #获取名称
for item in trainval_img_lists:
temp1, temp2 = os.path.splitext(os.path.basename(item))
trainval_img_names.append(temp1)
test_img_lists = glob.glob(test_dir + '/*.jpg') #获取test中所有.png文件
test_img_names = []
for item in test_img_lists:
temp1, temp2 = os.path.splitext(os.path.basename(item))
test_img_names.append(temp1)
#图片路径和xml路径
dist_img_dir = "data/fire/JPEGImages" #需要写入txt的trainval和test路径,因为我们在PNGImges目录下除了有trainval和test文件夹外还有所有图片,所以只用写到PNGImages
dist_anno_dir = "/data/fire/Annotations" #需要写入的xml路径 !!!从caffe跟目录下第一个文件开始写
trainval_fd = open("/home/ff/caffe-ssd/data/fire/ImageSets/trainval.txt", 'w') #存到哪里,及存储的名称
test_fd = open("/home/ff/caffe-ssd/data/fire/ImageSets/test.txt", 'w')
for item in trainval_img_names:
trainval_fd.write(dist_img_dir + '/' + str(item)