深度学习在图像分类领域已经取得长足地进展,以下以一个有趣的例子来学习图像分类算法。
训练数据:人脸数据集(链接: https://pan.baidu.com/s/1gf4FQD1 密码: ddkx)
环境:tensorflow,python3.5
1)加载数据集并对数据进行处理
age_table = ['(0, 2)', '(4, 6)', '(8, 12)', '(15, 20)', '(25, 32)', '(38, 43)', '(48, 53)', '(60, 100)']
sex_table = ['f', 'm']#性别
# AGE==True 训练年龄模型,False,训练行性别模型
AGE = True
if AGE == True:
labels_size = len(age_table) # 年龄
else:
labels_size = len(sex_table) # 性别
face_set_fold = 'AdienceBenchmarkOfUnfilteredFacesForGenderAndAgeClassification'
#加载图片目录文件
fold_0_data = os.path.join(face_set_fold, 'fold_0_data.txt')
fold_1_data = os.path.join(face_set_fold, 'fold_1_data.txt')
fold_2_data = os.path.join(face_set_fold, 'fold_2_data.txt')
fold_3_data = os.path.join(face_set_fold, 'fold_3_data.txt')
fold_4_data = os.path.join(face_set_fold, 'fold_4_data.txt')
face_image_set = os.path.join(face_set_fold, 'aligned')#图片数据库
def parse_data(fold_x_data):
data_set = []
with open(fold_x_data, 'r') as f:
line_one = True
for line in f:
tmp = []
if line_one == True:
line_one = False
continue#舍弃第一行标题
tmp.append(line.split('\t')[0])#user_id
tmp.append(line.split('\t')[1])#xx.jpg
tmp.append(line.split('\t')[3])#年龄
tmp.append(line.split('\t')[4])#性别
file_path = os.path.join(face_image_set, tmp[0])#目录级
if os.path.exists(file_path):
#返回所有匹