"""An example of how to use your own dataset to train a classifier that recognizes people.
一个如何使用您自己的数据集来训练识别人的分类器的例子。
"""
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import tensorflow as tf
import numpy as np
import argparse
import facenet
import os
import sys
import math
import pickle
from sklearn.svm import SVC
def main(args):
with tf.Graph().as_default():
with tf.Session() as sess:
############获取数据集#####################################################
np.random.seed(seed=args.seed)
if args.use_split_dataset:
#是否要将数据集进行划分。
dataset_tmp = facenet.get_dataset(args.data_dir)
#获取人脸图片
train_set, test_set = split_dataset(dataset_tmp, args.min_nrof_images_per_class, args.nrof_train_images_per_class)
#获取测试集和训练集
if (args.mode=='TRAIN'):
dataset = train_set
elif (args.mode=='CLASSIFY'):
dataset = test_set
#如果本次操作要进行训练,那么数据选取训练集,也就是默认是选取10张图片,
#如果是要进行分类,那么默认选取后第10张以后的所有图片
else:
#如果要是不进行划分,那么直接将数据集进行赋值,所有的图片都进行训练,或者进行测试
dataset = facenet.get_dataset(args.data_dir)
# Check that there are at least one training image per class
#检查每个人物类至少有一个训练图像
for cls in dataset:
assert(len(cls.image_paths)>0, 'There must be at least one image for each class in the dataset')
#数据集中每个类必须至少有一个图像
#如果图像是个数是0,那么程序就停止运行
paths, labels = facenet.get_image_paths_and_labels(dataset)
#返回每张图片的路劲,返回每张图片对应的人名的索引
print('Number of classes: %d' % len(dataset))
#也就是输出有几个人
print('Number of images: %d' %