'''
在深度学习中,第一步需要完成的是对样本数据的读取和处理成某一深度学习框架可以接受的数据类型
本教程一tensorflow为例
首先,定义一些数据处理的函数
1. 读取样本文件子函数
'''
#input:
# base_dir 根目录
# label_path 放置样本标签目录
def read_annotation(base_dir, label_path):
'''读取文件的image,box'''
data = dict()
images = []
bboxes = []
labelfile = open(label_path, 'r')
while True:
# 图像地址
imagepath = labelfile.readline().strip('\n')#按行读数据
if not imagepath:
break
imagepath = base_dir + '/images/' + imagepath
images.append(imagepath)
# 人脸数目
nums = labelfile.readline().strip('\n')
one_image_bboxes = []#声明一个矩阵,放包围框
for i in range(int(nums)):
bb_info = labelfile.readline().strip('\n').split(' ')#标签信息以空格间隔区分 bb_info四维,坐标点
#人脸框
face_box = [float(bb_info[i]) for i in range(4)]#
xmin = face_box[0]
ymin = face_box[1]
xmax = xmin + face_box[2]
ymax = ymin + face_box[3]
one_image_bboxes.append([xmin, ymin, xmax, ymax])#人脸框的对角点坐标的集合
bboxes.append(one_image_bboxes)
data['images'] = images
data['bboxes'] = bboxes
return data
'''
返回的data中,image为图像数据,bboxes为样本标签矩形框的坐标
'''
上面的txt文件就是样本的标签文件,与图片数据同目录下就可以。
对应的图片数据为