diff --git a/Database/new.npy b/Database/new.npy new file mode 100644 index 0000000..1569ad6 Binary files /dev/null and b/Database/new.npy differ diff --git a/Database/student.npy b/Database/student.npy new file mode 100644 index 0000000..02d1549 Binary files /dev/null and b/Database/student.npy differ diff --git a/accuracy.py b/accuracy.py new file mode 100644 index 0000000..1a4e057 --- /dev/null +++ b/accuracy.py @@ -0,0 +1,132 @@ +import os +import time + +import torch +import cv2 +import numpy as np +from backbones import iresnet50,iresnet18,iresnet100 + +def load_image(img_path): + #img = cv2.imread(img_path) + img = cv2.imdecode(np.fromfile(img_path,dtype=np.uint8),cv2.IMREAD_COLOR) + img = img.transpose((2, 0, 1)) + img = img[np.newaxis, :, :, :] + img = np.array(img, dtype=np.float32) + img -= 127.5 + img /= 127.5 + return img + +def findEuclideanDistance(source_representation, test_representation): + euclidean_distance = source_representation - test_representation + euclidean_distance = np.sum(np.multiply(euclidean_distance, euclidean_distance)) + euclidean_distance = np.sqrt(euclidean_distance) + return euclidean_distance + +def l2_normalize(x): + return x / np.sqrt(np.sum(np.multiply(x, x))) + +def load_npy(path): + data = np.load(path,allow_pickle=True) + data = data.item() + return data + +def findmindistance(pred,threshold,k_v): + distance = 10 + most_like = "" + for name in k_v.keys(): + tmp = findEuclideanDistance(k_v[name],pred) + if distance > tmp: + distance = tmp + most_like = name + if distance < threshold: + return most_like + else: + return -1 + +def findOne(img,model,k_v): + with torch.no_grad(): + start_time = time.time() + pred = model(img) + end_time = time.time() + #print("predOne time: " + str(end_time - start_time)) + pred = pred.numpy() + name = findmindistance(l2_normalize(pred),threshold=1.20,k_v=k_v) + if name != -1: + return name + else: + return "unknown" +def findAll(imglist,model,k_v): + with torch.no_grad(): + name_list = [] + pred = model(imglist) + pred = pred.numpy() + for pr in pred: + name = findmindistance(l2_normalize(pr),threshold=1.20,k_v=k_v) + if name != -1: + name_list.append(name) + else: + name_list.append("unknown") + return name_list + +if __name__=='__main__': + model = iresnet100() + model.load_state_dict(torch.load("./model/backbone100.pth", map_location="cpu")) + model.eval() + pred_name = [] + order_name = [] + order_path = [] + unknown = [] + test_path = "D:\Download\out\cfp_test" + name_list = os.listdir(test_path) + for name in name_list: + img_list = os.listdir(os.path.join(test_path,name)) + for img in img_list: + order_name.append(name) + order_path.append(os.path.join(os.path.join(test_path,name),img)) + order_img = np.zeros((len(order_path), 3, 112, 112), dtype=np.float32) + for index,img_path in enumerate(order_path): + order_img[index] = load_image(img_path) + print(order_img.shape) + # for name in order_path: + # print(name) + + k_v = load_npy("cfp.npy") + start_time = time.time() + order_img = torch.from_numpy(order_img) + + batch = 256 + now = 0 + number = len(order_img) + #number = 1400 + for i in range(number): + unknown.append("unknown") + + while now < number: + if now+batch < number: + name = findAll(order_img[now:now+batch],model,k_v) + else: + name = findAll(order_img[now:number], model, k_v) + now = now+batch + for na in name: + pred_name.append(na) + print("batch"+str(now)) + end_time = time.time() + print("findAll time: " + str(end_time - start_time)) + #print(len(pred_name)) + right = 0 + for i,name in enumerate(pred_name): + if pred_name[i] == order_name[i]: + right += 1 + filed = 0 + for i, name in enumerate(pred_name): + if pred_name[i] == unknown[i]: + filed += 1 + error = 0 + for i,name in enumerate(pred_name): + if pred_name[i] != order_name[i]: + error += 1 + print(order_name[i]+" "+pred_name[i]+" "+order_path[i]) + print("total:" + str(number)) + print("right:" + str(right) + " rate:" + str(right / number)) + print("filed:" + str(filed) + " rate:" + str(filed / number)) + print("error:"+str(error-filed)+" rate:"+str((error-filed)/number)) diff --git a/accuracy_GPU.py b/accuracy_GPU.py new file mode 100644 index 0000000..42c4f9a --- /dev/null +++ b/accuracy_GPU.py @@ -0,0 +1,134 @@ +import os +import time + +import torch +import cv2 +import numpy as np +from backbones import iresnet50,iresnet18,iresnet100 + +def load_image(img_path): + #img = cv2.imread(img_path) + img = cv2.imdecode(np.fromfile(img_path,dtype=np.uint8),cv2.IMREAD_COLOR) + img = img.transpose((2, 0, 1)) + img = img[np.newaxis, :, :, :] + img = np.array(img, dtype=np.float32) + img -= 127.5 + img /= 127.5 + return img + +def findEuclideanDistance(source_representation, test_representation): + euclidean_distance = source_representation - test_representation + euclidean_distance = np.sum(np.multiply(euclidean_distance, euclidean_distance)) + euclidean_distance = np.sqrt(euclidean_distance) + return euclidean_distance + +def l2_normalize(x): + return x / np.sqrt(np.sum(np.multiply(x, x))) + +def load_npy(path): + data = np.load(path,allow_pickle=True) + data = data.item() + return data + +def findmindistance(pred,threshold,k_v): + distance = 10 + most_like = "" + for name in k_v.keys(): + tmp = findEuclideanDistance(k_v[name],pred) + if distance > tmp: + distance = tmp + most_like = name + if distance < threshold: + return most_like + else: + return -1 + +def findOne(img,model,k_v): + with torch.no_grad(): + start_time = time.time() + pred = model(img) + end_time = time.time() + #print("predOne time: " + str(end_time - start_time)) + pred = pred.numpy() + name = findmindistance(l2_normalize(pred),threshold=1.20,k_v=k_v) + if name != -1: + return name + else: + return "unknown" +def findAll(imglist,model,k_v): + with torch.no_grad(): + name_list = [] + imglist = imglist.to(torch.device("cuda")) + pred = model(imglist) + pred = pred.cpu().numpy() + for pr in pred: + name = findmindistance(l2_normalize(pr),threshold=1.20,k_v=k_v) + if name != -1: + name_list.append(name) + else: + name_list.append("unknown") + return name_list + +if __name__=='__main__': + model = iresnet100() + model.load_state_dict(torch.load("./model/backbone100.pth")) + model.to(torch.device("cuda")) + model.eval() + pred_name = [] + order_name = [] + order_path = [] + unknown = [] + test_path = "./retinaface_test" + name_list = os.listdir(test_path) + for name in name_list: + img_list = os.listdir(os.path.join(test_path,name)) + for img in img_list: + order_name.append(name) + order_path.append(os.path.join(os.path.join(test_path,name),img)) + order_img = np.zeros((len(order_path), 3, 112, 112), dtype=np.float32) + for index,img_path in enumerate(order_path): + order_img[index] = load_image(img_path) + print(order_img.shape) + # for name in order_path: + # print(name) + + k_v = load_npy("retinaface_lfw_myalign.npy") + start_time = time.time() + order_img = torch.from_numpy(order_img) + + batch = 256 + now = 0 + number = len(order_img) + #number = 1400 + for i in range(number): + unknown.append("unknown") + + while now < number: + if now+batch < number: + name = findAll(order_img[now:now+batch],model,k_v) + else: + name = findAll(order_img[now:number], model, k_v) + now = now+batch + for na in name: + pred_name.append(na) + print("batch"+str(now)) + end_time = time.time() + print("findAll time: " + str(end_time - start_time)) + #print(len(pred_name)) + right = 0 + for i,name in enumerate(pred_name): + if pred_name[i] == order_name[i]: + right += 1 + filed = 0 + for i, name in enumerate(pred_name): + if pred_name[i] == unknown[i]: + filed += 1 + error = 0 + for i,name in enumerate(pred_name): + if pred_name[i] != order_name[i]: + error += 1 + print(order_name[i]+" "+pred_name[i]+" "+order_path[i]) + print("total:" + str(number)) + print("right:" + str(right) + " rate:" + str(right / number)) + print("filed:" + str(filed) + " rate:" + str(filed / number)) + print("error:"+str(error-filed)+" rate:"+str((error-filed)/number)) \ No newline at end of file diff --git a/anti.py b/anti.py new file mode 100644 index 0000000..5ec59a2 --- /dev/null +++ b/anti.py @@ -0,0 +1,150 @@ +import os +import cv2 +import numpy as np +import argparse +import warnings +import time +import torch +import torch.nn.functional as F + +from src.generate_patches import CropImage +from src.model_lib.MiniFASNet import MiniFASNetV1, MiniFASNetV2,MiniFASNetV1SE,MiniFASNetV2SE +from src.data_io import transform as trans +from src.utility import get_kernel, parse_model_name +warnings.filterwarnings('ignore') + +MODEL_MAPPING = { + 'MiniFASNetV1': MiniFASNetV1, + 'MiniFASNetV2': MiniFASNetV2, + 'MiniFASNetV1SE':MiniFASNetV1SE, + 'MiniFASNetV2SE':MiniFASNetV2SE +} + +class AntiSpoofPredict(): + def __init__(self, cpu_or_cuda): + super(AntiSpoofPredict, self).__init__() + self.device = torch.device("cuda" if cpu_or_cuda == "cuda" else "cpu") + + def predict(self, img, model): + test_transform = trans.Compose([ + trans.ToTensor(), + ]) + img = test_transform(img) + img = img.unsqueeze(0).to(self.device) + with torch.no_grad(): + result = model.forward(img) + result = F.softmax(result).cpu().numpy() + return result + +def load_anti_model(model_dir,cpu_or_cuda): + model_list = [] + for model_path in os.listdir(model_dir): + model_list.append(_load_model(os.path.join(model_dir, model_path), cpu_or_cuda)) + return model_list + +def _load_model(model_path,cpu_or_cuda): + # define model + device = torch.device("cuda" if cpu_or_cuda == "cuda" else "cpu") + model_name = os.path.basename(model_path) + h_input, w_input, model_type, _ = parse_model_name(model_name) + kernel_size = get_kernel(h_input, w_input, ) + model = MODEL_MAPPING[model_type](conv6_kernel=kernel_size).to(device) + + # load model weight + state_dict = torch.load(model_path, map_location=device) + keys = iter(state_dict) + first_layer_name = keys.__next__() + if first_layer_name.find('module.') >= 0: + from collections import OrderedDict + new_state_dict = OrderedDict() + for key, value in state_dict.items(): + name_key = key[7:] + new_state_dict[name_key] = value + model.load_state_dict(new_state_dict) + else: + model.load_state_dict(state_dict) + model.eval() + return model + + +# 因为安卓端APK获取的视频流宽高比为3:4,为了与之一致,所以将宽高比限制为3:4 +def check_image(image): + height, width, channel = image.shape + if width/height != 3/4: + print("Image is not appropriate!!!\nHeight/Width should be 4/3.") + return False + else: + return True + +# 人脸活体检测 +def anti_spoofing(image_name, model_dir, cpu_or_cuda, bbox, model_list): + model_test = AntiSpoofPredict(cpu_or_cuda) + image_cropper = CropImage() + image = cv2.imdecode(np.fromfile(image_name, dtype=np.uint8), cv2.IMREAD_COLOR) + h, w = image.shape[:2] + factor = h / w + if (w > 1000): + image = cv2.resize(image, (600, int(600 * factor))) + # result = check_image(image) + # if result is False: + # return + # image_bbox = model_test.get_bbox(image) + image_bbox = bbox + prediction = np.zeros((1, 3)) + test_speed = 0 + # sum the prediction from single model's result + for index, model_name in enumerate(os.listdir(model_dir)): + h_input, w_input, model_type, scale = parse_model_name(model_name) + param = { + "org_img": image, + "bbox": image_bbox, + "scale": scale, + "out_w": w_input, + "out_h": h_input, + "crop": True, + } + if scale is None: + param["crop"] = False + img = image_cropper.crop(**param) + + start = time.time() + prediction += model_test.predict(img, model_list[index]) + test_speed += time.time()-start + + label = np.argmax(prediction) + # print(prediction) + # cv2.rectangle( + # image, + # (image_bbox[0], image_bbox[1]), + # (image_bbox[0] + image_bbox[2], image_bbox[1] + image_bbox[3]), + # (225,0,0), 2) + # cv2.imshow("out",image) + # cv2.waitKey(0) + value = prediction[0][1]/2 + if value > 0.915: + return "real face", '{:.10f}'.format(value) + else: + return "fake face", '{:.10f}'.format(value) + + + +if __name__ == "__main__": + desc = "test" + parser = argparse.ArgumentParser(description=desc) + parser.add_argument( + "--device_id", + type=int, + default=0, + help="which gpu id, [0/1/2/3]") + parser.add_argument( + "--model_dir", + type=str, + default="./resources/anti_spoof_models", + help="model_lib used to test") + parser.add_argument( + "--image_name", + type=str, + default="000_0.bmp", + help="image used to test") + args = parser.parse_args() + # anti_spoofing(args.image_name, args.model_dir, args.device_id) diff --git a/app.py b/app.py new file mode 100644 index 0000000..f820df7 --- /dev/null +++ b/app.py @@ -0,0 +1,449 @@ +import time + +import faiss +from flask import Flask, render_template, request, jsonify, send_from_directory +from markupsafe import escape, escape_silent +from werkzeug.utils import secure_filename + +from anti import anti_spoofing, load_anti_model +from face_api import load_arcface_model, load_npy, findOne, load_image, face_verification, findAll, add_one_to_database, \ + get_claster_tmp_file_embedding, cluster, detect_video +from gender_age import set_gender_conf, gender_age, load_gender_model +from retinaface_detect import load_retinaface_model, detect_one, set_retinaface_conf +from werkzeug.exceptions import RequestEntityTooLarge +import zipfile +import os +import shutil +import re +import numpy as np +import torch + +ALLOWED_IMG = set(['png', 'jpg', 'jpeg', 'bmp', 'PNG', 'JPG', 'JPEG']) +# 限制上传的图片最大为10M +ALLOWED_IMG_SIZE = 10 * 1024 * 1024 +ALLOWED_FILE = set(['zip']) +ALLOWED_VIDEO = set(['mp4']) +app = Flask(__name__) + +# 限制上传的文件最大为100M +app.config['MAX_CONTENT_LENGTH'] = 100 * 1024 * 1024 +# 使用jsonify,避免中文乱码 +app.config['JSON_AS_ASCII'] = False + +# 设置使用CPU或者GPU(传入cuda) +cpu_or_cuda = "cuda" if torch.cuda.is_available() else "cpu" +# 加载人脸识别模型 +arcface_model = load_arcface_model("./model/backbone100.pth", cpu_or_cuda=cpu_or_cuda) +# 加载人脸检测模型 +retinaface_args = set_retinaface_conf(cpu_or_cuda=cpu_or_cuda) +retinaface_model = load_retinaface_model(retinaface_args) +# 加载性别年龄识别模型 +gender_args = set_gender_conf() +gender_model = load_gender_model(gender_args, 'fc1') +anti_spoofing_model_path = "model/anti_spoof_models" +anti_model = load_anti_model(anti_spoofing_model_path, cpu_or_cuda) + + +# 读取人脸库 + + +@app.route('/') +def index(): + return "model" + + +@app.route('/hello') +@app.route('/hello/') +def hello(name=None): + return render_template('hello.html', name=name) + + +@app.route('/user', methods=['GET']) +def show_user_name(): + return request.args.get('username', '') + + +# 创建返回的json数据 +# 函数参数用是否=None判断,函数中定义的data,result用true,false判断 +def create_response(status, name=None, distance=None, verification=None, gender=None, age=None, num=None, anti=None, + score=None, box_and_point=None, addfile_names=None,fail_names=None,database_name=None,msg=None, + delete_names=None,not_exist_names=None): + # res为总的json结构体 + res = {} + res['status'] = status + + data = {} + try: + data["box_and_point"] = box_and_point.tolist() + except AttributeError: + pass + if anti != None and score != None: + liveness = {} + liveness["spoofing"] = anti + liveness['score'] = score + data['liveness'] = liveness + if distance!=None: + data['distance'] = float(distance) + if verification!=None: + data['verification'] = verification + if num!=None: + data['number'] = num + if gender!=None: + data['gender'] = gender + if age!=None: + data['age'] = age + if name!=None: + data['name'] = name + if data: + res['data'] = data + + # 数据库增删接口返回数据 + result = {} + if msg!=None: + res['msg'] = msg + if database_name!=None: + result['database_name'] = database_name + # 增加人脸 + if addfile_names!=None or fail_names!=None: + result['success_names'] = addfile_names + result['fail_names'] = fail_names + # 删除人脸 + if delete_names!=None or not_exist_names!=None: + result['delete_names'] = delete_names + result['not_exist_names'] = not_exist_names + if result: + res['result'] = result + + return jsonify(res) + + +# 创建cluster接口返回的json数据 +def create_cluster_response(status, all_cluster): + res = {} + data = {} + for index, cluster in enumerate(all_cluster): + data['cluster' + str(index)] = cluster + res['data'] = data + res['status'] = status + return res + + +# 检查上传文件格式 +def check_file_format(file_name, format): + if '.' in file_name: + file_format = file_name.rsplit('.')[1] + if file_format in format: + return True + return False + + +# 检查img大小,大于10M抛出异常 +def check_img_size(img_path): + fsize = os.path.getsize(img_path) + if fsize > ALLOWED_IMG_SIZE: + raise RequestEntityTooLarge + + +# 解压zip文件存到某路径: +def unzip(zip_src, dst_dir): + f = zipfile.is_zipfile(zip_src) + if f: + fz = zipfile.ZipFile(zip_src, 'r') + for file in fz.namelist(): + fz.extract(file, dst_dir) + return True + else: + return False + + +# 解压文件 +def un_zip(file_path, output_path): + zip_file = zipfile.ZipFile(file_path) + if os.path.isdir(output_path): + pass + else: + os.mkdir(output_path) + zip_file.extractall(output_path) + # for names in zip_file.namelist(): + # zip_file.extract(names,output_path) + zip_file.close() + + +# 人脸识别、性别年龄识别 +@app.route('/recognition', methods=['POST']) +def recognition(): + try: + f = request.files['file_name'] + if f and check_file_format(f.filename, ALLOWED_IMG): + img_path = './img/recognition/' + secure_filename(f.filename) + f.save(img_path) + check_img_size(img_path) + # img3 = load_image('./file/'+secure_filename(f.filename)) + # img3 = torch.from_numpy(img3) + tic = time.time() + img3, box_and_point = detect_one(img_path, retinaface_model, retinaface_args) + print('detect time: {:.4f}'.format(time.time() - tic)) + if len(img3) == 0: + return create_response('no face') + elif len(img3) > 1: + namelist = findAll(img3, arcface_model, index, database_name_list, cpu_or_cuda) + gender_list, age_list = [], [] + # gender_list, age_list = gender_age(img3, gender_model) + res = create_response('success', namelist, gender=gender_list, age=age_list, + box_and_point=box_and_point) + else: + b = box_and_point[0] + w = b[2] - b[0] + h = b[3] - b[1] + b[2] = w + b[3] = h + label, value = anti_spoofing(img_path, anti_spoofing_model_path, cpu_or_cuda, np.array(b[:4], int), + anti_model) + # print(index,database_name_list) + name, distance = findOne(img3, arcface_model, index, database_name_list, cpu_or_cuda) + gender_list, age_list = [], [] + # gender_list, age_list = gender_age(img3, gender_model) + res = create_response('success', name, gender=gender_list, age=age_list, distance=distance, + anti=label, score=value, box_and_point=box_and_point) + return res + else: + return create_response('png jpg jpeg bmp are allowed') + except RequestEntityTooLarge: + return create_response('image size should be less than 10M') + + +# 两张图片比对 +@app.route('/compare', methods=['POST']) +def compare_file(): + try: + file1 = request.files['file1_name'] + file2 = request.files['file2_name'] + if file1 and check_file_format(file1.filename, ALLOWED_IMG) and file2 and check_file_format(file2.filename, + ALLOWED_IMG): + img1_path = './img/compare/' + secure_filename(file1.filename) + img2_path = './img/compare/' + secure_filename(file2.filename) + file1.save(img1_path) + file2.save(img2_path) + check_img_size(img1_path) + check_img_size(img2_path) + img1, box_and_point1 = detect_one(img1_path, retinaface_model, + retinaface_args) + img2, box_and_point2 = detect_one(img2_path, retinaface_model, retinaface_args) + if len(img1) == 1 and len(img2) == 1: + result,distance = face_verification(img1, img2, arcface_model, cpu_or_cuda) + print(result,distance) + return create_response('success', verification=result,distance=distance) + else: + return create_response('image contains no face or more than 1 face') + else: + return create_response('png jpg jpeg bmp are allowed') + except RequestEntityTooLarge: + return create_response('image size should be less than 10M') + + +# 数据库增加人脸,可实现向“现有/新建”数据库增加“单张/多张”人脸 +# 增和改 +@app.route('/databaseAdd', methods=['POST']) +def DB_add_face(): + try: + # 上传人脸图片(>=1) + # key都为file_list,value为不同的值可实现批量上传图片 + upload_files = request.files.getlist("file_list") + # '',[],{},0都可以视为False + if not upload_files: + msg = "上传文件为空" + return create_response(0,msg=msg) + database_name = request.form.get("database_name") + database_path = "./Database/" + database_name + ".npy" + if not os.path.exists(database_path): + msg = "数据库不存在" + return create_response(0,msg=msg) + # 数据库中已存在的人名 + names = load_npy(database_path).keys() + # print(names) + + # 这是服务器上用于暂存上传图片的文件夹,每次上传前重建,使用后删除 + # 后面可根据需要改为定期删除 + file_temp_path = './img/uploadNew/' + if not os.path.exists(file_temp_path): + os.makedirs(file_temp_path) + + # 正则表达式用于提取文件名中的中文,用于.npy中的keys + r = re.compile('[\u4e00-\u9fa5]+') + # 分别存取添加成功或失败的名字 + success_names = [] + fail_names = {} + # 添加失败的两种情况:格式错误或已经存在 + format_wrong = [] + alreadyExist = [] + # 分别处理每一张图片,先判断格式对不对,再判断是否存在 + for file in upload_files: + filename = file.filename + name = r.findall(filename)[0] + if file and check_file_format(filename, ALLOWED_IMG): + if name in names: + alreadyExist.append(name) + continue + save_path = file_temp_path + filename + file.save(save_path) + check_img_size(save_path) + img_file, box_and_point = detect_one(save_path, retinaface_model, retinaface_args) + add_one_to_database(img=img_file, model=arcface_model, name=name, database_path=database_path, + cpu_or_cuda=cpu_or_cuda) + success_names.append(name) + else: + format_wrong.append(name) + continue + shutil.rmtree(file_temp_path) + # 如果有错误情况 + if format_wrong or alreadyExist: + status = 0 + else: + status = 1 + fail_names['formatWrong'] = format_wrong + fail_names['alreadyExist'] = alreadyExist + + return create_response(status=status,addfile_names=success_names,fail_names=fail_names,database_name=database_name,msg="新增人脸操作执行完成") + except RequestEntityTooLarge: + return create_response(0,msg='image size should be less than 10M') + + +# 数据库删除人脸,可实现在现有数据库中删除’单/多‘张人脸 +@app.route('/databaseDelete', methods=['POST']) +def DB_delete_face(): + try: + delete_names = request.form.getlist("delete_names") + database_name = request.form.get("database_name") + database_path = "./Database/" + database_name + ".npy" + if not os.path.exists(database_path): + msg = "数据库不存在" + return create_response(0,msg=msg) + if not delete_names: + msg = "delete_names参数为空" + return create_response(0,msg=msg) + k_v = load_npy(database_path) + print(k_v.keys()) + success_list = [] + fail_list = [] + for name in delete_names: + if name in k_v.keys(): + del k_v[name] + success_list.append(name) + else: + fail_list.append(name) + continue + np.save(database_path, k_v) + status = 1 + if fail_list: + status = 0 + return create_response(status=status,delete_names=success_list,not_exist_names=fail_list,database_name=database_name, + msg="删除人脸操作完成") + except RequestEntityTooLarge: + return create_response(0,'image size should be less than 10M') + + +# 以图搜图接口: +# 上传图片压缩包建图片库 +@app.route('/uploadZip', methods=['POST']) +def upload_Zip(): + try: + zip = request.files['zip_name'] + dst_dir = './img/search/' + if unzip(zip, dst_dir): + return create_response('upload zip success') + else: + return create_response('upload zip file please') + except RequestEntityTooLarge: + return create_response('image size should be less than 10M') + + +# 以图搜图 +@app.route('/imgSearchImg', methods=['POST']) +def img_search_img(): + searchfile = './img/search/face' + try: + file = request.files['img_name'] + if file and check_file_format(file.filename, ALLOWED_IMG): + img_path = './img/search/' + secure_filename(file.filename) + file.save(img_path) + check_img_size(img_path) + img, box_and_point = detect_one(img_path, retinaface_model, + retinaface_args) + if len(img) == 1: + Onename = [] + num = 0 + for filenames in os.listdir(searchfile): + imgpath = os.path.join(searchfile, filenames) + imgdata, box_and_point = detect_one(imgpath, retinaface_model, retinaface_args) + result = face_verification(img, imgdata, arcface_model, cpu_or_cuda) + isOne, distance = result.split(' ', -1)[0], result.split(' ', -1)[1] + if isOne == 'same': + Onename.append(filenames) + num += 1 + return create_response('success', name=Onename, num=num) + else: + return create_response('image contains no face or more than 1 face') + else: + return create_response('png jpg jpeg bmp are allowed') + except RequestEntityTooLarge: + return create_response('image size should be less than 10M') + + +# 人脸聚类接口 +@app.route('/cluster', methods=['POST']) +def zip_cluster(): + try: + f = request.files['file_name'] + if f and check_file_format(f.filename, ALLOWED_FILE): + zip_name = secure_filename(f.filename) + f.save('./img/cluster_tmp_file/' + zip_name) + un_zip('./img/cluster_tmp_file/' + zip_name, './img/cluster_tmp_file/') + emb_list, name_list = get_claster_tmp_file_embedding("./img/cluster_tmp_file/" + zip_name.rsplit('.')[0], + retinaface_model, + retinaface_args, arcface_model, cpu_or_cuda) + return create_cluster_response("success", cluster(emb_list, name_list)) + else: + return create_response('zip are allowed') + except RequestEntityTooLarge: + return create_response('file size should be less than 100M') + + +# 视频识别接口 +@app.route('/videorecognition', methods=['POST']) +def video_recognition(): + try: + f = request.files['file_name'] + if f and check_file_format(f.filename, ALLOWED_VIDEO): + video_name = secure_filename(f.filename) + f.save('./video/' + video_name) + detect_video('./video/' + video_name, './videoout/' + video_name, retinaface_model, arcface_model, k_v, + retinaface_args) + return create_response("success") + else: + return create_response('mp4 are allowed') + except RequestEntityTooLarge: + return create_response('file size should be less than 100M') + + +@app.route('/download/', methods=['GET']) +def download(filename): + if os.path.isfile(os.path.join('./videoout/', filename)): + return send_from_directory('./videoout/', filename, as_attachment=True) + else: + return create_response("Download failed") + + +if __name__ == '__main__': + k_v = load_npy("./Database/student.npy") + database_name_list = list(k_v.keys()) + vector_list = np.array(list(k_v.values())) + print(vector_list.shape) + #print(database_name_list) + nlist = 50 + quantizer = faiss.IndexFlatL2(512) # the other index + index = faiss.IndexIVFFlat(quantizer, 512, nlist, faiss.METRIC_L2) + index.train(vector_list) + # index = faiss.IndexFlatL2(512) + index.add(vector_list) + index.nprobe = 50 + app.run(host="0.0.0.0", port=5000) diff --git a/backbones/__init__.py b/backbones/__init__.py new file mode 100644 index 0000000..4a0bcbf --- /dev/null +++ b/backbones/__init__.py @@ -0,0 +1 @@ +from .iresnet import iresnet18, iresnet34, iresnet50, iresnet100, iresnet200 diff --git a/backbones/__pycache__/__init__.cpython-38.pyc b/backbones/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000..f50ba25 Binary files /dev/null and b/backbones/__pycache__/__init__.cpython-38.pyc differ diff --git a/backbones/__pycache__/iresnet.cpython-38.pyc b/backbones/__pycache__/iresnet.cpython-38.pyc new file mode 100644 index 0000000..42ab5cb Binary files /dev/null and b/backbones/__pycache__/iresnet.cpython-38.pyc differ diff --git a/backbones/iresnet.py b/backbones/iresnet.py new file mode 100644 index 0000000..c6d3b9c --- /dev/null +++ b/backbones/iresnet.py @@ -0,0 +1,187 @@ +import torch +from torch import nn + +__all__ = ['iresnet18', 'iresnet34', 'iresnet50', 'iresnet100', 'iresnet200'] + + +def conv3x3(in_planes, out_planes, stride=1, groups=1, dilation=1): + """3x3 convolution with padding""" + return nn.Conv2d(in_planes, + out_planes, + kernel_size=3, + stride=stride, + padding=dilation, + groups=groups, + bias=False, + dilation=dilation) + + +def conv1x1(in_planes, out_planes, stride=1): + """1x1 convolution""" + return nn.Conv2d(in_planes, + out_planes, + kernel_size=1, + stride=stride, + bias=False) + + +class IBasicBlock(nn.Module): + expansion = 1 + def __init__(self, inplanes, planes, stride=1, downsample=None, + groups=1, base_width=64, dilation=1): + super(IBasicBlock, self).__init__() + if groups != 1 or base_width != 64: + raise ValueError('BasicBlock only supports groups=1 and base_width=64') + if dilation > 1: + raise NotImplementedError("Dilation > 1 not supported in BasicBlock") + self.bn1 = nn.BatchNorm2d(inplanes, eps=1e-05,) + self.conv1 = conv3x3(inplanes, planes) + self.bn2 = nn.BatchNorm2d(planes, eps=1e-05,) + self.prelu = nn.PReLU(planes) + self.conv2 = conv3x3(planes, planes, stride) + self.bn3 = nn.BatchNorm2d(planes, eps=1e-05,) + self.downsample = downsample + self.stride = stride + + def forward(self, x): + identity = x + out = self.bn1(x) + out = self.conv1(out) + out = self.bn2(out) + out = self.prelu(out) + out = self.conv2(out) + out = self.bn3(out) + if self.downsample is not None: + identity = self.downsample(x) + out += identity + return out + + +class IResNet(nn.Module): + fc_scale = 7 * 7 + def __init__(self, + block, layers, dropout=0, num_features=512, zero_init_residual=False, + groups=1, width_per_group=64, replace_stride_with_dilation=None, fp16=False): + super(IResNet, self).__init__() + self.fp16 = fp16 + self.inplanes = 64 + self.dilation = 1 + if replace_stride_with_dilation is None: + replace_stride_with_dilation = [False, False, False] + if len(replace_stride_with_dilation) != 3: + raise ValueError("replace_stride_with_dilation should be None " + "or a 3-element tuple, got {}".format(replace_stride_with_dilation)) + self.groups = groups + self.base_width = width_per_group + self.conv1 = nn.Conv2d(3, self.inplanes, kernel_size=3, stride=1, padding=1, bias=False) + self.bn1 = nn.BatchNorm2d(self.inplanes, eps=1e-05) + self.prelu = nn.PReLU(self.inplanes) + self.layer1 = self._make_layer(block, 64, layers[0], stride=2) + self.layer2 = self._make_layer(block, + 128, + layers[1], + stride=2, + dilate=replace_stride_with_dilation[0]) + self.layer3 = self._make_layer(block, + 256, + layers[2], + stride=2, + dilate=replace_stride_with_dilation[1]) + self.layer4 = self._make_layer(block, + 512, + layers[3], + stride=2, + dilate=replace_stride_with_dilation[2]) + self.bn2 = nn.BatchNorm2d(512 * block.expansion, eps=1e-05,) + self.dropout = nn.Dropout(p=dropout, inplace=True) + self.fc = nn.Linear(512 * block.expansion * self.fc_scale, num_features) + self.features = nn.BatchNorm1d(num_features, eps=1e-05) + nn.init.constant_(self.features.weight, 1.0) + self.features.weight.requires_grad = False + + for m in self.modules(): + if isinstance(m, nn.Conv2d): + nn.init.normal_(m.weight, 0, 0.1) + elif isinstance(m, (nn.BatchNorm2d, nn.GroupNorm)): + nn.init.constant_(m.weight, 1) + nn.init.constant_(m.bias, 0) + + if zero_init_residual: + for m in self.modules(): + if isinstance(m, IBasicBlock): + nn.init.constant_(m.bn2.weight, 0) + + def _make_layer(self, block, planes, blocks, stride=1, dilate=False): + downsample = None + previous_dilation = self.dilation + if dilate: + self.dilation *= stride + stride = 1 + if stride != 1 or self.inplanes != planes * block.expansion: + downsample = nn.Sequential( + conv1x1(self.inplanes, planes * block.expansion, stride), + nn.BatchNorm2d(planes * block.expansion, eps=1e-05, ), + ) + layers = [] + layers.append( + block(self.inplanes, planes, stride, downsample, self.groups, + self.base_width, previous_dilation)) + self.inplanes = planes * block.expansion + for _ in range(1, blocks): + layers.append( + block(self.inplanes, + planes, + groups=self.groups, + base_width=self.base_width, + dilation=self.dilation)) + + return nn.Sequential(*layers) + + def forward(self, x): + with torch.cuda.amp.autocast(self.fp16): + x = self.conv1(x) + x = self.bn1(x) + x = self.prelu(x) + x = self.layer1(x) + x = self.layer2(x) + x = self.layer3(x) + x = self.layer4(x) + x = self.bn2(x) + x = torch.flatten(x, 1) + x = self.dropout(x) + x = self.fc(x.float() if self.fp16 else x) + x = self.features(x) + return x + + +def _iresnet(arch, block, layers, pretrained, progress, **kwargs): + model = IResNet(block, layers, **kwargs) + if pretrained: + raise ValueError() + return model + + +def iresnet18(pretrained=False, progress=True, **kwargs): + return _iresnet('iresnet18', IBasicBlock, [2, 2, 2, 2], pretrained, + progress, **kwargs) + + +def iresnet34(pretrained=False, progress=True, **kwargs): + return _iresnet('iresnet34', IBasicBlock, [3, 4, 6, 3], pretrained, + progress, **kwargs) + + +def iresnet50(pretrained=False, progress=True, **kwargs): + return _iresnet('iresnet50', IBasicBlock, [3, 4, 14, 3], pretrained, + progress, **kwargs) + + +def iresnet100(pretrained=False, progress=True, **kwargs): + return _iresnet('iresnet100', IBasicBlock, [3, 13, 30, 3], pretrained, + progress, **kwargs) + + +def iresnet200(pretrained=False, progress=True, **kwargs): + return _iresnet('iresnet200', IBasicBlock, [6, 26, 60, 6], pretrained, + progress, **kwargs) + diff --git a/centerface.py b/centerface.py new file mode 100644 index 0000000..0b03dbd --- /dev/null +++ b/centerface.py @@ -0,0 +1,135 @@ +import time + +import numpy as np +import cv2 +import datetime + + +class CenterFace(object): + def __init__(self, landmarks=True): + self.landmarks = landmarks + if self.landmarks: + self.net = cv2.dnn.readNetFromONNX('./model/onnx/centerface.onnx') + else: + self.net = cv2.dnn.readNetFromONNX('./model/onnx/cface.1k.onnx') + self.img_h_new, self.img_w_new, self.scale_h, self.scale_w = 0, 0, 0, 0 + + def __call__(self, img, height, width, threshold=0.5): + self.img_h_new, self.img_w_new, self.scale_h, self.scale_w = self.transform(height, width) + return self.inference_opencv(img, threshold) + + def inference_opencv(self, img, threshold): + blob = cv2.dnn.blobFromImage(img, scalefactor=1.0, size=(self.img_w_new, self.img_h_new), mean=(0, 0, 0), swapRB=True, crop=False) + self.net.setInput(blob) + begin = datetime.datetime.now() + start_time = time.time() + + + if self.landmarks: + heatmap, scale, offset, lms = self.net.forward(["537", "538", "539", '540']) + else: + heatmap, scale, offset = self.net.forward(["535", "536", "537"]) + end = datetime.datetime.now() + end_time = time.time() + # print("cpuOne time: " + str(end_time - start_time)) + # print("cpu times = ", end - begin) + return self.postprocess(heatmap, lms, offset, scale, threshold) + + def transform(self, h, w): + img_h_new, img_w_new = int(np.ceil(h / 32) * 32), int(np.ceil(w / 32) * 32) + scale_h, scale_w = img_h_new / h, img_w_new / w + return img_h_new, img_w_new, scale_h, scale_w + + def postprocess(self, heatmap, lms, offset, scale, threshold): + if self.landmarks: + dets, lms = self.decode(heatmap, scale, offset, lms, (self.img_h_new, self.img_w_new), threshold=threshold) + else: + dets = self.decode(heatmap, scale, offset, None, (self.img_h_new, self.img_w_new), threshold=threshold) + if len(dets) > 0: + dets[:, 0:4:2], dets[:, 1:4:2] = dets[:, 0:4:2] / self.scale_w, dets[:, 1:4:2] / self.scale_h + if self.landmarks: + lms[:, 0:10:2], lms[:, 1:10:2] = lms[:, 0:10:2] / self.scale_w, lms[:, 1:10:2] / self.scale_h + else: + dets = np.empty(shape=[0, 5], dtype=np.float32) + if self.landmarks: + lms = np.empty(shape=[0, 10], dtype=np.float32) + if self.landmarks: + return dets, lms + else: + return dets + + def decode(self, heatmap, scale, offset, landmark, size, threshold=0.1): + heatmap = np.squeeze(heatmap) + scale0, scale1 = scale[0, 0, :, :], scale[0, 1, :, :] + offset0, offset1 = offset[0, 0, :, :], offset[0, 1, :, :] + c0, c1 = np.where(heatmap > threshold) + if self.landmarks: + boxes, lms = [], [] + else: + boxes = [] + if len(c0) > 0: + for i in range(len(c0)): + s0, s1 = np.exp(scale0[c0[i], c1[i]]) * 4, np.exp(scale1[c0[i], c1[i]]) * 4 + o0, o1 = offset0[c0[i], c1[i]], offset1[c0[i], c1[i]] + s = heatmap[c0[i], c1[i]] + x1, y1 = max(0, (c1[i] + o1 + 0.5) * 4 - s1 / 2), max(0, (c0[i] + o0 + 0.5) * 4 - s0 / 2) + x1, y1 = min(x1, size[1]), min(y1, size[0]) + boxes.append([x1, y1, min(x1 + s1, size[1]), min(y1 + s0, size[0]), s]) + if self.landmarks: + lm = [] + for j in range(5): + lm.append(landmark[0, j * 2 + 1, c0[i], c1[i]] * s1 + x1) + lm.append(landmark[0, j * 2, c0[i], c1[i]] * s0 + y1) + lms.append(lm) + boxes = np.asarray(boxes, dtype=np.float32) + keep = self.nms(boxes[:, :4], boxes[:, 4], 0.3) + boxes = boxes[keep, :] + if self.landmarks: + lms = np.asarray(lms, dtype=np.float32) + lms = lms[keep, :] + if self.landmarks: + return boxes, lms + else: + return boxes + + def nms(self, boxes, scores, nms_thresh): + x1 = boxes[:, 0] + y1 = boxes[:, 1] + x2 = boxes[:, 2] + y2 = boxes[:, 3] + areas = (x2 - x1 + 1) * (y2 - y1 + 1) + order = np.argsort(scores)[::-1] + num_detections = boxes.shape[0] + suppressed = np.zeros((num_detections,), dtype=np.bool) + + keep = [] + for _i in range(num_detections): + i = order[_i] + if suppressed[i]: + continue + keep.append(i) + + ix1 = x1[i] + iy1 = y1[i] + ix2 = x2[i] + iy2 = y2[i] + iarea = areas[i] + + for _j in range(_i + 1, num_detections): + j = order[_j] + if suppressed[j]: + continue + + xx1 = max(ix1, x1[j]) + yy1 = max(iy1, y1[j]) + xx2 = min(ix2, x2[j]) + yy2 = min(iy2, y2[j]) + w = max(0, xx2 - xx1 + 1) + h = max(0, yy2 - yy1 + 1) + + inter = w * h + ovr = inter / (iarea + areas[j] - inter) + if ovr >= nms_thresh: + suppressed[j] = True + + return keep diff --git a/config.py b/config.py new file mode 100644 index 0000000..5fc70e7 --- /dev/null +++ b/config.py @@ -0,0 +1,67 @@ +from easydict import EasyDict as edict + +config = edict() +config.dataset = "ms1m-retinaface-t2" +config.embedding_size = 512 +config.sample_rate = 1 +config.fp16 = False +config.momentum = 0.9 +config.weight_decay = 5e-4 +config.batch_size = 64 +config.lr = 0.1 # batch size is 512 +config.output = "ms1mv3_arcface_r50" + +if config.dataset == "emore": + config.rec = "/train_tmp/faces_emore" + config.num_classes = 85742 + config.num_image = 5822653 + config.num_epoch = 16 + config.warmup_epoch = -1 + config.val_targets = ["lfw", ] + + def lr_step_func(epoch): + return ((epoch + 1) / (4 + 1)) ** 2 if epoch < -1 else 0.1 ** len( + [m for m in [8, 14] if m - 1 <= epoch]) + config.lr_func = lr_step_func + +elif config.dataset == "ms1m-retinaface-t2": + config.rec = "/train_tmp/ms1m-retinaface-t2" + config.num_classes = 91180 + config.num_epoch = 25 + config.warmup_epoch = -1 + config.val_targets = ["lfw", "cfp_fp", "agedb_30"] + + def lr_step_func(epoch): + return ((epoch + 1) / (4 + 1)) ** 2 if epoch < -1 else 0.1 ** len( + [m for m in [11, 17, 22] if m - 1 <= epoch]) + config.lr_func = lr_step_func + +elif config.dataset == "glint360k": + # make training faster + # our RAM is 256G + # mount -t tmpfs -o size=140G tmpfs /train_tmp + config.rec = "/train_tmp/glint360k" + config.num_classes = 360232 + config.num_image = 17091657 + config.num_epoch = 20 + config.warmup_epoch = -1 + config.val_targets = ["lfw", "cfp_fp", "agedb_30"] + + def lr_step_func(epoch): + return ((epoch + 1) / (4 + 1)) ** 2 if epoch < config.warmup_epoch else 0.1 ** len( + [m for m in [8, 12, 15, 18] if m - 1 <= epoch]) + config.lr_func = lr_step_func + +elif config.dataset == "webface": + config.rec = "/train_tmp/faces_webface_112x112" + config.num_classes = 10572 + config.num_image = "forget" + config.num_epoch = 34 + config.warmup_epoch = -1 + config.val_targets = ["lfw", "cfp_fp", "agedb_30"] + + def lr_step_func(epoch): + return ((epoch + 1) / (4 + 1)) ** 2 if epoch < config.warmup_epoch else 0.1 ** len( + [m for m in [20, 28, 32] if m - 1 <= epoch]) + config.lr_func = lr_step_func + diff --git a/create_database.py b/create_database.py new file mode 100644 index 0000000..0a4104f --- /dev/null +++ b/create_database.py @@ -0,0 +1,168 @@ +import os +import time +import re +import torch +import cv2 +import numpy as np +from backbones import iresnet50,iresnet18,iresnet100 + +def load_image(img_path): + #img = cv2.imread(img_path) + img = cv2.imdecode(np.fromfile(img_path,dtype=np.uint8),cv2.IMREAD_COLOR) + img = img.transpose((2, 0, 1)) + img = img[np.newaxis, :, :, :] + img = np.array(img, dtype=np.float32) + img -= 127.5 + img /= 127.5 + return img + +def findEuclideanDistance(source_representation, test_representation): + euclidean_distance = source_representation - test_representation + euclidean_distance = np.sum(np.multiply(euclidean_distance, euclidean_distance)) + euclidean_distance = np.sqrt(euclidean_distance) + return euclidean_distance + +def findCosineDistance(source_representation, test_representation): + a = np.matmul(np.transpose(source_representation), test_representation) + b = np.sum(np.multiply(source_representation, source_representation)) + c = np.sum(np.multiply(test_representation, test_representation)) + return 1 - (a / (np.sqrt(b) * np.sqrt(c))) + +def l2_normalize(x): + return x / np.sqrt(np.sum(np.multiply(x, x))) + +def cosin_metric(x1, x2): + return np.dot(x1, x2) / (np.linalg.norm(x1) * np.linalg.norm(x2)) + +def load_npy(path): + data = np.load(path,allow_pickle=True) + data = data.item() + return data + +def create_database(path,model,database_path): + name_list = os.listdir(path) + k_v = {} + if os.path.exists(database_path): + k_v = np.load(database_path, allow_pickle=True) + k_v = k_v.item() + for name in name_list: + img_path = os.listdir(os.path.join(path,name)) + for img_name in img_path[:1]: + img = load_image(os.path.join(path,name,img_name)) + img = torch.from_numpy(img) + with torch.no_grad(): + pred = model(img) + pred = pred.numpy() + k_v[name] = l2_normalize(pred) + np.save(database_path, k_v) + +def create_database_batch(path,model,database_path): + name_list = os.listdir(path) + k_v = {} + if os.path.exists(database_path): + k_v = np.load(database_path, allow_pickle=True) + k_v = k_v.item() + batch = 256 + order_name = [] + order_path = [] + emb_list = [] + for name in name_list: + img_path = os.listdir(os.path.join(path,name)) + for img_name in img_path[:1]: + order_name.append(name) + order_path.append(os.path.join(path,name,img_name)) + order_img = np.zeros((len(order_path), 3, 112, 112), dtype=np.float32) + for index, img_path in enumerate(order_path): + order_img[index] = load_image(img_path) + print(order_img.shape) + order_img = torch.from_numpy(order_img) + now = 0 + number = len(order_img) + with torch.no_grad(): + while now < number: + if now + batch < number: + emb = model(order_img[now:now+batch]) + else: + emb = model(order_img[now:]) + now = now + batch + for em in emb: + emb_list.append(em) + print("batch"+str(now)) + + for i, emb in enumerate(emb_list): + k_v[order_name[i]] = l2_normalize(emb.numpy()) + np.save(database_path, k_v) + +def add_one(img,model,name,database_path): + img = torch.from_numpy(img) + with torch.no_grad(): + pred = model(img) + pred = pred.numpy() + k_v = {} + if os.path.exists(database_path): + k_v = np.load(database_path, allow_pickle=True) + k_v = k_v.item() + k_v[name] = l2_normalize(pred) + np.save(database_path, k_v) + +def findmindistance(pred,threshold,k_v): + distance = 10 + most_like = "" + for name in k_v.keys(): + tmp = findEuclideanDistance(k_v[name],pred) + if distance > tmp: + distance = tmp + most_like = name + if distance < threshold: + return most_like + else: + return -1 + +def findOne(img,model,k_v): + + with torch.no_grad(): + start_time = time.time() + pred = model(img) + end_time = time.time() + #print("predOne time: " + str(end_time - start_time)) + pred = pred.numpy() + name = findmindistance(l2_normalize(pred),threshold=1.20,k_v=k_v) + if name != -1: + return name + else: + return "unknown" +def findAll(imglist,model,k_v): + with torch.no_grad(): + name_list = [] + pred = model(imglist) + pred = pred.numpy() + for pr in pred: + name = findmindistance(l2_normalize(pr),threshold=1.20,k_v=k_v) + if name != -1: + name_list.append(name) + else: + name_list.append("unknown") + return name_list + +if __name__=='__main__': + model = iresnet100() + model.load_state_dict(torch.load("./model/backbone100.pth", map_location="cpu")) + model.eval() + #img = load_image(r"D:\Download\out\facedatabase\man.jpg") + #img = load_image(r"D:\Download\out\facedatabase\man6.jpg") + # img = load_image(r"D:\Download\out\alig_students\student.jpg") + # print(img.shape) + # + # k_v = load_npy("./Database/student.npy") + # start_time = time.time() + # img = torch.from_numpy(img) + # name = findOne(img,model,k_v) + # mo = r'[\u4e00-\u9fa5]*' + # name = re.match(mo,name) + # print(name.group(0)) + # end_time = time.time() + # print("findOne time: " + str(end_time - start_time)) + + #create_database_batch(r"D:\Download\out\alig_students",model,"./Database/student.npy") + create_database_batch(r"D:\Download\out\cfp_database", model, "cfp.npy") + #add_one(img,model,"Arminio_Fraga","centerface_lfw.npy") \ No newline at end of file diff --git a/data/FDDB/img_list.txt b/data/FDDB/img_list.txt new file mode 100644 index 0000000..5cf3d31 --- /dev/null +++ b/data/FDDB/img_list.txt @@ -0,0 +1,2845 @@ +2002/08/11/big/img_591 +2002/08/26/big/img_265 +2002/07/19/big/img_423 +2002/08/24/big/img_490 +2002/08/31/big/img_17676 +2002/07/31/big/img_228 +2002/07/24/big/img_402 +2002/08/04/big/img_769 +2002/07/19/big/img_581 +2002/08/13/big/img_723 +2002/08/12/big/img_821 +2003/01/17/big/img_610 +2002/08/13/big/img_1116 +2002/08/28/big/img_19238 +2002/08/21/big/img_660 +2002/08/14/big/img_607 +2002/08/05/big/img_3708 +2002/08/19/big/img_511 +2002/08/07/big/img_1316 +2002/07/25/big/img_1047 +2002/07/23/big/img_474 +2002/07/27/big/img_970 +2002/09/02/big/img_15752 +2002/09/01/big/img_16378 +2002/09/01/big/img_16189 +2002/08/26/big/img_276 +2002/07/24/big/img_518 +2002/08/14/big/img_1027 +2002/08/24/big/img_733 +2002/08/15/big/img_249 +2003/01/15/big/img_1371 +2002/08/07/big/img_1348 +2003/01/01/big/img_331 +2002/08/23/big/img_536 +2002/07/30/big/img_224 +2002/08/10/big/img_763 +2002/08/21/big/img_293 +2002/08/15/big/img_1211 +2002/08/15/big/img_1194 +2003/01/15/big/img_390 +2002/08/06/big/img_2893 +2002/08/17/big/img_691 +2002/08/07/big/img_1695 +2002/08/16/big/img_829 +2002/07/25/big/img_201 +2002/08/23/big/img_36 +2003/01/15/big/img_763 +2003/01/15/big/img_637 +2002/08/22/big/img_592 +2002/07/25/big/img_817 +2003/01/15/big/img_1219 +2002/08/05/big/img_3508 +2002/08/15/big/img_1108 +2002/07/19/big/img_488 +2003/01/16/big/img_704 +2003/01/13/big/img_1087 +2002/08/10/big/img_670 +2002/07/24/big/img_104 +2002/08/27/big/img_19823 +2002/09/01/big/img_16229 +2003/01/13/big/img_846 +2002/08/04/big/img_412 +2002/07/22/big/img_554 +2002/08/12/big/img_331 +2002/08/02/big/img_533 +2002/08/12/big/img_259 +2002/08/18/big/img_328 +2003/01/14/big/img_630 +2002/08/05/big/img_3541 +2002/08/06/big/img_2390 +2002/08/20/big/img_150 +2002/08/02/big/img_1231 +2002/08/16/big/img_710 +2002/08/19/big/img_591 +2002/07/22/big/img_725 +2002/07/24/big/img_820 +2003/01/13/big/img_568 +2002/08/22/big/img_853 +2002/08/09/big/img_648 +2002/08/23/big/img_528 +2003/01/14/big/img_888 +2002/08/30/big/img_18201 +2002/08/13/big/img_965 +2003/01/14/big/img_660 +2002/07/19/big/img_517 +2003/01/14/big/img_406 +2002/08/30/big/img_18433 +2002/08/07/big/img_1630 +2002/08/06/big/img_2717 +2002/08/21/big/img_470 +2002/07/23/big/img_633 +2002/08/20/big/img_915 +2002/08/16/big/img_893 +2002/07/29/big/img_644 +2002/08/15/big/img_529 +2002/08/16/big/img_668 +2002/08/07/big/img_1871 +2002/07/25/big/img_192 +2002/07/31/big/img_961 +2002/08/19/big/img_738 +2002/07/31/big/img_382 +2002/08/19/big/img_298 +2003/01/17/big/img_608 +2002/08/21/big/img_514 +2002/07/23/big/img_183 +2003/01/17/big/img_536 +2002/07/24/big/img_478 +2002/08/06/big/img_2997 +2002/09/02/big/img_15380 +2002/08/07/big/img_1153 +2002/07/31/big/img_967 +2002/07/31/big/img_711 +2002/08/26/big/img_664 +2003/01/01/big/img_326 +2002/08/24/big/img_775 +2002/08/08/big/img_961 +2002/08/16/big/img_77 +2002/08/12/big/img_296 +2002/07/22/big/img_905 +2003/01/13/big/img_284 +2002/08/13/big/img_887 +2002/08/24/big/img_849 +2002/07/30/big/img_345 +2002/08/18/big/img_419 +2002/08/01/big/img_1347 +2002/08/05/big/img_3670 +2002/07/21/big/img_479 +2002/08/08/big/img_913 +2002/09/02/big/img_15828 +2002/08/30/big/img_18194 +2002/08/08/big/img_471 +2002/08/22/big/img_734 +2002/08/09/big/img_586 +2002/08/09/big/img_454 +2002/07/29/big/img_47 +2002/07/19/big/img_381 +2002/07/29/big/img_733 +2002/08/20/big/img_327 +2002/07/21/big/img_96 +2002/08/06/big/img_2680 +2002/07/25/big/img_919 +2002/07/21/big/img_158 +2002/07/22/big/img_801 +2002/07/22/big/img_567 +2002/07/24/big/img_804 +2002/07/24/big/img_690 +2003/01/15/big/img_576 +2002/08/14/big/img_335 +2003/01/13/big/img_390 +2002/08/11/big/img_258 +2002/07/23/big/img_917 +2002/08/15/big/img_525 +2003/01/15/big/img_505 +2002/07/30/big/img_886 +2003/01/16/big/img_640 +2003/01/14/big/img_642 +2003/01/17/big/img_844 +2002/08/04/big/img_571 +2002/08/29/big/img_18702 +2003/01/15/big/img_240 +2002/07/29/big/img_553 +2002/08/10/big/img_354 +2002/08/18/big/img_17 +2003/01/15/big/img_782 +2002/07/27/big/img_382 +2002/08/14/big/img_970 +2003/01/16/big/img_70 +2003/01/16/big/img_625 +2002/08/18/big/img_341 +2002/08/26/big/img_188 +2002/08/09/big/img_405 +2002/08/02/big/img_37 +2002/08/13/big/img_748 +2002/07/22/big/img_399 +2002/07/25/big/img_844 +2002/08/12/big/img_340 +2003/01/13/big/img_815 +2002/08/26/big/img_5 +2002/08/10/big/img_158 +2002/08/18/big/img_95 +2002/07/29/big/img_1297 +2003/01/13/big/img_508 +2002/09/01/big/img_16680 +2003/01/16/big/img_338 +2002/08/13/big/img_517 +2002/07/22/big/img_626 +2002/08/06/big/img_3024 +2002/07/26/big/img_499 +2003/01/13/big/img_387 +2002/08/31/big/img_18025 +2002/08/13/big/img_520 +2003/01/16/big/img_576 +2002/07/26/big/img_121 +2002/08/25/big/img_703 +2002/08/26/big/img_615 +2002/08/17/big/img_434 +2002/08/02/big/img_677 +2002/08/18/big/img_276 +2002/08/05/big/img_3672 +2002/07/26/big/img_700 +2002/07/31/big/img_277 +2003/01/14/big/img_220 +2002/08/23/big/img_232 +2002/08/31/big/img_17422 +2002/07/22/big/img_508 +2002/08/13/big/img_681 +2003/01/15/big/img_638 +2002/08/30/big/img_18408 +2003/01/14/big/img_533 +2003/01/17/big/img_12 +2002/08/28/big/img_19388 +2002/08/08/big/img_133 +2002/07/26/big/img_885 +2002/08/19/big/img_387 +2002/08/27/big/img_19976 +2002/08/26/big/img_118 +2002/08/28/big/img_19146 +2002/08/05/big/img_3259 +2002/08/15/big/img_536 +2002/07/22/big/img_279 +2002/07/22/big/img_9 +2002/08/13/big/img_301 +2002/08/15/big/img_974 +2002/08/06/big/img_2355 +2002/08/01/big/img_1526 +2002/08/03/big/img_417 +2002/08/04/big/img_407 +2002/08/15/big/img_1029 +2002/07/29/big/img_700 +2002/08/01/big/img_1463 +2002/08/31/big/img_17365 +2002/07/28/big/img_223 +2002/07/19/big/img_827 +2002/07/27/big/img_531 +2002/07/19/big/img_845 +2002/08/20/big/img_382 +2002/07/31/big/img_268 +2002/08/27/big/img_19705 +2002/08/02/big/img_830 +2002/08/23/big/img_250 +2002/07/20/big/img_777 +2002/08/21/big/img_879 +2002/08/26/big/img_20146 +2002/08/23/big/img_789 +2002/08/06/big/img_2683 +2002/08/25/big/img_576 +2002/08/09/big/img_498 +2002/08/08/big/img_384 +2002/08/26/big/img_592 +2002/07/29/big/img_1470 +2002/08/21/big/img_452 +2002/08/30/big/img_18395 +2002/08/15/big/img_215 +2002/07/21/big/img_643 +2002/07/22/big/img_209 +2003/01/17/big/img_346 +2002/08/25/big/img_658 +2002/08/21/big/img_221 +2002/08/14/big/img_60 +2003/01/17/big/img_885 +2003/01/16/big/img_482 +2002/08/19/big/img_593 +2002/08/08/big/img_233 +2002/07/30/big/img_458 +2002/07/23/big/img_384 +2003/01/15/big/img_670 +2003/01/15/big/img_267 +2002/08/26/big/img_540 +2002/07/29/big/img_552 +2002/07/30/big/img_997 +2003/01/17/big/img_377 +2002/08/21/big/img_265 +2002/08/09/big/img_561 +2002/07/31/big/img_945 +2002/09/02/big/img_15252 +2002/08/11/big/img_276 +2002/07/22/big/img_491 +2002/07/26/big/img_517 +2002/08/14/big/img_726 +2002/08/08/big/img_46 +2002/08/28/big/img_19458 +2002/08/06/big/img_2935 +2002/07/29/big/img_1392 +2002/08/13/big/img_776 +2002/08/24/big/img_616 +2002/08/14/big/img_1065 +2002/07/29/big/img_889 +2002/08/18/big/img_188 +2002/08/07/big/img_1453 +2002/08/02/big/img_760 +2002/07/28/big/img_416 +2002/08/07/big/img_1393 +2002/08/26/big/img_292 +2002/08/26/big/img_301 +2003/01/13/big/img_195 +2002/07/26/big/img_532 +2002/08/20/big/img_550 +2002/08/05/big/img_3658 +2002/08/26/big/img_738 +2002/09/02/big/img_15750 +2003/01/17/big/img_451 +2002/07/23/big/img_339 +2002/08/16/big/img_637 +2002/08/14/big/img_748 +2002/08/06/big/img_2739 +2002/07/25/big/img_482 +2002/08/19/big/img_191 +2002/08/26/big/img_537 +2003/01/15/big/img_716 +2003/01/15/big/img_767 +2002/08/02/big/img_452 +2002/08/08/big/img_1011 +2002/08/10/big/img_144 +2003/01/14/big/img_122 +2002/07/24/big/img_586 +2002/07/24/big/img_762 +2002/08/20/big/img_369 +2002/07/30/big/img_146 +2002/08/23/big/img_396 +2003/01/15/big/img_200 +2002/08/15/big/img_1183 +2003/01/14/big/img_698 +2002/08/09/big/img_792 +2002/08/06/big/img_2347 +2002/07/31/big/img_911 +2002/08/26/big/img_722 +2002/08/23/big/img_621 +2002/08/05/big/img_3790 +2003/01/13/big/img_633 +2002/08/09/big/img_224 +2002/07/24/big/img_454 +2002/07/21/big/img_202 +2002/08/02/big/img_630 +2002/08/30/big/img_18315 +2002/07/19/big/img_491 +2002/09/01/big/img_16456 +2002/08/09/big/img_242 +2002/07/25/big/img_595 +2002/07/22/big/img_522 +2002/08/01/big/img_1593 +2002/07/29/big/img_336 +2002/08/15/big/img_448 +2002/08/28/big/img_19281 +2002/07/29/big/img_342 +2002/08/12/big/img_78 +2003/01/14/big/img_525 +2002/07/28/big/img_147 +2002/08/11/big/img_353 +2002/08/22/big/img_513 +2002/08/04/big/img_721 +2002/08/17/big/img_247 +2003/01/14/big/img_891 +2002/08/20/big/img_853 +2002/07/19/big/img_414 +2002/08/01/big/img_1530 +2003/01/14/big/img_924 +2002/08/22/big/img_468 +2002/08/18/big/img_354 +2002/08/30/big/img_18193 +2002/08/23/big/img_492 +2002/08/15/big/img_871 +2002/08/12/big/img_494 +2002/08/06/big/img_2470 +2002/07/23/big/img_923 +2002/08/26/big/img_155 +2002/08/08/big/img_669 +2002/07/23/big/img_404 +2002/08/28/big/img_19421 +2002/08/29/big/img_18993 +2002/08/25/big/img_416 +2003/01/17/big/img_434 +2002/07/29/big/img_1370 +2002/07/28/big/img_483 +2002/08/11/big/img_50 +2002/08/10/big/img_404 +2002/09/02/big/img_15057 +2003/01/14/big/img_911 +2002/09/01/big/img_16697 +2003/01/16/big/img_665 +2002/09/01/big/img_16708 +2002/08/22/big/img_612 +2002/08/28/big/img_19471 +2002/08/02/big/img_198 +2003/01/16/big/img_527 +2002/08/22/big/img_209 +2002/08/30/big/img_18205 +2003/01/14/big/img_114 +2003/01/14/big/img_1028 +2003/01/16/big/img_894 +2003/01/14/big/img_837 +2002/07/30/big/img_9 +2002/08/06/big/img_2821 +2002/08/04/big/img_85 +2003/01/13/big/img_884 +2002/07/22/big/img_570 +2002/08/07/big/img_1773 +2002/07/26/big/img_208 +2003/01/17/big/img_946 +2002/07/19/big/img_930 +2003/01/01/big/img_698 +2003/01/17/big/img_612 +2002/07/19/big/img_372 +2002/07/30/big/img_721 +2003/01/14/big/img_649 +2002/08/19/big/img_4 +2002/07/25/big/img_1024 +2003/01/15/big/img_601 +2002/08/30/big/img_18470 +2002/07/22/big/img_29 +2002/08/07/big/img_1686 +2002/07/20/big/img_294 +2002/08/14/big/img_800 +2002/08/19/big/img_353 +2002/08/19/big/img_350 +2002/08/05/big/img_3392 +2002/08/09/big/img_622 +2003/01/15/big/img_236 +2002/08/11/big/img_643 +2002/08/05/big/img_3458 +2002/08/12/big/img_413 +2002/08/22/big/img_415 +2002/08/13/big/img_635 +2002/08/07/big/img_1198 +2002/08/04/big/img_873 +2002/08/12/big/img_407 +2003/01/15/big/img_346 +2002/08/02/big/img_275 +2002/08/17/big/img_997 +2002/08/21/big/img_958 +2002/08/20/big/img_579 +2002/07/29/big/img_142 +2003/01/14/big/img_1115 +2002/08/16/big/img_365 +2002/07/29/big/img_1414 +2002/08/17/big/img_489 +2002/08/13/big/img_1010 +2002/07/31/big/img_276 +2002/07/25/big/img_1000 +2002/08/23/big/img_524 +2002/08/28/big/img_19147 +2003/01/13/big/img_433 +2002/08/20/big/img_205 +2003/01/01/big/img_458 +2002/07/29/big/img_1449 +2003/01/16/big/img_696 +2002/08/28/big/img_19296 +2002/08/29/big/img_18688 +2002/08/21/big/img_767 +2002/08/20/big/img_532 +2002/08/26/big/img_187 +2002/07/26/big/img_183 +2002/07/27/big/img_890 +2003/01/13/big/img_576 +2002/07/30/big/img_15 +2002/07/31/big/img_889 +2002/08/31/big/img_17759 +2003/01/14/big/img_1114 +2002/07/19/big/img_445 +2002/08/03/big/img_593 +2002/07/24/big/img_750 +2002/07/30/big/img_133 +2002/08/25/big/img_671 +2002/07/20/big/img_351 +2002/08/31/big/img_17276 +2002/08/05/big/img_3231 +2002/09/02/big/img_15882 +2002/08/14/big/img_115 +2002/08/02/big/img_1148 +2002/07/25/big/img_936 +2002/07/31/big/img_639 +2002/08/04/big/img_427 +2002/08/22/big/img_843 +2003/01/17/big/img_17 +2003/01/13/big/img_690 +2002/08/13/big/img_472 +2002/08/09/big/img_425 +2002/08/05/big/img_3450 +2003/01/17/big/img_439 +2002/08/13/big/img_539 +2002/07/28/big/img_35 +2002/08/16/big/img_241 +2002/08/06/big/img_2898 +2003/01/16/big/img_429 +2002/08/05/big/img_3817 +2002/08/27/big/img_19919 +2002/07/19/big/img_422 +2002/08/15/big/img_560 +2002/07/23/big/img_750 +2002/07/30/big/img_353 +2002/08/05/big/img_43 +2002/08/23/big/img_305 +2002/08/01/big/img_2137 +2002/08/30/big/img_18097 +2002/08/01/big/img_1389 +2002/08/02/big/img_308 +2003/01/14/big/img_652 +2002/08/01/big/img_1798 +2003/01/14/big/img_732 +2003/01/16/big/img_294 +2002/08/26/big/img_213 +2002/07/24/big/img_842 +2003/01/13/big/img_630 +2003/01/13/big/img_634 +2002/08/06/big/img_2285 +2002/08/01/big/img_2162 +2002/08/30/big/img_18134 +2002/08/02/big/img_1045 +2002/08/01/big/img_2143 +2002/07/25/big/img_135 +2002/07/20/big/img_645 +2002/08/05/big/img_3666 +2002/08/14/big/img_523 +2002/08/04/big/img_425 +2003/01/14/big/img_137 +2003/01/01/big/img_176 +2002/08/15/big/img_505 +2002/08/24/big/img_386 +2002/08/05/big/img_3187 +2002/08/15/big/img_419 +2003/01/13/big/img_520 +2002/08/04/big/img_444 +2002/08/26/big/img_483 +2002/08/05/big/img_3449 +2002/08/30/big/img_18409 +2002/08/28/big/img_19455 +2002/08/27/big/img_20090 +2002/07/23/big/img_625 +2002/08/24/big/img_205 +2002/08/08/big/img_938 +2003/01/13/big/img_527 +2002/08/07/big/img_1712 +2002/07/24/big/img_801 +2002/08/09/big/img_579 +2003/01/14/big/img_41 +2003/01/15/big/img_1130 +2002/07/21/big/img_672 +2002/08/07/big/img_1590 +2003/01/01/big/img_532 +2002/08/02/big/img_529 +2002/08/05/big/img_3591 +2002/08/23/big/img_5 +2003/01/14/big/img_882 +2002/08/28/big/img_19234 +2002/07/24/big/img_398 +2003/01/14/big/img_592 +2002/08/22/big/img_548 +2002/08/12/big/img_761 +2003/01/16/big/img_497 +2002/08/18/big/img_133 +2002/08/08/big/img_874 +2002/07/19/big/img_247 +2002/08/15/big/img_170 +2002/08/27/big/img_19679 +2002/08/20/big/img_246 +2002/08/24/big/img_358 +2002/07/29/big/img_599 +2002/08/01/big/img_1555 +2002/07/30/big/img_491 +2002/07/30/big/img_371 +2003/01/16/big/img_682 +2002/07/25/big/img_619 +2003/01/15/big/img_587 +2002/08/02/big/img_1212 +2002/08/01/big/img_2152 +2002/07/25/big/img_668 +2003/01/16/big/img_574 +2002/08/28/big/img_19464 +2002/08/11/big/img_536 +2002/07/24/big/img_201 +2002/08/05/big/img_3488 +2002/07/25/big/img_887 +2002/07/22/big/img_789 +2002/07/30/big/img_432 +2002/08/16/big/img_166 +2002/09/01/big/img_16333 +2002/07/26/big/img_1010 +2002/07/21/big/img_793 +2002/07/22/big/img_720 +2002/07/31/big/img_337 +2002/07/27/big/img_185 +2002/08/23/big/img_440 +2002/07/31/big/img_801 +2002/07/25/big/img_478 +2003/01/14/big/img_171 +2002/08/07/big/img_1054 +2002/09/02/big/img_15659 +2002/07/29/big/img_1348 +2002/08/09/big/img_337 +2002/08/26/big/img_684 +2002/07/31/big/img_537 +2002/08/15/big/img_808 +2003/01/13/big/img_740 +2002/08/07/big/img_1667 +2002/08/03/big/img_404 +2002/08/06/big/img_2520 +2002/07/19/big/img_230 +2002/07/19/big/img_356 +2003/01/16/big/img_627 +2002/08/04/big/img_474 +2002/07/29/big/img_833 +2002/07/25/big/img_176 +2002/08/01/big/img_1684 +2002/08/21/big/img_643 +2002/08/27/big/img_19673 +2002/08/02/big/img_838 +2002/08/06/big/img_2378 +2003/01/15/big/img_48 +2002/07/30/big/img_470 +2002/08/15/big/img_963 +2002/08/24/big/img_444 +2002/08/16/big/img_662 +2002/08/15/big/img_1209 +2002/07/24/big/img_25 +2002/08/06/big/img_2740 +2002/07/29/big/img_996 +2002/08/31/big/img_18074 +2002/08/04/big/img_343 +2003/01/17/big/img_509 +2003/01/13/big/img_726 +2002/08/07/big/img_1466 +2002/07/26/big/img_307 +2002/08/10/big/img_598 +2002/08/13/big/img_890 +2002/08/14/big/img_997 +2002/07/19/big/img_392 +2002/08/02/big/img_475 +2002/08/29/big/img_19038 +2002/07/29/big/img_538 +2002/07/29/big/img_502 +2002/08/02/big/img_364 +2002/08/31/big/img_17353 +2002/08/08/big/img_539 +2002/08/01/big/img_1449 +2002/07/22/big/img_363 +2002/08/02/big/img_90 +2002/09/01/big/img_16867 +2002/08/05/big/img_3371 +2002/07/30/big/img_342 +2002/08/07/big/img_1363 +2002/08/22/big/img_790 +2003/01/15/big/img_404 +2002/08/05/big/img_3447 +2002/09/01/big/img_16167 +2003/01/13/big/img_840 +2002/08/22/big/img_1001 +2002/08/09/big/img_431 +2002/07/27/big/img_618 +2002/07/31/big/img_741 +2002/07/30/big/img_964 +2002/07/25/big/img_86 +2002/07/29/big/img_275 +2002/08/21/big/img_921 +2002/07/26/big/img_892 +2002/08/21/big/img_663 +2003/01/13/big/img_567 +2003/01/14/big/img_719 +2002/07/28/big/img_251 +2003/01/15/big/img_1123 +2002/07/29/big/img_260 +2002/08/24/big/img_337 +2002/08/01/big/img_1914 +2002/08/13/big/img_373 +2003/01/15/big/img_589 +2002/08/13/big/img_906 +2002/07/26/big/img_270 +2002/08/26/big/img_313 +2002/08/25/big/img_694 +2003/01/01/big/img_327 +2002/07/23/big/img_261 +2002/08/26/big/img_642 +2002/07/29/big/img_918 +2002/07/23/big/img_455 +2002/07/24/big/img_612 +2002/07/23/big/img_534 +2002/07/19/big/img_534 +2002/07/19/big/img_726 +2002/08/01/big/img_2146 +2002/08/02/big/img_543 +2003/01/16/big/img_777 +2002/07/30/big/img_484 +2002/08/13/big/img_1161 +2002/07/21/big/img_390 +2002/08/06/big/img_2288 +2002/08/21/big/img_677 +2002/08/13/big/img_747 +2002/08/15/big/img_1248 +2002/07/31/big/img_416 +2002/09/02/big/img_15259 +2002/08/16/big/img_781 +2002/08/24/big/img_754 +2002/07/24/big/img_803 +2002/08/20/big/img_609 +2002/08/28/big/img_19571 +2002/09/01/big/img_16140 +2002/08/26/big/img_769 +2002/07/20/big/img_588 +2002/08/02/big/img_898 +2002/07/21/big/img_466 +2002/08/14/big/img_1046 +2002/07/25/big/img_212 +2002/08/26/big/img_353 +2002/08/19/big/img_810 +2002/08/31/big/img_17824 +2002/08/12/big/img_631 +2002/07/19/big/img_828 +2002/07/24/big/img_130 +2002/08/25/big/img_580 +2002/07/31/big/img_699 +2002/07/23/big/img_808 +2002/07/31/big/img_377 +2003/01/16/big/img_570 +2002/09/01/big/img_16254 +2002/07/21/big/img_471 +2002/08/01/big/img_1548 +2002/08/18/big/img_252 +2002/08/19/big/img_576 +2002/08/20/big/img_464 +2002/07/27/big/img_735 +2002/08/21/big/img_589 +2003/01/15/big/img_1192 +2002/08/09/big/img_302 +2002/07/31/big/img_594 +2002/08/23/big/img_19 +2002/08/29/big/img_18819 +2002/08/19/big/img_293 +2002/07/30/big/img_331 +2002/08/23/big/img_607 +2002/07/30/big/img_363 +2002/08/16/big/img_766 +2003/01/13/big/img_481 +2002/08/06/big/img_2515 +2002/09/02/big/img_15913 +2002/09/02/big/img_15827 +2002/09/02/big/img_15053 +2002/08/07/big/img_1576 +2002/07/23/big/img_268 +2002/08/21/big/img_152 +2003/01/15/big/img_578 +2002/07/21/big/img_589 +2002/07/20/big/img_548 +2002/08/27/big/img_19693 +2002/08/31/big/img_17252 +2002/07/31/big/img_138 +2002/07/23/big/img_372 +2002/08/16/big/img_695 +2002/07/27/big/img_287 +2002/08/15/big/img_315 +2002/08/10/big/img_361 +2002/07/29/big/img_899 +2002/08/13/big/img_771 +2002/08/21/big/img_92 +2003/01/15/big/img_425 +2003/01/16/big/img_450 +2002/09/01/big/img_16942 +2002/08/02/big/img_51 +2002/09/02/big/img_15379 +2002/08/24/big/img_147 +2002/08/30/big/img_18122 +2002/07/26/big/img_950 +2002/08/07/big/img_1400 +2002/08/17/big/img_468 +2002/08/15/big/img_470 +2002/07/30/big/img_318 +2002/07/22/big/img_644 +2002/08/27/big/img_19732 +2002/07/23/big/img_601 +2002/08/26/big/img_398 +2002/08/21/big/img_428 +2002/08/06/big/img_2119 +2002/08/29/big/img_19103 +2003/01/14/big/img_933 +2002/08/11/big/img_674 +2002/08/28/big/img_19420 +2002/08/03/big/img_418 +2002/08/17/big/img_312 +2002/07/25/big/img_1044 +2003/01/17/big/img_671 +2002/08/30/big/img_18297 +2002/07/25/big/img_755 +2002/07/23/big/img_471 +2002/08/21/big/img_39 +2002/07/26/big/img_699 +2003/01/14/big/img_33 +2002/07/31/big/img_411 +2002/08/16/big/img_645 +2003/01/17/big/img_116 +2002/09/02/big/img_15903 +2002/08/20/big/img_120 +2002/08/22/big/img_176 +2002/07/29/big/img_1316 +2002/08/27/big/img_19914 +2002/07/22/big/img_719 +2002/08/28/big/img_19239 +2003/01/13/big/img_385 +2002/08/08/big/img_525 +2002/07/19/big/img_782 +2002/08/13/big/img_843 +2002/07/30/big/img_107 +2002/08/11/big/img_752 +2002/07/29/big/img_383 +2002/08/26/big/img_249 +2002/08/29/big/img_18860 +2002/07/30/big/img_70 +2002/07/26/big/img_194 +2002/08/15/big/img_530 +2002/08/08/big/img_816 +2002/07/31/big/img_286 +2003/01/13/big/img_294 +2002/07/31/big/img_251 +2002/07/24/big/img_13 +2002/08/31/big/img_17938 +2002/07/22/big/img_642 +2003/01/14/big/img_728 +2002/08/18/big/img_47 +2002/08/22/big/img_306 +2002/08/20/big/img_348 +2002/08/15/big/img_764 +2002/08/08/big/img_163 +2002/07/23/big/img_531 +2002/07/23/big/img_467 +2003/01/16/big/img_743 +2003/01/13/big/img_535 +2002/08/02/big/img_523 +2002/08/22/big/img_120 +2002/08/11/big/img_496 +2002/08/29/big/img_19075 +2002/08/08/big/img_465 +2002/08/09/big/img_790 +2002/08/19/big/img_588 +2002/08/23/big/img_407 +2003/01/17/big/img_435 +2002/08/24/big/img_398 +2002/08/27/big/img_19899 +2003/01/15/big/img_335 +2002/08/13/big/img_493 +2002/09/02/big/img_15460 +2002/07/31/big/img_470 +2002/08/05/big/img_3550 +2002/07/28/big/img_123 +2002/08/01/big/img_1498 +2002/08/04/big/img_504 +2003/01/17/big/img_427 +2002/08/27/big/img_19708 +2002/07/27/big/img_861 +2002/07/25/big/img_685 +2002/07/31/big/img_207 +2003/01/14/big/img_745 +2002/08/31/big/img_17756 +2002/08/24/big/img_288 +2002/08/18/big/img_181 +2002/08/10/big/img_520 +2002/08/25/big/img_705 +2002/08/23/big/img_226 +2002/08/04/big/img_727 +2002/07/24/big/img_625 +2002/08/28/big/img_19157 +2002/08/23/big/img_586 +2002/07/31/big/img_232 +2003/01/13/big/img_240 +2003/01/14/big/img_321 +2003/01/15/big/img_533 +2002/07/23/big/img_480 +2002/07/24/big/img_371 +2002/08/21/big/img_702 +2002/08/31/big/img_17075 +2002/09/02/big/img_15278 +2002/07/29/big/img_246 +2003/01/15/big/img_829 +2003/01/15/big/img_1213 +2003/01/16/big/img_441 +2002/08/14/big/img_921 +2002/07/23/big/img_425 +2002/08/15/big/img_296 +2002/07/19/big/img_135 +2002/07/26/big/img_402 +2003/01/17/big/img_88 +2002/08/20/big/img_872 +2002/08/13/big/img_1110 +2003/01/16/big/img_1040 +2002/07/23/big/img_9 +2002/08/13/big/img_700 +2002/08/16/big/img_371 +2002/08/27/big/img_19966 +2003/01/17/big/img_391 +2002/08/18/big/img_426 +2002/08/01/big/img_1618 +2002/07/21/big/img_754 +2003/01/14/big/img_1101 +2003/01/16/big/img_1022 +2002/07/22/big/img_275 +2002/08/24/big/img_86 +2002/08/17/big/img_582 +2003/01/15/big/img_765 +2003/01/17/big/img_449 +2002/07/28/big/img_265 +2003/01/13/big/img_552 +2002/07/28/big/img_115 +2003/01/16/big/img_56 +2002/08/02/big/img_1232 +2003/01/17/big/img_925 +2002/07/22/big/img_445 +2002/07/25/big/img_957 +2002/07/20/big/img_589 +2002/08/31/big/img_17107 +2002/07/29/big/img_483 +2002/08/14/big/img_1063 +2002/08/07/big/img_1545 +2002/08/14/big/img_680 +2002/09/01/big/img_16694 +2002/08/14/big/img_257 +2002/08/11/big/img_726 +2002/07/26/big/img_681 +2002/07/25/big/img_481 +2003/01/14/big/img_737 +2002/08/28/big/img_19480 +2003/01/16/big/img_362 +2002/08/27/big/img_19865 +2003/01/01/big/img_547 +2002/09/02/big/img_15074 +2002/08/01/big/img_1453 +2002/08/22/big/img_594 +2002/08/28/big/img_19263 +2002/08/13/big/img_478 +2002/07/29/big/img_1358 +2003/01/14/big/img_1022 +2002/08/16/big/img_450 +2002/08/02/big/img_159 +2002/07/26/big/img_781 +2003/01/13/big/img_601 +2002/08/20/big/img_407 +2002/08/15/big/img_468 +2002/08/31/big/img_17902 +2002/08/16/big/img_81 +2002/07/25/big/img_987 +2002/07/25/big/img_500 +2002/08/02/big/img_31 +2002/08/18/big/img_538 +2002/08/08/big/img_54 +2002/07/23/big/img_686 +2002/07/24/big/img_836 +2003/01/17/big/img_734 +2002/08/16/big/img_1055 +2003/01/16/big/img_521 +2002/07/25/big/img_612 +2002/08/22/big/img_778 +2002/08/03/big/img_251 +2002/08/12/big/img_436 +2002/08/23/big/img_705 +2002/07/28/big/img_243 +2002/07/25/big/img_1029 +2002/08/20/big/img_287 +2002/08/29/big/img_18739 +2002/08/05/big/img_3272 +2002/07/27/big/img_214 +2003/01/14/big/img_5 +2002/08/01/big/img_1380 +2002/08/29/big/img_19097 +2002/07/30/big/img_486 +2002/08/29/big/img_18707 +2002/08/10/big/img_559 +2002/08/15/big/img_365 +2002/08/09/big/img_525 +2002/08/10/big/img_689 +2002/07/25/big/img_502 +2002/08/03/big/img_667 +2002/08/10/big/img_855 +2002/08/10/big/img_706 +2002/08/18/big/img_603 +2003/01/16/big/img_1055 +2002/08/31/big/img_17890 +2002/08/15/big/img_761 +2003/01/15/big/img_489 +2002/08/26/big/img_351 +2002/08/01/big/img_1772 +2002/08/31/big/img_17729 +2002/07/25/big/img_609 +2003/01/13/big/img_539 +2002/07/27/big/img_686 +2002/07/31/big/img_311 +2002/08/22/big/img_799 +2003/01/16/big/img_936 +2002/08/31/big/img_17813 +2002/08/04/big/img_862 +2002/08/09/big/img_332 +2002/07/20/big/img_148 +2002/08/12/big/img_426 +2002/07/24/big/img_69 +2002/07/27/big/img_685 +2002/08/02/big/img_480 +2002/08/26/big/img_154 +2002/07/24/big/img_598 +2002/08/01/big/img_1881 +2002/08/20/big/img_667 +2003/01/14/big/img_495 +2002/07/21/big/img_744 +2002/07/30/big/img_150 +2002/07/23/big/img_924 +2002/08/08/big/img_272 +2002/07/23/big/img_310 +2002/07/25/big/img_1011 +2002/09/02/big/img_15725 +2002/07/19/big/img_814 +2002/08/20/big/img_936 +2002/07/25/big/img_85 +2002/08/24/big/img_662 +2002/08/09/big/img_495 +2003/01/15/big/img_196 +2002/08/16/big/img_707 +2002/08/28/big/img_19370 +2002/08/06/big/img_2366 +2002/08/06/big/img_3012 +2002/08/01/big/img_1452 +2002/07/31/big/img_742 +2002/07/27/big/img_914 +2003/01/13/big/img_290 +2002/07/31/big/img_288 +2002/08/02/big/img_171 +2002/08/22/big/img_191 +2002/07/27/big/img_1066 +2002/08/12/big/img_383 +2003/01/17/big/img_1018 +2002/08/01/big/img_1785 +2002/08/11/big/img_390 +2002/08/27/big/img_20037 +2002/08/12/big/img_38 +2003/01/15/big/img_103 +2002/08/26/big/img_31 +2002/08/18/big/img_660 +2002/07/22/big/img_694 +2002/08/15/big/img_24 +2002/07/27/big/img_1077 +2002/08/01/big/img_1943 +2002/07/22/big/img_292 +2002/09/01/big/img_16857 +2002/07/22/big/img_892 +2003/01/14/big/img_46 +2002/08/09/big/img_469 +2002/08/09/big/img_414 +2003/01/16/big/img_40 +2002/08/28/big/img_19231 +2002/07/27/big/img_978 +2002/07/23/big/img_475 +2002/07/25/big/img_92 +2002/08/09/big/img_799 +2002/07/25/big/img_491 +2002/08/03/big/img_654 +2003/01/15/big/img_687 +2002/08/11/big/img_478 +2002/08/07/big/img_1664 +2002/08/20/big/img_362 +2002/08/01/big/img_1298 +2003/01/13/big/img_500 +2002/08/06/big/img_2896 +2002/08/30/big/img_18529 +2002/08/16/big/img_1020 +2002/07/29/big/img_892 +2002/08/29/big/img_18726 +2002/07/21/big/img_453 +2002/08/17/big/img_437 +2002/07/19/big/img_665 +2002/07/22/big/img_440 +2002/07/19/big/img_582 +2002/07/21/big/img_233 +2003/01/01/big/img_82 +2002/07/25/big/img_341 +2002/07/29/big/img_864 +2002/08/02/big/img_276 +2002/08/29/big/img_18654 +2002/07/27/big/img_1024 +2002/08/19/big/img_373 +2003/01/15/big/img_241 +2002/07/25/big/img_84 +2002/08/13/big/img_834 +2002/08/10/big/img_511 +2002/08/01/big/img_1627 +2002/08/08/big/img_607 +2002/08/06/big/img_2083 +2002/08/01/big/img_1486 +2002/08/08/big/img_700 +2002/08/01/big/img_1954 +2002/08/21/big/img_54 +2002/07/30/big/img_847 +2002/08/28/big/img_19169 +2002/07/21/big/img_549 +2002/08/03/big/img_693 +2002/07/31/big/img_1002 +2003/01/14/big/img_1035 +2003/01/16/big/img_622 +2002/07/30/big/img_1201 +2002/08/10/big/img_444 +2002/07/31/big/img_374 +2002/08/21/big/img_301 +2002/08/13/big/img_1095 +2003/01/13/big/img_288 +2002/07/25/big/img_232 +2003/01/13/big/img_967 +2002/08/26/big/img_360 +2002/08/05/big/img_67 +2002/08/29/big/img_18969 +2002/07/28/big/img_16 +2002/08/16/big/img_515 +2002/07/20/big/img_708 +2002/08/18/big/img_178 +2003/01/15/big/img_509 +2002/07/25/big/img_430 +2002/08/21/big/img_738 +2002/08/16/big/img_886 +2002/09/02/big/img_15605 +2002/09/01/big/img_16242 +2002/08/24/big/img_711 +2002/07/25/big/img_90 +2002/08/09/big/img_491 +2002/07/30/big/img_534 +2003/01/13/big/img_474 +2002/08/25/big/img_510 +2002/08/15/big/img_555 +2002/08/02/big/img_775 +2002/07/23/big/img_975 +2002/08/19/big/img_229 +2003/01/17/big/img_860 +2003/01/02/big/img_10 +2002/07/23/big/img_542 +2002/08/06/big/img_2535 +2002/07/22/big/img_37 +2002/08/06/big/img_2342 +2002/08/25/big/img_515 +2002/08/25/big/img_336 +2002/08/18/big/img_837 +2002/08/21/big/img_616 +2003/01/17/big/img_24 +2002/07/26/big/img_936 +2002/08/14/big/img_896 +2002/07/29/big/img_465 +2002/07/31/big/img_543 +2002/08/01/big/img_1411 +2002/08/02/big/img_423 +2002/08/21/big/img_44 +2002/07/31/big/img_11 +2003/01/15/big/img_628 +2003/01/15/big/img_605 +2002/07/30/big/img_571 +2002/07/23/big/img_428 +2002/08/15/big/img_942 +2002/07/26/big/img_531 +2003/01/16/big/img_59 +2002/08/02/big/img_410 +2002/07/31/big/img_230 +2002/08/19/big/img_806 +2003/01/14/big/img_462 +2002/08/16/big/img_370 +2002/08/13/big/img_380 +2002/08/16/big/img_932 +2002/07/19/big/img_393 +2002/08/20/big/img_764 +2002/08/15/big/img_616 +2002/07/26/big/img_267 +2002/07/27/big/img_1069 +2002/08/14/big/img_1041 +2003/01/13/big/img_594 +2002/09/01/big/img_16845 +2002/08/09/big/img_229 +2003/01/16/big/img_639 +2002/08/19/big/img_398 +2002/08/18/big/img_978 +2002/08/24/big/img_296 +2002/07/29/big/img_415 +2002/07/30/big/img_923 +2002/08/18/big/img_575 +2002/08/22/big/img_182 +2002/07/25/big/img_806 +2002/07/22/big/img_49 +2002/07/29/big/img_989 +2003/01/17/big/img_789 +2003/01/15/big/img_503 +2002/09/01/big/img_16062 +2003/01/17/big/img_794 +2002/08/15/big/img_564 +2003/01/15/big/img_222 +2002/08/01/big/img_1656 +2003/01/13/big/img_432 +2002/07/19/big/img_426 +2002/08/17/big/img_244 +2002/08/13/big/img_805 +2002/09/02/big/img_15067 +2002/08/11/big/img_58 +2002/08/22/big/img_636 +2002/07/22/big/img_416 +2002/08/13/big/img_836 +2002/08/26/big/img_363 +2002/07/30/big/img_917 +2003/01/14/big/img_206 +2002/08/12/big/img_311 +2002/08/31/big/img_17623 +2002/07/29/big/img_661 +2003/01/13/big/img_417 +2002/08/02/big/img_463 +2002/08/02/big/img_669 +2002/08/26/big/img_670 +2002/08/02/big/img_375 +2002/07/19/big/img_209 +2002/08/08/big/img_115 +2002/08/21/big/img_399 +2002/08/20/big/img_911 +2002/08/07/big/img_1212 +2002/08/20/big/img_578 +2002/08/22/big/img_554 +2002/08/21/big/img_484 +2002/07/25/big/img_450 +2002/08/03/big/img_542 +2002/08/15/big/img_561 +2002/07/23/big/img_360 +2002/08/30/big/img_18137 +2002/07/25/big/img_250 +2002/08/03/big/img_647 +2002/08/20/big/img_375 +2002/08/14/big/img_387 +2002/09/01/big/img_16990 +2002/08/28/big/img_19341 +2003/01/15/big/img_239 +2002/08/20/big/img_528 +2002/08/12/big/img_130 +2002/09/02/big/img_15108 +2003/01/15/big/img_372 +2002/08/16/big/img_678 +2002/08/04/big/img_623 +2002/07/23/big/img_477 +2002/08/28/big/img_19590 +2003/01/17/big/img_978 +2002/09/01/big/img_16692 +2002/07/20/big/img_109 +2002/08/06/big/img_2660 +2003/01/14/big/img_464 +2002/08/09/big/img_618 +2002/07/22/big/img_722 +2002/08/25/big/img_419 +2002/08/03/big/img_314 +2002/08/25/big/img_40 +2002/07/27/big/img_430 +2002/08/10/big/img_569 +2002/08/23/big/img_398 +2002/07/23/big/img_893 +2002/08/16/big/img_261 +2002/08/06/big/img_2668 +2002/07/22/big/img_835 +2002/09/02/big/img_15093 +2003/01/16/big/img_65 +2002/08/21/big/img_448 +2003/01/14/big/img_351 +2003/01/17/big/img_133 +2002/07/28/big/img_493 +2003/01/15/big/img_640 +2002/09/01/big/img_16880 +2002/08/15/big/img_350 +2002/08/20/big/img_624 +2002/08/25/big/img_604 +2002/08/06/big/img_2200 +2002/08/23/big/img_290 +2002/08/13/big/img_1152 +2003/01/14/big/img_251 +2002/08/02/big/img_538 +2002/08/22/big/img_613 +2003/01/13/big/img_351 +2002/08/18/big/img_368 +2002/07/23/big/img_392 +2002/07/25/big/img_198 +2002/07/25/big/img_418 +2002/08/26/big/img_614 +2002/07/23/big/img_405 +2003/01/14/big/img_445 +2002/07/25/big/img_326 +2002/08/10/big/img_734 +2003/01/14/big/img_530 +2002/08/08/big/img_561 +2002/08/29/big/img_18990 +2002/08/10/big/img_576 +2002/07/29/big/img_1494 +2002/07/19/big/img_198 +2002/08/10/big/img_562 +2002/07/22/big/img_901 +2003/01/14/big/img_37 +2002/09/02/big/img_15629 +2003/01/14/big/img_58 +2002/08/01/big/img_1364 +2002/07/27/big/img_636 +2003/01/13/big/img_241 +2002/09/01/big/img_16988 +2003/01/13/big/img_560 +2002/08/09/big/img_533 +2002/07/31/big/img_249 +2003/01/17/big/img_1007 +2002/07/21/big/img_64 +2003/01/13/big/img_537 +2003/01/15/big/img_606 +2002/08/18/big/img_651 +2002/08/24/big/img_405 +2002/07/26/big/img_837 +2002/08/09/big/img_562 +2002/08/01/big/img_1983 +2002/08/03/big/img_514 +2002/07/29/big/img_314 +2002/08/12/big/img_493 +2003/01/14/big/img_121 +2003/01/14/big/img_479 +2002/08/04/big/img_410 +2002/07/22/big/img_607 +2003/01/17/big/img_417 +2002/07/20/big/img_547 +2002/08/13/big/img_396 +2002/08/31/big/img_17538 +2002/08/13/big/img_187 +2002/08/12/big/img_328 +2003/01/14/big/img_569 +2002/07/27/big/img_1081 +2002/08/14/big/img_504 +2002/08/23/big/img_785 +2002/07/26/big/img_339 +2002/08/07/big/img_1156 +2002/08/07/big/img_1456 +2002/08/23/big/img_378 +2002/08/27/big/img_19719 +2002/07/31/big/img_39 +2002/07/31/big/img_883 +2003/01/14/big/img_676 +2002/07/29/big/img_214 +2002/07/26/big/img_669 +2002/07/25/big/img_202 +2002/08/08/big/img_259 +2003/01/17/big/img_943 +2003/01/15/big/img_512 +2002/08/05/big/img_3295 +2002/08/27/big/img_19685 +2002/08/08/big/img_277 +2002/08/30/big/img_18154 +2002/07/22/big/img_663 +2002/08/29/big/img_18914 +2002/07/31/big/img_908 +2002/08/27/big/img_19926 +2003/01/13/big/img_791 +2003/01/15/big/img_827 +2002/08/18/big/img_878 +2002/08/14/big/img_670 +2002/07/20/big/img_182 +2002/08/15/big/img_291 +2002/08/06/big/img_2600 +2002/07/23/big/img_587 +2002/08/14/big/img_577 +2003/01/15/big/img_585 +2002/07/30/big/img_310 +2002/08/03/big/img_658 +2002/08/10/big/img_157 +2002/08/19/big/img_811 +2002/07/29/big/img_1318 +2002/08/04/big/img_104 +2002/07/30/big/img_332 +2002/07/24/big/img_789 +2002/07/29/big/img_516 +2002/07/23/big/img_843 +2002/08/01/big/img_1528 +2002/08/13/big/img_798 +2002/08/07/big/img_1729 +2002/08/28/big/img_19448 +2003/01/16/big/img_95 +2002/08/12/big/img_473 +2002/07/27/big/img_269 +2003/01/16/big/img_621 +2002/07/29/big/img_772 +2002/07/24/big/img_171 +2002/07/19/big/img_429 +2002/08/07/big/img_1933 +2002/08/27/big/img_19629 +2002/08/05/big/img_3688 +2002/08/07/big/img_1691 +2002/07/23/big/img_600 +2002/07/29/big/img_666 +2002/08/25/big/img_566 +2002/08/06/big/img_2659 +2002/08/29/big/img_18929 +2002/08/16/big/img_407 +2002/08/18/big/img_774 +2002/08/19/big/img_249 +2002/08/06/big/img_2427 +2002/08/29/big/img_18899 +2002/08/01/big/img_1818 +2002/07/31/big/img_108 +2002/07/29/big/img_500 +2002/08/11/big/img_115 +2002/07/19/big/img_521 +2002/08/02/big/img_1163 +2002/07/22/big/img_62 +2002/08/13/big/img_466 +2002/08/21/big/img_956 +2002/08/23/big/img_602 +2002/08/20/big/img_858 +2002/07/25/big/img_690 +2002/07/19/big/img_130 +2002/08/04/big/img_874 +2002/07/26/big/img_489 +2002/07/22/big/img_548 +2002/08/10/big/img_191 +2002/07/25/big/img_1051 +2002/08/18/big/img_473 +2002/08/12/big/img_755 +2002/08/18/big/img_413 +2002/08/08/big/img_1044 +2002/08/17/big/img_680 +2002/08/26/big/img_235 +2002/08/20/big/img_330 +2002/08/22/big/img_344 +2002/08/09/big/img_593 +2002/07/31/big/img_1006 +2002/08/14/big/img_337 +2002/08/16/big/img_728 +2002/07/24/big/img_834 +2002/08/04/big/img_552 +2002/09/02/big/img_15213 +2002/07/25/big/img_725 +2002/08/30/big/img_18290 +2003/01/01/big/img_475 +2002/07/27/big/img_1083 +2002/08/29/big/img_18955 +2002/08/31/big/img_17232 +2002/08/08/big/img_480 +2002/08/01/big/img_1311 +2002/07/30/big/img_745 +2002/08/03/big/img_649 +2002/08/12/big/img_193 +2002/07/29/big/img_228 +2002/07/25/big/img_836 +2002/08/20/big/img_400 +2002/07/30/big/img_507 +2002/09/02/big/img_15072 +2002/07/26/big/img_658 +2002/07/28/big/img_503 +2002/08/05/big/img_3814 +2002/08/24/big/img_745 +2003/01/13/big/img_817 +2002/08/08/big/img_579 +2002/07/22/big/img_251 +2003/01/13/big/img_689 +2002/07/25/big/img_407 +2002/08/13/big/img_1050 +2002/08/14/big/img_733 +2002/07/24/big/img_82 +2003/01/17/big/img_288 +2003/01/15/big/img_475 +2002/08/14/big/img_620 +2002/08/21/big/img_167 +2002/07/19/big/img_300 +2002/07/26/big/img_219 +2002/08/01/big/img_1468 +2002/07/23/big/img_260 +2002/08/09/big/img_555 +2002/07/19/big/img_160 +2002/08/02/big/img_1060 +2003/01/14/big/img_149 +2002/08/15/big/img_346 +2002/08/24/big/img_597 +2002/08/22/big/img_502 +2002/08/30/big/img_18228 +2002/07/21/big/img_766 +2003/01/15/big/img_841 +2002/07/24/big/img_516 +2002/08/02/big/img_265 +2002/08/15/big/img_1243 +2003/01/15/big/img_223 +2002/08/04/big/img_236 +2002/07/22/big/img_309 +2002/07/20/big/img_656 +2002/07/31/big/img_412 +2002/09/01/big/img_16462 +2003/01/16/big/img_431 +2002/07/22/big/img_793 +2002/08/15/big/img_877 +2002/07/26/big/img_282 +2002/07/25/big/img_529 +2002/08/24/big/img_613 +2003/01/17/big/img_700 +2002/08/06/big/img_2526 +2002/08/24/big/img_394 +2002/08/21/big/img_521 +2002/08/25/big/img_560 +2002/07/29/big/img_966 +2002/07/25/big/img_448 +2003/01/13/big/img_782 +2002/08/21/big/img_296 +2002/09/01/big/img_16755 +2002/08/05/big/img_3552 +2002/09/02/big/img_15823 +2003/01/14/big/img_193 +2002/07/21/big/img_159 +2002/08/02/big/img_564 +2002/08/16/big/img_300 +2002/07/19/big/img_269 +2002/08/13/big/img_676 +2002/07/28/big/img_57 +2002/08/05/big/img_3318 +2002/07/31/big/img_218 +2002/08/21/big/img_898 +2002/07/29/big/img_109 +2002/07/19/big/img_854 +2002/08/23/big/img_311 +2002/08/14/big/img_318 +2002/07/25/big/img_523 +2002/07/21/big/img_678 +2003/01/17/big/img_690 +2002/08/28/big/img_19503 +2002/08/18/big/img_251 +2002/08/22/big/img_672 +2002/08/20/big/img_663 +2002/08/02/big/img_148 +2002/09/02/big/img_15580 +2002/07/25/big/img_778 +2002/08/14/big/img_565 +2002/08/12/big/img_374 +2002/08/13/big/img_1018 +2002/08/20/big/img_474 +2002/08/25/big/img_33 +2002/08/02/big/img_1190 +2002/08/08/big/img_864 +2002/08/14/big/img_1071 +2002/08/30/big/img_18103 +2002/08/18/big/img_533 +2003/01/16/big/img_650 +2002/07/25/big/img_108 +2002/07/26/big/img_81 +2002/07/27/big/img_543 +2002/07/29/big/img_521 +2003/01/13/big/img_434 +2002/08/26/big/img_674 +2002/08/06/big/img_2932 +2002/08/07/big/img_1262 +2003/01/15/big/img_201 +2003/01/16/big/img_673 +2002/09/02/big/img_15988 +2002/07/29/big/img_1306 +2003/01/14/big/img_1072 +2002/08/30/big/img_18232 +2002/08/05/big/img_3711 +2002/07/23/big/img_775 +2002/08/01/big/img_16 +2003/01/16/big/img_630 +2002/08/22/big/img_695 +2002/08/14/big/img_51 +2002/08/14/big/img_782 +2002/08/24/big/img_742 +2003/01/14/big/img_512 +2003/01/15/big/img_1183 +2003/01/15/big/img_714 +2002/08/01/big/img_2078 +2002/07/31/big/img_682 +2002/09/02/big/img_15687 +2002/07/26/big/img_518 +2002/08/27/big/img_19676 +2002/09/02/big/img_15969 +2002/08/02/big/img_931 +2002/08/25/big/img_508 +2002/08/29/big/img_18616 +2002/07/22/big/img_839 +2002/07/28/big/img_313 +2003/01/14/big/img_155 +2002/08/02/big/img_1105 +2002/08/09/big/img_53 +2002/08/16/big/img_469 +2002/08/15/big/img_502 +2002/08/20/big/img_575 +2002/07/25/big/img_138 +2003/01/16/big/img_579 +2002/07/19/big/img_352 +2003/01/14/big/img_762 +2003/01/01/big/img_588 +2002/08/02/big/img_981 +2002/08/21/big/img_447 +2002/09/01/big/img_16151 +2003/01/14/big/img_769 +2002/08/23/big/img_461 +2002/08/17/big/img_240 +2002/09/02/big/img_15220 +2002/07/19/big/img_408 +2002/09/02/big/img_15496 +2002/07/29/big/img_758 +2002/08/28/big/img_19392 +2002/08/06/big/img_2723 +2002/08/31/big/img_17752 +2002/08/23/big/img_469 +2002/08/13/big/img_515 +2002/09/02/big/img_15551 +2002/08/03/big/img_462 +2002/07/24/big/img_613 +2002/07/22/big/img_61 +2002/08/08/big/img_171 +2002/08/21/big/img_177 +2003/01/14/big/img_105 +2002/08/02/big/img_1017 +2002/08/22/big/img_106 +2002/07/27/big/img_542 +2002/07/21/big/img_665 +2002/07/23/big/img_595 +2002/08/04/big/img_657 +2002/08/29/big/img_19002 +2003/01/15/big/img_550 +2002/08/14/big/img_662 +2002/07/20/big/img_425 +2002/08/30/big/img_18528 +2002/07/26/big/img_611 +2002/07/22/big/img_849 +2002/08/07/big/img_1655 +2002/08/21/big/img_638 +2003/01/17/big/img_732 +2003/01/01/big/img_496 +2002/08/18/big/img_713 +2002/08/08/big/img_109 +2002/07/27/big/img_1008 +2002/07/20/big/img_559 +2002/08/16/big/img_699 +2002/08/31/big/img_17702 +2002/07/31/big/img_1013 +2002/08/01/big/img_2027 +2002/08/02/big/img_1001 +2002/08/03/big/img_210 +2002/08/01/big/img_2087 +2003/01/14/big/img_199 +2002/07/29/big/img_48 +2002/07/19/big/img_727 +2002/08/09/big/img_249 +2002/08/04/big/img_632 +2002/08/22/big/img_620 +2003/01/01/big/img_457 +2002/08/05/big/img_3223 +2002/07/27/big/img_240 +2002/07/25/big/img_797 +2002/08/13/big/img_430 +2002/07/25/big/img_615 +2002/08/12/big/img_28 +2002/07/30/big/img_220 +2002/07/24/big/img_89 +2002/08/21/big/img_357 +2002/08/09/big/img_590 +2003/01/13/big/img_525 +2002/08/17/big/img_818 +2003/01/02/big/img_7 +2002/07/26/big/img_636 +2003/01/13/big/img_1122 +2002/07/23/big/img_810 +2002/08/20/big/img_888 +2002/07/27/big/img_3 +2002/08/15/big/img_451 +2002/09/02/big/img_15787 +2002/07/31/big/img_281 +2002/08/05/big/img_3274 +2002/08/07/big/img_1254 +2002/07/31/big/img_27 +2002/08/01/big/img_1366 +2002/07/30/big/img_182 +2002/08/27/big/img_19690 +2002/07/29/big/img_68 +2002/08/23/big/img_754 +2002/07/30/big/img_540 +2002/08/27/big/img_20063 +2002/08/14/big/img_471 +2002/08/02/big/img_615 +2002/07/30/big/img_186 +2002/08/25/big/img_150 +2002/07/27/big/img_626 +2002/07/20/big/img_225 +2003/01/15/big/img_1252 +2002/07/19/big/img_367 +2003/01/15/big/img_582 +2002/08/09/big/img_572 +2002/08/08/big/img_428 +2003/01/15/big/img_639 +2002/08/28/big/img_19245 +2002/07/24/big/img_321 +2002/08/02/big/img_662 +2002/08/08/big/img_1033 +2003/01/17/big/img_867 +2002/07/22/big/img_652 +2003/01/14/big/img_224 +2002/08/18/big/img_49 +2002/07/26/big/img_46 +2002/08/31/big/img_18021 +2002/07/25/big/img_151 +2002/08/23/big/img_540 +2002/08/25/big/img_693 +2002/07/23/big/img_340 +2002/07/28/big/img_117 +2002/09/02/big/img_15768 +2002/08/26/big/img_562 +2002/07/24/big/img_480 +2003/01/15/big/img_341 +2002/08/10/big/img_783 +2002/08/20/big/img_132 +2003/01/14/big/img_370 +2002/07/20/big/img_720 +2002/08/03/big/img_144 +2002/08/20/big/img_538 +2002/08/01/big/img_1745 +2002/08/11/big/img_683 +2002/08/03/big/img_328 +2002/08/10/big/img_793 +2002/08/14/big/img_689 +2002/08/02/big/img_162 +2003/01/17/big/img_411 +2002/07/31/big/img_361 +2002/08/15/big/img_289 +2002/08/08/big/img_254 +2002/08/15/big/img_996 +2002/08/20/big/img_785 +2002/07/24/big/img_511 +2002/08/06/big/img_2614 +2002/08/29/big/img_18733 +2002/08/17/big/img_78 +2002/07/30/big/img_378 +2002/08/31/big/img_17947 +2002/08/26/big/img_88 +2002/07/30/big/img_558 +2002/08/02/big/img_67 +2003/01/14/big/img_325 +2002/07/29/big/img_1357 +2002/07/19/big/img_391 +2002/07/30/big/img_307 +2003/01/13/big/img_219 +2002/07/24/big/img_807 +2002/08/23/big/img_543 +2002/08/29/big/img_18620 +2002/07/22/big/img_769 +2002/08/26/big/img_503 +2002/07/30/big/img_78 +2002/08/14/big/img_1036 +2002/08/09/big/img_58 +2002/07/24/big/img_616 +2002/08/02/big/img_464 +2002/07/26/big/img_576 +2002/07/22/big/img_273 +2003/01/16/big/img_470 +2002/07/29/big/img_329 +2002/07/30/big/img_1086 +2002/07/31/big/img_353 +2002/09/02/big/img_15275 +2003/01/17/big/img_555 +2002/08/26/big/img_212 +2002/08/01/big/img_1692 +2003/01/15/big/img_600 +2002/07/29/big/img_825 +2002/08/08/big/img_68 +2002/08/10/big/img_719 +2002/07/31/big/img_636 +2002/07/29/big/img_325 +2002/07/21/big/img_515 +2002/07/22/big/img_705 +2003/01/13/big/img_818 +2002/08/09/big/img_486 +2002/08/22/big/img_141 +2002/07/22/big/img_303 +2002/08/09/big/img_393 +2002/07/29/big/img_963 +2002/08/02/big/img_1215 +2002/08/19/big/img_674 +2002/08/12/big/img_690 +2002/08/21/big/img_637 +2002/08/21/big/img_841 +2002/08/24/big/img_71 +2002/07/25/big/img_596 +2002/07/24/big/img_864 +2002/08/18/big/img_293 +2003/01/14/big/img_657 +2002/08/15/big/img_411 +2002/08/16/big/img_348 +2002/08/05/big/img_3157 +2002/07/20/big/img_663 +2003/01/13/big/img_654 +2003/01/16/big/img_433 +2002/08/30/big/img_18200 +2002/08/12/big/img_226 +2003/01/16/big/img_491 +2002/08/08/big/img_666 +2002/07/19/big/img_576 +2003/01/15/big/img_776 +2003/01/16/big/img_899 +2002/07/19/big/img_397 +2002/08/14/big/img_44 +2003/01/15/big/img_762 +2002/08/02/big/img_982 +2002/09/02/big/img_15234 +2002/08/17/big/img_556 +2002/08/21/big/img_410 +2002/08/21/big/img_386 +2002/07/19/big/img_690 +2002/08/05/big/img_3052 +2002/08/14/big/img_219 +2002/08/16/big/img_273 +2003/01/15/big/img_752 +2002/08/08/big/img_184 +2002/07/31/big/img_743 +2002/08/23/big/img_338 +2003/01/14/big/img_1055 +2002/08/05/big/img_3405 +2003/01/15/big/img_17 +2002/08/03/big/img_141 +2002/08/14/big/img_549 +2002/07/27/big/img_1034 +2002/07/31/big/img_932 +2002/08/30/big/img_18487 +2002/09/02/big/img_15814 +2002/08/01/big/img_2086 +2002/09/01/big/img_16535 +2002/07/22/big/img_500 +2003/01/13/big/img_400 +2002/08/25/big/img_607 +2002/08/30/big/img_18384 +2003/01/14/big/img_951 +2002/08/13/big/img_1150 +2002/08/08/big/img_1022 +2002/08/10/big/img_428 +2002/08/28/big/img_19242 +2002/08/05/big/img_3098 +2002/07/23/big/img_400 +2002/08/26/big/img_365 +2002/07/20/big/img_318 +2002/08/13/big/img_740 +2003/01/16/big/img_37 +2002/08/26/big/img_274 +2002/08/02/big/img_205 +2002/08/21/big/img_695 +2002/08/06/big/img_2289 +2002/08/20/big/img_794 +2002/08/18/big/img_438 +2002/08/07/big/img_1380 +2002/08/02/big/img_737 +2002/08/07/big/img_1651 +2002/08/15/big/img_1238 +2002/08/01/big/img_1681 +2002/08/06/big/img_3017 +2002/07/23/big/img_706 +2002/07/31/big/img_392 +2002/08/09/big/img_539 +2002/07/29/big/img_835 +2002/08/26/big/img_723 +2002/08/28/big/img_19235 +2003/01/16/big/img_353 +2002/08/10/big/img_150 +2002/08/29/big/img_19025 +2002/08/21/big/img_310 +2002/08/10/big/img_823 +2002/07/26/big/img_981 +2002/08/11/big/img_288 +2002/08/19/big/img_534 +2002/08/21/big/img_300 +2002/07/31/big/img_49 +2002/07/30/big/img_469 +2002/08/28/big/img_19197 +2002/08/25/big/img_205 +2002/08/10/big/img_390 +2002/08/23/big/img_291 +2002/08/26/big/img_230 +2002/08/18/big/img_76 +2002/07/23/big/img_409 +2002/08/14/big/img_1053 +2003/01/14/big/img_291 +2002/08/10/big/img_503 +2002/08/27/big/img_19928 +2002/08/03/big/img_563 +2002/08/17/big/img_250 +2002/08/06/big/img_2381 +2002/08/17/big/img_948 +2002/08/06/big/img_2710 +2002/07/22/big/img_696 +2002/07/31/big/img_670 +2002/08/12/big/img_594 +2002/07/29/big/img_624 +2003/01/17/big/img_934 +2002/08/03/big/img_584 +2002/08/22/big/img_1003 +2002/08/05/big/img_3396 +2003/01/13/big/img_570 +2002/08/02/big/img_219 +2002/09/02/big/img_15774 +2002/08/16/big/img_818 +2002/08/23/big/img_402 +2003/01/14/big/img_552 +2002/07/29/big/img_71 +2002/08/05/big/img_3592 +2002/08/16/big/img_80 +2002/07/27/big/img_672 +2003/01/13/big/img_470 +2003/01/16/big/img_702 +2002/09/01/big/img_16130 +2002/08/08/big/img_240 +2002/09/01/big/img_16338 +2002/07/26/big/img_312 +2003/01/14/big/img_538 +2002/07/20/big/img_695 +2002/08/30/big/img_18098 +2002/08/25/big/img_259 +2002/08/16/big/img_1042 +2002/08/09/big/img_837 +2002/08/31/big/img_17760 +2002/07/31/big/img_14 +2002/08/09/big/img_361 +2003/01/16/big/img_107 +2002/08/14/big/img_124 +2002/07/19/big/img_463 +2003/01/15/big/img_275 +2002/07/25/big/img_1151 +2002/07/29/big/img_1501 +2002/08/27/big/img_19889 +2002/08/29/big/img_18603 +2003/01/17/big/img_601 +2002/08/25/big/img_355 +2002/08/08/big/img_297 +2002/08/20/big/img_290 +2002/07/31/big/img_195 +2003/01/01/big/img_336 +2002/08/18/big/img_369 +2002/07/25/big/img_621 +2002/08/11/big/img_508 +2003/01/14/big/img_458 +2003/01/15/big/img_795 +2002/08/12/big/img_498 +2002/08/01/big/img_1734 +2002/08/02/big/img_246 +2002/08/16/big/img_565 +2002/08/11/big/img_475 +2002/08/22/big/img_408 +2002/07/28/big/img_78 +2002/07/21/big/img_81 +2003/01/14/big/img_697 +2002/08/14/big/img_661 +2002/08/15/big/img_507 +2002/08/19/big/img_55 +2002/07/22/big/img_152 +2003/01/14/big/img_470 +2002/08/03/big/img_379 +2002/08/22/big/img_506 +2003/01/16/big/img_966 +2002/08/18/big/img_698 +2002/08/24/big/img_528 +2002/08/23/big/img_10 +2002/08/01/big/img_1655 +2002/08/22/big/img_953 +2002/07/19/big/img_630 +2002/07/22/big/img_889 +2002/08/16/big/img_351 +2003/01/16/big/img_83 +2002/07/19/big/img_805 +2002/08/14/big/img_704 +2002/07/19/big/img_389 +2002/08/31/big/img_17765 +2002/07/29/big/img_606 +2003/01/17/big/img_939 +2002/09/02/big/img_15081 +2002/08/21/big/img_181 +2002/07/29/big/img_1321 +2002/07/21/big/img_497 +2002/07/20/big/img_539 +2002/08/24/big/img_119 +2002/08/01/big/img_1281 +2002/07/26/big/img_207 +2002/07/26/big/img_432 +2002/07/27/big/img_1006 +2002/08/05/big/img_3087 +2002/08/14/big/img_252 +2002/08/14/big/img_798 +2002/07/24/big/img_538 +2002/09/02/big/img_15507 +2002/08/08/big/img_901 +2003/01/14/big/img_557 +2002/08/07/big/img_1819 +2002/08/04/big/img_470 +2002/08/01/big/img_1504 +2002/08/16/big/img_1070 +2002/08/16/big/img_372 +2002/08/23/big/img_416 +2002/08/30/big/img_18208 +2002/08/01/big/img_2043 +2002/07/22/big/img_385 +2002/08/22/big/img_466 +2002/08/21/big/img_869 +2002/08/28/big/img_19429 +2002/08/02/big/img_770 +2002/07/23/big/img_433 +2003/01/14/big/img_13 +2002/07/27/big/img_953 +2002/09/02/big/img_15728 +2002/08/01/big/img_1361 +2002/08/29/big/img_18897 +2002/08/26/big/img_534 +2002/08/11/big/img_121 +2002/08/26/big/img_20130 +2002/07/31/big/img_363 +2002/08/13/big/img_978 +2002/07/25/big/img_835 +2002/08/02/big/img_906 +2003/01/14/big/img_548 +2002/07/30/big/img_80 +2002/07/26/big/img_982 +2003/01/16/big/img_99 +2002/08/19/big/img_362 +2002/08/24/big/img_376 +2002/08/07/big/img_1264 +2002/07/27/big/img_938 +2003/01/17/big/img_535 +2002/07/26/big/img_457 +2002/08/08/big/img_848 +2003/01/15/big/img_859 +2003/01/15/big/img_622 +2002/07/30/big/img_403 +2002/07/29/big/img_217 +2002/07/26/big/img_891 +2002/07/24/big/img_70 +2002/08/25/big/img_619 +2002/08/05/big/img_3375 +2002/08/01/big/img_2160 +2002/08/06/big/img_2227 +2003/01/14/big/img_117 +2002/08/14/big/img_227 +2002/08/13/big/img_565 +2002/08/19/big/img_625 +2002/08/03/big/img_812 +2002/07/24/big/img_41 +2002/08/16/big/img_235 +2002/07/29/big/img_759 +2002/07/21/big/img_433 +2002/07/29/big/img_190 +2003/01/16/big/img_435 +2003/01/13/big/img_708 +2002/07/30/big/img_57 +2002/08/22/big/img_162 +2003/01/01/big/img_558 +2003/01/15/big/img_604 +2002/08/16/big/img_935 +2002/08/20/big/img_394 +2002/07/28/big/img_465 +2002/09/02/big/img_15534 +2002/08/16/big/img_87 +2002/07/22/big/img_469 +2002/08/12/big/img_245 +2003/01/13/big/img_236 +2002/08/06/big/img_2736 +2002/08/03/big/img_348 +2003/01/14/big/img_218 +2002/07/26/big/img_232 +2003/01/15/big/img_244 +2002/07/25/big/img_1121 +2002/08/01/big/img_1484 +2002/07/26/big/img_541 +2002/08/07/big/img_1244 +2002/07/31/big/img_3 +2002/08/30/big/img_18437 +2002/08/29/big/img_19094 +2002/08/01/big/img_1355 +2002/08/19/big/img_338 +2002/07/19/big/img_255 +2002/07/21/big/img_76 +2002/08/25/big/img_199 +2002/08/12/big/img_740 +2002/07/30/big/img_852 +2002/08/15/big/img_599 +2002/08/23/big/img_254 +2002/08/19/big/img_125 +2002/07/24/big/img_2 +2002/08/04/big/img_145 +2002/08/05/big/img_3137 +2002/07/28/big/img_463 +2003/01/14/big/img_801 +2002/07/23/big/img_366 +2002/08/26/big/img_600 +2002/08/26/big/img_649 +2002/09/02/big/img_15849 +2002/07/26/big/img_248 +2003/01/13/big/img_200 +2002/08/07/big/img_1794 +2002/08/31/big/img_17270 +2002/08/23/big/img_608 +2003/01/13/big/img_837 +2002/08/23/big/img_581 +2002/08/20/big/img_754 +2002/08/18/big/img_183 +2002/08/20/big/img_328 +2002/07/22/big/img_494 +2002/07/29/big/img_399 +2002/08/28/big/img_19284 +2002/08/08/big/img_566 +2002/07/25/big/img_376 +2002/07/23/big/img_138 +2002/07/25/big/img_435 +2002/08/17/big/img_685 +2002/07/19/big/img_90 +2002/07/20/big/img_716 +2002/08/31/big/img_17458 +2002/08/26/big/img_461 +2002/07/25/big/img_355 +2002/08/06/big/img_2152 +2002/07/27/big/img_932 +2002/07/23/big/img_232 +2002/08/08/big/img_1020 +2002/07/31/big/img_366 +2002/08/06/big/img_2667 +2002/08/21/big/img_465 +2002/08/15/big/img_305 +2002/08/02/big/img_247 +2002/07/28/big/img_46 +2002/08/27/big/img_19922 +2002/08/23/big/img_643 +2003/01/13/big/img_624 +2002/08/23/big/img_625 +2002/08/05/big/img_3787 +2003/01/13/big/img_627 +2002/09/01/big/img_16381 +2002/08/05/big/img_3668 +2002/07/21/big/img_535 +2002/08/27/big/img_19680 +2002/07/22/big/img_413 +2002/07/29/big/img_481 +2003/01/15/big/img_496 +2002/07/23/big/img_701 +2002/08/29/big/img_18670 +2002/07/28/big/img_319 +2003/01/14/big/img_517 +2002/07/26/big/img_256 +2003/01/16/big/img_593 +2002/07/30/big/img_956 +2002/07/30/big/img_667 +2002/07/25/big/img_100 +2002/08/11/big/img_570 +2002/07/26/big/img_745 +2002/08/04/big/img_834 +2002/08/25/big/img_521 +2002/08/01/big/img_2148 +2002/09/02/big/img_15183 +2002/08/22/big/img_514 +2002/08/23/big/img_477 +2002/07/23/big/img_336 +2002/07/26/big/img_481 +2002/08/20/big/img_409 +2002/07/23/big/img_918 +2002/08/09/big/img_474 +2002/08/02/big/img_929 +2002/08/31/big/img_17932 +2002/08/19/big/img_161 +2002/08/09/big/img_667 +2002/07/31/big/img_805 +2002/09/02/big/img_15678 +2002/08/31/big/img_17509 +2002/08/29/big/img_18998 +2002/07/23/big/img_301 +2002/08/07/big/img_1612 +2002/08/06/big/img_2472 +2002/07/23/big/img_466 +2002/08/27/big/img_19634 +2003/01/16/big/img_16 +2002/08/14/big/img_193 +2002/08/21/big/img_340 +2002/08/27/big/img_19799 +2002/08/01/big/img_1345 +2002/08/07/big/img_1448 +2002/08/11/big/img_324 +2003/01/16/big/img_754 +2002/08/13/big/img_418 +2003/01/16/big/img_544 +2002/08/19/big/img_135 +2002/08/10/big/img_455 +2002/08/10/big/img_693 +2002/08/31/big/img_17967 +2002/08/28/big/img_19229 +2002/08/04/big/img_811 +2002/09/01/big/img_16225 +2003/01/16/big/img_428 +2002/09/02/big/img_15295 +2002/07/26/big/img_108 +2002/07/21/big/img_477 +2002/08/07/big/img_1354 +2002/08/23/big/img_246 +2002/08/16/big/img_652 +2002/07/27/big/img_553 +2002/07/31/big/img_346 +2002/08/04/big/img_537 +2002/08/08/big/img_498 +2002/08/29/big/img_18956 +2003/01/13/big/img_922 +2002/08/31/big/img_17425 +2002/07/26/big/img_438 +2002/08/19/big/img_185 +2003/01/16/big/img_33 +2002/08/10/big/img_252 +2002/07/29/big/img_598 +2002/08/27/big/img_19820 +2002/08/06/big/img_2664 +2002/08/20/big/img_705 +2003/01/14/big/img_816 +2002/08/03/big/img_552 +2002/07/25/big/img_561 +2002/07/25/big/img_934 +2002/08/01/big/img_1893 +2003/01/14/big/img_746 +2003/01/16/big/img_519 +2002/08/03/big/img_681 +2002/07/24/big/img_808 +2002/08/14/big/img_803 +2002/08/25/big/img_155 +2002/07/30/big/img_1107 +2002/08/29/big/img_18882 +2003/01/15/big/img_598 +2002/08/19/big/img_122 +2002/07/30/big/img_428 +2002/07/24/big/img_684 +2002/08/22/big/img_192 +2002/08/22/big/img_543 +2002/08/07/big/img_1318 +2002/08/18/big/img_25 +2002/07/26/big/img_583 +2002/07/20/big/img_464 +2002/08/19/big/img_664 +2002/08/24/big/img_861 +2002/09/01/big/img_16136 +2002/08/22/big/img_400 +2002/08/12/big/img_445 +2003/01/14/big/img_174 +2002/08/27/big/img_19677 +2002/08/31/big/img_17214 +2002/08/30/big/img_18175 +2003/01/17/big/img_402 +2002/08/06/big/img_2396 +2002/08/18/big/img_448 +2002/08/21/big/img_165 +2002/08/31/big/img_17609 +2003/01/01/big/img_151 +2002/08/26/big/img_372 +2002/09/02/big/img_15994 +2002/07/26/big/img_660 +2002/09/02/big/img_15197 +2002/07/29/big/img_258 +2002/08/30/big/img_18525 +2003/01/13/big/img_368 +2002/07/29/big/img_1538 +2002/07/21/big/img_787 +2002/08/18/big/img_152 +2002/08/06/big/img_2379 +2003/01/17/big/img_864 +2002/08/27/big/img_19998 +2002/08/01/big/img_1634 +2002/07/25/big/img_414 +2002/08/22/big/img_627 +2002/08/07/big/img_1669 +2002/08/16/big/img_1052 +2002/08/31/big/img_17796 +2002/08/18/big/img_199 +2002/09/02/big/img_15147 +2002/08/09/big/img_460 +2002/08/14/big/img_581 +2002/08/30/big/img_18286 +2002/07/26/big/img_337 +2002/08/18/big/img_589 +2003/01/14/big/img_866 +2002/07/20/big/img_624 +2002/08/01/big/img_1801 +2002/07/24/big/img_683 +2002/08/09/big/img_725 +2003/01/14/big/img_34 +2002/07/30/big/img_144 +2002/07/30/big/img_706 +2002/08/08/big/img_394 +2002/08/19/big/img_619 +2002/08/06/big/img_2703 +2002/08/29/big/img_19034 +2002/07/24/big/img_67 +2002/08/27/big/img_19841 +2002/08/19/big/img_427 +2003/01/14/big/img_333 +2002/09/01/big/img_16406 +2002/07/19/big/img_882 +2002/08/17/big/img_238 +2003/01/14/big/img_739 +2002/07/22/big/img_151 +2002/08/21/big/img_743 +2002/07/25/big/img_1048 +2002/07/30/big/img_395 +2003/01/13/big/img_584 +2002/08/13/big/img_742 +2002/08/13/big/img_1168 +2003/01/14/big/img_147 +2002/07/26/big/img_803 +2002/08/05/big/img_3298 +2002/08/07/big/img_1451 +2002/08/16/big/img_424 +2002/07/29/big/img_1069 +2002/09/01/big/img_16735 +2002/07/21/big/img_637 +2003/01/14/big/img_585 +2002/08/02/big/img_358 +2003/01/13/big/img_358 +2002/08/14/big/img_198 +2002/08/17/big/img_935 +2002/08/04/big/img_42 +2002/08/30/big/img_18245 +2002/07/25/big/img_158 +2002/08/22/big/img_744 +2002/08/06/big/img_2291 +2002/08/05/big/img_3044 +2002/07/30/big/img_272 +2002/08/23/big/img_641 +2002/07/24/big/img_797 +2002/07/30/big/img_392 +2003/01/14/big/img_447 +2002/07/31/big/img_898 +2002/08/06/big/img_2812 +2002/08/13/big/img_564 +2002/07/22/big/img_43 +2002/07/26/big/img_634 +2002/07/19/big/img_843 +2002/08/26/big/img_58 +2002/07/21/big/img_375 +2002/08/25/big/img_729 +2002/07/19/big/img_561 +2003/01/15/big/img_884 +2002/07/25/big/img_891 +2002/08/09/big/img_558 +2002/08/26/big/img_587 +2002/08/13/big/img_1146 +2002/09/02/big/img_15153 +2002/07/26/big/img_316 +2002/08/01/big/img_1940 +2002/08/26/big/img_90 +2003/01/13/big/img_347 +2002/07/25/big/img_520 +2002/08/29/big/img_18718 +2002/08/28/big/img_19219 +2002/08/13/big/img_375 +2002/07/20/big/img_719 +2002/08/31/big/img_17431 +2002/07/28/big/img_192 +2002/08/26/big/img_259 +2002/08/18/big/img_484 +2002/07/29/big/img_580 +2002/07/26/big/img_84 +2002/08/02/big/img_302 +2002/08/31/big/img_17007 +2003/01/15/big/img_543 +2002/09/01/big/img_16488 +2002/08/22/big/img_798 +2002/07/30/big/img_383 +2002/08/04/big/img_668 +2002/08/13/big/img_156 +2002/08/07/big/img_1353 +2002/07/25/big/img_281 +2003/01/14/big/img_587 +2003/01/15/big/img_524 +2002/08/19/big/img_726 +2002/08/21/big/img_709 +2002/08/26/big/img_465 +2002/07/31/big/img_658 +2002/08/28/big/img_19148 +2002/07/23/big/img_423 +2002/08/16/big/img_758 +2002/08/22/big/img_523 +2002/08/16/big/img_591 +2002/08/23/big/img_845 +2002/07/26/big/img_678 +2002/08/09/big/img_806 +2002/08/06/big/img_2369 +2002/07/29/big/img_457 +2002/07/19/big/img_278 +2002/08/30/big/img_18107 +2002/07/26/big/img_444 +2002/08/20/big/img_278 +2002/08/26/big/img_92 +2002/08/26/big/img_257 +2002/07/25/big/img_266 +2002/08/05/big/img_3829 +2002/07/26/big/img_757 +2002/07/29/big/img_1536 +2002/08/09/big/img_472 +2003/01/17/big/img_480 +2002/08/28/big/img_19355 +2002/07/26/big/img_97 +2002/08/06/big/img_2503 +2002/07/19/big/img_254 +2002/08/01/big/img_1470 +2002/08/21/big/img_42 +2002/08/20/big/img_217 +2002/08/06/big/img_2459 +2002/07/19/big/img_552 +2002/08/13/big/img_717 +2002/08/12/big/img_586 +2002/08/20/big/img_411 +2003/01/13/big/img_768 +2002/08/07/big/img_1747 +2002/08/15/big/img_385 +2002/08/01/big/img_1648 +2002/08/15/big/img_311 +2002/08/21/big/img_95 +2002/08/09/big/img_108 +2002/08/21/big/img_398 +2002/08/17/big/img_340 +2002/08/14/big/img_474 +2002/08/13/big/img_294 +2002/08/24/big/img_840 +2002/08/09/big/img_808 +2002/08/23/big/img_491 +2002/07/28/big/img_33 +2003/01/13/big/img_664 +2002/08/02/big/img_261 +2002/08/09/big/img_591 +2002/07/26/big/img_309 +2003/01/14/big/img_372 +2002/08/19/big/img_581 +2002/08/19/big/img_168 +2002/08/26/big/img_422 +2002/07/24/big/img_106 +2002/08/01/big/img_1936 +2002/08/05/big/img_3764 +2002/08/21/big/img_266 +2002/08/31/big/img_17968 +2002/08/01/big/img_1941 +2002/08/15/big/img_550 +2002/08/14/big/img_13 +2002/07/30/big/img_171 +2003/01/13/big/img_490 +2002/07/25/big/img_427 +2002/07/19/big/img_770 +2002/08/12/big/img_759 +2003/01/15/big/img_1360 +2002/08/05/big/img_3692 +2003/01/16/big/img_30 +2002/07/25/big/img_1026 +2002/07/22/big/img_288 +2002/08/29/big/img_18801 +2002/07/24/big/img_793 +2002/08/13/big/img_178 +2002/08/06/big/img_2322 +2003/01/14/big/img_560 +2002/08/18/big/img_408 +2003/01/16/big/img_915 +2003/01/16/big/img_679 +2002/08/07/big/img_1552 +2002/08/29/big/img_19050 +2002/08/01/big/img_2172 +2002/07/31/big/img_30 +2002/07/30/big/img_1019 +2002/07/30/big/img_587 +2003/01/13/big/img_773 +2002/07/30/big/img_410 +2002/07/28/big/img_65 +2002/08/05/big/img_3138 +2002/07/23/big/img_541 +2002/08/22/big/img_963 +2002/07/27/big/img_657 +2002/07/30/big/img_1051 +2003/01/16/big/img_150 +2002/07/31/big/img_519 +2002/08/01/big/img_1961 +2002/08/05/big/img_3752 +2002/07/23/big/img_631 +2003/01/14/big/img_237 +2002/07/28/big/img_21 +2002/07/22/big/img_813 +2002/08/05/big/img_3563 +2003/01/17/big/img_620 +2002/07/19/big/img_523 +2002/07/30/big/img_904 +2002/08/29/big/img_18642 +2002/08/11/big/img_492 +2002/08/01/big/img_2130 +2002/07/25/big/img_618 +2002/08/17/big/img_305 +2003/01/16/big/img_520 +2002/07/26/big/img_495 +2002/08/17/big/img_164 +2002/08/03/big/img_440 +2002/07/24/big/img_441 +2002/08/06/big/img_2146 +2002/08/11/big/img_558 +2002/08/02/big/img_545 +2002/08/31/big/img_18090 +2003/01/01/big/img_136 +2002/07/25/big/img_1099 +2003/01/13/big/img_728 +2003/01/16/big/img_197 +2002/07/26/big/img_651 +2002/08/11/big/img_676 +2003/01/15/big/img_10 +2002/08/21/big/img_250 +2002/08/14/big/img_325 +2002/08/04/big/img_390 +2002/07/24/big/img_554 +2003/01/16/big/img_333 +2002/07/31/big/img_922 +2002/09/02/big/img_15586 +2003/01/16/big/img_184 +2002/07/22/big/img_766 +2002/07/21/big/img_608 +2002/08/07/big/img_1578 +2002/08/17/big/img_961 +2002/07/27/big/img_324 +2002/08/05/big/img_3765 +2002/08/23/big/img_462 +2003/01/16/big/img_382 +2002/08/27/big/img_19838 +2002/08/01/big/img_1505 +2002/08/21/big/img_662 +2002/08/14/big/img_605 +2002/08/19/big/img_816 +2002/07/29/big/img_136 +2002/08/20/big/img_719 +2002/08/06/big/img_2826 +2002/08/10/big/img_630 +2003/01/17/big/img_973 +2002/08/14/big/img_116 +2002/08/02/big/img_666 +2002/08/21/big/img_710 +2002/08/05/big/img_55 +2002/07/31/big/img_229 +2002/08/01/big/img_1549 +2002/07/23/big/img_432 +2002/07/21/big/img_430 +2002/08/21/big/img_549 +2002/08/08/big/img_985 +2002/07/20/big/img_610 +2002/07/23/big/img_978 +2002/08/23/big/img_219 +2002/07/25/big/img_175 +2003/01/15/big/img_230 +2002/08/23/big/img_385 +2002/07/31/big/img_879 +2002/08/12/big/img_495 +2002/08/22/big/img_499 +2002/08/30/big/img_18322 +2002/08/15/big/img_795 +2002/08/13/big/img_835 +2003/01/17/big/img_930 +2002/07/30/big/img_873 +2002/08/11/big/img_257 +2002/07/31/big/img_593 +2002/08/21/big/img_916 +2003/01/13/big/img_814 +2002/07/25/big/img_722 +2002/08/16/big/img_379 +2002/07/31/big/img_497 +2002/07/22/big/img_602 +2002/08/21/big/img_642 +2002/08/21/big/img_614 +2002/08/23/big/img_482 +2002/07/29/big/img_603 +2002/08/13/big/img_705 +2002/07/23/big/img_833 +2003/01/14/big/img_511 +2002/07/24/big/img_376 +2002/08/17/big/img_1030 +2002/08/05/big/img_3576 +2002/08/16/big/img_540 +2002/07/22/big/img_630 +2002/08/10/big/img_180 +2002/08/14/big/img_905 +2002/08/29/big/img_18777 +2002/08/22/big/img_693 +2003/01/16/big/img_933 +2002/08/20/big/img_555 +2002/08/15/big/img_549 +2003/01/14/big/img_830 +2003/01/16/big/img_64 +2002/08/27/big/img_19670 +2002/08/22/big/img_729 +2002/07/27/big/img_981 +2002/08/09/big/img_458 +2003/01/17/big/img_884 +2002/07/25/big/img_639 +2002/08/31/big/img_18008 +2002/08/22/big/img_249 +2002/08/17/big/img_971 +2002/08/04/big/img_308 +2002/07/28/big/img_362 +2002/08/12/big/img_142 +2002/08/26/big/img_61 +2002/08/14/big/img_422 +2002/07/19/big/img_607 +2003/01/15/big/img_717 +2002/08/01/big/img_1475 +2002/08/29/big/img_19061 +2003/01/01/big/img_346 +2002/07/20/big/img_315 +2003/01/15/big/img_756 +2002/08/15/big/img_879 +2002/08/08/big/img_615 +2003/01/13/big/img_431 +2002/08/05/big/img_3233 +2002/08/24/big/img_526 +2003/01/13/big/img_717 +2002/09/01/big/img_16408 +2002/07/22/big/img_217 +2002/07/31/big/img_960 +2002/08/21/big/img_610 +2002/08/05/big/img_3753 +2002/08/03/big/img_151 +2002/08/21/big/img_267 +2002/08/01/big/img_2175 +2002/08/04/big/img_556 +2002/08/21/big/img_527 +2002/09/02/big/img_15800 +2002/07/27/big/img_156 +2002/07/20/big/img_590 +2002/08/15/big/img_700 +2002/08/08/big/img_444 +2002/07/25/big/img_94 +2002/07/24/big/img_778 +2002/08/14/big/img_694 +2002/07/20/big/img_666 +2002/08/02/big/img_200 +2002/08/02/big/img_578 +2003/01/17/big/img_332 +2002/09/01/big/img_16352 +2002/08/27/big/img_19668 +2002/07/23/big/img_823 +2002/08/13/big/img_431 +2003/01/16/big/img_463 +2002/08/27/big/img_19711 +2002/08/23/big/img_154 +2002/07/31/big/img_360 +2002/08/23/big/img_555 +2002/08/10/big/img_561 +2003/01/14/big/img_550 +2002/08/07/big/img_1370 +2002/07/30/big/img_1184 +2002/08/01/big/img_1445 +2002/08/23/big/img_22 +2002/07/30/big/img_606 +2003/01/17/big/img_271 +2002/08/31/big/img_17316 +2002/08/16/big/img_973 +2002/07/26/big/img_77 +2002/07/20/big/img_788 +2002/08/06/big/img_2426 +2002/08/07/big/img_1498 +2002/08/16/big/img_358 +2002/08/06/big/img_2851 +2002/08/12/big/img_359 +2002/08/01/big/img_1521 +2002/08/02/big/img_709 +2002/08/20/big/img_935 +2002/08/12/big/img_188 +2002/08/24/big/img_411 +2002/08/22/big/img_680 +2002/08/06/big/img_2480 +2002/07/20/big/img_627 +2002/07/30/big/img_214 +2002/07/25/big/img_354 +2002/08/02/big/img_636 +2003/01/15/big/img_661 +2002/08/07/big/img_1327 +2002/08/01/big/img_2108 +2002/08/31/big/img_17919 +2002/08/29/big/img_18768 +2002/08/05/big/img_3840 +2002/07/26/big/img_242 +2003/01/14/big/img_451 +2002/08/20/big/img_923 +2002/08/27/big/img_19908 +2002/08/16/big/img_282 +2002/08/19/big/img_440 +2003/01/01/big/img_230 +2002/08/08/big/img_212 +2002/07/20/big/img_443 +2002/08/25/big/img_635 +2003/01/13/big/img_1169 +2002/07/26/big/img_998 +2002/08/15/big/img_995 +2002/08/06/big/img_3002 +2002/07/29/big/img_460 +2003/01/14/big/img_925 +2002/07/23/big/img_539 +2002/08/16/big/img_694 +2003/01/13/big/img_459 +2002/07/23/big/img_249 +2002/08/20/big/img_539 +2002/08/04/big/img_186 +2002/08/26/big/img_264 +2002/07/22/big/img_704 +2002/08/25/big/img_277 +2002/08/22/big/img_988 +2002/07/29/big/img_504 +2002/08/05/big/img_3600 +2002/08/30/big/img_18380 +2003/01/14/big/img_937 +2002/08/21/big/img_254 +2002/08/10/big/img_130 +2002/08/20/big/img_339 +2003/01/14/big/img_428 +2002/08/20/big/img_889 +2002/08/31/big/img_17637 +2002/07/26/big/img_644 +2002/09/01/big/img_16776 +2002/08/06/big/img_2239 +2002/08/06/big/img_2646 +2003/01/13/big/img_491 +2002/08/10/big/img_579 +2002/08/21/big/img_713 +2002/08/22/big/img_482 +2002/07/22/big/img_167 +2002/07/24/big/img_539 +2002/08/14/big/img_721 +2002/07/25/big/img_389 +2002/09/01/big/img_16591 +2002/08/13/big/img_543 +2003/01/14/big/img_432 +2002/08/09/big/img_287 +2002/07/26/big/img_126 +2002/08/23/big/img_412 +2002/08/15/big/img_1034 +2002/08/28/big/img_19485 +2002/07/31/big/img_236 +2002/07/30/big/img_523 +2002/07/19/big/img_141 +2003/01/17/big/img_957 +2002/08/04/big/img_81 +2002/07/25/big/img_206 +2002/08/15/big/img_716 +2002/08/13/big/img_403 +2002/08/15/big/img_685 +2002/07/26/big/img_884 +2002/07/19/big/img_499 +2002/07/23/big/img_772 +2002/07/27/big/img_752 +2003/01/14/big/img_493 +2002/08/25/big/img_664 +2002/07/31/big/img_334 +2002/08/26/big/img_678 +2002/09/01/big/img_16541 +2003/01/14/big/img_347 +2002/07/23/big/img_187 +2002/07/30/big/img_1163 +2002/08/05/big/img_35 +2002/08/22/big/img_944 +2002/08/07/big/img_1239 +2002/07/29/big/img_1215 +2002/08/03/big/img_312 +2002/08/05/big/img_3523 +2002/07/29/big/img_218 +2002/08/13/big/img_672 +2002/08/16/big/img_205 +2002/08/17/big/img_594 +2002/07/29/big/img_1411 +2002/07/30/big/img_942 +2003/01/16/big/img_312 +2002/08/08/big/img_312 +2002/07/25/big/img_15 +2002/08/09/big/img_839 +2002/08/01/big/img_2069 +2002/08/31/big/img_17512 +2002/08/01/big/img_3 +2002/07/31/big/img_320 +2003/01/15/big/img_1265 +2002/08/14/big/img_563 +2002/07/31/big/img_167 +2002/08/20/big/img_374 +2002/08/13/big/img_406 +2002/08/08/big/img_625 +2002/08/02/big/img_314 +2002/08/27/big/img_19964 +2002/09/01/big/img_16670 +2002/07/31/big/img_599 +2002/08/29/big/img_18906 +2002/07/24/big/img_373 +2002/07/26/big/img_513 +2002/09/02/big/img_15497 +2002/08/19/big/img_117 +2003/01/01/big/img_158 +2002/08/24/big/img_178 +2003/01/13/big/img_935 +2002/08/13/big/img_609 +2002/08/30/big/img_18341 +2002/08/25/big/img_674 +2003/01/13/big/img_209 +2002/08/13/big/img_258 +2002/08/05/big/img_3543 +2002/08/07/big/img_1970 +2002/08/06/big/img_3004 +2003/01/17/big/img_487 +2002/08/24/big/img_873 +2002/08/29/big/img_18730 +2002/08/09/big/img_375 +2003/01/16/big/img_751 +2002/08/02/big/img_603 +2002/08/19/big/img_325 +2002/09/01/big/img_16420 +2002/08/05/big/img_3633 +2002/08/21/big/img_516 +2002/07/19/big/img_501 +2002/07/26/big/img_688 +2002/07/24/big/img_256 +2002/07/25/big/img_438 +2002/07/31/big/img_1017 +2002/08/22/big/img_512 +2002/07/21/big/img_543 +2002/08/08/big/img_223 +2002/08/19/big/img_189 +2002/08/12/big/img_630 +2002/07/30/big/img_958 +2002/07/28/big/img_208 +2002/08/31/big/img_17691 +2002/07/22/big/img_542 +2002/07/19/big/img_741 +2002/07/19/big/img_158 +2002/08/15/big/img_399 +2002/08/01/big/img_2159 +2002/08/14/big/img_455 +2002/08/17/big/img_1011 +2002/08/26/big/img_744 +2002/08/12/big/img_624 +2003/01/17/big/img_821 +2002/08/16/big/img_980 +2002/07/28/big/img_281 +2002/07/25/big/img_171 +2002/08/03/big/img_116 +2002/07/22/big/img_467 +2002/07/31/big/img_750 +2002/07/26/big/img_435 +2002/07/19/big/img_822 +2002/08/13/big/img_626 +2002/08/11/big/img_344 +2002/08/02/big/img_473 +2002/09/01/big/img_16817 +2002/08/01/big/img_1275 +2002/08/28/big/img_19270 +2002/07/23/big/img_607 +2002/08/09/big/img_316 +2002/07/29/big/img_626 +2002/07/24/big/img_824 +2002/07/22/big/img_342 +2002/08/08/big/img_794 +2002/08/07/big/img_1209 +2002/07/19/big/img_18 +2002/08/25/big/img_634 +2002/07/24/big/img_730 +2003/01/17/big/img_356 +2002/07/23/big/img_305 +2002/07/30/big/img_453 +2003/01/13/big/img_972 +2002/08/06/big/img_2610 +2002/08/29/big/img_18920 +2002/07/31/big/img_123 +2002/07/26/big/img_979 +2002/08/24/big/img_635 +2002/08/05/big/img_3704 +2002/08/07/big/img_1358 +2002/07/22/big/img_306 +2002/08/13/big/img_619 +2002/08/02/big/img_366 diff --git a/data/__init__.py b/data/__init__.py new file mode 100644 index 0000000..ea50eba --- /dev/null +++ b/data/__init__.py @@ -0,0 +1,3 @@ +from .wider_face import WiderFaceDetection, detection_collate +from .data_augment import * +from .config import * diff --git a/data/__pycache__/__init__.cpython-38.pyc b/data/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000..33be196 Binary files /dev/null and b/data/__pycache__/__init__.cpython-38.pyc differ diff --git a/data/__pycache__/config.cpython-38.pyc b/data/__pycache__/config.cpython-38.pyc new file mode 100644 index 0000000..282307b Binary files /dev/null and b/data/__pycache__/config.cpython-38.pyc differ diff --git a/data/__pycache__/data_augment.cpython-38.pyc b/data/__pycache__/data_augment.cpython-38.pyc new file mode 100644 index 0000000..f27fec0 Binary files /dev/null and b/data/__pycache__/data_augment.cpython-38.pyc differ diff --git a/data/__pycache__/wider_face.cpython-38.pyc b/data/__pycache__/wider_face.cpython-38.pyc new file mode 100644 index 0000000..79903c1 Binary files /dev/null and b/data/__pycache__/wider_face.cpython-38.pyc differ diff --git a/data/config.py b/data/config.py new file mode 100644 index 0000000..591f349 --- /dev/null +++ b/data/config.py @@ -0,0 +1,42 @@ +# config.py + +cfg_mnet = { + 'name': 'mobilenet0.25', + 'min_sizes': [[16, 32], [64, 128], [256, 512]], + 'steps': [8, 16, 32], + 'variance': [0.1, 0.2], + 'clip': False, + 'loc_weight': 2.0, + 'gpu_train': True, + 'batch_size': 32, + 'ngpu': 1, + 'epoch': 250, + 'decay1': 190, + 'decay2': 220, + 'image_size': 640, + 'pretrain': True, + 'return_layers': {'stage1': 1, 'stage2': 2, 'stage3': 3}, + 'in_channel': 32, + 'out_channel': 64 +} + +cfg_re50 = { + 'name': 'Resnet50', + 'min_sizes': [[16, 32], [64, 128], [256, 512]], + 'steps': [8, 16, 32], + 'variance': [0.1, 0.2], + 'clip': False, + 'loc_weight': 2.0, + 'gpu_train': True, + 'batch_size': 24, + 'ngpu': 4, + 'epoch': 100, + 'decay1': 70, + 'decay2': 90, + 'image_size': 840, + 'pretrain': True, + 'return_layers': {'layer2': 1, 'layer3': 2, 'layer4': 3}, + 'in_channel': 256, + 'out_channel': 256 +} + diff --git a/data/data_augment.py b/data/data_augment.py new file mode 100644 index 0000000..c1b52ae --- /dev/null +++ b/data/data_augment.py @@ -0,0 +1,237 @@ +import cv2 +import numpy as np +import random +from utils.box_utils import matrix_iof + + +def _crop(image, boxes, labels, landm, img_dim): + height, width, _ = image.shape + pad_image_flag = True + + for _ in range(250): + """ + if random.uniform(0, 1) <= 0.2: + scale = 1.0 + else: + scale = random.uniform(0.3, 1.0) + """ + PRE_SCALES = [0.3, 0.45, 0.6, 0.8, 1.0] + scale = random.choice(PRE_SCALES) + short_side = min(width, height) + w = int(scale * short_side) + h = w + + if width == w: + l = 0 + else: + l = random.randrange(width - w) + if height == h: + t = 0 + else: + t = random.randrange(height - h) + roi = np.array((l, t, l + w, t + h)) + + value = matrix_iof(boxes, roi[np.newaxis]) + flag = (value >= 1) + if not flag.any(): + continue + + centers = (boxes[:, :2] + boxes[:, 2:]) / 2 + mask_a = np.logical_and(roi[:2] < centers, centers < roi[2:]).all(axis=1) + boxes_t = boxes[mask_a].copy() + labels_t = labels[mask_a].copy() + landms_t = landm[mask_a].copy() + landms_t = landms_t.reshape([-1, 5, 2]) + + if boxes_t.shape[0] == 0: + continue + + image_t = image[roi[1]:roi[3], roi[0]:roi[2]] + + boxes_t[:, :2] = np.maximum(boxes_t[:, :2], roi[:2]) + boxes_t[:, :2] -= roi[:2] + boxes_t[:, 2:] = np.minimum(boxes_t[:, 2:], roi[2:]) + boxes_t[:, 2:] -= roi[:2] + + # landm + landms_t[:, :, :2] = landms_t[:, :, :2] - roi[:2] + landms_t[:, :, :2] = np.maximum(landms_t[:, :, :2], np.array([0, 0])) + landms_t[:, :, :2] = np.minimum(landms_t[:, :, :2], roi[2:] - roi[:2]) + landms_t = landms_t.reshape([-1, 10]) + + + # make sure that the cropped image contains at least one face > 16 pixel at training image scale + b_w_t = (boxes_t[:, 2] - boxes_t[:, 0] + 1) / w * img_dim + b_h_t = (boxes_t[:, 3] - boxes_t[:, 1] + 1) / h * img_dim + mask_b = np.minimum(b_w_t, b_h_t) > 0.0 + boxes_t = boxes_t[mask_b] + labels_t = labels_t[mask_b] + landms_t = landms_t[mask_b] + + if boxes_t.shape[0] == 0: + continue + + pad_image_flag = False + + return image_t, boxes_t, labels_t, landms_t, pad_image_flag + return image, boxes, labels, landm, pad_image_flag + + +def _distort(image): + + def _convert(image, alpha=1, beta=0): + tmp = image.astype(float) * alpha + beta + tmp[tmp < 0] = 0 + tmp[tmp > 255] = 255 + image[:] = tmp + + image = image.copy() + + if random.randrange(2): + + #brightness distortion + if random.randrange(2): + _convert(image, beta=random.uniform(-32, 32)) + + #contrast distortion + if random.randrange(2): + _convert(image, alpha=random.uniform(0.5, 1.5)) + + image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) + + #saturation distortion + if random.randrange(2): + _convert(image[:, :, 1], alpha=random.uniform(0.5, 1.5)) + + #hue distortion + if random.randrange(2): + tmp = image[:, :, 0].astype(int) + random.randint(-18, 18) + tmp %= 180 + image[:, :, 0] = tmp + + image = cv2.cvtColor(image, cv2.COLOR_HSV2BGR) + + else: + + #brightness distortion + if random.randrange(2): + _convert(image, beta=random.uniform(-32, 32)) + + image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) + + #saturation distortion + if random.randrange(2): + _convert(image[:, :, 1], alpha=random.uniform(0.5, 1.5)) + + #hue distortion + if random.randrange(2): + tmp = image[:, :, 0].astype(int) + random.randint(-18, 18) + tmp %= 180 + image[:, :, 0] = tmp + + image = cv2.cvtColor(image, cv2.COLOR_HSV2BGR) + + #contrast distortion + if random.randrange(2): + _convert(image, alpha=random.uniform(0.5, 1.5)) + + return image + + +def _expand(image, boxes, fill, p): + if random.randrange(2): + return image, boxes + + height, width, depth = image.shape + + scale = random.uniform(1, p) + w = int(scale * width) + h = int(scale * height) + + left = random.randint(0, w - width) + top = random.randint(0, h - height) + + boxes_t = boxes.copy() + boxes_t[:, :2] += (left, top) + boxes_t[:, 2:] += (left, top) + expand_image = np.empty( + (h, w, depth), + dtype=image.dtype) + expand_image[:, :] = fill + expand_image[top:top + height, left:left + width] = image + image = expand_image + + return image, boxes_t + + +def _mirror(image, boxes, landms): + _, width, _ = image.shape + if random.randrange(2): + image = image[:, ::-1] + boxes = boxes.copy() + boxes[:, 0::2] = width - boxes[:, 2::-2] + + # landm + landms = landms.copy() + landms = landms.reshape([-1, 5, 2]) + landms[:, :, 0] = width - landms[:, :, 0] + tmp = landms[:, 1, :].copy() + landms[:, 1, :] = landms[:, 0, :] + landms[:, 0, :] = tmp + tmp1 = landms[:, 4, :].copy() + landms[:, 4, :] = landms[:, 3, :] + landms[:, 3, :] = tmp1 + landms = landms.reshape([-1, 10]) + + return image, boxes, landms + + +def _pad_to_square(image, rgb_mean, pad_image_flag): + if not pad_image_flag: + return image + height, width, _ = image.shape + long_side = max(width, height) + image_t = np.empty((long_side, long_side, 3), dtype=image.dtype) + image_t[:, :] = rgb_mean + image_t[0:0 + height, 0:0 + width] = image + return image_t + + +def _resize_subtract_mean(image, insize, rgb_mean): + interp_methods = [cv2.INTER_LINEAR, cv2.INTER_CUBIC, cv2.INTER_AREA, cv2.INTER_NEAREST, cv2.INTER_LANCZOS4] + interp_method = interp_methods[random.randrange(5)] + image = cv2.resize(image, (insize, insize), interpolation=interp_method) + image = image.astype(np.float32) + image -= rgb_mean + return image.transpose(2, 0, 1) + + +class preproc(object): + + def __init__(self, img_dim, rgb_means): + self.img_dim = img_dim + self.rgb_means = rgb_means + + def __call__(self, image, targets): + assert targets.shape[0] > 0, "this image does not have gt" + + boxes = targets[:, :4].copy() + labels = targets[:, -1].copy() + landm = targets[:, 4:-1].copy() + + image_t, boxes_t, labels_t, landm_t, pad_image_flag = _crop(image, boxes, labels, landm, self.img_dim) + image_t = _distort(image_t) + image_t = _pad_to_square(image_t,self.rgb_means, pad_image_flag) + image_t, boxes_t, landm_t = _mirror(image_t, boxes_t, landm_t) + height, width, _ = image_t.shape + image_t = _resize_subtract_mean(image_t, self.img_dim, self.rgb_means) + boxes_t[:, 0::2] /= width + boxes_t[:, 1::2] /= height + + landm_t[:, 0::2] /= width + landm_t[:, 1::2] /= height + + labels_t = np.expand_dims(labels_t, 1) + targets_t = np.hstack((boxes_t, landm_t, labels_t)) + + return image_t, targets_t diff --git a/data/realtime_detect.py b/data/realtime_detect.py new file mode 100644 index 0000000..d1b0ad5 --- /dev/null +++ b/data/realtime_detect.py @@ -0,0 +1,258 @@ +import subprocess +import time +import cv2 +import torch +import numpy as np +from skimage import transform as trans +from PIL import Image, ImageDraw, ImageFont +from data import cfg_mnet, cfg_re50 +from face_api import load_arcface_model, load_npy +from layers.functions.prior_box import PriorBox +from retinaface_detect import set_retinaface_conf, load_retinaface_model, findAll +from utils.nms.py_cpu_nms import py_cpu_nms +from utils.box_utils import decode, decode_landm +import faiss + +ppi = 1280 +ppi2 = 640 +step = 3 + +def detect_rtsp(rtsp, out_rtsp, net, arcface_model, k_v, args): + tic_total = time.time() + cfg = None + if args.network == "mobile0.25": + cfg = cfg_mnet + elif args.network == "resnet50": + cfg = cfg_re50 + device = torch.device("cpu" if args.cpu else "cuda") + resize = 1 + + # testing begin + cap = cv2.VideoCapture(rtsp) + ret, frame = cap.read() + h, w = frame.shape[:2] + + factor = 0 + if (w > ppi): + factor = h / w + frame = cv2.resize(frame, (ppi, int(ppi * factor))) + h, w = frame.shape[:2] + arf = 1 + detect_h, detect_w = frame.shape[:2] + frame_detect = frame + factor2 = 0 + if (w > ppi2): + factor2 = h / w + frame_detect = cv2.resize(frame, (ppi2, int(ppi2 * factor2))) + detect_h, detect_w = frame_detect.shape[:2] + arf = w/detect_w + print(w,h) + print(detect_w,detect_h) + + #fps = cap.get(cv2.CAP_PROP_FPS) + #print(fps) + size = (w, h) + sizeStr = str(size[0]) + 'x' + str(size[1]) + if(out_rtsp.startswith("rtsp")): + command = ['ffmpeg', + '-y', '-an', + '-f', 'rawvideo', + '-vcodec', 'rawvideo', + '-pix_fmt', 'bgr24', + '-s', sizeStr, + '-r', "25", + '-i', '-', + '-c:v', 'libx265', + '-b:v', '3000k', + '-pix_fmt', 'yuv420p', + '-preset', 'ultrafast', + '-f', 'rtsp', + out_rtsp] + pipe = subprocess.Popen(command, shell=False, stdin=subprocess.PIPE) + number = step + dets = [] + name_list = [] + font = ImageFont.truetype("font.ttf", 22) + priorbox = PriorBox(cfg, image_size=(detect_h, detect_w)) + priors = priorbox.forward() + priors = priors.to(device) + prior_data = priors.data + + scale = torch.Tensor([detect_w, detect_h, detect_w, detect_h]) + scale = scale.to(device) + scale1 = torch.Tensor([detect_w, detect_h, detect_w, detect_h, + detect_w, detect_h, detect_w, detect_h, + detect_w, detect_h]) + scale1 = scale1.to(device) + + src1 = np.array([ + [38.3814, 51.6963], + [73.6186, 51.5014], + [56.1120, 71.7366], + [41.6361, 92.3655], + [70.8167, 92.2041]], dtype=np.float32) + tform = trans.SimilarityTransform() + + while ret: + tic_all = time.time() + if number == step: + tic = time.time() + img = np.float32(frame_detect) + img -= (104, 117, 123) + img = img.transpose(2, 0, 1) + img = torch.from_numpy(img).unsqueeze(0) + img = img.to(device) + + loc, conf, landms = net(img) # forward pass + + boxes = decode(loc.data.squeeze(0), prior_data, cfg['variance']) + boxes = boxes * scale / resize + boxes = boxes.cpu().numpy() + scores = conf.squeeze(0).data.cpu().numpy()[:, 1] + landms = decode_landm(landms.data.squeeze(0), prior_data, cfg['variance']) + + landms = landms * scale1 / resize + landms = landms.cpu().numpy() + + # ignore low scores + inds = np.where(scores > args.confidence_threshold)[0] + boxes = boxes[inds] + landms = landms[inds] + scores = scores[inds] + + # keep top-K before NMS + order = scores.argsort()[::-1][:args.top_k] + boxes = boxes[order] + landms = landms[order] + scores = scores[order] + + # do NMS + dets = np.hstack((boxes, scores[:, np.newaxis])).astype(np.float32, copy=False) + keep = py_cpu_nms(dets, args.nms_threshold) + # keep = nms(dets, args.nms_threshold,force_cpu=args.cpu) + dets = dets[keep, :] + landms = landms[keep] + + # keep top-K faster NMS + dets = dets[:args.keep_top_k, :] + landms = landms[:args.keep_top_k, :] + + dets = np.concatenate((dets, landms), axis=1) + face_list = [] + name_list = [] + print('net forward time: {:.4f}'.format(time.time() - tic)) + start_time_findall = time.time() + for i, det in enumerate(dets[:1]): + if det[4] < args.vis_thres: + continue + #boxes, score = det[:4], det[4] + dst = np.reshape(landms[i], (5, 2)) + dst = dst * arf + + tform.estimate(dst, src1) + M = tform.params[0:2, :] + frame2 = cv2.warpAffine(frame, M, (w, h), borderValue=0.0) + img112 = frame2[0:112, 0:112, :] + face_list.append(img112) + + if len(face_list) != 0: + face_list = np.array(face_list) + face_list = face_list.transpose((0, 3, 1, 2)) + face_list = np.array(face_list, dtype=np.float32) + face_list -= 127.5 + face_list /= 127.5 + print(face_list.shape) + print("warpALL time: " + str(time.time() - start_time_findall )) + #start_time = time.time() + name_list = findAll(face_list, arcface_model, k_v, "cpu" if args.cpu else "cuda") + #print(name_list) + + #print("findOneframe time: " + str(time.time() - start_time_findall)) + #start_time = time.time() + # if (len(dets) != 0): + # for i, det in enumerate(dets[:]): + # if det[4] < args.vis_thres: + # continue + # boxes, score = det[:4], det[4] + # boxes = boxes * arf + # name = name_list[i] + # cv2.rectangle(frame, (int(boxes[0]), int(boxes[1])), (int(boxes[2]), int(boxes[3])), (255, 0, 0), 2) + # cv2.putText(frame, name, (int(boxes[0]), int(boxes[1])), cv2.FONT_HERSHEY_COMPLEX, 0.4,(0, 225, 255), 1) + start_time = time.time() + if(len(dets) != 0): + img_PIL = Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)) + draw = ImageDraw.Draw(img_PIL) + for i, det in enumerate(dets[:1]): + if det[4] < args.vis_thres: + continue + boxes, score = det[:4], det[4] + boxes = boxes * arf + name = name_list[i] + if not isinstance(name, np.unicode): + name = name.decode('utf8') + draw.text((int(boxes[0]), int(boxes[1])), name, fill=(255, 0, 0), font=font) + draw.rectangle((int(boxes[0]), int(boxes[1]), int(boxes[2]), int(boxes[3])), outline="green", width=3) + frame = cv2.cvtColor(np.asarray(img_PIL), cv2.COLOR_RGB2BGR) + pipe.stdin.write(frame.tostring()) + print("drawOneframe time: " + str(time.time() - start_time)) + #start_time = time.time() + ret, frame = cap.read() + frame_detect = frame + number = step + if (ret != 0 and factor != 0): + frame = cv2.resize(frame, (ppi, int(ppi * factor))) + if (ret != 0 and factor2 != 0): + frame_detect = cv2.resize(frame, (ppi2, int(ppi2 * factor2))) + #print("readframe time: " + str(time.time() - start_time)) + else: + number += 1 + if (len(dets) != 0): + for i, det in enumerate(dets[:4]): + if det[4] < args.vis_thres: + continue + boxes, score = det[:4], det[4] + cv2.rectangle(frame, (int(boxes[0]), int(boxes[1])), (int(boxes[2]), int(boxes[3])), (2, 255, 0), 1) + # if (len(dets) != 0): + # img_PIL = Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)) + # draw = ImageDraw.Draw(img_PIL) + # for i, det in enumerate(dets[:4]): + # if det[4] < args.vis_thres: + # continue + # boxes, score = det[:4], det[4] + # name = name_list[i] + # if not isinstance(name, np.unicode): + # name = name.decode('utf8') + # draw.text((int(boxes[0]), int(boxes[1])), name, fill=(255, 0, 0), font=font) + # draw.rectangle((int(boxes[0]), int(boxes[1]), int(boxes[2]), int(boxes[3])), outline="green", + # width=3) + # frame = cv2.cvtColor(np.asarray(img_PIL), cv2.COLOR_RGB2BGR) + start_time = time.time() + pipe.stdin.write(frame.tostring()) + print("writeframe time: " + str(time.time() - start_time)) + start_time = time.time() + ret, frame = cap.read() + if (ret != 0 and factor != 0): + frame = cv2.resize(frame, (ppi, int(ppi * factor))) + print("readframe time: " + str(time.time() - start_time)) + print('all time: {:.4f}'.format(time.time() - tic_all)) + cap.release() + pipe.terminate() + print('total time: {:.4f}'.format(time.time() - tic_total)) + +if __name__ == "__main__": + cpu_or_cuda = "cuda" if torch.cuda.is_available() else "cpu" + # 加载人脸识别模型 + arcface_model = load_arcface_model("./model/backbone100.pth", cpu_or_cuda=cpu_or_cuda) + # 加载人脸检测模型 + retinaface_args = set_retinaface_conf(cpu_or_cuda=cpu_or_cuda) + retinaface_model = load_retinaface_model(retinaface_args) + k_v = load_npy("./Database/student.npy") + #print(list(k_v.keys())) + database_name_list = list(k_v.keys()) + vector_list = np.array(list(k_v.values())) + print(vector_list.shape) + index = faiss.IndexFlatL2(512) + index.add(vector_list) + + #detect_rtsp("software.mp4", 'rtsp://localhost/test2', retinaface_model, arcface_model, index ,database_name_list, retinaface_args) + detect_rtsp("cut.mp4", 'rtsp://localhost:5001/test2', retinaface_model, arcface_model, k_v, retinaface_args) \ No newline at end of file diff --git a/data/wider_face.py b/data/wider_face.py new file mode 100644 index 0000000..22f56ef --- /dev/null +++ b/data/wider_face.py @@ -0,0 +1,101 @@ +import os +import os.path +import sys +import torch +import torch.utils.data as data +import cv2 +import numpy as np + +class WiderFaceDetection(data.Dataset): + def __init__(self, txt_path, preproc=None): + self.preproc = preproc + self.imgs_path = [] + self.words = [] + f = open(txt_path,'r') + lines = f.readlines() + isFirst = True + labels = [] + for line in lines: + line = line.rstrip() + if line.startswith('#'): + if isFirst is True: + isFirst = False + else: + labels_copy = labels.copy() + self.words.append(labels_copy) + labels.clear() + path = line[2:] + path = txt_path.replace('label.txt','images/') + path + self.imgs_path.append(path) + else: + line = line.split(' ') + label = [float(x) for x in line] + labels.append(label) + + self.words.append(labels) + + def __len__(self): + return len(self.imgs_path) + + def __getitem__(self, index): + img = cv2.imread(self.imgs_path[index]) + height, width, _ = img.shape + + labels = self.words[index] + annotations = np.zeros((0, 15)) + if len(labels) == 0: + return annotations + for idx, label in enumerate(labels): + annotation = np.zeros((1, 15)) + # bbox + annotation[0, 0] = label[0] # x1 + annotation[0, 1] = label[1] # y1 + annotation[0, 2] = label[0] + label[2] # x2 + annotation[0, 3] = label[1] + label[3] # y2 + + # landmarks + annotation[0, 4] = label[4] # l0_x + annotation[0, 5] = label[5] # l0_y + annotation[0, 6] = label[7] # l1_x + annotation[0, 7] = label[8] # l1_y + annotation[0, 8] = label[10] # l2_x + annotation[0, 9] = label[11] # l2_y + annotation[0, 10] = label[13] # l3_x + annotation[0, 11] = label[14] # l3_y + annotation[0, 12] = label[16] # l4_x + annotation[0, 13] = label[17] # l4_y + if (annotation[0, 4]<0): + annotation[0, 14] = -1 + else: + annotation[0, 14] = 1 + + annotations = np.append(annotations, annotation, axis=0) + target = np.array(annotations) + if self.preproc is not None: + img, target = self.preproc(img, target) + + return torch.from_numpy(img), target + +def detection_collate(batch): + """Custom collate fn for dealing with batches of images that have a different + number of associated object annotations (bounding boxes). + + Arguments: + batch: (tuple) A tuple of tensor images and lists of annotations + + Return: + A tuple containing: + 1) (tensor) batch of images stacked on their 0 dim + 2) (list of tensors) annotations for a given image are stacked on 0 dim + """ + targets = [] + imgs = [] + for _, sample in enumerate(batch): + for _, tup in enumerate(sample): + if torch.is_tensor(tup): + imgs.append(tup) + elif isinstance(tup, type(np.empty(0))): + annos = torch.from_numpy(tup).float() + targets.append(annos) + + return (torch.stack(imgs, 0), targets) diff --git a/dataset.py b/dataset.py new file mode 100644 index 0000000..db65236 --- /dev/null +++ b/dataset.py @@ -0,0 +1,107 @@ +import numbers +import os +import queue as Queue +import threading + +import mxnet as mx +import numpy as np +import torch +from torch.utils.data import DataLoader, Dataset +from torchvision import transforms + + +class BackgroundGenerator(threading.Thread): + def __init__(self, generator, local_rank, max_prefetch=6): + super(BackgroundGenerator, self).__init__() + self.queue = Queue.Queue(max_prefetch) + self.generator = generator + self.local_rank = local_rank + self.daemon = True + self.start() + + def run(self): + torch.cuda.set_device(self.local_rank) + for item in self.generator: + self.queue.put(item) + self.queue.put(None) + + def next(self): + next_item = self.queue.get() + if next_item is None: + raise StopIteration + return next_item + + def __next__(self): + return self.next() + + def __iter__(self): + return self + + +class DataLoaderX(DataLoader): + def __init__(self, local_rank, **kwargs): + super(DataLoaderX, self).__init__(**kwargs) + self.stream = torch.cuda.Stream(local_rank) + self.local_rank = local_rank + + def __iter__(self): + self.iter = super(DataLoaderX, self).__iter__() + self.iter = BackgroundGenerator(self.iter, self.local_rank) + self.preload() + return self + + def preload(self): + self.batch = next(self.iter, None) + if self.batch is None: + return None + with torch.cuda.stream(self.stream): + for k in range(len(self.batch)): + self.batch[k] = self.batch[k].to(device=self.local_rank, + non_blocking=True) + + def __next__(self): + torch.cuda.current_stream().wait_stream(self.stream) + batch = self.batch + if batch is None: + raise StopIteration + self.preload() + return batch + + +class MXFaceDataset(Dataset): + def __init__(self, root_dir, local_rank): + super(MXFaceDataset, self).__init__() + self.transform = transforms.Compose( + [transforms.ToPILImage(), + transforms.RandomHorizontalFlip(), + transforms.ToTensor(), + transforms.Normalize(mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5]), + ]) + self.root_dir = root_dir + self.local_rank = local_rank + path_imgrec = os.path.join(root_dir, 'train.rec') + path_imgidx = os.path.join(root_dir, 'train.idx') + self.imgrec = mx.recordio.MXIndexedRecordIO(path_imgidx, path_imgrec, 'r') + s = self.imgrec.read_idx(0) + header, _ = mx.recordio.unpack(s) + if header.flag > 0: + self.header0 = (int(header.label[0]), int(header.label[1])) + self.imgidx = np.array(range(1, int(header.label[0]))) + else: + self.imgidx = np.array(list(self.imgrec.keys)) + + def __getitem__(self, index): + idx = self.imgidx[index] + s = self.imgrec.read_idx(idx) + header, img = mx.recordio.unpack(s) + label = header.label + if not isinstance(label, numbers.Number): + label = label[0] + label = torch.tensor(label, dtype=torch.long) + sample = mx.image.imdecode(img).asnumpy() + if self.transform is not None: + sample = self.transform(sample) + return sample, label + + def __len__(self): + return len(self.imgidx) diff --git a/eval/__init__.py b/eval/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/eval/verification.py b/eval/verification.py new file mode 100644 index 0000000..edacf8d --- /dev/null +++ b/eval/verification.py @@ -0,0 +1,409 @@ +"""Helper for evaluation on the Labeled Faces in the Wild dataset +""" + +# MIT License +# +# Copyright (c) 2016 David Sandberg +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + + +import datetime +import os +import pickle + +import mxnet as mx +import numpy as np +import sklearn +import torch +from mxnet import ndarray as nd +from scipy import interpolate +from sklearn.decomposition import PCA +from sklearn.model_selection import KFold + + +class LFold: + def __init__(self, n_splits=2, shuffle=False): + self.n_splits = n_splits + if self.n_splits > 1: + self.k_fold = KFold(n_splits=n_splits, shuffle=shuffle) + + def split(self, indices): + if self.n_splits > 1: + return self.k_fold.split(indices) + else: + return [(indices, indices)] + + +def calculate_roc(thresholds, + embeddings1, + embeddings2, + actual_issame, + nrof_folds=10, + pca=0): + assert (embeddings1.shape[0] == embeddings2.shape[0]) + assert (embeddings1.shape[1] == embeddings2.shape[1]) + nrof_pairs = min(len(actual_issame), embeddings1.shape[0]) + nrof_thresholds = len(thresholds) + k_fold = LFold(n_splits=nrof_folds, shuffle=False) + + tprs = np.zeros((nrof_folds, nrof_thresholds)) + fprs = np.zeros((nrof_folds, nrof_thresholds)) + accuracy = np.zeros((nrof_folds)) + indices = np.arange(nrof_pairs) + + if pca == 0: + diff = np.subtract(embeddings1, embeddings2) + dist = np.sum(np.square(diff), 1) + + for fold_idx, (train_set, test_set) in enumerate(k_fold.split(indices)): + if pca > 0: + print('doing pca on', fold_idx) + embed1_train = embeddings1[train_set] + embed2_train = embeddings2[train_set] + _embed_train = np.concatenate((embed1_train, embed2_train), axis=0) + pca_model = PCA(n_components=pca) + pca_model.fit(_embed_train) + embed1 = pca_model.transform(embeddings1) + embed2 = pca_model.transform(embeddings2) + embed1 = sklearn.preprocessing.normalize(embed1) + embed2 = sklearn.preprocessing.normalize(embed2) + diff = np.subtract(embed1, embed2) + dist = np.sum(np.square(diff), 1) + + # Find the best threshold for the fold + acc_train = np.zeros((nrof_thresholds)) + for threshold_idx, threshold in enumerate(thresholds): + _, _, acc_train[threshold_idx] = calculate_accuracy( + threshold, dist[train_set], actual_issame[train_set]) + best_threshold_index = np.argmax(acc_train) + for threshold_idx, threshold in enumerate(thresholds): + tprs[fold_idx, threshold_idx], fprs[fold_idx, threshold_idx], _ = calculate_accuracy( + threshold, dist[test_set], + actual_issame[test_set]) + _, _, accuracy[fold_idx] = calculate_accuracy( + thresholds[best_threshold_index], dist[test_set], + actual_issame[test_set]) + + tpr = np.mean(tprs, 0) + fpr = np.mean(fprs, 0) + return tpr, fpr, accuracy + + +def calculate_accuracy(threshold, dist, actual_issame): + predict_issame = np.less(dist, threshold) + tp = np.sum(np.logical_and(predict_issame, actual_issame)) + fp = np.sum(np.logical_and(predict_issame, np.logical_not(actual_issame))) + tn = np.sum( + np.logical_and(np.logical_not(predict_issame), + np.logical_not(actual_issame))) + fn = np.sum(np.logical_and(np.logical_not(predict_issame), actual_issame)) + + tpr = 0 if (tp + fn == 0) else float(tp) / float(tp + fn) + fpr = 0 if (fp + tn == 0) else float(fp) / float(fp + tn) + acc = float(tp + tn) / dist.size + return tpr, fpr, acc + + +def calculate_val(thresholds, + embeddings1, + embeddings2, + actual_issame, + far_target, + nrof_folds=10): + assert (embeddings1.shape[0] == embeddings2.shape[0]) + assert (embeddings1.shape[1] == embeddings2.shape[1]) + nrof_pairs = min(len(actual_issame), embeddings1.shape[0]) + nrof_thresholds = len(thresholds) + k_fold = LFold(n_splits=nrof_folds, shuffle=False) + + val = np.zeros(nrof_folds) + far = np.zeros(nrof_folds) + + diff = np.subtract(embeddings1, embeddings2) + dist = np.sum(np.square(diff), 1) + indices = np.arange(nrof_pairs) + + for fold_idx, (train_set, test_set) in enumerate(k_fold.split(indices)): + + # Find the threshold that gives FAR = far_target + far_train = np.zeros(nrof_thresholds) + for threshold_idx, threshold in enumerate(thresholds): + _, far_train[threshold_idx] = calculate_val_far( + threshold, dist[train_set], actual_issame[train_set]) + if np.max(far_train) >= far_target: + f = interpolate.interp1d(far_train, thresholds, kind='slinear') + threshold = f(far_target) + else: + threshold = 0.0 + + val[fold_idx], far[fold_idx] = calculate_val_far( + threshold, dist[test_set], actual_issame[test_set]) + + val_mean = np.mean(val) + far_mean = np.mean(far) + val_std = np.std(val) + return val_mean, val_std, far_mean + + +def calculate_val_far(threshold, dist, actual_issame): + predict_issame = np.less(dist, threshold) + true_accept = np.sum(np.logical_and(predict_issame, actual_issame)) + false_accept = np.sum( + np.logical_and(predict_issame, np.logical_not(actual_issame))) + n_same = np.sum(actual_issame) + n_diff = np.sum(np.logical_not(actual_issame)) + # print(true_accept, false_accept) + # print(n_same, n_diff) + val = float(true_accept) / float(n_same) + far = float(false_accept) / float(n_diff) + return val, far + + +def evaluate(embeddings, actual_issame, nrof_folds=10, pca=0): + # Calculate evaluation metrics + thresholds = np.arange(0, 4, 0.01) + embeddings1 = embeddings[0::2] + embeddings2 = embeddings[1::2] + tpr, fpr, accuracy = calculate_roc(thresholds, + embeddings1, + embeddings2, + np.asarray(actual_issame), + nrof_folds=nrof_folds, + pca=pca) + thresholds = np.arange(0, 4, 0.001) + val, val_std, far = calculate_val(thresholds, + embeddings1, + embeddings2, + np.asarray(actual_issame), + 1e-3, + nrof_folds=nrof_folds) + return tpr, fpr, accuracy, val, val_std, far + +@torch.no_grad() +def load_bin(path, image_size): + try: + with open(path, 'rb') as f: + bins, issame_list = pickle.load(f) # py2 + except UnicodeDecodeError as e: + with open(path, 'rb') as f: + bins, issame_list = pickle.load(f, encoding='bytes') # py3 + data_list = [] + for flip in [0, 1]: + data = torch.empty((len(issame_list) * 2, 3, image_size[0], image_size[1])) + data_list.append(data) + for idx in range(len(issame_list) * 2): + _bin = bins[idx] + img = mx.image.imdecode(_bin) + if img.shape[1] != image_size[0]: + img = mx.image.resize_short(img, image_size[0]) + img = nd.transpose(img, axes=(2, 0, 1)) + for flip in [0, 1]: + if flip == 1: + img = mx.ndarray.flip(data=img, axis=2) + data_list[flip][idx][:] = torch.from_numpy(img.asnumpy()) + if idx % 1000 == 0: + print('loading bin', idx) + print(data_list[0].shape) + return data_list, issame_list + +@torch.no_grad() +def test(data_set, backbone, batch_size, nfolds=10): + print('testing verification..') + data_list = data_set[0] + issame_list = data_set[1] + embeddings_list = [] + time_consumed = 0.0 + for i in range(len(data_list)): + data = data_list[i] + embeddings = None + ba = 0 + while ba < data.shape[0]: + bb = min(ba + batch_size, data.shape[0]) + count = bb - ba + _data = data[bb - batch_size: bb] + time0 = datetime.datetime.now() + img = ((_data / 255) - 0.5) / 0.5 + net_out: torch.Tensor = backbone(img) + _embeddings = net_out.detach().cpu().numpy() + time_now = datetime.datetime.now() + diff = time_now - time0 + time_consumed += diff.total_seconds() + if embeddings is None: + embeddings = np.zeros((data.shape[0], _embeddings.shape[1])) + embeddings[ba:bb, :] = _embeddings[(batch_size - count):, :] + ba = bb + embeddings_list.append(embeddings) + + _xnorm = 0.0 + _xnorm_cnt = 0 + for embed in embeddings_list: + for i in range(embed.shape[0]): + _em = embed[i] + _norm = np.linalg.norm(_em) + _xnorm += _norm + _xnorm_cnt += 1 + _xnorm /= _xnorm_cnt + + embeddings = embeddings_list[0].copy() + embeddings = sklearn.preprocessing.normalize(embeddings) + acc1 = 0.0 + std1 = 0.0 + embeddings = embeddings_list[0] + embeddings_list[1] + embeddings = sklearn.preprocessing.normalize(embeddings) + print(embeddings.shape) + print('infer time', time_consumed) + _, _, accuracy, val, val_std, far = evaluate(embeddings, issame_list, nrof_folds=nfolds) + acc2, std2 = np.mean(accuracy), np.std(accuracy) + return acc1, std1, acc2, std2, _xnorm, embeddings_list + + +def dumpR(data_set, + backbone, + batch_size, + name='', + data_extra=None, + label_shape=None): + print('dump verification embedding..') + data_list = data_set[0] + issame_list = data_set[1] + embeddings_list = [] + time_consumed = 0.0 + for i in range(len(data_list)): + data = data_list[i] + embeddings = None + ba = 0 + while ba < data.shape[0]: + bb = min(ba + batch_size, data.shape[0]) + count = bb - ba + + _data = nd.slice_axis(data, axis=0, begin=bb - batch_size, end=bb) + time0 = datetime.datetime.now() + if data_extra is None: + db = mx.io.DataBatch(data=(_data,), label=(_label,)) + else: + db = mx.io.DataBatch(data=(_data, _data_extra), + label=(_label,)) + model.forward(db, is_train=False) + net_out = model.get_outputs() + _embeddings = net_out[0].asnumpy() + time_now = datetime.datetime.now() + diff = time_now - time0 + time_consumed += diff.total_seconds() + if embeddings is None: + embeddings = np.zeros((data.shape[0], _embeddings.shape[1])) + embeddings[ba:bb, :] = _embeddings[(batch_size - count):, :] + ba = bb + embeddings_list.append(embeddings) + embeddings = embeddings_list[0] + embeddings_list[1] + embeddings = sklearn.preprocessing.normalize(embeddings) + actual_issame = np.asarray(issame_list) + outname = os.path.join('temp.bin') + with open(outname, 'wb') as f: + pickle.dump((embeddings, issame_list), + f, + protocol=pickle.HIGHEST_PROTOCOL) + + +# if __name__ == '__main__': +# +# parser = argparse.ArgumentParser(description='do verification') +# # general +# parser.add_argument('--data-dir', default='', help='') +# parser.add_argument('--model', +# default='../model/softmax,50', +# help='path to load model.') +# parser.add_argument('--target', +# default='lfw,cfp_ff,cfp_fp,agedb_30', +# help='test targets.') +# parser.add_argument('--gpu', default=0, type=int, help='gpu id') +# parser.add_argument('--batch-size', default=32, type=int, help='') +# parser.add_argument('--max', default='', type=str, help='') +# parser.add_argument('--mode', default=0, type=int, help='') +# parser.add_argument('--nfolds', default=10, type=int, help='') +# args = parser.parse_args() +# image_size = [112, 112] +# print('image_size', image_size) +# ctx = mx.gpu(args.gpu) +# nets = [] +# vec = args.model.split(',') +# prefix = args.model.split(',')[0] +# epochs = [] +# if len(vec) == 1: +# pdir = os.path.dirname(prefix) +# for fname in os.listdir(pdir): +# if not fname.endswith('.params'): +# continue +# _file = os.path.join(pdir, fname) +# if _file.startswith(prefix): +# epoch = int(fname.split('.')[0].split('-')[1]) +# epochs.append(epoch) +# epochs = sorted(epochs, reverse=True) +# if len(args.max) > 0: +# _max = [int(x) for x in args.max.split(',')] +# assert len(_max) == 2 +# if len(epochs) > _max[1]: +# epochs = epochs[_max[0]:_max[1]] +# +# else: +# epochs = [int(x) for x in vec[1].split('|')] +# print('model number', len(epochs)) +# time0 = datetime.datetime.now() +# for epoch in epochs: +# print('loading', prefix, epoch) +# sym, arg_params, aux_params = mx.model.load_checkpoint(prefix, epoch) +# # arg_params, aux_params = ch_dev(arg_params, aux_params, ctx) +# all_layers = sym.get_internals() +# sym = all_layers['fc1_output'] +# model = mx.mod.Module(symbol=sym, context=ctx, label_names=None) +# # model.bind(data_shapes=[('data', (args.batch_size, 3, image_size[0], image_size[1]))], label_shapes=[('softmax_label', (args.batch_size,))]) +# model.bind(data_shapes=[('data', (args.batch_size, 3, image_size[0], +# image_size[1]))]) +# model.set_params(arg_params, aux_params) +# nets.append(model) +# time_now = datetime.datetime.now() +# diff = time_now - time0 +# print('model loading time', diff.total_seconds()) +# +# ver_list = [] +# ver_name_list = [] +# for name in args.target.split(','): +# path = os.path.join(args.data_dir, name + ".bin") +# if os.path.exists(path): +# print('loading.. ', name) +# data_set = load_bin(path, image_size) +# ver_list.append(data_set) +# ver_name_list.append(name) +# +# if args.mode == 0: +# for i in range(len(ver_list)): +# results = [] +# for model in nets: +# acc1, std1, acc2, std2, xnorm, embeddings_list = test( +# ver_list[i], model, args.batch_size, args.nfolds) +# print('[%s]XNorm: %f' % (ver_name_list[i], xnorm)) +# print('[%s]Accuracy: %1.5f+-%1.5f' % (ver_name_list[i], acc1, std1)) +# print('[%s]Accuracy-Flip: %1.5f+-%1.5f' % (ver_name_list[i], acc2, std2)) +# results.append(acc2) +# print('Max of [%s] is %1.5f' % (ver_name_list[i], np.max(results))) +# elif args.mode == 1: +# raise ValueError +# else: +# model = nets[0] +# dumpR(ver_list[0], model, args.batch_size, args.target) diff --git a/eval_ijbc.py b/eval_ijbc.py new file mode 100644 index 0000000..c144e4e --- /dev/null +++ b/eval_ijbc.py @@ -0,0 +1,483 @@ +# coding: utf-8 + +import os +import pickle + +import matplotlib +import pandas as pd + +matplotlib.use('Agg') +import matplotlib.pyplot as plt +import timeit +import sklearn +import argparse +from sklearn.metrics import roc_curve, auc + +from menpo.visualize.viewmatplotlib import sample_colours_from_colourmap +from prettytable import PrettyTable +from pathlib import Path +import sys +import warnings + +sys.path.insert(0, "../") +warnings.filterwarnings("ignore") + +parser = argparse.ArgumentParser(description='do ijb test') +# general +parser.add_argument('--model-prefix', default='', help='path to load model.') +parser.add_argument('--image-path', default='', type=str, help='') +parser.add_argument('--result-dir', default='.', type=str, help='') +parser.add_argument('--batch-size', default=128, type=int, help='') +parser.add_argument('--network', default='iresnet50', type=str, help='') +parser.add_argument('--job', default='insightface', type=str, help='job name') +parser.add_argument('--target', default='IJBC', type=str, help='target, set to IJBC or IJBB') +args = parser.parse_args() + +target = args.target +model_path = args.model_prefix +image_path = args.image_path +result_dir = args.result_dir +gpu_id = None +use_norm_score = True # if Ture, TestMode(N1) +use_detector_score = True # if Ture, TestMode(D1) +use_flip_test = True # if Ture, TestMode(F1) +job = args.job +batch_size = args.batch_size + +import cv2 +import numpy as np +import torch +from skimage import transform as trans +import backbones + + +class Embedding(object): + def __init__(self, prefix, data_shape, batch_size=1): + image_size = (112, 112) + self.image_size = image_size + weight = torch.load(prefix) + resnet = eval("backbones.{}".format(args.network))(False).cuda() + resnet.load_state_dict(weight) + model = torch.nn.DataParallel(resnet) + self.model = model + self.model.eval() + src = np.array([ + [30.2946, 51.6963], + [65.5318, 51.5014], + [48.0252, 71.7366], + [33.5493, 92.3655], + [62.7299, 92.2041]], dtype=np.float32) + src[:, 0] += 8.0 + self.src = src + self.batch_size = batch_size + self.data_shape = data_shape + + def get(self, rimg, landmark): + + assert landmark.shape[0] == 68 or landmark.shape[0] == 5 + assert landmark.shape[1] == 2 + if landmark.shape[0] == 68: + landmark5 = np.zeros((5, 2), dtype=np.float32) + landmark5[0] = (landmark[36] + landmark[39]) / 2 + landmark5[1] = (landmark[42] + landmark[45]) / 2 + landmark5[2] = landmark[30] + landmark5[3] = landmark[48] + landmark5[4] = landmark[54] + else: + landmark5 = landmark + tform = trans.SimilarityTransform() + tform.estimate(landmark5, self.src) + M = tform.params[0:2, :] + img = cv2.warpAffine(rimg, + M, (self.image_size[1], self.image_size[0]), + borderValue=0.0) + img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) + img_flip = np.fliplr(img) + img = np.transpose(img, (2, 0, 1)) # 3*112*112, RGB + img_flip = np.transpose(img_flip, (2, 0, 1)) + input_blob = np.zeros((2, 3, self.image_size[1], self.image_size[0]), dtype=np.uint8) + input_blob[0] = img + input_blob[1] = img_flip + return input_blob + + @torch.no_grad() + def forward_db(self, batch_data): + imgs = torch.Tensor(batch_data).cuda() + imgs.div_(255).sub_(0.5).div_(0.5) + feat = self.model(imgs) + feat = feat.reshape([self.batch_size, 2 * feat.shape[1]]) + return feat.cpu().numpy() + + +# 将一个list尽量均分成n份,限制len(list)==n,份数大于原list内元素个数则分配空list[] +def divideIntoNstrand(listTemp, n): + twoList = [[] for i in range(n)] + for i, e in enumerate(listTemp): + twoList[i % n].append(e) + return twoList + + +def read_template_media_list(path): + # ijb_meta = np.loadtxt(path, dtype=str) + ijb_meta = pd.read_csv(path, sep=' ', header=None).values + templates = ijb_meta[:, 1].astype(np.int) + medias = ijb_meta[:, 2].astype(np.int) + return templates, medias + + +# In[ ]: + + +def read_template_pair_list(path): + # pairs = np.loadtxt(path, dtype=str) + pairs = pd.read_csv(path, sep=' ', header=None).values + # print(pairs.shape) + # print(pairs[:, 0].astype(np.int)) + t1 = pairs[:, 0].astype(np.int) + t2 = pairs[:, 1].astype(np.int) + label = pairs[:, 2].astype(np.int) + return t1, t2, label + + +# In[ ]: + + +def read_image_feature(path): + with open(path, 'rb') as fid: + img_feats = pickle.load(fid) + return img_feats + + +# In[ ]: + + +def get_image_feature(img_path, files_list, model_path, epoch, gpu_id): + batch_size = args.batch_size + data_shape = (3, 112, 112) + + files = files_list + print('files:', len(files)) + rare_size = len(files) % batch_size + faceness_scores = [] + batch = 0 + img_feats = np.empty((len(files), 1024), dtype=np.float32) + + batch_data = np.empty((2 * batch_size, 3, 112, 112)) + embedding = Embedding(model_path, data_shape, batch_size) + for img_index, each_line in enumerate(files[:len(files) - rare_size]): + name_lmk_score = each_line.strip().split(' ') + img_name = os.path.join(img_path, name_lmk_score[0]) + img = cv2.imread(img_name) + lmk = np.array([float(x) for x in name_lmk_score[1:-1]], + dtype=np.float32) + lmk = lmk.reshape((5, 2)) + input_blob = embedding.get(img, lmk) + + batch_data[2 * (img_index - batch * batch_size)][:] = input_blob[0] + batch_data[2 * (img_index - batch * batch_size) + 1][:] = input_blob[1] + if (img_index + 1) % batch_size == 0: + print('batch', batch) + img_feats[batch * batch_size:batch * batch_size + + batch_size][:] = embedding.forward_db(batch_data) + batch += 1 + faceness_scores.append(name_lmk_score[-1]) + + batch_data = np.empty((2 * rare_size, 3, 112, 112)) + embedding = Embedding(model_path, data_shape, rare_size) + for img_index, each_line in enumerate(files[len(files) - rare_size:]): + name_lmk_score = each_line.strip().split(' ') + img_name = os.path.join(img_path, name_lmk_score[0]) + img = cv2.imread(img_name) + lmk = np.array([float(x) for x in name_lmk_score[1:-1]], + dtype=np.float32) + lmk = lmk.reshape((5, 2)) + input_blob = embedding.get(img, lmk) + batch_data[2 * img_index][:] = input_blob[0] + batch_data[2 * img_index + 1][:] = input_blob[1] + if (img_index + 1) % rare_size == 0: + print('batch', batch) + img_feats[len(files) - + rare_size:][:] = embedding.forward_db(batch_data) + batch += 1 + faceness_scores.append(name_lmk_score[-1]) + faceness_scores = np.array(faceness_scores).astype(np.float32) + # img_feats = np.ones( (len(files), 1024), dtype=np.float32) * 0.01 + # faceness_scores = np.ones( (len(files), ), dtype=np.float32 ) + return img_feats, faceness_scores + + +# In[ ]: + + +def image2template_feature(img_feats=None, templates=None, medias=None): + # ========================================================== + # 1. face image feature l2 normalization. img_feats:[number_image x feats_dim] + # 2. compute media feature. + # 3. compute template feature. + # ========================================================== + unique_templates = np.unique(templates) + template_feats = np.zeros((len(unique_templates), img_feats.shape[1])) + + for count_template, uqt in enumerate(unique_templates): + + (ind_t,) = np.where(templates == uqt) + face_norm_feats = img_feats[ind_t] + face_medias = medias[ind_t] + unique_medias, unique_media_counts = np.unique(face_medias, + return_counts=True) + media_norm_feats = [] + for u, ct in zip(unique_medias, unique_media_counts): + (ind_m,) = np.where(face_medias == u) + if ct == 1: + media_norm_feats += [face_norm_feats[ind_m]] + else: # image features from the same video will be aggregated into one feature + media_norm_feats += [ + np.mean(face_norm_feats[ind_m], axis=0, keepdims=True) + ] + media_norm_feats = np.array(media_norm_feats) + # media_norm_feats = media_norm_feats / np.sqrt(np.sum(media_norm_feats ** 2, -1, keepdims=True)) + template_feats[count_template] = np.sum(media_norm_feats, axis=0) + if count_template % 2000 == 0: + print('Finish Calculating {} template features.'.format( + count_template)) + # template_norm_feats = template_feats / np.sqrt(np.sum(template_feats ** 2, -1, keepdims=True)) + template_norm_feats = sklearn.preprocessing.normalize(template_feats) + # print(template_norm_feats.shape) + return template_norm_feats, unique_templates + + +# In[ ]: + + +def verification(template_norm_feats=None, + unique_templates=None, + p1=None, + p2=None): + # ========================================================== + # Compute set-to-set Similarity Score. + # ========================================================== + template2id = np.zeros((max(unique_templates) + 1, 1), dtype=int) + for count_template, uqt in enumerate(unique_templates): + template2id[uqt] = count_template + + score = np.zeros((len(p1),)) # save cosine distance between pairs + + total_pairs = np.array(range(len(p1))) + batchsize = 100000 # small batchsize instead of all pairs in one batch due to the memory limiation + sublists = [ + total_pairs[i:i + batchsize] for i in range(0, len(p1), batchsize) + ] + total_sublists = len(sublists) + for c, s in enumerate(sublists): + feat1 = template_norm_feats[template2id[p1[s]]] + feat2 = template_norm_feats[template2id[p2[s]]] + similarity_score = np.sum(feat1 * feat2, -1) + score[s] = similarity_score.flatten() + if c % 10 == 0: + print('Finish {}/{} pairs.'.format(c, total_sublists)) + return score + + +# In[ ]: +def verification2(template_norm_feats=None, + unique_templates=None, + p1=None, + p2=None): + template2id = np.zeros((max(unique_templates) + 1, 1), dtype=int) + for count_template, uqt in enumerate(unique_templates): + template2id[uqt] = count_template + score = np.zeros((len(p1),)) # save cosine distance between pairs + total_pairs = np.array(range(len(p1))) + batchsize = 100000 # small batchsize instead of all pairs in one batch due to the memory limiation + sublists = [ + total_pairs[i:i + batchsize] for i in range(0, len(p1), batchsize) + ] + total_sublists = len(sublists) + for c, s in enumerate(sublists): + feat1 = template_norm_feats[template2id[p1[s]]] + feat2 = template_norm_feats[template2id[p2[s]]] + similarity_score = np.sum(feat1 * feat2, -1) + score[s] = similarity_score.flatten() + if c % 10 == 0: + print('Finish {}/{} pairs.'.format(c, total_sublists)) + return score + + +def read_score(path): + with open(path, 'rb') as fid: + img_feats = pickle.load(fid) + return img_feats + + +# # Step1: Load Meta Data + +# In[ ]: + +assert target == 'IJBC' or target == 'IJBB' + +# ============================================================= +# load image and template relationships for template feature embedding +# tid --> template id, mid --> media id +# format: +# image_name tid mid +# ============================================================= +start = timeit.default_timer() +templates, medias = read_template_media_list( + os.path.join('%s/meta' % image_path, + '%s_face_tid_mid.txt' % target.lower())) +stop = timeit.default_timer() +print('Time: %.2f s. ' % (stop - start)) + +# In[ ]: + +# ============================================================= +# load template pairs for template-to-template verification +# tid : template id, label : 1/0 +# format: +# tid_1 tid_2 label +# ============================================================= +start = timeit.default_timer() +p1, p2, label = read_template_pair_list( + os.path.join('%s/meta' % image_path, + '%s_template_pair_label.txt' % target.lower())) +stop = timeit.default_timer() +print('Time: %.2f s. ' % (stop - start)) + +# # Step 2: Get Image Features + +# In[ ]: + +# ============================================================= +# load image features +# format: +# img_feats: [image_num x feats_dim] (227630, 512) +# ============================================================= +start = timeit.default_timer() +img_path = '%s/loose_crop' % image_path +img_list_path = '%s/meta/%s_name_5pts_score.txt' % (image_path, target.lower()) +img_list = open(img_list_path) +files = img_list.readlines() +# files_list = divideIntoNstrand(files, rank_size) +files_list = files + +# img_feats +# for i in range(rank_size): +img_feats, faceness_scores = get_image_feature(img_path, files_list, + model_path, 0, gpu_id) +stop = timeit.default_timer() +print('Time: %.2f s. ' % (stop - start)) +print('Feature Shape: ({} , {}) .'.format(img_feats.shape[0], + img_feats.shape[1])) + +# # Step3: Get Template Features + +# In[ ]: + +# ============================================================= +# compute template features from image features. +# ============================================================= +start = timeit.default_timer() +# ========================================================== +# Norm feature before aggregation into template feature? +# Feature norm from embedding network and faceness score are able to decrease weights for noise samples (not face). +# ========================================================== +# 1. FaceScore (Feature Norm) +# 2. FaceScore (Detector) + +if use_flip_test: + # concat --- F1 + # img_input_feats = img_feats + # add --- F2 + img_input_feats = img_feats[:, 0:img_feats.shape[1] // + 2] + img_feats[:, img_feats.shape[1] // 2:] +else: + img_input_feats = img_feats[:, 0:img_feats.shape[1] // 2] + +if use_norm_score: + img_input_feats = img_input_feats +else: + # normalise features to remove norm information + img_input_feats = img_input_feats / np.sqrt( + np.sum(img_input_feats ** 2, -1, keepdims=True)) + +if use_detector_score: + print(img_input_feats.shape, faceness_scores.shape) + img_input_feats = img_input_feats * faceness_scores[:, np.newaxis] +else: + img_input_feats = img_input_feats + +template_norm_feats, unique_templates = image2template_feature( + img_input_feats, templates, medias) +stop = timeit.default_timer() +print('Time: %.2f s. ' % (stop - start)) + +# # Step 4: Get Template Similarity Scores + +# In[ ]: + +# ============================================================= +# compute verification scores between template pairs. +# ============================================================= +start = timeit.default_timer() +score = verification(template_norm_feats, unique_templates, p1, p2) +stop = timeit.default_timer() +print('Time: %.2f s. ' % (stop - start)) + +# In[ ]: +save_path = os.path.join(result_dir, args.job) +# save_path = result_dir + '/%s_result' % target + +if not os.path.exists(save_path): + os.makedirs(save_path) + +score_save_file = os.path.join(save_path, "%s.npy" % target.lower()) +np.save(score_save_file, score) + +# # Step 5: Get ROC Curves and TPR@FPR Table + +# In[ ]: + +files = [score_save_file] +methods = [] +scores = [] +for file in files: + methods.append(Path(file).stem) + scores.append(np.load(file)) + +methods = np.array(methods) +scores = dict(zip(methods, scores)) +colours = dict( + zip(methods, sample_colours_from_colourmap(methods.shape[0], 'Set2'))) +x_labels = [10 ** -6, 10 ** -5, 10 ** -4, 10 ** -3, 10 ** -2, 10 ** -1] +tpr_fpr_table = PrettyTable(['Methods'] + [str(x) for x in x_labels]) +fig = plt.figure() +for method in methods: + fpr, tpr, _ = roc_curve(label, scores[method]) + roc_auc = auc(fpr, tpr) + fpr = np.flipud(fpr) + tpr = np.flipud(tpr) # select largest tpr at same fpr + plt.plot(fpr, + tpr, + color=colours[method], + lw=1, + label=('[%s (AUC = %0.4f %%)]' % + (method.split('-')[-1], roc_auc * 100))) + tpr_fpr_row = [] + tpr_fpr_row.append("%s-%s" % (method, target)) + for fpr_iter in np.arange(len(x_labels)): + _, min_index = min( + list(zip(abs(fpr - x_labels[fpr_iter]), range(len(fpr))))) + tpr_fpr_row.append('%.2f' % (tpr[min_index] * 100)) + tpr_fpr_table.add_row(tpr_fpr_row) +plt.xlim([10 ** -6, 0.1]) +plt.ylim([0.3, 1.0]) +plt.grid(linestyle='--', linewidth=1) +plt.xticks(x_labels) +plt.yticks(np.linspace(0.3, 1.0, 8, endpoint=True)) +plt.xscale('log') +plt.xlabel('False Positive Rate') +plt.ylabel('True Positive Rate') +plt.title('ROC on IJB') +plt.legend(loc="lower right") +fig.savefig(os.path.join(save_path, '%s.pdf' % target.lower())) +print(tpr_fpr_table) diff --git a/face_api.py b/face_api.py new file mode 100644 index 0000000..f4c3197 --- /dev/null +++ b/face_api.py @@ -0,0 +1,377 @@ +import os +import time +import re +import torch +import cv2 +import numpy as np + +from anti import anti_spoofing, load_anti_model +from backbones import iresnet50, iresnet18, iresnet100 +from retinaface_detect import load_retinaface_model, detect_one, detect_video, set_retinaface_conf +from torch2trt import torch2trt, TRTModule + +threshold = 0.7 + + +# 读取112x112的本地图片并变换通道位置归一化 +def load_image(img_path): + img = cv2.imdecode(np.fromfile(img_path, dtype=np.uint8), cv2.IMREAD_COLOR) + img = img.transpose((2, 0, 1)) + img = img[np.newaxis, :, :, :] + img = np.array(img, dtype=np.float32) + img -= 127.5 + img /= 127.5 + return img + + +# 计算两个特征向量的欧式距离 +def findEuclideanDistance(source_representation, test_representation): + euclidean_distance = source_representation - test_representation + euclidean_distance = np.sum(np.multiply(euclidean_distance, euclidean_distance)) + euclidean_distance = np.sqrt(euclidean_distance) + return euclidean_distance + + +# 计算两个特征向量的余弦距离 +def findCosineDistance(source_representation, test_representation): + a = np.matmul(np.transpose(source_representation), test_representation) + b = np.sum(np.multiply(source_representation, source_representation)) + c = np.sum(np.multiply(test_representation, test_representation)) + return 1 - (a / (np.sqrt(b) * np.sqrt(c))) + + +# 归一化欧氏距离 +def l2_normalize(x): + return x / np.sqrt(np.sum(np.multiply(x, x))) + + +# 归一化余弦距离 +def cosin_metric(x1, x2): + return np.dot(x1, x2) / (np.linalg.norm(x1) * np.linalg.norm(x2)) + + +# 加载保存的姓名、人脸特征向量的人脸库 +def load_npy(path): + data = np.load(path, allow_pickle=True) + data = data.item() + return data + + +# 批量化生成人脸特征向量并保存到人脸库 +def create_database_batch(path, model, database_path): + name_list = os.listdir(path) + k_v = {} + if os.path.exists(database_path): + k_v = np.load(database_path, allow_pickle=True) + k_v = k_v.item() + batch = 256 + order_name = [] + order_path = [] + emb_list = [] + for name in name_list[:]: + img_path = os.path.join(path, name) + # for img_name in img_path[:1]: + order_name.append(name[:-4]) + order_path.append(img_path) + order_img = np.zeros((len(order_path), 3, 112, 112), dtype=np.float32) + for index, img_path in enumerate(order_path): + order_img[index] = load_image(img_path) + print(order_img.shape) + order_img = torch.from_numpy(order_img) + order_img = order_img.to(torch.device("cuda" if cpu_or_cuda == "cuda" else "cpu")) + now = 0 + number = len(order_img) + with torch.no_grad(): + while now < number: + if now + batch < number: + emb = model(order_img[now:now + batch]) + else: + emb = model(order_img[now:]) + now = now + batch + emb = emb.cpu().numpy() + for em in emb: + emb_list.append(em) + print("batch" + str(now)) + + for i, emb in enumerate(emb_list): + k_v[order_name[i]] = l2_normalize(emb) + np.save(database_path, k_v) + +def create_database_from_img(order_name, order_img, model, database_path, cpu_or_cuda): + k_v = {} + if os.path.exists(database_path): + k_v = np.load(database_path, allow_pickle=True) + k_v = k_v.item() + batch = 256 + emb_list = [] + + print(order_img.shape) + order_img = torch.from_numpy(order_img) + order_img = order_img.to(torch.device("cuda" if cpu_or_cuda == "cuda" else "cpu")) + now = 0 + number = len(order_img) + with torch.no_grad(): + while now < number: + if now + batch < number: + emb = model(order_img[now:now + batch]) + else: + emb = model(order_img[now:]) + now = now + batch + emb = emb.cpu().numpy() + for em in emb: + emb_list.append(em) + print("batch" + str(now)) + for i, emb in enumerate(emb_list): + k_v[order_name[i]] = l2_normalize(emb) + np.save(database_path, k_v) + +# 向人脸库中新增一个人的姓名和人脸特征向量,若人脸库不存在则创建 +def add_one_to_database(img, model, name, database_path, cpu_or_cuda): + img = torch.from_numpy(img) + img = img.to(torch.device("cuda" if cpu_or_cuda == "cuda" else "cpu")) + with torch.no_grad(): + pred = model(img) + pred = pred.cpu().numpy() + k_v = {} + if os.path.exists(database_path): + k_v = np.load(database_path, allow_pickle=True) + k_v = k_v.item() + k_v[name] = l2_normalize(pred) + np.save(database_path, k_v) + + +# 计算此特征向量与人脸库中的哪个人脸特征向量距离最近 +def findmindistance(pred, threshold, k_v): + distance = 10 + most_like = "" + for name in k_v.keys(): + tmp = findEuclideanDistance(k_v[name], pred) + if distance > tmp: + distance = tmp + most_like = name + if distance < threshold: + return most_like, distance + else: + return -1, distance + + +def faiss_find_face(pred, index, database_name_list): + name_list = [] + start_time = time.time() + D, I = index.search(pred, 1) + end_time = time.time() + # print("faiss cost %fs" % (end_time - start_time)) + # print(D, I) + if len(pred) == 1: + if D[0][0] < threshold: + # print(database_name_list[I[0][0]]) + return database_name_list[I[0][0]], D[0][0] + else: + return "unknown", D[0][0] + else: + for i,index in enumerate(I): + if D[i][0] < threshold: + #print(database_name_list[I[0][0]]) + name_list.append(database_name_list[index[0]]+str(D[i][0])) + else: + name_list.append("unknown"+str(D[i][0])) + return name_list + + +# 从人脸库中找到单个人脸 +def findOne(img, model, index, database_name_list, cpu_or_cuda): + img = torch.from_numpy(img) + img = img.to(torch.device("cuda" if cpu_or_cuda == "cuda" else "cpu")) + with torch.no_grad(): + start_time = time.time() + pred = model(img) + end_time = time.time() + print("predOne time: " + str(end_time - start_time)) + pred = pred.cpu().numpy() + # start_time = time.time() + # name, distance = findmindistance(l2_normalize(pred), threshold=threshold, k_v=k_v) + # end_time = time.time() + # print("baoli time: " + str(end_time - start_time)) + name, distance = faiss_find_face(l2_normalize(pred), index, database_name_list) + print(pred.shape) + if name != -1: + mo = r'[\u4e00-\u9fa5_a-zA-Z0-9]*' + name = re.match(mo, name) + return name.group(0), distance + else: + return "unknown", distance + + +# 从人脸库中找到传入的人脸列表中的所有人脸 +def findAll(imglist, model, index ,database_name_list, cpu_or_cuda): + imglist = torch.from_numpy(imglist) + imglist = imglist.to(torch.device("cuda" if cpu_or_cuda == "cuda" else "cpu")) + with torch.no_grad(): + name_list =[] + start_time = time.time() + pred = model(imglist) + end_time = time.time() + print("predOne time: " + str(end_time - start_time)) + pred = pred.cpu().numpy() + start_time = time.time() + #name_list = faiss_find_face(l2_normalize(pred), index, database_name_list) + for pr in pred: + pr = np.expand_dims(l2_normalize(pr), 0) + # #print(pr.shape) + name, distance = faiss_find_face(l2_normalize(pr), index, database_name_list) + #name_list.append(name+" "+str(distance)) + name_list.append(name) + # for pr in pred: + # name, distance = findmindistance(l2_normalize(pr), threshold=threshold, k_v=k_v) + # if name != -1: + # mo = r'[\u4e00-\u9fa5_a-zA-Z]*' + # name = re.match(mo, name) + # name_list.append(name.group(0) + str(distance)) + # else: + # name_list.append("unknown" + str(distance)) + end_time = time.time() + print("searchALL time: " + str(end_time - start_time)) + return name_list + + +# 提取为512维特征向量 +def embedding(order_img, model, cpu_or_cuda): + number = len(order_img) + order_img = torch.from_numpy(order_img) + order_img = order_img.to(torch.device("cuda" if cpu_or_cuda == "cuda" else "cpu")) + batch = 64 + emb_list = [] + now = 0 + with torch.no_grad(): + while now < number: + if now + batch < number: + emb = model(order_img[now:now + batch]) + else: + emb = model(order_img[now:]) + now = now + batch + emb = emb.cpu().numpy() + for em in emb: + emb_list.append(l2_normalize(em)) + # print("batch" + str(now)) + emb_list = np.array(emb_list) + return emb_list + + +# 处理聚类人脸文件夹,返回特征向量列表,文件名列表 +def get_claster_tmp_file_embedding(file_path, retinaface_model, retinaface_args, arcface_model, cpu_or_cuda): + img_name = os.listdir(file_path) + img_list = [] + for name in img_name: + all_face, box_and_point = detect_one(os.path.join(file_path, name), retinaface_model, retinaface_args) + img_list.append(all_face[0]) + img_list = np.array(img_list) + # print(img_list.shape) + emb_list = embedding(img_list, arcface_model, cpu_or_cuda) + return emb_list, img_name + + +# 同一个人聚为一类 +def cluster(emb_list, name_list): + all_claster = [] + cla = [] + in_claster_name = [] + img_number = len(emb_list) + for index, emb in enumerate(emb_list): + if name_list[index] in in_claster_name: + continue + for j in range(img_number - index - 1): + if findEuclideanDistance(emb, emb_list[index + 1 + j]) < threshold: + if name_list[index + 1 + j] not in in_claster_name: + cla.append(name_list[index + 1 + j]) + in_claster_name.append(name_list[index + 1 + j]) + cla.append(name_list[index]) + in_claster_name.append(name_list[index]) + all_claster.append(cla) + cla = [] + return all_claster + + +# 加载人脸识别模型 +def load_arcface_model(model_path, cpu_or_cuda): + if cpu_or_cuda == "trt": + model = TRTModule() + model.load_state_dict(torch.load('./model/arcface_trt.pth')) + elif cpu_or_cuda == "trt_new": + model = iresnet100() + model.load_state_dict(torch.load(model_path, map_location="cuda")) + model = model.eval() + model.to(torch.device("cuda")) + x = torch.ones((1, 3, 112, 112)).to(torch.device("cuda")) + model = torch2trt(model, [x], max_batch_size=4) + torch.save(model.state_dict(), './model/arcface_trt.pth') + else: + model = iresnet100() + model.load_state_dict(torch.load(model_path, map_location=cpu_or_cuda)) + model = model.eval() + model.to(torch.device("cuda" if cpu_or_cuda == "cuda" else "cpu")) + return model + + +# 对比两张人脸是否相同 +def face_verification(img1, img2, model, cpu_or_cuda): + img_list = np.concatenate((img1, img2), axis=0) + img_list = torch.from_numpy(img_list) + img_list = img_list.to(torch.device("cuda" if cpu_or_cuda == "cuda" else "cpu")) + with torch.no_grad(): + pred = model(img_list) + pred = pred.cpu().numpy() + distance = findEuclideanDistance(l2_normalize(pred[0]), l2_normalize(pred[1])) + # print("EuclideanDistance is :" + str(distance)) + if distance < threshold: + return 'same ',distance + else: + return 'different ', distance + + +if __name__ == '__main__': + cpu_or_cuda = "cuda" if torch.cuda.is_available() else "cpu" + arcface_model = load_arcface_model("./model/backbone100.pth", cpu_or_cuda=cpu_or_cuda) + # retinaface_args = set_retinaface_conf(cpu_or_cuda=cpu_or_cuda) + # retinaface_model = load_retinaface_model(retinaface_args) + # + # anti_spoofing_model_path = "model/anti_spoof_models" + # anti_model = load_anti_model(anti_spoofing_model_path, 0) + # + # k_v = load_npy("./Database/student.npy") + # 对比两张人脸 + # img1, box_and_point = detect_one("D:\Download\lfw\lfw\Aaron_Peirsol\Aaron_Peirsol_0001.jpg", retinaface_model, retinaface_args) + # img2, box_and_point = detect_one("D:\Download\lfw\lfw\Aaron_Peirsol\Aaron_Peirsol_0002.jpg", retinaface_model, retinaface_args) + # print(face_verification(img1, img2, arcface_model)) + + # img3 = load_image(r"D:\Download\out\alig_students\student.jpg") + # img3 = torch.from_numpy(img3) + # 单张人脸活体检测 + # img3, b_p = detect_one(r"C:\Users\ASUS\Desktop\face\IMG_20210525_113950.jpg", retinaface_model, retinaface_args) + # b = b_p[0] + # w = b[2] - b[0] + # h = b[3] - b[1] + # b[2] = w + # b[3] = h + # label, value = anti_spoofing("./img/recognition/000_0.bmp", "model/anti_spoof_models", 0, np.array(b[:4], int), anti_model) + # print(label,value) + # name = findOne(img3, arcface_model, k_v, cpu_or_cuda) + # print(name) + + # 人脸聚类 + # emb_list, name_list = get_claster_tmp_file_embedding("./img/cluster_tmp_file/face", retinaface_model, + # retinaface_args, arcface_model, cpu_or_cuda) + # print(cluster(emb_list, name_list)) + + # img3, box_and_point = detect_one("D:\Download\out\students\student.jpg", retinaface_model, retinaface_args) + # print(embedding(img3,arcface_model).shape) + + # 人脸库中增加一张人脸 + # add_one_to_database(img1,arcface_model,"Aaron_Peirsol","./Database/student.npy") + # name = findOne(img1, arcface_model, k_v) + # print(name) + + # 人脸库中批量增加人脸 + create_database_batch(r"D:\Download\out\alig_students_all", arcface_model, "./Database/sfz.npy") + + # 识别视频中的人脸 + # detect_video("software.mp4","out.avi",retinaface_model,arcface_model,k_v,retinaface_args) diff --git a/font.ttf b/font.ttf new file mode 100644 index 0000000..6f92880 Binary files /dev/null and b/font.ttf differ diff --git a/gender_age.py b/gender_age.py new file mode 100644 index 0000000..d13b1ec --- /dev/null +++ b/gender_age.py @@ -0,0 +1,98 @@ +import datetime +import mxnet as mx +import numpy as np +from retinaface_detect import detect_one, load_retinaface_model, set_retinaface_conf + + +# 年龄性别配置 +class ConfGenderModel(object): + def __init__(self, image_size, image, model, gpu, det): + self.image_size = image_size + self.image = image + self.gpu = gpu + self.model = model + self.det = det + + +# 实例化一个配置 +def set_gender_conf(): + args = ConfGenderModel(image_size='112,112', + image=r'C:\Users\ASUS\Desktop\man.png', + gpu=-1, + model='model/model,0', + det=0) + return args + + +# 加载性别年龄模型 +def load_gender_model(args, layer): + if args.gpu >= 0: + ctx = mx.gpu(args.gpu) + else: + ctx = mx.cpu() + _vec = args.image_size.split(',') + assert len(_vec) == 2 + image_size = (int(_vec[0]), int(_vec[1])) + + _vec = args.model.split(',') + assert len(_vec) == 2 + prefix = _vec[0] + epoch = int(_vec[1]) + print('loading', prefix, epoch) + sym, arg_params, aux_params = mx.model.load_checkpoint(prefix, epoch) + all_layers = sym.get_internals() + sym = all_layers[layer + '_output'] + model = mx.mod.Module(symbol=sym, context=ctx, label_names=None) + model.bind(data_shapes=[('data', (1, 3, image_size[0], image_size[1]))]) + model.set_params(arg_params, aux_params) + return model + + +# 前向推理 +def get_ga(model, img): + # print(data) + model.forward(img, is_train=False) + ret = model.get_outputs()[0].asnumpy() + g = ret[:, 0:2].flatten() + gender = np.argmax(g) + a = ret[:, 2:202].reshape((100, 2)) + a = np.argmax(a, axis=1) + age = int(sum(a)) + return gender, age + + +# 预测人脸列表中每个人的性别年龄 +def gender_age(img_list, gender_model): + gender_list = [] + age_list = [] + if len(img_list) == 0: + print("find no face") + else: + time_now = datetime.datetime.now() + img_list *= 127.5 + img_list += 127.5 + + for img in img_list: + img = np.expand_dims(img, axis=0) + img = mx.nd.array(img) + img = mx.io.DataBatch(data=(img,)) + gender, age = get_ga(gender_model, img) + if gender == 1: + gender_list.append("man") + else: + gender_list.append('woman') + age_list.append(age) + time_now2 = datetime.datetime.now() + diff = time_now2 - time_now + print('time cost', diff.total_seconds()) + return gender_list,age_list + + +if __name__ == "__main__": + args = set_gender_conf() + retinaface_args = set_retinaface_conf() + gender_model = load_gender_model(args, 'fc1') + retinaface_model = load_retinaface_model(retinaface_args) + img_list, box_and_point = detect_one(args.image, retinaface_model,retinaface_args) + gender_list, age_list = gender_age(img_list, gender_model) + print(gender_list) diff --git a/gender_model.py b/gender_model.py new file mode 100644 index 0000000..421af8a --- /dev/null +++ b/gender_model.py @@ -0,0 +1,49 @@ +import numpy as np +import mxnet as mx + + +# 加载性别年龄模型 +def get_model(ctx, image_size, model_str, layer): + _vec = model_str.split(',') + assert len(_vec) == 2 + prefix = _vec[0] + epoch = int(_vec[1]) + print('loading', prefix, epoch) + sym, arg_params, aux_params = mx.model.load_checkpoint(prefix, epoch) + all_layers = sym.get_internals() + sym = all_layers[layer + '_output'] + model = mx.mod.Module(symbol=sym, context=ctx, label_names=None) + model.bind(data_shapes=[('data', (1, 3, image_size[0], image_size[1]))]) + model.set_params(arg_params, aux_params) + return model + + +class GenderModel: + def __init__(self, args): + self.args = args + if args.gpu >= 0: + ctx = mx.gpu(args.gpu) + else: + ctx = mx.cpu() + _vec = args.image_size.split(',') + assert len(_vec) == 2 + image_size = (int(_vec[0]), int(_vec[1])) + self.model = None + if len(args.model) > 0: + self.model = get_model(ctx, image_size, args.model, 'fc1') + + self.det_minsize = 50 + self.det_threshold = [0.6, 0.7, 0.8] + # self.det_factor = 0.9 + self.image_size = image_size + + def get_ga(self, data): + # print(data) + self.model.forward(data, is_train=False) + ret = self.model.get_outputs()[0].asnumpy() + g = ret[:, 0:2].flatten() + gender = np.argmax(g) + a = ret[:, 2:202].reshape((100, 2)) + a = np.argmax(a, axis=1) + age = int(sum(a)) + return gender, age diff --git a/img/search/000_1.bmp b/img/search/000_1.bmp new file mode 100644 index 0000000..d4c77a5 Binary files /dev/null and b/img/search/000_1.bmp differ diff --git a/img/search/002_1.bmp b/img/search/002_1.bmp new file mode 100644 index 0000000..1e5ad7b Binary files /dev/null and b/img/search/002_1.bmp differ diff --git a/img/search/377_3.bmp b/img/search/377_3.bmp new file mode 100644 index 0000000..3d314b7 Binary files /dev/null and b/img/search/377_3.bmp differ diff --git a/img/search/face/000_0.bmp b/img/search/face/000_0.bmp new file mode 100644 index 0000000..75d84b6 Binary files /dev/null and b/img/search/face/000_0.bmp differ diff --git a/img/search/face/000_1.bmp b/img/search/face/000_1.bmp new file mode 100644 index 0000000..d4c77a5 Binary files /dev/null and b/img/search/face/000_1.bmp differ diff --git a/img/search/face/000_2.bmp b/img/search/face/000_2.bmp new file mode 100644 index 0000000..ecefec5 Binary files /dev/null and b/img/search/face/000_2.bmp differ diff --git a/img/search/face/000_3.bmp b/img/search/face/000_3.bmp new file mode 100644 index 0000000..78fd0e2 Binary files /dev/null and b/img/search/face/000_3.bmp differ diff --git a/img/search/face/000_4.bmp b/img/search/face/000_4.bmp new file mode 100644 index 0000000..2c5d50d Binary files /dev/null and b/img/search/face/000_4.bmp differ diff --git a/img/search/face/001_0.bmp b/img/search/face/001_0.bmp new file mode 100644 index 0000000..d201e49 Binary files /dev/null and b/img/search/face/001_0.bmp differ diff --git a/img/search/face/001_1.bmp b/img/search/face/001_1.bmp new file mode 100644 index 0000000..c13a006 Binary files /dev/null and b/img/search/face/001_1.bmp differ diff --git a/img/search/face/001_2.bmp b/img/search/face/001_2.bmp new file mode 100644 index 0000000..df7ca39 Binary files /dev/null and b/img/search/face/001_2.bmp differ diff --git a/img/search/face/001_3.bmp b/img/search/face/001_3.bmp new file mode 100644 index 0000000..c6f3ecd Binary files /dev/null and b/img/search/face/001_3.bmp differ diff --git a/img/search/face/001_4.bmp b/img/search/face/001_4.bmp new file mode 100644 index 0000000..16d1b39 Binary files /dev/null and b/img/search/face/001_4.bmp differ diff --git a/img/search/face/002_0.bmp b/img/search/face/002_0.bmp new file mode 100644 index 0000000..667917a Binary files /dev/null and b/img/search/face/002_0.bmp differ diff --git a/img/search/face/002_1.bmp b/img/search/face/002_1.bmp new file mode 100644 index 0000000..1e5ad7b Binary files /dev/null and b/img/search/face/002_1.bmp differ diff --git a/img/search/face/002_2.bmp b/img/search/face/002_2.bmp new file mode 100644 index 0000000..48359a6 Binary files /dev/null and b/img/search/face/002_2.bmp differ diff --git a/img/search/face/002_3.bmp b/img/search/face/002_3.bmp new file mode 100644 index 0000000..3bb2807 Binary files /dev/null and b/img/search/face/002_3.bmp differ diff --git a/img/search/face/002_4.bmp b/img/search/face/002_4.bmp new file mode 100644 index 0000000..555944e Binary files /dev/null and b/img/search/face/002_4.bmp differ diff --git a/img/search/face/003_0.bmp b/img/search/face/003_0.bmp new file mode 100644 index 0000000..17ba734 Binary files /dev/null and b/img/search/face/003_0.bmp differ diff --git a/img/search/face/003_1.bmp b/img/search/face/003_1.bmp new file mode 100644 index 0000000..6955c10 Binary files /dev/null and b/img/search/face/003_1.bmp differ diff --git a/img/search/face/003_2.bmp b/img/search/face/003_2.bmp new file mode 100644 index 0000000..fc945c9 Binary files /dev/null and b/img/search/face/003_2.bmp differ diff --git a/img/search/face/003_3.bmp b/img/search/face/003_3.bmp new file mode 100644 index 0000000..340d156 Binary files /dev/null and b/img/search/face/003_3.bmp differ diff --git a/img/search/face/003_4.bmp b/img/search/face/003_4.bmp new file mode 100644 index 0000000..284b89c Binary files /dev/null and b/img/search/face/003_4.bmp differ diff --git a/img/search/face/004_0.bmp b/img/search/face/004_0.bmp new file mode 100644 index 0000000..676125f Binary files /dev/null and b/img/search/face/004_0.bmp differ diff --git a/img/search/face/004_1.bmp b/img/search/face/004_1.bmp new file mode 100644 index 0000000..abefa6e Binary files /dev/null and b/img/search/face/004_1.bmp differ diff --git a/img/search/face/004_2.bmp b/img/search/face/004_2.bmp new file mode 100644 index 0000000..94bdac5 Binary files /dev/null and b/img/search/face/004_2.bmp differ diff --git a/img/search/face/004_3.bmp b/img/search/face/004_3.bmp new file mode 100644 index 0000000..df046a7 Binary files /dev/null and b/img/search/face/004_3.bmp differ diff --git a/img/search/face/004_4.bmp b/img/search/face/004_4.bmp new file mode 100644 index 0000000..ffcd27e Binary files /dev/null and b/img/search/face/004_4.bmp differ diff --git a/layers/__init__.py b/layers/__init__.py new file mode 100644 index 0000000..53a3f4b --- /dev/null +++ b/layers/__init__.py @@ -0,0 +1,2 @@ +from .functions import * +from .modules import * diff --git a/layers/__pycache__/__init__.cpython-38.pyc b/layers/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000..e1f3c64 Binary files /dev/null and b/layers/__pycache__/__init__.cpython-38.pyc differ diff --git a/layers/functions/__pycache__/prior_box.cpython-38.pyc b/layers/functions/__pycache__/prior_box.cpython-38.pyc new file mode 100644 index 0000000..f7049a4 Binary files /dev/null and b/layers/functions/__pycache__/prior_box.cpython-38.pyc differ diff --git a/layers/functions/prior_box.py b/layers/functions/prior_box.py new file mode 100644 index 0000000..80c7f85 --- /dev/null +++ b/layers/functions/prior_box.py @@ -0,0 +1,34 @@ +import torch +from itertools import product as product +import numpy as np +from math import ceil + + +class PriorBox(object): + def __init__(self, cfg, image_size=None, phase='train'): + super(PriorBox, self).__init__() + self.min_sizes = cfg['min_sizes'] + self.steps = cfg['steps'] + self.clip = cfg['clip'] + self.image_size = image_size + self.feature_maps = [[ceil(self.image_size[0]/step), ceil(self.image_size[1]/step)] for step in self.steps] + self.name = "s" + + def forward(self): + anchors = [] + for k, f in enumerate(self.feature_maps): + min_sizes = self.min_sizes[k] + for i, j in product(range(f[0]), range(f[1])): + for min_size in min_sizes: + s_kx = min_size / self.image_size[1] + s_ky = min_size / self.image_size[0] + dense_cx = [x * self.steps[k] / self.image_size[1] for x in [j + 0.5]] + dense_cy = [y * self.steps[k] / self.image_size[0] for y in [i + 0.5]] + for cy, cx in product(dense_cy, dense_cx): + anchors += [cx, cy, s_kx, s_ky] + + # back to torch land + output = torch.Tensor(anchors).view(-1, 4) + if self.clip: + output.clamp_(max=1, min=0) + return output diff --git a/layers/modules/__init__.py b/layers/modules/__init__.py new file mode 100644 index 0000000..cf24bdd --- /dev/null +++ b/layers/modules/__init__.py @@ -0,0 +1,3 @@ +from .multibox_loss import MultiBoxLoss + +__all__ = ['MultiBoxLoss'] diff --git a/layers/modules/__pycache__/__init__.cpython-38.pyc b/layers/modules/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000..5644757 Binary files /dev/null and b/layers/modules/__pycache__/__init__.cpython-38.pyc differ diff --git a/layers/modules/__pycache__/multibox_loss.cpython-38.pyc b/layers/modules/__pycache__/multibox_loss.cpython-38.pyc new file mode 100644 index 0000000..a011c52 Binary files /dev/null and b/layers/modules/__pycache__/multibox_loss.cpython-38.pyc differ diff --git a/layers/modules/multibox_loss.py b/layers/modules/multibox_loss.py new file mode 100644 index 0000000..0966204 --- /dev/null +++ b/layers/modules/multibox_loss.py @@ -0,0 +1,125 @@ +import torch +import torch.nn as nn +import torch.nn.functional as F +from torch.autograd import Variable +from utils.box_utils import match, log_sum_exp +from data import cfg_mnet +GPU = cfg_mnet['gpu_train'] + +class MultiBoxLoss(nn.Module): + """SSD Weighted Loss Function + Compute Targets: + 1) Produce Confidence Target Indices by matching ground truth boxes + with (default) 'priorboxes' that have jaccard index > threshold parameter + (default threshold: 0.5). + 2) Produce localization target by 'encoding' variance into offsets of ground + truth boxes and their matched 'priorboxes'. + 3) Hard negative mining to filter the excessive number of negative examples + that comes with using a large number of default bounding boxes. + (default negative:positive ratio 3:1) + Objective Loss: + L(x,c,l,g) = (Lconf(x, c) + αLloc(x,l,g)) / N + Where, Lconf is the CrossEntropy Loss and Lloc is the SmoothL1 Loss + weighted by α which is set to 1 by cross val. + Args: + c: class confidences, + l: predicted boxes, + g: ground truth boxes + N: number of matched default boxes + See: https://arxiv.org/pdf/1512.02325.pdf for more details. + """ + + def __init__(self, num_classes, overlap_thresh, prior_for_matching, bkg_label, neg_mining, neg_pos, neg_overlap, encode_target): + super(MultiBoxLoss, self).__init__() + self.num_classes = num_classes + self.threshold = overlap_thresh + self.background_label = bkg_label + self.encode_target = encode_target + self.use_prior_for_matching = prior_for_matching + self.do_neg_mining = neg_mining + self.negpos_ratio = neg_pos + self.neg_overlap = neg_overlap + self.variance = [0.1, 0.2] + + def forward(self, predictions, priors, targets): + """Multibox Loss + Args: + predictions (tuple): A tuple containing loc preds, conf preds, + and prior boxes from SSD net. + conf shape: torch.size(batch_size,num_priors,num_classes) + loc shape: torch.size(batch_size,num_priors,4) + priors shape: torch.size(num_priors,4) + + ground_truth (tensor): Ground truth boxes and labels for a batch, + shape: [batch_size,num_objs,5] (last idx is the label). + """ + + loc_data, conf_data, landm_data = predictions + priors = priors + num = loc_data.size(0) + num_priors = (priors.size(0)) + + # match priors (default boxes) and ground truth boxes + loc_t = torch.Tensor(num, num_priors, 4) + landm_t = torch.Tensor(num, num_priors, 10) + conf_t = torch.LongTensor(num, num_priors) + for idx in range(num): + truths = targets[idx][:, :4].data + labels = targets[idx][:, -1].data + landms = targets[idx][:, 4:14].data + defaults = priors.data + match(self.threshold, truths, defaults, self.variance, labels, landms, loc_t, conf_t, landm_t, idx) + if GPU: + loc_t = loc_t.cuda() + conf_t = conf_t.cuda() + landm_t = landm_t.cuda() + + zeros = torch.tensor(0).cuda() + # landm Loss (Smooth L1) + # Shape: [batch,num_priors,10] + pos1 = conf_t > zeros + num_pos_landm = pos1.long().sum(1, keepdim=True) + N1 = max(num_pos_landm.data.sum().float(), 1) + pos_idx1 = pos1.unsqueeze(pos1.dim()).expand_as(landm_data) + landm_p = landm_data[pos_idx1].view(-1, 10) + landm_t = landm_t[pos_idx1].view(-1, 10) + loss_landm = F.smooth_l1_loss(landm_p, landm_t, reduction='sum') + + + pos = conf_t != zeros + conf_t[pos] = 1 + + # Localization Loss (Smooth L1) + # Shape: [batch,num_priors,4] + pos_idx = pos.unsqueeze(pos.dim()).expand_as(loc_data) + loc_p = loc_data[pos_idx].view(-1, 4) + loc_t = loc_t[pos_idx].view(-1, 4) + loss_l = F.smooth_l1_loss(loc_p, loc_t, reduction='sum') + + # Compute max conf across batch for hard negative mining + batch_conf = conf_data.view(-1, self.num_classes) + loss_c = log_sum_exp(batch_conf) - batch_conf.gather(1, conf_t.view(-1, 1)) + + # Hard Negative Mining + loss_c[pos.view(-1, 1)] = 0 # filter out pos boxes for now + loss_c = loss_c.view(num, -1) + _, loss_idx = loss_c.sort(1, descending=True) + _, idx_rank = loss_idx.sort(1) + num_pos = pos.long().sum(1, keepdim=True) + num_neg = torch.clamp(self.negpos_ratio*num_pos, max=pos.size(1)-1) + neg = idx_rank < num_neg.expand_as(idx_rank) + + # Confidence Loss Including Positive and Negative Examples + pos_idx = pos.unsqueeze(2).expand_as(conf_data) + neg_idx = neg.unsqueeze(2).expand_as(conf_data) + conf_p = conf_data[(pos_idx+neg_idx).gt(0)].view(-1,self.num_classes) + targets_weighted = conf_t[(pos+neg).gt(0)] + loss_c = F.cross_entropy(conf_p, targets_weighted, reduction='sum') + + # Sum of losses: L(x,c,l,g) = (Lconf(x, c) + αLloc(x,l,g)) / N + N = max(num_pos.data.sum().float(), 1) + loss_l /= N + loss_c /= N + loss_landm /= N1 + + return loss_l, loss_c, loss_landm diff --git a/losses.py b/losses.py new file mode 100644 index 0000000..b96ed65 --- /dev/null +++ b/losses.py @@ -0,0 +1,33 @@ +import torch +from torch import nn + + +class CosFace(nn.Module): + def __init__(self, s=64.0, m=0.40): + super(CosFace, self).__init__() + self.s = s + self.m = m + + def forward(self, cosine, label): + index = torch.where(label != -1)[0] + m_hot = torch.zeros(index.size()[0], cosine.size()[1], device=cosine.device) + m_hot.scatter_(1, label[index, None], self.m) + cosine[index] -= m_hot + ret = cosine * self.s + return ret + + +class ArcFace(nn.Module): + def __init__(self, s=64.0, m=0.5): + super(ArcFace, self).__init__() + self.s = s + self.m = m + + def forward(self, cosine: torch.Tensor, label): + index = torch.where(label != -1)[0] + m_hot = torch.zeros(index.size()[0], cosine.size()[1], device=cosine.device) + m_hot.scatter_(1, label[index, None], self.m) + cosine.acos_() + cosine[index] += m_hot + cosine.cos_().mul_(self.s) + return cosine diff --git a/model/anti_spoof_models/2.7_80x80_MiniFASNetV2.pth b/model/anti_spoof_models/2.7_80x80_MiniFASNetV2.pth new file mode 100644 index 0000000..47c4af2 Binary files /dev/null and b/model/anti_spoof_models/2.7_80x80_MiniFASNetV2.pth differ diff --git a/model/anti_spoof_models/4_0_0_80x80_MiniFASNetV1SE.pth b/model/anti_spoof_models/4_0_0_80x80_MiniFASNetV1SE.pth new file mode 100644 index 0000000..55a25b3 Binary files /dev/null and b/model/anti_spoof_models/4_0_0_80x80_MiniFASNetV1SE.pth differ diff --git a/model/backbone100.pth b/model/backbone100.pth new file mode 100644 index 0000000..81ebb87 Binary files /dev/null and b/model/backbone100.pth differ diff --git a/model/log b/model/log new file mode 100644 index 0000000..06cc63b --- /dev/null +++ b/model/log @@ -0,0 +1,7094 @@ +gpu num: 4 +num_layers 50 +image_size [112, 112] +num_classes 85742 +Called with argument: Namespace(batch_size=512, beta=1000.0, beta_freeze=0, beta_min=5.0, center_alpha=0.5, center_scale=0.003, ckpt=1, coco_scale=8.679543201625835, ctx_num=4, data_dir='/cache/jiaguo/faces_ms1mr_112x112', easy_margin=0, emb_size=512, end_epoch=100000, gamma=0.12, image_channel=3, image_h=112, image_w=112, images_per_identity=0, incay=0.0, loss_type=4, lr=0.1, lr_steps='50000,80000,100000', margin=4, margin_m=0.5, margin_s=64.0, margin_verbose=2000, max_steps=0, mom=0.9, network='r50', num_classes=85742, num_layers=50, patch='0_0_96_112_0', per_batch_size=128, power=1.0, prefix='../model-r50-am-lfw/model', pretrained='', rand_mirror=1, rescale_threshold=0, retrain=False, scale=0.9993, target='cfp_ff,cfp_fp,agedb_30,lfw', triplet_alpha=0.3, triplet_bag_size=3600, triplet_max_ap=0.0, use_deformable=0, use_val=False, verbose=2000, version_input=1, version_output='E', version_se=0, version_unit=3, wd=0.0005) +init resnet 50 +0 1 E 3 +INFO:root:loading recordio /cache/jiaguo/faces_ms1mr_112x112/train.rec... +header0 label [ 3850179. 3935921.] +id2range 85742 +rand_mirror 1 +[11:19:40] src/engine/engine.cc:54: MXNet start using engine: ThreadedEnginePerDevice +loading bin 1000 +loading bin 2000 +loading bin 3000 +loading bin 4000 +loading bin 5000 +loading bin 6000 +loading bin 7000 +loading bin 8000 +loading bin 9000 +loading bin 10000 +loading bin 11000 +loading bin 12000 +loading bin 13000 +loading bin 14000 +(14000L, 3L, 112L, 112L) +ver cfp_ff +loading bin 1000 +loading bin 2000 +loading bin 3000 +loading bin 4000 +loading bin 5000 +loading bin 6000 +loading bin 7000 +loading bin 8000 +loading bin 9000 +loading bin 10000 +loading bin 11000 +loading bin 12000 +loading bin 13000 +loading bin 14000 +(14000L, 3L, 112L, 112L) +ver cfp_fp +loading bin 1000 +loading bin 2000 +loading bin 3000 +loading bin 4000 +loading bin 5000 +loading bin 6000 +loading bin 7000 +loading bin 8000 +loading bin 9000 +loading bin 10000 +loading bin 11000 +loading bin 12000 +(12000L, 3L, 112L, 112L) +ver agedb_30 +loading bin 1000 +loading bin 2000 +loading bin 3000 +loading bin 4000 +loading bin 5000 +loading bin 6000 +loading bin 7000 +loading bin 8000 +loading bin 9000 +loading bin 10000 +loading bin 11000 +loading bin 12000 +(12000L, 3L, 112L, 112L) +ver lfw +lr_steps [50000, 80000, 100000] +/root/codebase/mxnet/python/mxnet/module/base_module.py:466: UserWarning: Optimizer created manually outside Module but rescale_grad is not normalized to 1.0/batch_size/num_workers (0.25 vs. 0.001953125). Is this intended? + optimizer_params=optimizer_params) +call reset() +[1][MARGIN]0.000434,-0.478536 +INFO:root:Epoch[0] Batch [20] Speed: 644.79 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [40] Speed: 634.07 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [60] Speed: 649.95 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [80] Speed: 649.72 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [100] Speed: 650.81 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [120] Speed: 649.96 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [140] Speed: 651.57 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [160] Speed: 650.47 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [180] Speed: 650.82 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [200] Speed: 651.51 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [220] Speed: 652.71 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [240] Speed: 653.87 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [260] Speed: 654.40 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [280] Speed: 640.71 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [300] Speed: 653.38 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [320] Speed: 655.12 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [340] Speed: 652.97 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [360] Speed: 655.28 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [380] Speed: 656.21 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [400] Speed: 656.65 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [420] Speed: 656.34 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [440] Speed: 656.27 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [460] Speed: 657.00 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [480] Speed: 658.23 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [500] Speed: 656.69 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [520] Speed: 655.78 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [540] Speed: 659.12 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [560] Speed: 658.79 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [580] Speed: 658.13 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [600] Speed: 657.53 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [620] Speed: 660.71 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [640] Speed: 663.04 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [660] Speed: 662.37 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [680] Speed: 662.88 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [700] Speed: 659.24 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [720] Speed: 663.00 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [740] Speed: 648.51 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [760] Speed: 664.60 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [780] Speed: 665.42 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [800] Speed: 665.97 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [820] Speed: 668.72 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [840] Speed: 667.42 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [860] Speed: 666.18 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [880] Speed: 666.68 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [900] Speed: 666.40 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [920] Speed: 667.43 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [940] Speed: 669.26 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [960] Speed: 670.06 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [980] Speed: 668.92 samples/sec acc=0.000000 +lr-batch-epoch: 0.1 999 0 +INFO:root:Epoch[0] Batch [1000] Speed: 669.35 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1020] Speed: 669.08 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1040] Speed: 669.27 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1060] Speed: 671.89 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1080] Speed: 668.86 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1100] Speed: 670.39 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1120] Speed: 670.10 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1140] Speed: 671.93 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1160] Speed: 671.13 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1180] Speed: 670.72 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1200] Speed: 669.89 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1220] Speed: 672.17 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1240] Speed: 669.87 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1260] Speed: 673.92 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1280] Speed: 671.42 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1300] Speed: 669.78 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1320] Speed: 659.88 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1340] Speed: 671.13 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1360] Speed: 673.34 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1380] Speed: 670.05 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1400] Speed: 669.00 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1420] Speed: 672.09 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1440] Speed: 670.99 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1460] Speed: 671.36 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1480] Speed: 670.33 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1500] Speed: 670.73 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1520] Speed: 670.46 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1540] Speed: 672.16 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1560] Speed: 674.16 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1580] Speed: 672.88 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1600] Speed: 672.23 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1620] Speed: 673.29 samples/sec acc=0.000098 +INFO:root:Epoch[0] Batch [1640] Speed: 673.69 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1660] Speed: 673.66 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1680] Speed: 674.84 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1700] Speed: 674.14 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1720] Speed: 673.76 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1740] Speed: 674.11 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1760] Speed: 672.24 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1780] Speed: 673.66 samples/sec acc=0.000195 +INFO:root:Epoch[0] Batch [1800] Speed: 673.61 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1820] Speed: 674.43 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1840] Speed: 673.21 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1860] Speed: 674.09 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1880] Speed: 675.00 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1900] Speed: 675.02 samples/sec acc=0.000293 +INFO:root:Epoch[0] Batch [1920] Speed: 674.10 samples/sec acc=0.000000 +INFO:root:Epoch[0] Batch [1940] Speed: 675.82 samples/sec acc=0.000586 +INFO:root:Epoch[0] Batch [1960] Speed: 674.90 samples/sec acc=0.000293 +INFO:root:Epoch[0] Batch [1980] Speed: 662.58 samples/sec acc=0.000293 +[2000][MARGIN]0.318108,-0.171479 +lr-batch-epoch: 0.1 1999 0 +testing verification.. +(14000, 512) +infer time 22.275142 +[cfp_ff][2000]XNorm: 21.556408 +[cfp_ff][2000]Accuracy-Flip: 0.89814+-0.01236 +testing verification.. +(14000, 512) +infer time 17.385799 +[cfp_fp][2000]XNorm: 20.292884 +[cfp_fp][2000]Accuracy-Flip: 0.69000+-0.01651 +testing verification.. +(12000, 512) +infer time 14.193146 +[agedb_30][2000]XNorm: 21.596348 +[agedb_30][2000]Accuracy-Flip: 0.71433+-0.01589 +testing verification.. +(12000, 512) +infer time 13.689882 +[lfw][2000]XNorm: 22.501038 +[lfw][2000]Accuracy-Flip: 0.92283+-0.01750 +[2000]Accuracy-Highest: 0.92283 +INFO:root:Epoch[0] Batch [2000] Speed: 98.00 samples/sec acc=0.000293 +INFO:root:Epoch[0] Batch [2020] Speed: 673.67 samples/sec acc=0.000293 +INFO:root:Epoch[0] Batch [2040] Speed: 674.79 samples/sec acc=0.000195 +INFO:root:Epoch[0] Batch [2060] Speed: 673.67 samples/sec acc=0.000195 +INFO:root:Epoch[0] Batch [2080] Speed: 676.43 samples/sec acc=0.000391 +INFO:root:Epoch[0] Batch [2100] Speed: 674.95 samples/sec acc=0.000293 +INFO:root:Epoch[0] Batch [2120] Speed: 674.58 samples/sec acc=0.000098 +INFO:root:Epoch[0] Batch [2140] Speed: 675.61 samples/sec acc=0.000586 +INFO:root:Epoch[0] Batch [2160] Speed: 675.09 samples/sec acc=0.000586 +INFO:root:Epoch[0] Batch [2180] Speed: 676.43 samples/sec acc=0.000781 +INFO:root:Epoch[0] Batch [2200] Speed: 675.79 samples/sec acc=0.000195 +INFO:root:Epoch[0] Batch [2220] Speed: 675.75 samples/sec acc=0.000488 +INFO:root:Epoch[0] Batch [2240] Speed: 675.89 samples/sec acc=0.001270 +INFO:root:Epoch[0] Batch [2260] Speed: 676.21 samples/sec acc=0.000684 +INFO:root:Epoch[0] Batch [2280] Speed: 675.04 samples/sec acc=0.000781 +INFO:root:Epoch[0] Batch [2300] Speed: 676.03 samples/sec acc=0.001172 +INFO:root:Epoch[0] Batch [2320] Speed: 676.00 samples/sec acc=0.001074 +INFO:root:Epoch[0] Batch [2340] Speed: 675.01 samples/sec acc=0.001465 +INFO:root:Epoch[0] Batch [2360] Speed: 675.63 samples/sec acc=0.001367 +INFO:root:Epoch[0] Batch [2380] Speed: 674.71 samples/sec acc=0.000879 +INFO:root:Epoch[0] Batch [2400] Speed: 675.81 samples/sec acc=0.001758 +INFO:root:Epoch[0] Batch [2420] Speed: 675.55 samples/sec acc=0.001367 +INFO:root:Epoch[0] Batch [2440] Speed: 675.67 samples/sec acc=0.001660 +INFO:root:Epoch[0] Batch [2460] Speed: 675.68 samples/sec acc=0.001465 +INFO:root:Epoch[0] Batch [2480] Speed: 674.96 samples/sec acc=0.003125 +INFO:root:Epoch[0] Batch [2500] Speed: 675.34 samples/sec acc=0.002344 +INFO:root:Epoch[0] Batch [2520] Speed: 675.26 samples/sec acc=0.002441 +INFO:root:Epoch[0] Batch [2540] Speed: 674.46 samples/sec acc=0.002539 +INFO:root:Epoch[0] Batch [2560] Speed: 676.14 samples/sec acc=0.003223 +INFO:root:Epoch[0] Batch [2580] Speed: 675.05 samples/sec acc=0.002539 +INFO:root:Epoch[0] Batch [2600] Speed: 676.11 samples/sec acc=0.003223 +INFO:root:Epoch[0] Batch [2620] Speed: 675.14 samples/sec acc=0.004004 +INFO:root:Epoch[0] Batch [2640] Speed: 666.70 samples/sec acc=0.003613 +INFO:root:Epoch[0] Batch [2660] Speed: 675.77 samples/sec acc=0.004395 +INFO:root:Epoch[0] Batch [2680] Speed: 676.31 samples/sec acc=0.004199 +INFO:root:Epoch[0] Batch [2700] Speed: 675.34 samples/sec acc=0.005957 +INFO:root:Epoch[0] Batch [2720] Speed: 675.18 samples/sec acc=0.003809 +INFO:root:Epoch[0] Batch [2740] Speed: 675.65 samples/sec acc=0.004492 +INFO:root:Epoch[0] Batch [2760] Speed: 675.55 samples/sec acc=0.006641 +INFO:root:Epoch[0] Batch [2780] Speed: 675.93 samples/sec acc=0.005664 +INFO:root:Epoch[0] Batch [2800] Speed: 676.44 samples/sec acc=0.006836 +INFO:root:Epoch[0] Batch [2820] Speed: 676.61 samples/sec acc=0.006348 +INFO:root:Epoch[0] Batch [2840] Speed: 677.42 samples/sec acc=0.008105 +INFO:root:Epoch[0] Batch [2860] Speed: 675.81 samples/sec acc=0.007715 +INFO:root:Epoch[0] Batch [2880] Speed: 676.39 samples/sec acc=0.008789 +INFO:root:Epoch[0] Batch [2900] Speed: 675.64 samples/sec acc=0.006934 +INFO:root:Epoch[0] Batch [2920] Speed: 675.39 samples/sec acc=0.007227 +INFO:root:Epoch[0] Batch [2940] Speed: 675.92 samples/sec acc=0.008398 +INFO:root:Epoch[0] Batch [2960] Speed: 677.12 samples/sec acc=0.010645 +INFO:root:Epoch[0] Batch [2980] Speed: 675.77 samples/sec acc=0.009668 +lr-batch-epoch: 0.1 2999 0 +INFO:root:Epoch[0] Batch [3000] Speed: 677.35 samples/sec acc=0.008984 +INFO:root:Epoch[0] Batch [3020] Speed: 676.25 samples/sec acc=0.009375 +INFO:root:Epoch[0] Batch [3040] Speed: 676.78 samples/sec acc=0.011914 +INFO:root:Epoch[0] Batch [3060] Speed: 677.34 samples/sec acc=0.011328 +INFO:root:Epoch[0] Batch [3080] Speed: 676.81 samples/sec acc=0.012402 +INFO:root:Epoch[0] Batch [3100] Speed: 676.99 samples/sec acc=0.012598 +INFO:root:Epoch[0] Batch [3120] Speed: 676.19 samples/sec acc=0.012598 +INFO:root:Epoch[0] Batch [3140] Speed: 677.12 samples/sec acc=0.014063 +INFO:root:Epoch[0] Batch [3160] Speed: 676.20 samples/sec acc=0.013184 +INFO:root:Epoch[0] Batch [3180] Speed: 676.86 samples/sec acc=0.014258 +INFO:root:Epoch[0] Batch [3200] Speed: 676.69 samples/sec acc=0.012988 +INFO:root:Epoch[0] Batch [3220] Speed: 676.08 samples/sec acc=0.015625 +INFO:root:Epoch[0] Batch [3240] Speed: 676.61 samples/sec acc=0.012598 +INFO:root:Epoch[0] Batch [3260] Speed: 677.18 samples/sec acc=0.016016 +INFO:root:Epoch[0] Batch [3280] Speed: 676.36 samples/sec acc=0.014844 +INFO:root:Epoch[0] Batch [3300] Speed: 668.66 samples/sec acc=0.014648 +INFO:root:Epoch[0] Batch [3320] Speed: 676.78 samples/sec acc=0.016797 +INFO:root:Epoch[0] Batch [3340] Speed: 677.91 samples/sec acc=0.017285 +INFO:root:Epoch[0] Batch [3360] Speed: 676.52 samples/sec acc=0.019824 +INFO:root:Epoch[0] Batch [3380] Speed: 676.83 samples/sec acc=0.018750 +INFO:root:Epoch[0] Batch [3400] Speed: 675.56 samples/sec acc=0.015625 +INFO:root:Epoch[0] Batch [3420] Speed: 677.13 samples/sec acc=0.016992 +INFO:root:Epoch[0] Batch [3440] Speed: 676.76 samples/sec acc=0.021094 +INFO:root:Epoch[0] Batch [3460] Speed: 675.81 samples/sec acc=0.021484 +INFO:root:Epoch[0] Batch [3480] Speed: 676.76 samples/sec acc=0.019336 +INFO:root:Epoch[0] Batch [3500] Speed: 675.75 samples/sec acc=0.018457 +INFO:root:Epoch[0] Batch [3520] Speed: 675.31 samples/sec acc=0.019434 +INFO:root:Epoch[0] Batch [3540] Speed: 676.22 samples/sec acc=0.018359 +INFO:root:Epoch[0] Batch [3560] Speed: 675.88 samples/sec acc=0.024219 +INFO:root:Epoch[0] Batch [3580] Speed: 676.76 samples/sec acc=0.017285 +INFO:root:Epoch[0] Batch [3600] Speed: 678.39 samples/sec acc=0.018457 +INFO:root:Epoch[0] Batch [3620] Speed: 677.13 samples/sec acc=0.022949 +INFO:root:Epoch[0] Batch [3640] Speed: 677.37 samples/sec acc=0.023730 +INFO:root:Epoch[0] Batch [3660] Speed: 677.03 samples/sec acc=0.021484 +INFO:root:Epoch[0] Batch [3680] Speed: 677.22 samples/sec acc=0.024414 +INFO:root:Epoch[0] Batch [3700] Speed: 677.14 samples/sec acc=0.025586 +INFO:root:Epoch[0] Batch [3720] Speed: 677.20 samples/sec acc=0.022559 +INFO:root:Epoch[0] Batch [3740] Speed: 677.84 samples/sec acc=0.021973 +INFO:root:Epoch[0] Batch [3760] Speed: 677.04 samples/sec acc=0.023438 +INFO:root:Epoch[0] Batch [3780] Speed: 676.00 samples/sec acc=0.023730 +INFO:root:Epoch[0] Batch [3800] Speed: 677.31 samples/sec acc=0.026953 +INFO:root:Epoch[0] Batch [3820] Speed: 676.48 samples/sec acc=0.025195 +INFO:root:Epoch[0] Batch [3840] Speed: 675.81 samples/sec acc=0.027148 +INFO:root:Epoch[0] Batch [3860] Speed: 676.56 samples/sec acc=0.027441 +INFO:root:Epoch[0] Batch [3880] Speed: 676.52 samples/sec acc=0.026367 +INFO:root:Epoch[0] Batch [3900] Speed: 677.22 samples/sec acc=0.026270 +INFO:root:Epoch[0] Batch [3920] Speed: 675.63 samples/sec acc=0.025391 +INFO:root:Epoch[0] Batch [3940] Speed: 677.07 samples/sec acc=0.026660 +INFO:root:Epoch[0] Batch [3960] Speed: 676.32 samples/sec acc=0.030078 +INFO:root:Epoch[0] Batch [3980] Speed: 675.38 samples/sec acc=0.027734 +[4000][MARGIN]0.635072,0.194337 +lr-batch-epoch: 0.1 3999 0 +testing verification.. +(14000, 512) +infer time 18.636469 +[cfp_ff][4000]XNorm: 19.935919 +[cfp_ff][4000]Accuracy-Flip: 0.97486+-0.00576 +testing verification.. +(14000, 512) +infer time 17.165106 +[cfp_fp][4000]XNorm: 16.943145 +[cfp_fp][4000]Accuracy-Flip: 0.77571+-0.01934 +testing verification.. +(12000, 512) +infer time 13.460029 +[agedb_30][4000]XNorm: 19.915963 +[agedb_30][4000]Accuracy-Flip: 0.87317+-0.02042 +testing verification.. +(12000, 512) +infer time 14.412261 +[lfw][4000]XNorm: 20.575942 +[lfw][4000]Accuracy-Flip: 0.97883+-0.00628 +[4000]Accuracy-Highest: 0.97883 +INFO:root:Epoch[0] Batch [4000] Speed: 100.99 samples/sec acc=0.031152 +INFO:root:Epoch[0] Batch [4020] Speed: 670.46 samples/sec acc=0.029102 +INFO:root:Epoch[0] Batch [4040] Speed: 676.63 samples/sec acc=0.027930 +INFO:root:Epoch[0] Batch [4060] Speed: 677.21 samples/sec acc=0.029102 +INFO:root:Epoch[0] Batch [4080] Speed: 677.37 samples/sec acc=0.027832 +INFO:root:Epoch[0] Batch [4100] Speed: 675.95 samples/sec acc=0.030469 +INFO:root:Epoch[0] Batch [4120] Speed: 679.02 samples/sec acc=0.030762 +INFO:root:Epoch[0] Batch [4140] Speed: 678.00 samples/sec acc=0.029297 +INFO:root:Epoch[0] Batch [4160] Speed: 677.56 samples/sec acc=0.033301 +INFO:root:Epoch[0] Batch [4180] Speed: 677.75 samples/sec acc=0.028320 +INFO:root:Epoch[0] Batch [4200] Speed: 677.43 samples/sec acc=0.033984 +INFO:root:Epoch[0] Batch [4220] Speed: 678.17 samples/sec acc=0.029687 +INFO:root:Epoch[0] Batch [4240] Speed: 676.25 samples/sec acc=0.031250 +INFO:root:Epoch[0] Batch [4260] Speed: 676.69 samples/sec acc=0.030176 +INFO:root:Epoch[0] Batch [4280] Speed: 675.17 samples/sec acc=0.035937 +INFO:root:Epoch[0] Batch [4300] Speed: 676.69 samples/sec acc=0.037695 +INFO:root:Epoch[0] Batch [4320] Speed: 676.37 samples/sec acc=0.033203 +INFO:root:Epoch[0] Batch [4340] Speed: 677.01 samples/sec acc=0.032617 +INFO:root:Epoch[0] Batch [4360] Speed: 678.14 samples/sec acc=0.034961 +INFO:root:Epoch[0] Batch [4380] Speed: 678.45 samples/sec acc=0.034180 +INFO:root:Epoch[0] Batch [4400] Speed: 678.02 samples/sec acc=0.033691 +INFO:root:Epoch[0] Batch [4420] Speed: 677.47 samples/sec acc=0.034082 +INFO:root:Epoch[0] Batch [4440] Speed: 678.48 samples/sec acc=0.037793 +INFO:root:Epoch[0] Batch [4460] Speed: 678.17 samples/sec acc=0.034375 +INFO:root:Epoch[0] Batch [4480] Speed: 677.33 samples/sec acc=0.035449 +INFO:root:Epoch[0] Batch [4500] Speed: 677.29 samples/sec acc=0.035742 +INFO:root:Epoch[0] Batch [4520] Speed: 676.83 samples/sec acc=0.034766 +INFO:root:Epoch[0] Batch [4540] Speed: 678.16 samples/sec acc=0.038965 +INFO:root:Epoch[0] Batch [4560] Speed: 678.53 samples/sec acc=0.034277 +INFO:root:Epoch[0] Batch [4580] Speed: 677.40 samples/sec acc=0.037500 +INFO:root:Epoch[0] Batch [4600] Speed: 675.07 samples/sec acc=0.035840 +INFO:root:Epoch[0] Batch [4620] Speed: 677.33 samples/sec acc=0.036621 +INFO:root:Epoch[0] Batch [4640] Speed: 676.37 samples/sec acc=0.039453 +INFO:root:Epoch[0] Batch [4660] Speed: 676.62 samples/sec acc=0.034473 +INFO:root:Epoch[0] Batch [4680] Speed: 677.97 samples/sec acc=0.038379 +INFO:root:Epoch[0] Batch [4700] Speed: 677.84 samples/sec acc=0.037598 +INFO:root:Epoch[0] Batch [4720] Speed: 677.82 samples/sec acc=0.037012 +INFO:root:Epoch[0] Batch [4740] Speed: 667.47 samples/sec acc=0.043164 +INFO:root:Epoch[0] Batch [4760] Speed: 677.44 samples/sec acc=0.041797 +INFO:root:Epoch[0] Batch [4780] Speed: 679.78 samples/sec acc=0.045215 +INFO:root:Epoch[0] Batch [4800] Speed: 679.15 samples/sec acc=0.041504 +INFO:root:Epoch[0] Batch [4820] Speed: 661.68 samples/sec acc=0.039355 +INFO:root:Epoch[0] Batch [4840] Speed: 661.76 samples/sec acc=0.041797 +INFO:root:Epoch[0] Batch [4860] Speed: 661.89 samples/sec acc=0.040234 +INFO:root:Epoch[0] Batch [4880] Speed: 662.45 samples/sec acc=0.041406 +INFO:root:Epoch[0] Batch [4900] Speed: 660.34 samples/sec acc=0.043066 +INFO:root:Epoch[0] Batch [4920] Speed: 661.82 samples/sec acc=0.039941 +INFO:root:Epoch[0] Batch [4940] Speed: 661.75 samples/sec acc=0.039453 +INFO:root:Epoch[0] Batch [4960] Speed: 661.17 samples/sec acc=0.043359 +INFO:root:Epoch[0] Batch [4980] Speed: 661.79 samples/sec acc=0.040625 +lr-batch-epoch: 0.1 4999 0 +INFO:root:Epoch[0] Batch [5000] Speed: 661.08 samples/sec acc=0.043652 +INFO:root:Epoch[0] Batch [5020] Speed: 662.01 samples/sec acc=0.042188 +INFO:root:Epoch[0] Batch [5040] Speed: 661.66 samples/sec acc=0.042090 +INFO:root:Epoch[0] Batch [5060] Speed: 662.41 samples/sec acc=0.044824 +INFO:root:Epoch[0] Batch [5080] Speed: 661.84 samples/sec acc=0.043848 +INFO:root:Epoch[0] Batch [5100] Speed: 661.70 samples/sec acc=0.044824 +INFO:root:Epoch[0] Batch [5120] Speed: 662.14 samples/sec acc=0.046777 +INFO:root:Epoch[0] Batch [5140] Speed: 660.41 samples/sec acc=0.048535 +INFO:root:Epoch[0] Batch [5160] Speed: 662.28 samples/sec acc=0.043066 +INFO:root:Epoch[0] Batch [5180] Speed: 662.27 samples/sec acc=0.049316 +INFO:root:Epoch[0] Batch [5200] Speed: 662.37 samples/sec acc=0.043457 +INFO:root:Epoch[0] Batch [5220] Speed: 660.97 samples/sec acc=0.044238 +INFO:root:Epoch[0] Batch [5240] Speed: 660.86 samples/sec acc=0.045801 +INFO:root:Epoch[0] Batch [5260] Speed: 662.95 samples/sec acc=0.049609 +INFO:root:Epoch[0] Batch [5280] Speed: 661.55 samples/sec acc=0.043359 +INFO:root:Epoch[0] Batch [5300] Speed: 661.68 samples/sec acc=0.046777 +INFO:root:Epoch[0] Batch [5320] Speed: 662.14 samples/sec acc=0.047461 +INFO:root:Epoch[0] Batch [5340] Speed: 660.87 samples/sec acc=0.047266 +INFO:root:Epoch[0] Batch [5360] Speed: 661.63 samples/sec acc=0.051562 +INFO:root:Epoch[0] Batch [5380] Speed: 662.28 samples/sec acc=0.046777 +INFO:root:Epoch[0] Batch [5400] Speed: 662.36 samples/sec acc=0.049609 +INFO:root:Epoch[0] Batch [5420] Speed: 661.43 samples/sec acc=0.046191 +INFO:root:Epoch[0] Batch [5440] Speed: 662.07 samples/sec acc=0.049805 +INFO:root:Epoch[0] Batch [5460] Speed: 662.13 samples/sec acc=0.046875 +INFO:root:Epoch[0] Batch [5480] Speed: 662.57 samples/sec acc=0.049512 +INFO:root:Epoch[0] Batch [5500] Speed: 677.52 samples/sec acc=0.047363 +INFO:root:Epoch[0] Batch [5520] Speed: 679.41 samples/sec acc=0.048242 +INFO:root:Epoch[0] Batch [5540] Speed: 679.69 samples/sec acc=0.050781 +INFO:root:Epoch[0] Batch [5560] Speed: 678.48 samples/sec acc=0.049512 +INFO:root:Epoch[0] Batch [5580] Speed: 676.77 samples/sec acc=0.050977 +INFO:root:Epoch[0] Batch [5600] Speed: 678.05 samples/sec acc=0.051953 +INFO:root:Epoch[0] Batch [5620] Speed: 679.09 samples/sec acc=0.050586 +INFO:root:Epoch[0] Batch [5640] Speed: 678.14 samples/sec acc=0.046680 +INFO:root:Epoch[0] Batch [5660] Speed: 678.66 samples/sec acc=0.052344 +INFO:root:Epoch[0] Batch [5680] Speed: 677.87 samples/sec acc=0.052441 +INFO:root:Epoch[0] Batch [5700] Speed: 677.25 samples/sec acc=0.052051 +INFO:root:Epoch[0] Batch [5720] Speed: 678.25 samples/sec acc=0.053516 +INFO:root:Epoch[0] Batch [5740] Speed: 675.71 samples/sec acc=0.056152 +INFO:root:Epoch[0] Batch [5760] Speed: 679.53 samples/sec acc=0.051953 +INFO:root:Epoch[0] Batch [5780] Speed: 678.92 samples/sec acc=0.052930 +INFO:root:Epoch[0] Batch [5800] Speed: 677.03 samples/sec acc=0.052148 +INFO:root:Epoch[0] Batch [5820] Speed: 676.98 samples/sec acc=0.053027 +INFO:root:Epoch[0] Batch [5840] Speed: 678.34 samples/sec acc=0.052344 +INFO:root:Epoch[0] Batch [5860] Speed: 678.96 samples/sec acc=0.052930 +INFO:root:Epoch[0] Batch [5880] Speed: 677.13 samples/sec acc=0.055957 +INFO:root:Epoch[0] Batch [5900] Speed: 677.95 samples/sec acc=0.056152 +INFO:root:Epoch[0] Batch [5920] Speed: 677.03 samples/sec acc=0.051367 +INFO:root:Epoch[0] Batch [5940] Speed: 677.81 samples/sec acc=0.056250 +INFO:root:Epoch[0] Batch [5960] Speed: 677.87 samples/sec acc=0.052832 +INFO:root:Epoch[0] Batch [5980] Speed: 678.27 samples/sec acc=0.054102 +[6000][MARGIN]0.638322,0.196974 +lr-batch-epoch: 0.1 5999 0 +testing verification.. +(14000, 512) +infer time 20.587736 +[cfp_ff][6000]XNorm: 22.175584 +[cfp_ff][6000]Accuracy-Flip: 0.98514+-0.00583 +testing verification.. +(14000, 512) +infer time 21.94076 +[cfp_fp][6000]XNorm: 18.532788 +[cfp_fp][6000]Accuracy-Flip: 0.81614+-0.01800 +testing verification.. +(12000, 512) +infer time 17.659599 +[agedb_30][6000]XNorm: 22.109134 +[agedb_30][6000]Accuracy-Flip: 0.91667+-0.02018 +testing verification.. +(12000, 512) +infer time 18.542575 +[lfw][6000]XNorm: 22.595654 +[lfw][6000]Accuracy-Flip: 0.98567+-0.00642 +[6000]Accuracy-Highest: 0.98567 +INFO:root:Epoch[0] Batch [6000] Speed: 88.05 samples/sec acc=0.055957 +INFO:root:Epoch[0] Batch [6020] Speed: 679.23 samples/sec acc=0.053906 +INFO:root:Epoch[0] Batch [6040] Speed: 678.16 samples/sec acc=0.058105 +INFO:root:Epoch[0] Batch [6060] Speed: 676.01 samples/sec acc=0.058496 +INFO:root:Epoch[0] Batch [6080] Speed: 676.47 samples/sec acc=0.055273 +INFO:root:Epoch[0] Batch [6100] Speed: 677.98 samples/sec acc=0.056445 +INFO:root:Epoch[0] Batch [6120] Speed: 676.84 samples/sec acc=0.053906 +INFO:root:Epoch[0] Batch [6140] Speed: 678.95 samples/sec acc=0.059766 +INFO:root:Epoch[0] Batch [6160] Speed: 669.69 samples/sec acc=0.050977 +INFO:root:Epoch[0] Batch [6180] Speed: 677.19 samples/sec acc=0.056152 +INFO:root:Epoch[0] Batch [6200] Speed: 675.56 samples/sec acc=0.055859 +INFO:root:Epoch[0] Batch [6220] Speed: 676.91 samples/sec acc=0.058496 +INFO:root:Epoch[0] Batch [6240] Speed: 677.78 samples/sec acc=0.056738 +INFO:root:Epoch[0] Batch [6260] Speed: 678.77 samples/sec acc=0.054297 +INFO:root:Epoch[0] Batch [6280] Speed: 680.08 samples/sec acc=0.055078 +INFO:root:Epoch[0] Batch [6300] Speed: 676.31 samples/sec acc=0.059570 +INFO:root:Epoch[0] Batch [6320] Speed: 679.00 samples/sec acc=0.063281 +INFO:root:Epoch[0] Batch [6340] Speed: 677.99 samples/sec acc=0.059473 +INFO:root:Epoch[0] Batch [6360] Speed: 680.58 samples/sec acc=0.055469 +INFO:root:Epoch[0] Batch [6380] Speed: 662.02 samples/sec acc=0.061035 +INFO:root:Epoch[0] Batch [6400] Speed: 662.17 samples/sec acc=0.061230 +INFO:root:Epoch[0] Batch [6420] Speed: 662.59 samples/sec acc=0.058887 +INFO:root:Epoch[0] Batch [6440] Speed: 661.62 samples/sec acc=0.061426 +INFO:root:Epoch[0] Batch [6460] Speed: 662.99 samples/sec acc=0.060742 +INFO:root:Epoch[0] Batch [6480] Speed: 662.39 samples/sec acc=0.058789 +INFO:root:Epoch[0] Batch [6500] Speed: 662.39 samples/sec acc=0.059180 +INFO:root:Epoch[0] Batch [6520] Speed: 661.72 samples/sec acc=0.058203 +INFO:root:Epoch[0] Batch [6540] Speed: 662.39 samples/sec acc=0.058789 +INFO:root:Epoch[0] Batch [6560] Speed: 662.52 samples/sec acc=0.062012 +INFO:root:Epoch[0] Batch [6580] Speed: 662.48 samples/sec acc=0.057129 +INFO:root:Epoch[0] Batch [6600] Speed: 662.49 samples/sec acc=0.060742 +INFO:root:Epoch[0] Batch [6620] Speed: 661.21 samples/sec acc=0.062012 +INFO:root:Epoch[0] Batch [6640] Speed: 661.41 samples/sec acc=0.063770 +INFO:root:Epoch[0] Batch [6660] Speed: 661.61 samples/sec acc=0.059277 +INFO:root:Epoch[0] Batch [6680] Speed: 661.67 samples/sec acc=0.061035 +INFO:root:Epoch[0] Batch [6700] Speed: 662.48 samples/sec acc=0.062988 +INFO:root:Epoch[0] Batch [6720] Speed: 662.67 samples/sec acc=0.063965 +INFO:root:Epoch[0] Batch [6740] Speed: 661.64 samples/sec acc=0.064648 +INFO:root:Epoch[0] Batch [6760] Speed: 662.10 samples/sec acc=0.065137 +INFO:root:Epoch[0] Batch [6780] Speed: 660.91 samples/sec acc=0.059668 +INFO:root:Epoch[0] Batch [6800] Speed: 661.81 samples/sec acc=0.062402 +INFO:root:Epoch[0] Batch [6820] Speed: 662.05 samples/sec acc=0.062891 +INFO:root:Epoch[0] Batch [6840] Speed: 662.09 samples/sec acc=0.063379 +INFO:root:Epoch[0] Batch [6860] Speed: 662.57 samples/sec acc=0.067773 +INFO:root:Epoch[0] Batch [6880] Speed: 655.70 samples/sec acc=0.064355 +INFO:root:Epoch[0] Batch [6900] Speed: 677.25 samples/sec acc=0.062695 +INFO:root:Epoch[0] Batch [6920] Speed: 679.46 samples/sec acc=0.066602 +INFO:root:Epoch[0] Batch [6940] Speed: 678.32 samples/sec acc=0.063086 +INFO:root:Epoch[0] Batch [6960] Speed: 677.74 samples/sec acc=0.065820 +INFO:root:Epoch[0] Batch [6980] Speed: 680.36 samples/sec acc=0.066309 +lr-batch-epoch: 0.1 6999 0 +INFO:root:Epoch[0] Batch [7000] Speed: 677.42 samples/sec acc=0.061719 +INFO:root:Epoch[0] Batch [7020] Speed: 678.84 samples/sec acc=0.065137 +INFO:root:Epoch[0] Batch [7040] Speed: 678.47 samples/sec acc=0.064453 +INFO:root:Epoch[0] Batch [7060] Speed: 677.29 samples/sec acc=0.066992 +INFO:root:Epoch[0] Batch [7080] Speed: 678.12 samples/sec acc=0.061328 +INFO:root:Epoch[0] Batch [7100] Speed: 678.82 samples/sec acc=0.064160 +INFO:root:Epoch[0] Batch [7120] Speed: 677.84 samples/sec acc=0.066211 +INFO:root:Epoch[0] Batch [7140] Speed: 678.83 samples/sec acc=0.075293 +INFO:root:Epoch[0] Batch [7160] Speed: 678.00 samples/sec acc=0.061914 +INFO:root:Epoch[0] Batch [7180] Speed: 679.14 samples/sec acc=0.065137 +INFO:root:Epoch[0] Batch [7200] Speed: 679.30 samples/sec acc=0.063965 +INFO:root:Epoch[0] Batch [7220] Speed: 680.12 samples/sec acc=0.066504 +INFO:root:Epoch[0] Batch [7240] Speed: 677.71 samples/sec acc=0.062402 +INFO:root:Epoch[0] Batch [7260] Speed: 679.25 samples/sec acc=0.064844 +INFO:root:Epoch[0] Batch [7280] Speed: 678.19 samples/sec acc=0.068750 +INFO:root:Epoch[0] Batch [7300] Speed: 679.31 samples/sec acc=0.070996 +INFO:root:Epoch[0] Batch [7320] Speed: 678.34 samples/sec acc=0.064355 +INFO:root:Epoch[0] Batch [7340] Speed: 677.93 samples/sec acc=0.063867 +INFO:root:Epoch[0] Batch [7360] Speed: 678.70 samples/sec acc=0.070508 +INFO:root:Epoch[0] Batch [7380] Speed: 678.44 samples/sec acc=0.065137 +INFO:root:Epoch[0] Batch [7400] Speed: 679.43 samples/sec acc=0.069141 +INFO:root:Epoch[0] Batch [7420] Speed: 677.16 samples/sec acc=0.069238 +INFO:root:Epoch[0] Batch [7440] Speed: 675.98 samples/sec acc=0.066895 +INFO:root:Epoch[0] Batch [7460] Speed: 678.25 samples/sec acc=0.071875 +INFO:root:Epoch[0] Batch [7480] Speed: 676.22 samples/sec acc=0.069824 +INFO:root:Epoch[0] Batch [7500] Speed: 677.61 samples/sec acc=0.068262 +INFO:root:Epoch[0] Train-acc=0.065213 +INFO:root:Epoch[0] Time cost=6026.197 +call reset() +INFO:root:Epoch[1] Batch [20] Speed: 678.56 samples/sec acc=0.088356 +INFO:root:Epoch[1] Batch [40] Speed: 670.34 samples/sec acc=0.085742 +INFO:root:Epoch[1] Batch [60] Speed: 679.25 samples/sec acc=0.086230 +INFO:root:Epoch[1] Batch [80] Speed: 677.77 samples/sec acc=0.080762 +INFO:root:Epoch[1] Batch [100] Speed: 679.00 samples/sec acc=0.084863 +INFO:root:Epoch[1] Batch [120] Speed: 677.89 samples/sec acc=0.082520 +INFO:root:Epoch[1] Batch [140] Speed: 677.44 samples/sec acc=0.084277 +INFO:root:Epoch[1] Batch [160] Speed: 678.36 samples/sec acc=0.082812 +INFO:root:Epoch[1] Batch [180] Speed: 677.89 samples/sec acc=0.080859 +INFO:root:Epoch[1] Batch [200] Speed: 670.57 samples/sec acc=0.080664 +INFO:root:Epoch[1] Batch [220] Speed: 662.27 samples/sec acc=0.079590 +INFO:root:Epoch[1] Batch [240] Speed: 661.53 samples/sec acc=0.075391 +INFO:root:Epoch[1] Batch [260] Speed: 661.56 samples/sec acc=0.077832 +INFO:root:Epoch[1] Batch [280] Speed: 661.32 samples/sec acc=0.074805 +INFO:root:Epoch[1] Batch [300] Speed: 662.06 samples/sec acc=0.076367 +INFO:root:Epoch[1] Batch [320] Speed: 661.87 samples/sec acc=0.075098 +INFO:root:Epoch[1] Batch [340] Speed: 661.84 samples/sec acc=0.074707 +INFO:root:Epoch[1] Batch [360] Speed: 663.11 samples/sec acc=0.081445 +INFO:root:Epoch[1] Batch [380] Speed: 662.29 samples/sec acc=0.080371 +INFO:root:Epoch[1] Batch [400] Speed: 662.15 samples/sec acc=0.074805 +INFO:root:Epoch[1] Batch [420] Speed: 663.09 samples/sec acc=0.078613 +INFO:root:Epoch[1] Batch [440] Speed: 662.54 samples/sec acc=0.078320 +INFO:root:Epoch[1] Batch [460] Speed: 662.79 samples/sec acc=0.073340 +[8000][MARGIN]0.659157,0.225854 +INFO:root:Epoch[1] Batch [480] Speed: 662.05 samples/sec acc=0.074023 +lr-batch-epoch: 0.1 480 1 +testing verification.. +(14000, 512) +infer time 20.835884 +[cfp_ff][8000]XNorm: 19.584579 +[cfp_ff][8000]Accuracy-Flip: 0.98857+-0.00433 +testing verification.. +(14000, 512) +infer time 21.983813 +[cfp_fp][8000]XNorm: 16.207827 +[cfp_fp][8000]Accuracy-Flip: 0.81771+-0.01746 +testing verification.. +(12000, 512) +infer time 18.553163 +[agedb_30][8000]XNorm: 19.670710 +[agedb_30][8000]Accuracy-Flip: 0.92450+-0.01976 +testing verification.. +(12000, 512) +infer time 17.92847 +[lfw][8000]XNorm: 19.712476 +[lfw][8000]Accuracy-Flip: 0.99033+-0.00386 +[8000]Accuracy-Highest: 0.99033 +INFO:root:Epoch[1] Batch [500] Speed: 88.19 samples/sec acc=0.075098 +INFO:root:Epoch[1] Batch [520] Speed: 677.44 samples/sec acc=0.077051 +INFO:root:Epoch[1] Batch [540] Speed: 677.87 samples/sec acc=0.079883 +INFO:root:Epoch[1] Batch [560] Speed: 678.35 samples/sec acc=0.079297 +INFO:root:Epoch[1] Batch [580] Speed: 677.45 samples/sec acc=0.076758 +INFO:root:Epoch[1] Batch [600] Speed: 678.32 samples/sec acc=0.077637 +INFO:root:Epoch[1] Batch [620] Speed: 677.88 samples/sec acc=0.079199 +INFO:root:Epoch[1] Batch [640] Speed: 663.81 samples/sec acc=0.078711 +INFO:root:Epoch[1] Batch [660] Speed: 663.58 samples/sec acc=0.077734 +INFO:root:Epoch[1] Batch [680] Speed: 664.08 samples/sec acc=0.073340 +INFO:root:Epoch[1] Batch [700] Speed: 665.07 samples/sec acc=0.078320 +INFO:root:Epoch[1] Batch [720] Speed: 664.18 samples/sec acc=0.069824 +INFO:root:Epoch[1] Batch [740] Speed: 664.43 samples/sec acc=0.073926 +INFO:root:Epoch[1] Batch [760] Speed: 664.01 samples/sec acc=0.075781 +INFO:root:Epoch[1] Batch [780] Speed: 664.59 samples/sec acc=0.076855 +INFO:root:Epoch[1] Batch [800] Speed: 664.93 samples/sec acc=0.078223 +INFO:root:Epoch[1] Batch [820] Speed: 664.85 samples/sec acc=0.076660 +INFO:root:Epoch[1] Batch [840] Speed: 667.14 samples/sec acc=0.075684 +INFO:root:Epoch[1] Batch [860] Speed: 664.40 samples/sec acc=0.073926 +INFO:root:Epoch[1] Batch [880] Speed: 664.33 samples/sec acc=0.078516 +INFO:root:Epoch[1] Batch [900] Speed: 664.83 samples/sec acc=0.077441 +INFO:root:Epoch[1] Batch [920] Speed: 664.61 samples/sec acc=0.078125 +INFO:root:Epoch[1] Batch [940] Speed: 665.42 samples/sec acc=0.076074 +INFO:root:Epoch[1] Batch [960] Speed: 664.69 samples/sec acc=0.074707 +INFO:root:Epoch[1] Batch [980] Speed: 664.73 samples/sec acc=0.074512 +INFO:root:Epoch[1] Batch [1000] Speed: 665.19 samples/sec acc=0.077539 +INFO:root:Epoch[1] Batch [1020] Speed: 664.25 samples/sec acc=0.071191 +INFO:root:Epoch[1] Batch [1040] Speed: 664.30 samples/sec acc=0.073828 +INFO:root:Epoch[1] Batch [1060] Speed: 664.79 samples/sec acc=0.072949 +INFO:root:Epoch[1] Batch [1080] Speed: 664.35 samples/sec acc=0.073535 +INFO:root:Epoch[1] Batch [1100] Speed: 665.18 samples/sec acc=0.077148 +INFO:root:Epoch[1] Batch [1120] Speed: 664.84 samples/sec acc=0.073047 +INFO:root:Epoch[1] Batch [1140] Speed: 664.19 samples/sec acc=0.079297 +INFO:root:Epoch[1] Batch [1160] Speed: 664.03 samples/sec acc=0.073145 +INFO:root:Epoch[1] Batch [1180] Speed: 664.45 samples/sec acc=0.072363 +INFO:root:Epoch[1] Batch [1200] Speed: 664.66 samples/sec acc=0.077441 +INFO:root:Epoch[1] Batch [1220] Speed: 664.29 samples/sec acc=0.072363 +INFO:root:Epoch[1] Batch [1240] Speed: 665.36 samples/sec acc=0.081348 +INFO:root:Epoch[1] Batch [1260] Speed: 665.23 samples/sec acc=0.072754 +INFO:root:Epoch[1] Batch [1280] Speed: 663.95 samples/sec acc=0.071387 +INFO:root:Epoch[1] Batch [1300] Speed: 664.83 samples/sec acc=0.076758 +INFO:root:Epoch[1] Batch [1320] Speed: 663.75 samples/sec acc=0.077148 +INFO:root:Epoch[1] Batch [1340] Speed: 665.27 samples/sec acc=0.075586 +INFO:root:Epoch[1] Batch [1360] Speed: 664.15 samples/sec acc=0.075879 +INFO:root:Epoch[1] Batch [1380] Speed: 664.03 samples/sec acc=0.074512 +INFO:root:Epoch[1] Batch [1400] Speed: 663.55 samples/sec acc=0.076172 +INFO:root:Epoch[1] Batch [1420] Speed: 664.51 samples/sec acc=0.080859 +INFO:root:Epoch[1] Batch [1440] Speed: 665.22 samples/sec acc=0.073828 +INFO:root:Epoch[1] Batch [1460] Speed: 663.78 samples/sec acc=0.080566 +INFO:root:Epoch[1] Batch [1480] Speed: 664.50 samples/sec acc=0.080566 +lr-batch-epoch: 0.1 1480 1 +INFO:root:Epoch[1] Batch [1500] Speed: 664.67 samples/sec acc=0.076660 +INFO:root:Epoch[1] Batch [1520] Speed: 664.57 samples/sec acc=0.075586 +INFO:root:Epoch[1] Batch [1540] Speed: 663.94 samples/sec acc=0.078125 +INFO:root:Epoch[1] Batch [1560] Speed: 665.17 samples/sec acc=0.077051 +INFO:root:Epoch[1] Batch [1580] Speed: 663.92 samples/sec acc=0.080371 +INFO:root:Epoch[1] Batch [1600] Speed: 664.96 samples/sec acc=0.077930 +INFO:root:Epoch[1] Batch [1620] Speed: 661.54 samples/sec acc=0.083203 +INFO:root:Epoch[1] Batch [1640] Speed: 677.62 samples/sec acc=0.076172 +INFO:root:Epoch[1] Batch [1660] Speed: 671.80 samples/sec acc=0.079004 +INFO:root:Epoch[1] Batch [1680] Speed: 664.55 samples/sec acc=0.077441 +INFO:root:Epoch[1] Batch [1700] Speed: 664.60 samples/sec acc=0.077637 +INFO:root:Epoch[1] Batch [1720] Speed: 665.05 samples/sec acc=0.081641 +INFO:root:Epoch[1] Batch [1740] Speed: 664.88 samples/sec acc=0.078418 +INFO:root:Epoch[1] Batch [1760] Speed: 664.12 samples/sec acc=0.080078 +INFO:root:Epoch[1] Batch [1780] Speed: 665.52 samples/sec acc=0.077441 +INFO:root:Epoch[1] Batch [1800] Speed: 664.75 samples/sec acc=0.079687 +INFO:root:Epoch[1] Batch [1820] Speed: 664.27 samples/sec acc=0.083301 +INFO:root:Epoch[1] Batch [1840] Speed: 664.70 samples/sec acc=0.081250 +INFO:root:Epoch[1] Batch [1860] Speed: 664.75 samples/sec acc=0.075684 +INFO:root:Epoch[1] Batch [1880] Speed: 664.46 samples/sec acc=0.080859 +INFO:root:Epoch[1] Batch [1900] Speed: 664.87 samples/sec acc=0.080762 +INFO:root:Epoch[1] Batch [1920] Speed: 664.11 samples/sec acc=0.078906 +INFO:root:Epoch[1] Batch [1940] Speed: 664.11 samples/sec acc=0.079004 +INFO:root:Epoch[1] Batch [1960] Speed: 665.33 samples/sec acc=0.080176 +INFO:root:Epoch[1] Batch [1980] Speed: 663.48 samples/sec acc=0.079883 +INFO:root:Epoch[1] Batch [2000] Speed: 663.18 samples/sec acc=0.084473 +INFO:root:Epoch[1] Batch [2020] Speed: 665.34 samples/sec acc=0.087207 +INFO:root:Epoch[1] Batch [2040] Speed: 664.37 samples/sec acc=0.081055 +INFO:root:Epoch[1] Batch [2060] Speed: 664.42 samples/sec acc=0.079590 +INFO:root:Epoch[1] Batch [2080] Speed: 665.51 samples/sec acc=0.075977 +INFO:root:Epoch[1] Batch [2100] Speed: 665.09 samples/sec acc=0.085645 +INFO:root:Epoch[1] Batch [2120] Speed: 665.31 samples/sec acc=0.080078 +INFO:root:Epoch[1] Batch [2140] Speed: 664.63 samples/sec acc=0.087500 +INFO:root:Epoch[1] Batch [2160] Speed: 664.01 samples/sec acc=0.084375 +INFO:root:Epoch[1] Batch [2180] Speed: 664.13 samples/sec acc=0.082227 +INFO:root:Epoch[1] Batch [2200] Speed: 665.01 samples/sec acc=0.083105 +INFO:root:Epoch[1] Batch [2220] Speed: 664.57 samples/sec acc=0.079785 +INFO:root:Epoch[1] Batch [2240] Speed: 664.51 samples/sec acc=0.086523 +INFO:root:Epoch[1] Batch [2260] Speed: 664.53 samples/sec acc=0.078223 +INFO:root:Epoch[1] Batch [2280] Speed: 664.83 samples/sec acc=0.087988 +INFO:root:Epoch[1] Batch [2300] Speed: 664.73 samples/sec acc=0.081543 +INFO:root:Epoch[1] Batch [2320] Speed: 664.37 samples/sec acc=0.084668 +INFO:root:Epoch[1] Batch [2340] Speed: 665.15 samples/sec acc=0.081738 +INFO:root:Epoch[1] Batch [2360] Speed: 663.92 samples/sec acc=0.079004 +INFO:root:Epoch[1] Batch [2380] Speed: 665.51 samples/sec acc=0.082031 +INFO:root:Epoch[1] Batch [2400] Speed: 664.35 samples/sec acc=0.077051 +INFO:root:Epoch[1] Batch [2420] Speed: 662.95 samples/sec acc=0.082227 +INFO:root:Epoch[1] Batch [2440] Speed: 676.10 samples/sec acc=0.081836 +INFO:root:Epoch[1] Batch [2460] Speed: 663.98 samples/sec acc=0.086719 +[10000][MARGIN]0.664993,0.231848 +INFO:root:Epoch[1] Batch [2480] Speed: 663.22 samples/sec acc=0.082617 +lr-batch-epoch: 0.1 2480 1 +testing verification.. +(14000, 512) +infer time 17.877836 +[cfp_ff][10000]XNorm: 20.343479 +[cfp_ff][10000]Accuracy-Flip: 0.98929+-0.00327 +testing verification.. +(14000, 512) +infer time 19.623478 +[cfp_fp][10000]XNorm: 17.196823 +[cfp_fp][10000]Accuracy-Flip: 0.82243+-0.01548 +testing verification.. +(12000, 512) +infer time 15.526678 +[agedb_30][10000]XNorm: 20.347628 +[agedb_30][10000]Accuracy-Flip: 0.92933+-0.01628 +testing verification.. +(12000, 512) +infer time 16.828989 +[lfw][10000]XNorm: 20.625510 +[lfw][10000]Accuracy-Flip: 0.98800+-0.00482 +[10000]Accuracy-Highest: 0.99033 +INFO:root:Epoch[1] Batch [2500] Speed: 98.69 samples/sec acc=0.086621 +INFO:root:Epoch[1] Batch [2520] Speed: 678.48 samples/sec acc=0.088672 +INFO:root:Epoch[1] Batch [2540] Speed: 678.65 samples/sec acc=0.089551 +INFO:root:Epoch[1] Batch [2560] Speed: 669.09 samples/sec acc=0.082324 +INFO:root:Epoch[1] Batch [2580] Speed: 664.26 samples/sec acc=0.083105 +INFO:root:Epoch[1] Batch [2600] Speed: 663.67 samples/sec acc=0.087207 +INFO:root:Epoch[1] Batch [2620] Speed: 664.71 samples/sec acc=0.085352 +INFO:root:Epoch[1] Batch [2640] Speed: 664.20 samples/sec acc=0.085840 +INFO:root:Epoch[1] Batch [2660] Speed: 663.51 samples/sec acc=0.073438 +INFO:root:Epoch[1] Batch [2680] Speed: 665.76 samples/sec acc=0.082129 +INFO:root:Epoch[1] Batch [2700] Speed: 664.60 samples/sec acc=0.081934 +INFO:root:Epoch[1] Batch [2720] Speed: 664.04 samples/sec acc=0.085352 +INFO:root:Epoch[1] Batch [2740] Speed: 665.08 samples/sec acc=0.082617 +INFO:root:Epoch[1] Batch [2760] Speed: 664.56 samples/sec acc=0.091699 +INFO:root:Epoch[1] Batch [2780] Speed: 664.34 samples/sec acc=0.085352 +INFO:root:Epoch[1] Batch [2800] Speed: 664.53 samples/sec acc=0.083496 +INFO:root:Epoch[1] Batch [2820] Speed: 664.41 samples/sec acc=0.088477 +INFO:root:Epoch[1] Batch [2840] Speed: 663.93 samples/sec acc=0.083008 +INFO:root:Epoch[1] Batch [2860] Speed: 665.67 samples/sec acc=0.091309 +INFO:root:Epoch[1] Batch [2880] Speed: 665.30 samples/sec acc=0.085254 +INFO:root:Epoch[1] Batch [2900] Speed: 664.62 samples/sec acc=0.086816 +INFO:root:Epoch[1] Batch [2920] Speed: 664.53 samples/sec acc=0.087695 +INFO:root:Epoch[1] Batch [2940] Speed: 664.82 samples/sec acc=0.088574 +INFO:root:Epoch[1] Batch [2960] Speed: 664.41 samples/sec acc=0.090039 +INFO:root:Epoch[1] Batch [2980] Speed: 664.68 samples/sec acc=0.088672 +INFO:root:Epoch[1] Batch [3000] Speed: 664.52 samples/sec acc=0.082422 +INFO:root:Epoch[1] Batch [3020] Speed: 662.59 samples/sec acc=0.089453 +INFO:root:Epoch[1] Batch [3040] Speed: 664.72 samples/sec acc=0.084570 +INFO:root:Epoch[1] Batch [3060] Speed: 664.22 samples/sec acc=0.086230 +INFO:root:Epoch[1] Batch [3080] Speed: 664.08 samples/sec acc=0.085645 +INFO:root:Epoch[1] Batch [3100] Speed: 664.31 samples/sec acc=0.084863 +INFO:root:Epoch[1] Batch [3120] Speed: 665.35 samples/sec acc=0.090723 +INFO:root:Epoch[1] Batch [3140] Speed: 663.29 samples/sec acc=0.085156 +INFO:root:Epoch[1] Batch [3160] Speed: 664.39 samples/sec acc=0.082031 +INFO:root:Epoch[1] Batch [3180] Speed: 663.95 samples/sec acc=0.092871 +INFO:root:Epoch[1] Batch [3200] Speed: 664.39 samples/sec acc=0.086523 +INFO:root:Epoch[1] Batch [3220] Speed: 666.84 samples/sec acc=0.087109 +INFO:root:Epoch[1] Batch [3240] Speed: 664.72 samples/sec acc=0.088867 +INFO:root:Epoch[1] Batch [3260] Speed: 664.66 samples/sec acc=0.089355 +INFO:root:Epoch[1] Batch [3280] Speed: 664.14 samples/sec acc=0.086328 +INFO:root:Epoch[1] Batch [3300] Speed: 664.52 samples/sec acc=0.083691 +INFO:root:Epoch[1] Batch [3320] Speed: 663.75 samples/sec acc=0.088477 +INFO:root:Epoch[1] Batch [3340] Speed: 664.86 samples/sec acc=0.092871 +INFO:root:Epoch[1] Batch [3360] Speed: 663.90 samples/sec acc=0.086035 +INFO:root:Epoch[1] Batch [3380] Speed: 665.00 samples/sec acc=0.086914 +INFO:root:Epoch[1] Batch [3400] Speed: 664.49 samples/sec acc=0.085547 +INFO:root:Epoch[1] Batch [3420] Speed: 664.78 samples/sec acc=0.088867 +INFO:root:Epoch[1] Batch [3440] Speed: 664.42 samples/sec acc=0.089551 +INFO:root:Epoch[1] Batch [3460] Speed: 664.11 samples/sec acc=0.080762 +INFO:root:Epoch[1] Batch [3480] Speed: 664.17 samples/sec acc=0.087500 +lr-batch-epoch: 0.1 3480 1 +INFO:root:Epoch[1] Batch [3500] Speed: 663.87 samples/sec acc=0.089844 +INFO:root:Epoch[1] Batch [3520] Speed: 665.16 samples/sec acc=0.089551 +INFO:root:Epoch[1] Batch [3540] Speed: 664.13 samples/sec acc=0.087500 +INFO:root:Epoch[1] Batch [3560] Speed: 664.60 samples/sec acc=0.085547 +INFO:root:Epoch[1] Batch [3580] Speed: 664.75 samples/sec acc=0.084570 +INFO:root:Epoch[1] Batch [3600] Speed: 665.00 samples/sec acc=0.095020 +INFO:root:Epoch[1] Batch [3620] Speed: 663.77 samples/sec acc=0.087793 +INFO:root:Epoch[1] Batch [3640] Speed: 664.30 samples/sec acc=0.091895 +INFO:root:Epoch[1] Batch [3660] Speed: 664.50 samples/sec acc=0.089355 +INFO:root:Epoch[1] Batch [3680] Speed: 664.58 samples/sec acc=0.089941 +INFO:root:Epoch[1] Batch [3700] Speed: 664.02 samples/sec acc=0.090039 +INFO:root:Epoch[1] Batch [3720] Speed: 664.71 samples/sec acc=0.088965 +INFO:root:Epoch[1] Batch [3740] Speed: 664.16 samples/sec acc=0.089355 +INFO:root:Epoch[1] Batch [3760] Speed: 664.09 samples/sec acc=0.087012 +INFO:root:Epoch[1] Batch [3780] Speed: 664.70 samples/sec acc=0.090723 +INFO:root:Epoch[1] Batch [3800] Speed: 664.31 samples/sec acc=0.089355 +INFO:root:Epoch[1] Batch [3820] Speed: 664.69 samples/sec acc=0.096973 +INFO:root:Epoch[1] Batch [3840] Speed: 664.36 samples/sec acc=0.084961 +INFO:root:Epoch[1] Batch [3860] Speed: 664.40 samples/sec acc=0.091992 +INFO:root:Epoch[1] Batch [3880] Speed: 664.58 samples/sec acc=0.092480 +INFO:root:Epoch[1] Batch [3900] Speed: 664.23 samples/sec acc=0.092578 +INFO:root:Epoch[1] Batch [3920] Speed: 664.49 samples/sec acc=0.093066 +INFO:root:Epoch[1] Batch [3940] Speed: 663.86 samples/sec acc=0.091309 +INFO:root:Epoch[1] Batch [3960] Speed: 665.03 samples/sec acc=0.090527 +INFO:root:Epoch[1] Batch [3980] Speed: 663.71 samples/sec acc=0.084863 +INFO:root:Epoch[1] Batch [4000] Speed: 664.63 samples/sec acc=0.095703 +INFO:root:Epoch[1] Batch [4020] Speed: 669.26 samples/sec acc=0.095703 +INFO:root:Epoch[1] Batch [4040] Speed: 675.43 samples/sec acc=0.089648 +INFO:root:Epoch[1] Batch [4060] Speed: 664.82 samples/sec acc=0.086328 +INFO:root:Epoch[1] Batch [4080] Speed: 663.26 samples/sec acc=0.092480 +INFO:root:Epoch[1] Batch [4100] Speed: 664.69 samples/sec acc=0.092188 +INFO:root:Epoch[1] Batch [4120] Speed: 664.61 samples/sec acc=0.086914 +INFO:root:Epoch[1] Batch [4140] Speed: 663.93 samples/sec acc=0.089258 +INFO:root:Epoch[1] Batch [4160] Speed: 663.79 samples/sec acc=0.096094 +INFO:root:Epoch[1] Batch [4180] Speed: 664.65 samples/sec acc=0.090820 +INFO:root:Epoch[1] Batch [4200] Speed: 664.80 samples/sec acc=0.093359 +INFO:root:Epoch[1] Batch [4220] Speed: 664.67 samples/sec acc=0.091699 +INFO:root:Epoch[1] Batch [4240] Speed: 664.96 samples/sec acc=0.091602 +INFO:root:Epoch[1] Batch [4260] Speed: 665.19 samples/sec acc=0.094824 +INFO:root:Epoch[1] Batch [4280] Speed: 663.33 samples/sec acc=0.092676 +INFO:root:Epoch[1] Batch [4300] Speed: 664.50 samples/sec acc=0.093555 +INFO:root:Epoch[1] Batch [4320] Speed: 664.55 samples/sec acc=0.092969 +INFO:root:Epoch[1] Batch [4340] Speed: 664.03 samples/sec acc=0.090918 +INFO:root:Epoch[1] Batch [4360] Speed: 664.82 samples/sec acc=0.090527 +INFO:root:Epoch[1] Batch [4380] Speed: 665.27 samples/sec acc=0.087793 +INFO:root:Epoch[1] Batch [4400] Speed: 664.36 samples/sec acc=0.096582 +INFO:root:Epoch[1] Batch [4420] Speed: 664.62 samples/sec acc=0.088477 +INFO:root:Epoch[1] Batch [4440] Speed: 664.28 samples/sec acc=0.090625 +INFO:root:Epoch[1] Batch [4460] Speed: 663.94 samples/sec acc=0.089258 +[12000][MARGIN]0.663869,0.231542 +INFO:root:Epoch[1] Batch [4480] Speed: 664.20 samples/sec acc=0.093359 +lr-batch-epoch: 0.1 4480 1 +testing verification.. +(14000, 512) +infer time 19.055237 +[cfp_ff][12000]XNorm: 20.237718 +[cfp_ff][12000]Accuracy-Flip: 0.99200+-0.00321 +testing verification.. +(14000, 512) +infer time 18.214119 +[cfp_fp][12000]XNorm: 16.544081 +[cfp_fp][12000]Accuracy-Flip: 0.82214+-0.01447 +testing verification.. +(12000, 512) +infer time 19.305643 +[agedb_30][12000]XNorm: 19.872737 +[agedb_30][12000]Accuracy-Flip: 0.93100+-0.01537 +testing verification.. +(12000, 512) +infer time 17.90811 +[lfw][12000]XNorm: 20.345964 +[lfw][12000]Accuracy-Flip: 0.99017+-0.00540 +[12000]Accuracy-Highest: 0.99033 +INFO:root:Epoch[1] Batch [4500] Speed: 91.87 samples/sec acc=0.093457 +INFO:root:Epoch[1] Batch [4520] Speed: 663.13 samples/sec acc=0.094629 +INFO:root:Epoch[1] Batch [4540] Speed: 664.12 samples/sec acc=0.089648 +INFO:root:Epoch[1] Batch [4560] Speed: 663.19 samples/sec acc=0.095703 +INFO:root:Epoch[1] Batch [4580] Speed: 663.06 samples/sec acc=0.092285 +INFO:root:Epoch[1] Batch [4600] Speed: 664.42 samples/sec acc=0.089746 +INFO:root:Epoch[1] Batch [4620] Speed: 663.47 samples/sec acc=0.091992 +INFO:root:Epoch[1] Batch [4640] Speed: 664.15 samples/sec acc=0.090430 +INFO:root:Epoch[1] Batch [4660] Speed: 664.55 samples/sec acc=0.095215 +INFO:root:Epoch[1] Batch [4680] Speed: 664.79 samples/sec acc=0.095508 +INFO:root:Epoch[1] Batch [4700] Speed: 664.10 samples/sec acc=0.092480 +INFO:root:Epoch[1] Batch [4720] Speed: 664.65 samples/sec acc=0.092578 +INFO:root:Epoch[1] Batch [4740] Speed: 661.35 samples/sec acc=0.096484 +INFO:root:Epoch[1] Batch [4760] Speed: 663.40 samples/sec acc=0.094238 +INFO:root:Epoch[1] Batch [4780] Speed: 664.87 samples/sec acc=0.095508 +INFO:root:Epoch[1] Batch [4800] Speed: 665.01 samples/sec acc=0.095117 +INFO:root:Epoch[1] Batch [4820] Speed: 673.97 samples/sec acc=0.097266 +INFO:root:Epoch[1] Batch [4840] Speed: 680.04 samples/sec acc=0.091016 +INFO:root:Epoch[1] Batch [4860] Speed: 671.80 samples/sec acc=0.089355 +INFO:root:Epoch[1] Batch [4880] Speed: 664.33 samples/sec acc=0.091406 +INFO:root:Epoch[1] Batch [4900] Speed: 665.06 samples/sec acc=0.097461 +INFO:root:Epoch[1] Batch [4920] Speed: 664.58 samples/sec acc=0.092188 +INFO:root:Epoch[1] Batch [4940] Speed: 664.17 samples/sec acc=0.094336 +INFO:root:Epoch[1] Batch [4960] Speed: 665.38 samples/sec acc=0.094238 +INFO:root:Epoch[1] Batch [4980] Speed: 664.12 samples/sec acc=0.097070 +INFO:root:Epoch[1] Batch [5000] Speed: 664.07 samples/sec acc=0.095898 +INFO:root:Epoch[1] Batch [5020] Speed: 664.17 samples/sec acc=0.093750 +INFO:root:Epoch[1] Batch [5040] Speed: 664.34 samples/sec acc=0.098828 +INFO:root:Epoch[1] Batch [5060] Speed: 664.32 samples/sec acc=0.093555 +INFO:root:Epoch[1] Batch [5080] Speed: 664.87 samples/sec acc=0.094531 +INFO:root:Epoch[1] Batch [5100] Speed: 664.44 samples/sec acc=0.093652 +INFO:root:Epoch[1] Batch [5120] Speed: 664.01 samples/sec acc=0.089941 +INFO:root:Epoch[1] Batch [5140] Speed: 664.60 samples/sec acc=0.096387 +INFO:root:Epoch[1] Batch [5160] Speed: 664.69 samples/sec acc=0.097070 +INFO:root:Epoch[1] Batch [5180] Speed: 664.06 samples/sec acc=0.097852 +INFO:root:Epoch[1] Batch [5200] Speed: 665.19 samples/sec acc=0.095898 +INFO:root:Epoch[1] Batch [5220] Speed: 664.77 samples/sec acc=0.095801 +INFO:root:Epoch[1] Batch [5240] Speed: 664.18 samples/sec acc=0.095996 +INFO:root:Epoch[1] Batch [5260] Speed: 665.28 samples/sec acc=0.096582 +INFO:root:Epoch[1] Batch [5280] Speed: 663.67 samples/sec acc=0.102148 +INFO:root:Epoch[1] Batch [5300] Speed: 664.59 samples/sec acc=0.095801 +INFO:root:Epoch[1] Batch [5320] Speed: 665.23 samples/sec acc=0.098633 +INFO:root:Epoch[1] Batch [5340] Speed: 664.13 samples/sec acc=0.099414 +INFO:root:Epoch[1] Batch [5360] Speed: 663.60 samples/sec acc=0.093262 +INFO:root:Epoch[1] Batch [5380] Speed: 664.76 samples/sec acc=0.095020 +INFO:root:Epoch[1] Batch [5400] Speed: 664.85 samples/sec acc=0.091602 +INFO:root:Epoch[1] Batch [5420] Speed: 663.86 samples/sec acc=0.102734 +INFO:root:Epoch[1] Batch [5440] Speed: 664.46 samples/sec acc=0.094434 +INFO:root:Epoch[1] Batch [5460] Speed: 664.61 samples/sec acc=0.090820 +INFO:root:Epoch[1] Batch [5480] Speed: 664.34 samples/sec acc=0.090723 +lr-batch-epoch: 0.1 5480 1 +INFO:root:Epoch[1] Batch [5500] Speed: 664.63 samples/sec acc=0.094434 +INFO:root:Epoch[1] Batch [5520] Speed: 664.64 samples/sec acc=0.097559 +INFO:root:Epoch[1] Batch [5540] Speed: 664.70 samples/sec acc=0.098730 +INFO:root:Epoch[1] Batch [5560] Speed: 665.25 samples/sec acc=0.094238 +INFO:root:Epoch[1] Batch [5580] Speed: 664.78 samples/sec acc=0.091992 +INFO:root:Epoch[1] Batch [5600] Speed: 663.40 samples/sec acc=0.094922 +INFO:root:Epoch[1] Batch [5620] Speed: 676.34 samples/sec acc=0.093750 +INFO:root:Epoch[1] Batch [5640] Speed: 664.83 samples/sec acc=0.097754 +INFO:root:Epoch[1] Batch [5660] Speed: 664.16 samples/sec acc=0.098340 +INFO:root:Epoch[1] Batch [5680] Speed: 664.74 samples/sec acc=0.096875 +INFO:root:Epoch[1] Batch [5700] Speed: 664.90 samples/sec acc=0.096191 +INFO:root:Epoch[1] Batch [5720] Speed: 664.13 samples/sec acc=0.095410 +INFO:root:Epoch[1] Batch [5740] Speed: 665.64 samples/sec acc=0.096973 +INFO:root:Epoch[1] Batch [5760] Speed: 664.07 samples/sec acc=0.099512 +INFO:root:Epoch[1] Batch [5780] Speed: 664.54 samples/sec acc=0.096777 +INFO:root:Epoch[1] Batch [5800] Speed: 664.87 samples/sec acc=0.096191 +INFO:root:Epoch[1] Batch [5820] Speed: 664.23 samples/sec acc=0.096973 +INFO:root:Epoch[1] Batch [5840] Speed: 663.94 samples/sec acc=0.100098 +INFO:root:Epoch[1] Batch [5860] Speed: 664.64 samples/sec acc=0.098535 +INFO:root:Epoch[1] Batch [5880] Speed: 664.42 samples/sec acc=0.098926 +INFO:root:Epoch[1] Batch [5900] Speed: 664.01 samples/sec acc=0.100488 +INFO:root:Epoch[1] Batch [5920] Speed: 664.99 samples/sec acc=0.097656 +INFO:root:Epoch[1] Batch [5940] Speed: 664.46 samples/sec acc=0.094238 +INFO:root:Epoch[1] Batch [5960] Speed: 663.98 samples/sec acc=0.097363 +INFO:root:Epoch[1] Batch [5980] Speed: 665.40 samples/sec acc=0.092188 +INFO:root:Epoch[1] Batch [6000] Speed: 665.01 samples/sec acc=0.093457 +INFO:root:Epoch[1] Batch [6020] Speed: 664.35 samples/sec acc=0.100586 +INFO:root:Epoch[1] Batch [6040] Speed: 665.23 samples/sec acc=0.102344 +INFO:root:Epoch[1] Batch [6060] Speed: 664.94 samples/sec acc=0.101562 +INFO:root:Epoch[1] Batch [6080] Speed: 664.54 samples/sec acc=0.099512 +INFO:root:Epoch[1] Batch [6100] Speed: 665.41 samples/sec acc=0.099316 +INFO:root:Epoch[1] Batch [6120] Speed: 664.04 samples/sec acc=0.100781 +INFO:root:Epoch[1] Batch [6140] Speed: 663.61 samples/sec acc=0.103125 +INFO:root:Epoch[1] Batch [6160] Speed: 665.18 samples/sec acc=0.098633 +INFO:root:Epoch[1] Batch [6180] Speed: 664.86 samples/sec acc=0.101074 +INFO:root:Epoch[1] Batch [6200] Speed: 664.23 samples/sec acc=0.097852 +INFO:root:Epoch[1] Batch [6220] Speed: 665.03 samples/sec acc=0.097949 +INFO:root:Epoch[1] Batch [6240] Speed: 664.08 samples/sec acc=0.099219 +INFO:root:Epoch[1] Batch [6260] Speed: 663.75 samples/sec acc=0.097754 +INFO:root:Epoch[1] Batch [6280] Speed: 664.83 samples/sec acc=0.099902 +INFO:root:Epoch[1] Batch [6300] Speed: 664.99 samples/sec acc=0.092969 +INFO:root:Epoch[1] Batch [6320] Speed: 664.05 samples/sec acc=0.102246 +INFO:root:Epoch[1] Batch [6340] Speed: 664.66 samples/sec acc=0.096387 +INFO:root:Epoch[1] Batch [6360] Speed: 665.46 samples/sec acc=0.098535 +INFO:root:Epoch[1] Batch [6380] Speed: 664.46 samples/sec acc=0.104395 +INFO:root:Epoch[1] Batch [6400] Speed: 665.45 samples/sec acc=0.100977 +INFO:root:Epoch[1] Batch [6420] Speed: 664.39 samples/sec acc=0.102051 +INFO:root:Epoch[1] Batch [6440] Speed: 664.14 samples/sec acc=0.098633 +INFO:root:Epoch[1] Batch [6460] Speed: 664.70 samples/sec acc=0.095508 +[14000][MARGIN]0.663905,0.231038 +INFO:root:Epoch[1] Batch [6480] Speed: 664.85 samples/sec acc=0.102734 +lr-batch-epoch: 0.1 6480 1 +testing verification.. +(14000, 512) +infer time 23.191147 +[cfp_ff][14000]XNorm: 21.783922 +[cfp_ff][14000]Accuracy-Flip: 0.99243+-0.00384 +testing verification.. +(14000, 512) +infer time 24.450724 +[cfp_fp][14000]XNorm: 18.047383 +[cfp_fp][14000]Accuracy-Flip: 0.83314+-0.01562 +testing verification.. +(12000, 512) +infer time 24.3648 +[agedb_30][14000]XNorm: 21.715938 +[agedb_30][14000]Accuracy-Flip: 0.93733+-0.01510 +testing verification.. +(12000, 512) +infer time 21.910281 +[lfw][14000]XNorm: 22.156482 +[lfw][14000]Accuracy-Flip: 0.99100+-0.00389 +saving 7 +INFO:root:Saved checkpoint to "../model-r50-am-lfw/model-0007.params" +[14000]Accuracy-Highest: 0.99100 +INFO:root:Epoch[1] Batch [6500] Speed: 76.89 samples/sec acc=0.098828 +INFO:root:Epoch[1] Batch [6520] Speed: 663.29 samples/sec acc=0.096973 +INFO:root:Epoch[1] Batch [6540] Speed: 663.21 samples/sec acc=0.094141 +INFO:root:Epoch[1] Batch [6560] Speed: 663.48 samples/sec acc=0.098633 +INFO:root:Epoch[1] Batch [6580] Speed: 665.25 samples/sec acc=0.094922 +INFO:root:Epoch[1] Batch [6600] Speed: 662.71 samples/sec acc=0.094629 +INFO:root:Epoch[1] Batch [6620] Speed: 664.04 samples/sec acc=0.104590 +INFO:root:Epoch[1] Batch [6640] Speed: 664.52 samples/sec acc=0.095312 +INFO:root:Epoch[1] Batch [6660] Speed: 664.97 samples/sec acc=0.103223 +INFO:root:Epoch[1] Batch [6680] Speed: 664.04 samples/sec acc=0.098926 +INFO:root:Epoch[1] Batch [6700] Speed: 665.37 samples/sec acc=0.101758 +INFO:root:Epoch[1] Batch [6720] Speed: 665.17 samples/sec acc=0.101660 +INFO:root:Epoch[1] Batch [6740] Speed: 664.60 samples/sec acc=0.103613 +INFO:root:Epoch[1] Batch [6760] Speed: 664.41 samples/sec acc=0.103711 +INFO:root:Epoch[1] Batch [6780] Speed: 665.11 samples/sec acc=0.102441 +INFO:root:Epoch[1] Batch [6800] Speed: 664.46 samples/sec acc=0.100391 +INFO:root:Epoch[1] Batch [6820] Speed: 665.60 samples/sec acc=0.102344 +INFO:root:Epoch[1] Batch [6840] Speed: 664.00 samples/sec acc=0.103516 +INFO:root:Epoch[1] Batch [6860] Speed: 664.43 samples/sec acc=0.099023 +INFO:root:Epoch[1] Batch [6880] Speed: 664.94 samples/sec acc=0.101074 +INFO:root:Epoch[1] Batch [6900] Speed: 672.25 samples/sec acc=0.104980 +INFO:root:Epoch[1] Batch [6920] Speed: 678.31 samples/sec acc=0.100684 +INFO:root:Epoch[1] Batch [6940] Speed: 679.02 samples/sec acc=0.097168 +INFO:root:Epoch[1] Batch [6960] Speed: 678.62 samples/sec acc=0.100586 +INFO:root:Epoch[1] Batch [6980] Speed: 678.71 samples/sec acc=0.100879 +INFO:root:Epoch[1] Batch [7000] Speed: 679.13 samples/sec acc=0.102344 +INFO:root:Epoch[1] Batch [7020] Speed: 671.83 samples/sec acc=0.098633 +INFO:root:Epoch[1] Batch [7040] Speed: 664.19 samples/sec acc=0.103320 +INFO:root:Epoch[1] Batch [7060] Speed: 664.75 samples/sec acc=0.097363 +INFO:root:Epoch[1] Batch [7080] Speed: 664.33 samples/sec acc=0.106250 +INFO:root:Epoch[1] Batch [7100] Speed: 664.17 samples/sec acc=0.103418 +INFO:root:Epoch[1] Batch [7120] Speed: 667.57 samples/sec acc=0.107422 +INFO:root:Epoch[1] Batch [7140] Speed: 678.84 samples/sec acc=0.098437 +INFO:root:Epoch[1] Batch [7160] Speed: 673.04 samples/sec acc=0.099609 +INFO:root:Epoch[1] Batch [7180] Speed: 664.41 samples/sec acc=0.103516 +INFO:root:Epoch[1] Batch [7200] Speed: 664.60 samples/sec acc=0.104102 +INFO:root:Epoch[1] Batch [7220] Speed: 663.82 samples/sec acc=0.097266 +INFO:root:Epoch[1] Batch [7240] Speed: 665.29 samples/sec acc=0.101758 +INFO:root:Epoch[1] Batch [7260] Speed: 664.91 samples/sec acc=0.104004 +INFO:root:Epoch[1] Batch [7280] Speed: 664.18 samples/sec acc=0.104980 +INFO:root:Epoch[1] Batch [7300] Speed: 664.74 samples/sec acc=0.104980 +INFO:root:Epoch[1] Batch [7320] Speed: 664.91 samples/sec acc=0.099707 +INFO:root:Epoch[1] Batch [7340] Speed: 664.00 samples/sec acc=0.103125 +INFO:root:Epoch[1] Batch [7360] Speed: 665.13 samples/sec acc=0.103516 +INFO:root:Epoch[1] Batch [7380] Speed: 664.32 samples/sec acc=0.100098 +INFO:root:Epoch[1] Batch [7400] Speed: 664.56 samples/sec acc=0.099902 +INFO:root:Epoch[1] Batch [7420] Speed: 664.68 samples/sec acc=0.098633 +INFO:root:Epoch[1] Batch [7440] Speed: 664.59 samples/sec acc=0.102930 +INFO:root:Epoch[1] Batch [7460] Speed: 663.32 samples/sec acc=0.100977 +INFO:root:Epoch[1] Batch [7480] Speed: 665.12 samples/sec acc=0.100977 +lr-batch-epoch: 0.1 7480 1 +INFO:root:Epoch[1] Batch [7500] Speed: 664.33 samples/sec acc=0.096973 +INFO:root:Epoch[1] Train-acc=0.102322 +INFO:root:Epoch[1] Time cost=6187.711 +call reset() +INFO:root:Epoch[2] Batch [20] Speed: 662.76 samples/sec acc=0.123791 +INFO:root:Epoch[2] Batch [40] Speed: 664.15 samples/sec acc=0.120020 +INFO:root:Epoch[2] Batch [60] Speed: 664.97 samples/sec acc=0.121094 +INFO:root:Epoch[2] Batch [80] Speed: 665.05 samples/sec acc=0.122461 +INFO:root:Epoch[2] Batch [100] Speed: 664.38 samples/sec acc=0.123242 +INFO:root:Epoch[2] Batch [120] Speed: 665.15 samples/sec acc=0.120410 +INFO:root:Epoch[2] Batch [140] Speed: 665.00 samples/sec acc=0.112891 +INFO:root:Epoch[2] Batch [160] Speed: 664.95 samples/sec acc=0.114355 +INFO:root:Epoch[2] Batch [180] Speed: 665.33 samples/sec acc=0.116504 +INFO:root:Epoch[2] Batch [200] Speed: 665.11 samples/sec acc=0.114551 +INFO:root:Epoch[2] Batch [220] Speed: 664.61 samples/sec acc=0.119141 +INFO:root:Epoch[2] Batch [240] Speed: 665.19 samples/sec acc=0.114941 +INFO:root:Epoch[2] Batch [260] Speed: 663.86 samples/sec acc=0.110937 +INFO:root:Epoch[2] Batch [280] Speed: 664.48 samples/sec acc=0.108594 +INFO:root:Epoch[2] Batch [300] Speed: 664.79 samples/sec acc=0.114062 +INFO:root:Epoch[2] Batch [320] Speed: 665.11 samples/sec acc=0.112988 +INFO:root:Epoch[2] Batch [340] Speed: 664.95 samples/sec acc=0.116406 +INFO:root:Epoch[2] Batch [360] Speed: 667.06 samples/sec acc=0.107910 +INFO:root:Epoch[2] Batch [380] Speed: 665.33 samples/sec acc=0.107617 +INFO:root:Epoch[2] Batch [400] Speed: 664.36 samples/sec acc=0.106934 +INFO:root:Epoch[2] Batch [420] Speed: 664.53 samples/sec acc=0.107031 +INFO:root:Epoch[2] Batch [440] Speed: 664.55 samples/sec acc=0.106152 +INFO:root:Epoch[2] Batch [460] Speed: 664.04 samples/sec acc=0.111914 +INFO:root:Epoch[2] Batch [480] Speed: 665.19 samples/sec acc=0.105957 +INFO:root:Epoch[2] Batch [500] Speed: 665.20 samples/sec acc=0.106348 +INFO:root:Epoch[2] Batch [520] Speed: 665.11 samples/sec acc=0.107715 +INFO:root:Epoch[2] Batch [540] Speed: 664.99 samples/sec acc=0.100879 +INFO:root:Epoch[2] Batch [560] Speed: 664.56 samples/sec acc=0.103711 +INFO:root:Epoch[2] Batch [580] Speed: 664.09 samples/sec acc=0.112793 +INFO:root:Epoch[2] Batch [600] Speed: 665.09 samples/sec acc=0.104980 +INFO:root:Epoch[2] Batch [620] Speed: 664.69 samples/sec acc=0.102930 +INFO:root:Epoch[2] Batch [640] Speed: 664.65 samples/sec acc=0.105762 +INFO:root:Epoch[2] Batch [660] Speed: 664.24 samples/sec acc=0.107227 +INFO:root:Epoch[2] Batch [680] Speed: 664.73 samples/sec acc=0.108691 +INFO:root:Epoch[2] Batch [700] Speed: 664.50 samples/sec acc=0.107813 +INFO:root:Epoch[2] Batch [720] Speed: 664.69 samples/sec acc=0.105566 +INFO:root:Epoch[2] Batch [740] Speed: 665.19 samples/sec acc=0.112793 +INFO:root:Epoch[2] Batch [760] Speed: 664.86 samples/sec acc=0.109277 +INFO:root:Epoch[2] Batch [780] Speed: 663.88 samples/sec acc=0.108496 +INFO:root:Epoch[2] Batch [800] Speed: 664.99 samples/sec acc=0.100684 +INFO:root:Epoch[2] Batch [820] Speed: 664.61 samples/sec acc=0.109473 +INFO:root:Epoch[2] Batch [840] Speed: 664.20 samples/sec acc=0.103027 +INFO:root:Epoch[2] Batch [860] Speed: 665.03 samples/sec acc=0.105273 +INFO:root:Epoch[2] Batch [880] Speed: 665.11 samples/sec acc=0.101660 +INFO:root:Epoch[2] Batch [900] Speed: 664.63 samples/sec acc=0.106738 +INFO:root:Epoch[2] Batch [920] Speed: 663.97 samples/sec acc=0.107520 +INFO:root:Epoch[2] Batch [940] Speed: 664.86 samples/sec acc=0.103125 +INFO:root:Epoch[2] Batch [960] Speed: 664.08 samples/sec acc=0.107422 +[16000][MARGIN]0.651529,0.216234 +lr-batch-epoch: 0.1 961 2 +testing verification.. +(14000, 512) +infer time 22.022497 +[cfp_ff][16000]XNorm: 22.037617 +[cfp_ff][16000]Accuracy-Flip: 0.99143+-0.00461 +testing verification.. +(14000, 512) +infer time 22.0002 +[cfp_fp][16000]XNorm: 18.299705 +[cfp_fp][16000]Accuracy-Flip: 0.82743+-0.01448 +testing verification.. +(12000, 512) +infer time 19.077122 +[agedb_30][16000]XNorm: 21.726744 +[agedb_30][16000]Accuracy-Flip: 0.93767+-0.01450 +testing verification.. +(12000, 512) +infer time 20.571949 +[lfw][16000]XNorm: 22.139647 +[lfw][16000]Accuracy-Flip: 0.99033+-0.00427 +[16000]Accuracy-Highest: 0.99100 +INFO:root:Epoch[2] Batch [980] Speed: 88.23 samples/sec acc=0.105664 +INFO:root:Epoch[2] Batch [1000] Speed: 663.50 samples/sec acc=0.103809 +INFO:root:Epoch[2] Batch [1020] Speed: 663.57 samples/sec acc=0.110156 +INFO:root:Epoch[2] Batch [1040] Speed: 664.63 samples/sec acc=0.105078 +INFO:root:Epoch[2] Batch [1060] Speed: 664.12 samples/sec acc=0.110645 +INFO:root:Epoch[2] Batch [1080] Speed: 670.58 samples/sec acc=0.110547 +INFO:root:Epoch[2] Batch [1100] Speed: 685.56 samples/sec acc=0.110059 +INFO:root:Epoch[2] Batch [1120] Speed: 664.68 samples/sec acc=0.107324 +INFO:root:Epoch[2] Batch [1140] Speed: 664.30 samples/sec acc=0.108594 +INFO:root:Epoch[2] Batch [1160] Speed: 665.77 samples/sec acc=0.105957 +INFO:root:Epoch[2] Batch [1180] Speed: 664.53 samples/sec acc=0.101758 +INFO:root:Epoch[2] Batch [1200] Speed: 664.85 samples/sec acc=0.108594 +INFO:root:Epoch[2] Batch [1220] Speed: 664.07 samples/sec acc=0.107520 +INFO:root:Epoch[2] Batch [1240] Speed: 664.89 samples/sec acc=0.103516 +INFO:root:Epoch[2] Batch [1260] Speed: 664.97 samples/sec acc=0.107520 +INFO:root:Epoch[2] Batch [1280] Speed: 665.06 samples/sec acc=0.106543 +INFO:root:Epoch[2] Batch [1300] Speed: 664.37 samples/sec acc=0.104590 +INFO:root:Epoch[2] Batch [1320] Speed: 664.46 samples/sec acc=0.111230 +INFO:root:Epoch[2] Batch [1340] Speed: 664.77 samples/sec acc=0.107324 +INFO:root:Epoch[2] Batch [1360] Speed: 664.64 samples/sec acc=0.107813 +INFO:root:Epoch[2] Batch [1380] Speed: 665.25 samples/sec acc=0.106250 +INFO:root:Epoch[2] Batch [1400] Speed: 664.91 samples/sec acc=0.108398 +INFO:root:Epoch[2] Batch [1420] Speed: 664.60 samples/sec acc=0.105469 +INFO:root:Epoch[2] Batch [1440] Speed: 663.94 samples/sec acc=0.104492 +INFO:root:Epoch[2] Batch [1460] Speed: 665.11 samples/sec acc=0.105273 +INFO:root:Epoch[2] Batch [1480] Speed: 665.18 samples/sec acc=0.104688 +INFO:root:Epoch[2] Batch [1500] Speed: 663.93 samples/sec acc=0.109570 +INFO:root:Epoch[2] Batch [1520] Speed: 664.76 samples/sec acc=0.109375 +INFO:root:Epoch[2] Batch [1540] Speed: 663.55 samples/sec acc=0.107813 +INFO:root:Epoch[2] Batch [1560] Speed: 665.20 samples/sec acc=0.112793 +INFO:root:Epoch[2] Batch [1580] Speed: 665.05 samples/sec acc=0.104004 +INFO:root:Epoch[2] Batch [1600] Speed: 664.81 samples/sec acc=0.110449 +INFO:root:Epoch[2] Batch [1620] Speed: 664.04 samples/sec acc=0.103711 +INFO:root:Epoch[2] Batch [1640] Speed: 664.94 samples/sec acc=0.103613 +INFO:root:Epoch[2] Batch [1660] Speed: 664.82 samples/sec acc=0.106543 +INFO:root:Epoch[2] Batch [1680] Speed: 664.07 samples/sec acc=0.115625 +INFO:root:Epoch[2] Batch [1700] Speed: 664.73 samples/sec acc=0.108594 +INFO:root:Epoch[2] Batch [1720] Speed: 664.96 samples/sec acc=0.111621 +INFO:root:Epoch[2] Batch [1740] Speed: 664.57 samples/sec acc=0.108203 +INFO:root:Epoch[2] Batch [1760] Speed: 664.65 samples/sec acc=0.105273 +INFO:root:Epoch[2] Batch [1780] Speed: 664.55 samples/sec acc=0.109570 +INFO:root:Epoch[2] Batch [1800] Speed: 663.90 samples/sec acc=0.108887 +INFO:root:Epoch[2] Batch [1820] Speed: 665.03 samples/sec acc=0.110937 +INFO:root:Epoch[2] Batch [1840] Speed: 664.37 samples/sec acc=0.108789 +INFO:root:Epoch[2] Batch [1860] Speed: 665.64 samples/sec acc=0.108691 +INFO:root:Epoch[2] Batch [1880] Speed: 664.35 samples/sec acc=0.106738 +INFO:root:Epoch[2] Batch [1900] Speed: 664.58 samples/sec acc=0.110742 +INFO:root:Epoch[2] Batch [1920] Speed: 664.56 samples/sec acc=0.116797 +INFO:root:Epoch[2] Batch [1940] Speed: 664.19 samples/sec acc=0.107129 +INFO:root:Epoch[2] Batch [1960] Speed: 664.40 samples/sec acc=0.107227 +lr-batch-epoch: 0.1 1961 2 +INFO:root:Epoch[2] Batch [1980] Speed: 664.40 samples/sec acc=0.108008 +INFO:root:Epoch[2] Batch [2000] Speed: 664.47 samples/sec acc=0.106055 +INFO:root:Epoch[2] Batch [2020] Speed: 663.48 samples/sec acc=0.112207 +INFO:root:Epoch[2] Batch [2040] Speed: 664.45 samples/sec acc=0.104199 +INFO:root:Epoch[2] Batch [2060] Speed: 664.24 samples/sec acc=0.110937 +INFO:root:Epoch[2] Batch [2080] Speed: 664.63 samples/sec acc=0.104590 +INFO:root:Epoch[2] Batch [2100] Speed: 664.37 samples/sec acc=0.110254 +INFO:root:Epoch[2] Batch [2120] Speed: 664.96 samples/sec acc=0.109668 +INFO:root:Epoch[2] Batch [2140] Speed: 664.44 samples/sec acc=0.111523 +INFO:root:Epoch[2] Batch [2160] Speed: 664.79 samples/sec acc=0.107520 +INFO:root:Epoch[2] Batch [2180] Speed: 664.34 samples/sec acc=0.106445 +INFO:root:Epoch[2] Batch [2200] Speed: 664.62 samples/sec acc=0.109961 +INFO:root:Epoch[2] Batch [2220] Speed: 664.52 samples/sec acc=0.109375 +INFO:root:Epoch[2] Batch [2240] Speed: 665.07 samples/sec acc=0.109570 +INFO:root:Epoch[2] Batch [2260] Speed: 664.79 samples/sec acc=0.108496 +INFO:root:Epoch[2] Batch [2280] Speed: 664.37 samples/sec acc=0.107422 +INFO:root:Epoch[2] Batch [2300] Speed: 663.81 samples/sec acc=0.102930 +INFO:root:Epoch[2] Batch [2320] Speed: 664.82 samples/sec acc=0.106738 +INFO:root:Epoch[2] Batch [2340] Speed: 663.48 samples/sec acc=0.111230 +INFO:root:Epoch[2] Batch [2360] Speed: 664.29 samples/sec acc=0.109180 +INFO:root:Epoch[2] Batch [2380] Speed: 664.07 samples/sec acc=0.107617 +INFO:root:Epoch[2] Batch [2400] Speed: 664.46 samples/sec acc=0.111621 +INFO:root:Epoch[2] Batch [2420] Speed: 663.83 samples/sec acc=0.111426 +INFO:root:Epoch[2] Batch [2440] Speed: 664.06 samples/sec acc=0.111523 +INFO:root:Epoch[2] Batch [2460] Speed: 664.59 samples/sec acc=0.106934 +INFO:root:Epoch[2] Batch [2480] Speed: 664.31 samples/sec acc=0.112109 +INFO:root:Epoch[2] Batch [2500] Speed: 664.29 samples/sec acc=0.114258 +INFO:root:Epoch[2] Batch [2520] Speed: 665.16 samples/sec acc=0.108594 +INFO:root:Epoch[2] Batch [2540] Speed: 664.23 samples/sec acc=0.109180 +INFO:root:Epoch[2] Batch [2560] Speed: 663.99 samples/sec acc=0.116113 +INFO:root:Epoch[2] Batch [2580] Speed: 664.65 samples/sec acc=0.110059 +INFO:root:Epoch[2] Batch [2600] Speed: 664.12 samples/sec acc=0.110059 +INFO:root:Epoch[2] Batch [2620] Speed: 663.70 samples/sec acc=0.109180 +INFO:root:Epoch[2] Batch [2640] Speed: 661.06 samples/sec acc=0.111230 +INFO:root:Epoch[2] Batch [2660] Speed: 671.20 samples/sec acc=0.113770 +INFO:root:Epoch[2] Batch [2680] Speed: 664.35 samples/sec acc=0.106934 +INFO:root:Epoch[2] Batch [2700] Speed: 664.46 samples/sec acc=0.109570 +INFO:root:Epoch[2] Batch [2720] Speed: 664.56 samples/sec acc=0.109863 +INFO:root:Epoch[2] Batch [2740] Speed: 664.62 samples/sec acc=0.109473 +INFO:root:Epoch[2] Batch [2760] Speed: 663.39 samples/sec acc=0.113281 +INFO:root:Epoch[2] Batch [2780] Speed: 663.43 samples/sec acc=0.107031 +INFO:root:Epoch[2] Batch [2800] Speed: 663.70 samples/sec acc=0.112207 +INFO:root:Epoch[2] Batch [2820] Speed: 664.16 samples/sec acc=0.110937 +INFO:root:Epoch[2] Batch [2840] Speed: 664.13 samples/sec acc=0.114551 +INFO:root:Epoch[2] Batch [2860] Speed: 664.69 samples/sec acc=0.112500 +INFO:root:Epoch[2] Batch [2880] Speed: 664.43 samples/sec acc=0.110156 +INFO:root:Epoch[2] Batch [2900] Speed: 664.40 samples/sec acc=0.106445 +INFO:root:Epoch[2] Batch [2920] Speed: 664.79 samples/sec acc=0.112598 +INFO:root:Epoch[2] Batch [2940] Speed: 663.88 samples/sec acc=0.108496 +INFO:root:Epoch[2] Batch [2960] Speed: 664.18 samples/sec acc=0.109766 +[18000][MARGIN]0.643295,0.205146 +lr-batch-epoch: 0.1 2961 2 +testing verification.. +(14000, 512) +infer time 20.873428 +[cfp_ff][18000]XNorm: 21.546624 +[cfp_ff][18000]Accuracy-Flip: 0.99343+-0.00339 +testing verification.. +(14000, 512) +infer time 21.734194 +[cfp_fp][18000]XNorm: 17.674893 +[cfp_fp][18000]Accuracy-Flip: 0.83671+-0.01759 +testing verification.. +(12000, 512) +infer time 21.034575 +[agedb_30][18000]XNorm: 21.225530 +[agedb_30][18000]Accuracy-Flip: 0.94467+-0.01388 +testing verification.. +(12000, 512) +infer time 19.427078 +[lfw][18000]XNorm: 21.675605 +[lfw][18000]Accuracy-Flip: 0.99167+-0.00489 +saving 9 +INFO:root:Saved checkpoint to "../model-r50-am-lfw/model-0009.params" +[18000]Accuracy-Highest: 0.99167 +INFO:root:Epoch[2] Batch [2980] Speed: 84.94 samples/sec acc=0.110156 +INFO:root:Epoch[2] Batch [3000] Speed: 663.02 samples/sec acc=0.112598 +INFO:root:Epoch[2] Batch [3020] Speed: 663.09 samples/sec acc=0.109082 +INFO:root:Epoch[2] Batch [3040] Speed: 663.72 samples/sec acc=0.113867 +INFO:root:Epoch[2] Batch [3060] Speed: 663.60 samples/sec acc=0.114160 +INFO:root:Epoch[2] Batch [3080] Speed: 664.46 samples/sec acc=0.107227 +INFO:root:Epoch[2] Batch [3100] Speed: 664.43 samples/sec acc=0.110254 +INFO:root:Epoch[2] Batch [3120] Speed: 664.16 samples/sec acc=0.117578 +INFO:root:Epoch[2] Batch [3140] Speed: 663.31 samples/sec acc=0.111914 +INFO:root:Epoch[2] Batch [3160] Speed: 663.83 samples/sec acc=0.110937 +INFO:root:Epoch[2] Batch [3180] Speed: 664.06 samples/sec acc=0.108691 +INFO:root:Epoch[2] Batch [3200] Speed: 664.65 samples/sec acc=0.107617 +INFO:root:Epoch[2] Batch [3220] Speed: 664.69 samples/sec acc=0.112500 +INFO:root:Epoch[2] Batch [3240] Speed: 664.71 samples/sec acc=0.110352 +INFO:root:Epoch[2] Batch [3260] Speed: 664.45 samples/sec acc=0.110645 +INFO:root:Epoch[2] Batch [3280] Speed: 665.02 samples/sec acc=0.104785 +INFO:root:Epoch[2] Batch [3300] Speed: 664.39 samples/sec acc=0.112793 +INFO:root:Epoch[2] Batch [3320] Speed: 663.92 samples/sec acc=0.107227 +INFO:root:Epoch[2] Batch [3340] Speed: 664.14 samples/sec acc=0.115137 +INFO:root:Epoch[2] Batch [3360] Speed: 668.48 samples/sec acc=0.111621 +INFO:root:Epoch[2] Batch [3380] Speed: 683.07 samples/sec acc=0.108789 +INFO:root:Epoch[2] Batch [3400] Speed: 675.24 samples/sec acc=0.112305 +INFO:root:Epoch[2] Batch [3420] Speed: 664.20 samples/sec acc=0.109375 +INFO:root:Epoch[2] Batch [3440] Speed: 664.32 samples/sec acc=0.111914 +INFO:root:Epoch[2] Batch [3460] Speed: 663.89 samples/sec acc=0.114844 +INFO:root:Epoch[2] Batch [3480] Speed: 664.25 samples/sec acc=0.111914 +INFO:root:Epoch[2] Batch [3500] Speed: 663.71 samples/sec acc=0.114355 +INFO:root:Epoch[2] Batch [3520] Speed: 664.43 samples/sec acc=0.111816 +INFO:root:Epoch[2] Batch [3540] Speed: 663.37 samples/sec acc=0.112207 +INFO:root:Epoch[2] Batch [3560] Speed: 664.55 samples/sec acc=0.111816 +INFO:root:Epoch[2] Batch [3580] Speed: 664.70 samples/sec acc=0.108008 +INFO:root:Epoch[2] Batch [3600] Speed: 664.80 samples/sec acc=0.110742 +INFO:root:Epoch[2] Batch [3620] Speed: 664.22 samples/sec acc=0.109570 +INFO:root:Epoch[2] Batch [3640] Speed: 663.62 samples/sec acc=0.111719 +INFO:root:Epoch[2] Batch [3660] Speed: 664.16 samples/sec acc=0.114648 +INFO:root:Epoch[2] Batch [3680] Speed: 664.17 samples/sec acc=0.111328 +INFO:root:Epoch[2] Batch [3700] Speed: 664.86 samples/sec acc=0.112793 +INFO:root:Epoch[2] Batch [3720] Speed: 664.13 samples/sec acc=0.107227 +INFO:root:Epoch[2] Batch [3740] Speed: 664.20 samples/sec acc=0.116797 +INFO:root:Epoch[2] Batch [3760] Speed: 664.91 samples/sec acc=0.115723 +INFO:root:Epoch[2] Batch [3780] Speed: 663.87 samples/sec acc=0.117773 +INFO:root:Epoch[2] Batch [3800] Speed: 664.63 samples/sec acc=0.108398 +INFO:root:Epoch[2] Batch [3820] Speed: 664.50 samples/sec acc=0.114746 +INFO:root:Epoch[2] Batch [3840] Speed: 664.13 samples/sec acc=0.106348 +INFO:root:Epoch[2] Batch [3860] Speed: 663.95 samples/sec acc=0.119531 +INFO:root:Epoch[2] Batch [3880] Speed: 664.61 samples/sec acc=0.110840 +INFO:root:Epoch[2] Batch [3900] Speed: 664.16 samples/sec acc=0.118555 +INFO:root:Epoch[2] Batch [3920] Speed: 664.38 samples/sec acc=0.111523 +INFO:root:Epoch[2] Batch [3940] Speed: 664.28 samples/sec acc=0.112305 +INFO:root:Epoch[2] Batch [3960] Speed: 664.88 samples/sec acc=0.116016 +lr-batch-epoch: 0.1 3961 2 +INFO:root:Epoch[2] Batch [3980] Speed: 664.94 samples/sec acc=0.113672 +INFO:root:Epoch[2] Batch [4000] Speed: 664.07 samples/sec acc=0.108008 +INFO:root:Epoch[2] Batch [4020] Speed: 664.84 samples/sec acc=0.117090 +INFO:root:Epoch[2] Batch [4040] Speed: 664.60 samples/sec acc=0.113867 +INFO:root:Epoch[2] Batch [4060] Speed: 664.30 samples/sec acc=0.116309 +INFO:root:Epoch[2] Batch [4080] Speed: 663.47 samples/sec acc=0.118262 +INFO:root:Epoch[2] Batch [4100] Speed: 664.70 samples/sec acc=0.114355 +INFO:root:Epoch[2] Batch [4120] Speed: 663.99 samples/sec acc=0.112109 +INFO:root:Epoch[2] Batch [4140] Speed: 669.73 samples/sec acc=0.109082 +INFO:root:Epoch[2] Batch [4160] Speed: 680.88 samples/sec acc=0.111914 +INFO:root:Epoch[2] Batch [4180] Speed: 669.61 samples/sec acc=0.110547 +INFO:root:Epoch[2] Batch [4200] Speed: 665.34 samples/sec acc=0.113477 +INFO:root:Epoch[2] Batch [4220] Speed: 664.35 samples/sec acc=0.117285 +INFO:root:Epoch[2] Batch [4240] Speed: 664.92 samples/sec acc=0.114062 +INFO:root:Epoch[2] Batch [4260] Speed: 664.83 samples/sec acc=0.113867 +INFO:root:Epoch[2] Batch [4280] Speed: 663.98 samples/sec acc=0.115430 +INFO:root:Epoch[2] Batch [4300] Speed: 664.89 samples/sec acc=0.114941 +INFO:root:Epoch[2] Batch [4320] Speed: 664.82 samples/sec acc=0.112207 +INFO:root:Epoch[2] Batch [4340] Speed: 664.90 samples/sec acc=0.114258 +INFO:root:Epoch[2] Batch [4360] Speed: 664.17 samples/sec acc=0.110840 +INFO:root:Epoch[2] Batch [4380] Speed: 664.28 samples/sec acc=0.118359 +INFO:root:Epoch[2] Batch [4400] Speed: 663.80 samples/sec acc=0.115723 +INFO:root:Epoch[2] Batch [4420] Speed: 664.33 samples/sec acc=0.114355 +INFO:root:Epoch[2] Batch [4440] Speed: 665.21 samples/sec acc=0.111719 +INFO:root:Epoch[2] Batch [4460] Speed: 664.03 samples/sec acc=0.116504 +INFO:root:Epoch[2] Batch [4480] Speed: 664.72 samples/sec acc=0.111133 +INFO:root:Epoch[2] Batch [4500] Speed: 663.72 samples/sec acc=0.119629 +INFO:root:Epoch[2] Batch [4520] Speed: 664.06 samples/sec acc=0.108594 +INFO:root:Epoch[2] Batch [4540] Speed: 664.94 samples/sec acc=0.111914 +INFO:root:Epoch[2] Batch [4560] Speed: 663.78 samples/sec acc=0.110742 +INFO:root:Epoch[2] Batch [4580] Speed: 665.08 samples/sec acc=0.117188 +INFO:root:Epoch[2] Batch [4600] Speed: 664.37 samples/sec acc=0.110937 +INFO:root:Epoch[2] Batch [4620] Speed: 664.12 samples/sec acc=0.110840 +INFO:root:Epoch[2] Batch [4640] Speed: 664.57 samples/sec acc=0.117383 +INFO:root:Epoch[2] Batch [4660] Speed: 663.86 samples/sec acc=0.113672 +INFO:root:Epoch[2] Batch [4680] Speed: 664.00 samples/sec acc=0.116113 +INFO:root:Epoch[2] Batch [4700] Speed: 664.21 samples/sec acc=0.121289 +INFO:root:Epoch[2] Batch [4720] Speed: 664.58 samples/sec acc=0.114355 +INFO:root:Epoch[2] Batch [4740] Speed: 664.36 samples/sec acc=0.114160 +INFO:root:Epoch[2] Batch [4760] Speed: 664.57 samples/sec acc=0.117090 +INFO:root:Epoch[2] Batch [4780] Speed: 664.18 samples/sec acc=0.116113 +INFO:root:Epoch[2] Batch [4800] Speed: 664.03 samples/sec acc=0.118652 +INFO:root:Epoch[2] Batch [4820] Speed: 664.77 samples/sec acc=0.112305 +INFO:root:Epoch[2] Batch [4840] Speed: 663.82 samples/sec acc=0.121484 +INFO:root:Epoch[2] Batch [4860] Speed: 664.63 samples/sec acc=0.115918 +INFO:root:Epoch[2] Batch [4880] Speed: 664.45 samples/sec acc=0.116016 +INFO:root:Epoch[2] Batch [4900] Speed: 664.80 samples/sec acc=0.120020 +INFO:root:Epoch[2] Batch [4920] Speed: 663.74 samples/sec acc=0.119531 +INFO:root:Epoch[2] Batch [4940] Speed: 669.45 samples/sec acc=0.110937 +INFO:root:Epoch[2] Batch [4960] Speed: 665.32 samples/sec acc=0.109863 +[20000][MARGIN]0.663238,0.230801 +lr-batch-epoch: 0.1 4961 2 +testing verification.. +(14000, 512) +infer time 21.918577 +[cfp_ff][20000]XNorm: 20.374364 +[cfp_ff][20000]Accuracy-Flip: 0.99314+-0.00325 +testing verification.. +(14000, 512) +infer time 19.171411 +[cfp_fp][20000]XNorm: 16.566911 +[cfp_fp][20000]Accuracy-Flip: 0.81929+-0.01688 +testing verification.. +(12000, 512) +infer time 18.896416 +[agedb_30][20000]XNorm: 19.540734 +[agedb_30][20000]Accuracy-Flip: 0.94333+-0.01216 +testing verification.. +(12000, 512) +infer time 20.152508 +[lfw][20000]XNorm: 20.211320 +[lfw][20000]Accuracy-Flip: 0.99067+-0.00410 +[20000]Accuracy-Highest: 0.99167 +INFO:root:Epoch[2] Batch [4980] Speed: 91.09 samples/sec acc=0.118750 +INFO:root:Epoch[2] Batch [5000] Speed: 672.88 samples/sec acc=0.119922 +INFO:root:Epoch[2] Batch [5020] Speed: 663.05 samples/sec acc=0.116016 +INFO:root:Epoch[2] Batch [5040] Speed: 663.79 samples/sec acc=0.118066 +INFO:root:Epoch[2] Batch [5060] Speed: 663.57 samples/sec acc=0.115039 +INFO:root:Epoch[2] Batch [5080] Speed: 663.88 samples/sec acc=0.112305 +INFO:root:Epoch[2] Batch [5100] Speed: 664.05 samples/sec acc=0.119336 +INFO:root:Epoch[2] Batch [5120] Speed: 664.60 samples/sec acc=0.118652 +INFO:root:Epoch[2] Batch [5140] Speed: 663.68 samples/sec acc=0.117676 +INFO:root:Epoch[2] Batch [5160] Speed: 665.14 samples/sec acc=0.116406 +INFO:root:Epoch[2] Batch [5180] Speed: 663.46 samples/sec acc=0.110449 +INFO:root:Epoch[2] Batch [5200] Speed: 663.83 samples/sec acc=0.112109 +INFO:root:Epoch[2] Batch [5220] Speed: 664.03 samples/sec acc=0.116602 +INFO:root:Epoch[2] Batch [5240] Speed: 664.81 samples/sec acc=0.116309 +INFO:root:Epoch[2] Batch [5260] Speed: 663.35 samples/sec acc=0.117090 +INFO:root:Epoch[2] Batch [5280] Speed: 664.49 samples/sec acc=0.115918 +INFO:root:Epoch[2] Batch [5300] Speed: 663.17 samples/sec acc=0.119531 +INFO:root:Epoch[2] Batch [5320] Speed: 664.53 samples/sec acc=0.114844 +INFO:root:Epoch[2] Batch [5340] Speed: 662.99 samples/sec acc=0.116699 +INFO:root:Epoch[2] Batch [5360] Speed: 663.62 samples/sec acc=0.114258 +INFO:root:Epoch[2] Batch [5380] Speed: 663.86 samples/sec acc=0.111133 +INFO:root:Epoch[2] Batch [5400] Speed: 664.32 samples/sec acc=0.115430 +INFO:root:Epoch[2] Batch [5420] Speed: 664.78 samples/sec acc=0.111816 +INFO:root:Epoch[2] Batch [5440] Speed: 664.39 samples/sec acc=0.111230 +INFO:root:Epoch[2] Batch [5460] Speed: 664.17 samples/sec acc=0.117676 +INFO:root:Epoch[2] Batch [5480] Speed: 664.50 samples/sec acc=0.115625 +INFO:root:Epoch[2] Batch [5500] Speed: 664.36 samples/sec acc=0.118066 +INFO:root:Epoch[2] Batch [5520] Speed: 664.05 samples/sec acc=0.120996 +INFO:root:Epoch[2] Batch [5540] Speed: 664.47 samples/sec acc=0.118750 +INFO:root:Epoch[2] Batch [5560] Speed: 664.39 samples/sec acc=0.123047 +INFO:root:Epoch[2] Batch [5580] Speed: 663.95 samples/sec acc=0.117090 +INFO:root:Epoch[2] Batch [5600] Speed: 664.22 samples/sec acc=0.121387 +INFO:root:Epoch[2] Batch [5620] Speed: 664.51 samples/sec acc=0.119824 +INFO:root:Epoch[2] Batch [5640] Speed: 664.47 samples/sec acc=0.118164 +INFO:root:Epoch[2] Batch [5660] Speed: 666.73 samples/sec acc=0.115137 +INFO:root:Epoch[2] Batch [5680] Speed: 664.81 samples/sec acc=0.116895 +INFO:root:Epoch[2] Batch [5700] Speed: 663.82 samples/sec acc=0.122656 +INFO:root:Epoch[2] Batch [5720] Speed: 664.55 samples/sec acc=0.114062 +INFO:root:Epoch[2] Batch [5740] Speed: 664.58 samples/sec acc=0.114453 +INFO:root:Epoch[2] Batch [5760] Speed: 664.23 samples/sec acc=0.118164 +INFO:root:Epoch[2] Batch [5780] Speed: 664.38 samples/sec acc=0.116699 +INFO:root:Epoch[2] Batch [5800] Speed: 664.22 samples/sec acc=0.117676 +INFO:root:Epoch[2] Batch [5820] Speed: 663.73 samples/sec acc=0.119336 +INFO:root:Epoch[2] Batch [5840] Speed: 664.61 samples/sec acc=0.116602 +INFO:root:Epoch[2] Batch [5860] Speed: 664.85 samples/sec acc=0.114941 +INFO:root:Epoch[2] Batch [5880] Speed: 664.40 samples/sec acc=0.118164 +INFO:root:Epoch[2] Batch [5900] Speed: 663.76 samples/sec acc=0.119531 +INFO:root:Epoch[2] Batch [5920] Speed: 664.06 samples/sec acc=0.119043 +INFO:root:Epoch[2] Batch [5940] Speed: 663.59 samples/sec acc=0.121387 +INFO:root:Epoch[2] Batch [5960] Speed: 664.12 samples/sec acc=0.112793 +lr-batch-epoch: 0.1 5961 2 +INFO:root:Epoch[2] Batch [5980] Speed: 664.73 samples/sec acc=0.115039 +INFO:root:Epoch[2] Batch [6000] Speed: 663.84 samples/sec acc=0.111133 +INFO:root:Epoch[2] Batch [6020] Speed: 664.09 samples/sec acc=0.118555 +INFO:root:Epoch[2] Batch [6040] Speed: 664.42 samples/sec acc=0.117090 +INFO:root:Epoch[2] Batch [6060] Speed: 664.06 samples/sec acc=0.117480 +INFO:root:Epoch[2] Batch [6080] Speed: 664.31 samples/sec acc=0.119531 +INFO:root:Epoch[2] Batch [6100] Speed: 663.97 samples/sec acc=0.119434 +INFO:root:Epoch[2] Batch [6120] Speed: 663.05 samples/sec acc=0.123633 +INFO:root:Epoch[2] Batch [6140] Speed: 664.41 samples/sec acc=0.117871 +INFO:root:Epoch[2] Batch [6160] Speed: 663.85 samples/sec acc=0.110449 +INFO:root:Epoch[2] Batch [6180] Speed: 663.81 samples/sec acc=0.113867 +INFO:root:Epoch[2] Batch [6200] Speed: 664.09 samples/sec acc=0.114941 +INFO:root:Epoch[2] Batch [6220] Speed: 664.49 samples/sec acc=0.119238 +INFO:root:Epoch[2] Batch [6240] Speed: 664.11 samples/sec acc=0.115820 +INFO:root:Epoch[2] Batch [6260] Speed: 663.29 samples/sec acc=0.115234 +INFO:root:Epoch[2] Batch [6280] Speed: 664.97 samples/sec acc=0.114355 +INFO:root:Epoch[2] Batch [6300] Speed: 663.77 samples/sec acc=0.117188 +INFO:root:Epoch[2] Batch [6320] Speed: 663.55 samples/sec acc=0.123535 +INFO:root:Epoch[2] Batch [6340] Speed: 664.37 samples/sec acc=0.122070 +INFO:root:Epoch[2] Batch [6360] Speed: 664.77 samples/sec acc=0.125977 +INFO:root:Epoch[2] Batch [6380] Speed: 663.94 samples/sec acc=0.114746 +INFO:root:Epoch[2] Batch [6400] Speed: 664.46 samples/sec acc=0.124316 +INFO:root:Epoch[2] Batch [6420] Speed: 663.56 samples/sec acc=0.118262 +INFO:root:Epoch[2] Batch [6440] Speed: 669.30 samples/sec acc=0.118164 +INFO:root:Epoch[2] Batch [6460] Speed: 681.44 samples/sec acc=0.121094 +INFO:root:Epoch[2] Batch [6480] Speed: 680.55 samples/sec acc=0.124023 +INFO:root:Epoch[2] Batch [6500] Speed: 680.84 samples/sec acc=0.119531 +INFO:root:Epoch[2] Batch [6520] Speed: 680.07 samples/sec acc=0.124219 +INFO:root:Epoch[2] Batch [6540] Speed: 681.65 samples/sec acc=0.122754 +INFO:root:Epoch[2] Batch [6560] Speed: 678.54 samples/sec acc=0.115527 +INFO:root:Epoch[2] Batch [6580] Speed: 663.81 samples/sec acc=0.116895 +INFO:root:Epoch[2] Batch [6600] Speed: 664.42 samples/sec acc=0.114844 +INFO:root:Epoch[2] Batch [6620] Speed: 663.95 samples/sec acc=0.119141 +INFO:root:Epoch[2] Batch [6640] Speed: 662.97 samples/sec acc=0.119824 +INFO:root:Epoch[2] Batch [6660] Speed: 664.26 samples/sec acc=0.119922 +INFO:root:Epoch[2] Batch [6680] Speed: 664.31 samples/sec acc=0.117285 +INFO:root:Epoch[2] Batch [6700] Speed: 663.47 samples/sec acc=0.114355 +INFO:root:Epoch[2] Batch [6720] Speed: 664.60 samples/sec acc=0.123145 +INFO:root:Epoch[2] Batch [6740] Speed: 663.39 samples/sec acc=0.121484 +INFO:root:Epoch[2] Batch [6760] Speed: 663.38 samples/sec acc=0.117969 +INFO:root:Epoch[2] Batch [6780] Speed: 664.36 samples/sec acc=0.125000 +INFO:root:Epoch[2] Batch [6800] Speed: 664.32 samples/sec acc=0.116992 +INFO:root:Epoch[2] Batch [6820] Speed: 664.38 samples/sec acc=0.116211 +INFO:root:Epoch[2] Batch [6840] Speed: 663.61 samples/sec acc=0.114062 +INFO:root:Epoch[2] Batch [6860] Speed: 664.10 samples/sec acc=0.119629 +INFO:root:Epoch[2] Batch [6880] Speed: 664.32 samples/sec acc=0.121582 +INFO:root:Epoch[2] Batch [6900] Speed: 664.65 samples/sec acc=0.118359 +INFO:root:Epoch[2] Batch [6920] Speed: 663.93 samples/sec acc=0.115234 +INFO:root:Epoch[2] Batch [6940] Speed: 663.81 samples/sec acc=0.119434 +INFO:root:Epoch[2] Batch [6960] Speed: 663.18 samples/sec acc=0.113574 +[22000][MARGIN]0.657348,0.223681 +lr-batch-epoch: 0.1 6961 2 +testing verification.. +(14000, 512) +infer time 21.128909 +[cfp_ff][22000]XNorm: 21.352920 +[cfp_ff][22000]Accuracy-Flip: 0.99257+-0.00167 +testing verification.. +(14000, 512) +infer time 18.872781 +[cfp_fp][22000]XNorm: 17.430041 +[cfp_fp][22000]Accuracy-Flip: 0.82871+-0.01249 +testing verification.. +(12000, 512) +infer time 21.459833 +[agedb_30][22000]XNorm: 20.922552 +[agedb_30][22000]Accuracy-Flip: 0.94383+-0.00913 +testing verification.. +(12000, 512) +infer time 17.803807 +[lfw][22000]XNorm: 21.271461 +[lfw][22000]Accuracy-Flip: 0.99250+-0.00344 +saving 11 +INFO:root:Saved checkpoint to "../model-r50-am-lfw/model-0011.params" +[22000]Accuracy-Highest: 0.99250 +INFO:root:Epoch[2] Batch [6980] Speed: 88.76 samples/sec acc=0.117480 +INFO:root:Epoch[2] Batch [7000] Speed: 663.49 samples/sec acc=0.120117 +INFO:root:Epoch[2] Batch [7020] Speed: 662.53 samples/sec acc=0.117871 +INFO:root:Epoch[2] Batch [7040] Speed: 663.60 samples/sec acc=0.118457 +INFO:root:Epoch[2] Batch [7060] Speed: 663.42 samples/sec acc=0.116602 +INFO:root:Epoch[2] Batch [7080] Speed: 664.05 samples/sec acc=0.119922 +INFO:root:Epoch[2] Batch [7100] Speed: 664.54 samples/sec acc=0.122461 +INFO:root:Epoch[2] Batch [7120] Speed: 664.20 samples/sec acc=0.123145 +INFO:root:Epoch[2] Batch [7140] Speed: 665.31 samples/sec acc=0.123340 +INFO:root:Epoch[2] Batch [7160] Speed: 664.74 samples/sec acc=0.124609 +INFO:root:Epoch[2] Batch [7180] Speed: 664.66 samples/sec acc=0.120020 +INFO:root:Epoch[2] Batch [7200] Speed: 664.34 samples/sec acc=0.127148 +INFO:root:Epoch[2] Batch [7220] Speed: 671.26 samples/sec acc=0.123633 +INFO:root:Epoch[2] Batch [7240] Speed: 664.98 samples/sec acc=0.129297 +INFO:root:Epoch[2] Batch [7260] Speed: 663.81 samples/sec acc=0.118750 +INFO:root:Epoch[2] Batch [7280] Speed: 664.59 samples/sec acc=0.120605 +INFO:root:Epoch[2] Batch [7300] Speed: 664.42 samples/sec acc=0.125098 +INFO:root:Epoch[2] Batch [7320] Speed: 664.16 samples/sec acc=0.124414 +INFO:root:Epoch[2] Batch [7340] Speed: 664.47 samples/sec acc=0.117969 +INFO:root:Epoch[2] Batch [7360] Speed: 664.39 samples/sec acc=0.121875 +INFO:root:Epoch[2] Batch [7380] Speed: 663.71 samples/sec acc=0.122949 +INFO:root:Epoch[2] Batch [7400] Speed: 663.93 samples/sec acc=0.124219 +INFO:root:Epoch[2] Batch [7420] Speed: 664.72 samples/sec acc=0.121289 +INFO:root:Epoch[2] Batch [7440] Speed: 664.18 samples/sec acc=0.113965 +INFO:root:Epoch[2] Batch [7460] Speed: 663.63 samples/sec acc=0.124316 +INFO:root:Epoch[2] Batch [7480] Speed: 664.10 samples/sec acc=0.120898 +INFO:root:Epoch[2] Batch [7500] Speed: 664.24 samples/sec acc=0.120410 +INFO:root:Epoch[2] Train-acc=0.120551 +INFO:root:Epoch[2] Time cost=6193.579 +call reset() +INFO:root:Epoch[3] Batch [20] Speed: 676.59 samples/sec acc=0.149833 +INFO:root:Epoch[3] Batch [40] Speed: 672.43 samples/sec acc=0.142578 +INFO:root:Epoch[3] Batch [60] Speed: 663.42 samples/sec acc=0.137402 +INFO:root:Epoch[3] Batch [80] Speed: 664.03 samples/sec acc=0.135645 +INFO:root:Epoch[3] Batch [100] Speed: 664.10 samples/sec acc=0.132715 +INFO:root:Epoch[3] Batch [120] Speed: 664.15 samples/sec acc=0.133203 +INFO:root:Epoch[3] Batch [140] Speed: 663.85 samples/sec acc=0.134473 +INFO:root:Epoch[3] Batch [160] Speed: 664.61 samples/sec acc=0.131152 +INFO:root:Epoch[3] Batch [180] Speed: 664.18 samples/sec acc=0.137793 +INFO:root:Epoch[3] Batch [200] Speed: 664.27 samples/sec acc=0.135742 +INFO:root:Epoch[3] Batch [220] Speed: 665.12 samples/sec acc=0.131836 +INFO:root:Epoch[3] Batch [240] Speed: 663.97 samples/sec acc=0.139746 +INFO:root:Epoch[3] Batch [260] Speed: 664.24 samples/sec acc=0.136230 +INFO:root:Epoch[3] Batch [280] Speed: 665.08 samples/sec acc=0.133691 +INFO:root:Epoch[3] Batch [300] Speed: 664.23 samples/sec acc=0.137012 +INFO:root:Epoch[3] Batch [320] Speed: 663.24 samples/sec acc=0.131836 +INFO:root:Epoch[3] Batch [340] Speed: 665.29 samples/sec acc=0.129395 +INFO:root:Epoch[3] Batch [360] Speed: 664.53 samples/sec acc=0.133594 +INFO:root:Epoch[3] Batch [380] Speed: 664.21 samples/sec acc=0.127637 +INFO:root:Epoch[3] Batch [400] Speed: 663.98 samples/sec acc=0.125879 +INFO:root:Epoch[3] Batch [420] Speed: 664.86 samples/sec acc=0.128906 +INFO:root:Epoch[3] Batch [440] Speed: 663.66 samples/sec acc=0.132910 +lr-batch-epoch: 0.1 442 3 +INFO:root:Epoch[3] Batch [460] Speed: 673.99 samples/sec acc=0.125000 +INFO:root:Epoch[3] Batch [480] Speed: 663.55 samples/sec acc=0.136426 +INFO:root:Epoch[3] Batch [500] Speed: 664.04 samples/sec acc=0.123145 +INFO:root:Epoch[3] Batch [520] Speed: 665.16 samples/sec acc=0.129004 +INFO:root:Epoch[3] Batch [540] Speed: 663.61 samples/sec acc=0.119531 +INFO:root:Epoch[3] Batch [560] Speed: 664.36 samples/sec acc=0.123340 +INFO:root:Epoch[3] Batch [580] Speed: 664.27 samples/sec acc=0.124707 +INFO:root:Epoch[3] Batch [600] Speed: 663.76 samples/sec acc=0.127832 +INFO:root:Epoch[3] Batch [620] Speed: 664.59 samples/sec acc=0.125098 +INFO:root:Epoch[3] Batch [640] Speed: 664.99 samples/sec acc=0.118945 +INFO:root:Epoch[3] Batch [660] Speed: 664.18 samples/sec acc=0.132129 +INFO:root:Epoch[3] Batch [680] Speed: 664.41 samples/sec acc=0.120996 +INFO:root:Epoch[3] Batch [700] Speed: 665.25 samples/sec acc=0.120996 +INFO:root:Epoch[3] Batch [720] Speed: 664.00 samples/sec acc=0.125391 +INFO:root:Epoch[3] Batch [740] Speed: 664.30 samples/sec acc=0.121289 +INFO:root:Epoch[3] Batch [760] Speed: 664.60 samples/sec acc=0.124023 +INFO:root:Epoch[3] Batch [780] Speed: 664.30 samples/sec acc=0.123145 +INFO:root:Epoch[3] Batch [800] Speed: 664.70 samples/sec acc=0.122168 +INFO:root:Epoch[3] Batch [820] Speed: 663.92 samples/sec acc=0.122949 +INFO:root:Epoch[3] Batch [840] Speed: 664.20 samples/sec acc=0.126172 +INFO:root:Epoch[3] Batch [860] Speed: 664.74 samples/sec acc=0.127051 +INFO:root:Epoch[3] Batch [880] Speed: 665.04 samples/sec acc=0.123047 +INFO:root:Epoch[3] Batch [900] Speed: 664.94 samples/sec acc=0.125488 +INFO:root:Epoch[3] Batch [920] Speed: 662.39 samples/sec acc=0.130371 +INFO:root:Epoch[3] Batch [940] Speed: 665.08 samples/sec acc=0.122266 +INFO:root:Epoch[3] Batch [960] Speed: 664.76 samples/sec acc=0.116992 +INFO:root:Epoch[3] Batch [980] Speed: 664.07 samples/sec acc=0.122656 +INFO:root:Epoch[3] Batch [1000] Speed: 664.29 samples/sec acc=0.124902 +INFO:root:Epoch[3] Batch [1020] Speed: 665.25 samples/sec acc=0.124121 +INFO:root:Epoch[3] Batch [1040] Speed: 663.85 samples/sec acc=0.123926 +INFO:root:Epoch[3] Batch [1060] Speed: 664.97 samples/sec acc=0.123145 +INFO:root:Epoch[3] Batch [1080] Speed: 663.92 samples/sec acc=0.121582 +INFO:root:Epoch[3] Batch [1100] Speed: 663.69 samples/sec acc=0.127344 +INFO:root:Epoch[3] Batch [1120] Speed: 665.25 samples/sec acc=0.124609 +INFO:root:Epoch[3] Batch [1140] Speed: 664.36 samples/sec acc=0.121680 +INFO:root:Epoch[3] Batch [1160] Speed: 662.74 samples/sec acc=0.122559 +INFO:root:Epoch[3] Batch [1180] Speed: 664.77 samples/sec acc=0.122461 +INFO:root:Epoch[3] Batch [1200] Speed: 665.04 samples/sec acc=0.123633 +INFO:root:Epoch[3] Batch [1220] Speed: 664.49 samples/sec acc=0.123535 +INFO:root:Epoch[3] Batch [1240] Speed: 661.68 samples/sec acc=0.125488 +INFO:root:Epoch[3] Batch [1260] Speed: 670.20 samples/sec acc=0.121484 +INFO:root:Epoch[3] Batch [1280] Speed: 664.20 samples/sec acc=0.119141 +INFO:root:Epoch[3] Batch [1300] Speed: 664.92 samples/sec acc=0.124414 +INFO:root:Epoch[3] Batch [1320] Speed: 664.64 samples/sec acc=0.119629 +INFO:root:Epoch[3] Batch [1340] Speed: 663.19 samples/sec acc=0.122266 +INFO:root:Epoch[3] Batch [1360] Speed: 665.31 samples/sec acc=0.119629 +INFO:root:Epoch[3] Batch [1380] Speed: 664.81 samples/sec acc=0.119824 +INFO:root:Epoch[3] Batch [1400] Speed: 664.02 samples/sec acc=0.125781 +INFO:root:Epoch[3] Batch [1420] Speed: 664.94 samples/sec acc=0.121680 +INFO:root:Epoch[3] Batch [1440] Speed: 664.45 samples/sec acc=0.124805 +[24000][MARGIN]0.676005,0.245434 +lr-batch-epoch: 0.1 1442 3 +testing verification.. +(14000, 512) +infer time 18.967896 +[cfp_ff][24000]XNorm: 21.066906 +[cfp_ff][24000]Accuracy-Flip: 0.99229+-0.00475 +testing verification.. +(14000, 512) +infer time 20.284738 +[cfp_fp][24000]XNorm: 17.000686 +[cfp_fp][24000]Accuracy-Flip: 0.83029+-0.01477 +testing verification.. +(12000, 512) +infer time 18.408323 +[agedb_30][24000]XNorm: 20.699430 +[agedb_30][24000]Accuracy-Flip: 0.94183+-0.00911 +testing verification.. +(12000, 512) +infer time 17.257163 +[lfw][24000]XNorm: 20.954269 +[lfw][24000]Accuracy-Flip: 0.99233+-0.00442 +[24000]Accuracy-Highest: 0.99250 +INFO:root:Epoch[3] Batch [1460] Speed: 95.17 samples/sec acc=0.122559 +INFO:root:Epoch[3] Batch [1480] Speed: 684.66 samples/sec acc=0.128809 +INFO:root:Epoch[3] Batch [1500] Speed: 664.17 samples/sec acc=0.120117 +INFO:root:Epoch[3] Batch [1520] Speed: 663.18 samples/sec acc=0.122461 +INFO:root:Epoch[3] Batch [1540] Speed: 663.68 samples/sec acc=0.128516 +INFO:root:Epoch[3] Batch [1560] Speed: 664.18 samples/sec acc=0.121289 +INFO:root:Epoch[3] Batch [1580] Speed: 663.50 samples/sec acc=0.123730 +INFO:root:Epoch[3] Batch [1600] Speed: 664.59 samples/sec acc=0.119727 +INFO:root:Epoch[3] Batch [1620] Speed: 664.57 samples/sec acc=0.120117 +INFO:root:Epoch[3] Batch [1640] Speed: 664.05 samples/sec acc=0.122168 +INFO:root:Epoch[3] Batch [1660] Speed: 664.38 samples/sec acc=0.124512 +INFO:root:Epoch[3] Batch [1680] Speed: 663.93 samples/sec acc=0.126660 +INFO:root:Epoch[3] Batch [1700] Speed: 664.04 samples/sec acc=0.128516 +INFO:root:Epoch[3] Batch [1720] Speed: 664.56 samples/sec acc=0.120215 +INFO:root:Epoch[3] Batch [1740] Speed: 663.86 samples/sec acc=0.120898 +INFO:root:Epoch[3] Batch [1760] Speed: 662.76 samples/sec acc=0.123535 +INFO:root:Epoch[3] Batch [1780] Speed: 664.90 samples/sec acc=0.126270 +INFO:root:Epoch[3] Batch [1800] Speed: 663.03 samples/sec acc=0.121484 +INFO:root:Epoch[3] Batch [1820] Speed: 663.67 samples/sec acc=0.122266 +INFO:root:Epoch[3] Batch [1840] Speed: 664.01 samples/sec acc=0.124805 +INFO:root:Epoch[3] Batch [1860] Speed: 664.74 samples/sec acc=0.122559 +INFO:root:Epoch[3] Batch [1880] Speed: 662.70 samples/sec acc=0.121289 +INFO:root:Epoch[3] Batch [1900] Speed: 664.50 samples/sec acc=0.128320 +INFO:root:Epoch[3] Batch [1920] Speed: 664.27 samples/sec acc=0.125977 +INFO:root:Epoch[3] Batch [1940] Speed: 663.74 samples/sec acc=0.124902 +INFO:root:Epoch[3] Batch [1960] Speed: 664.55 samples/sec acc=0.122754 +INFO:root:Epoch[3] Batch [1980] Speed: 663.80 samples/sec acc=0.126270 +INFO:root:Epoch[3] Batch [2000] Speed: 664.25 samples/sec acc=0.124023 +INFO:root:Epoch[3] Batch [2020] Speed: 664.63 samples/sec acc=0.129199 +INFO:root:Epoch[3] Batch [2040] Speed: 663.88 samples/sec acc=0.126270 +INFO:root:Epoch[3] Batch [2060] Speed: 664.78 samples/sec acc=0.119824 +INFO:root:Epoch[3] Batch [2080] Speed: 663.88 samples/sec acc=0.122070 +INFO:root:Epoch[3] Batch [2100] Speed: 663.73 samples/sec acc=0.118066 +INFO:root:Epoch[3] Batch [2120] Speed: 664.68 samples/sec acc=0.119336 +INFO:root:Epoch[3] Batch [2140] Speed: 664.16 samples/sec acc=0.121777 +INFO:root:Epoch[3] Batch [2160] Speed: 663.81 samples/sec acc=0.122461 +INFO:root:Epoch[3] Batch [2180] Speed: 663.03 samples/sec acc=0.123340 +INFO:root:Epoch[3] Batch [2200] Speed: 664.74 samples/sec acc=0.119043 +INFO:root:Epoch[3] Batch [2220] Speed: 663.71 samples/sec acc=0.124902 +INFO:root:Epoch[3] Batch [2240] Speed: 663.56 samples/sec acc=0.126953 +INFO:root:Epoch[3] Batch [2260] Speed: 665.15 samples/sec acc=0.121680 +INFO:root:Epoch[3] Batch [2280] Speed: 664.00 samples/sec acc=0.119434 +INFO:root:Epoch[3] Batch [2300] Speed: 663.77 samples/sec acc=0.128809 +INFO:root:Epoch[3] Batch [2320] Speed: 664.50 samples/sec acc=0.122461 +INFO:root:Epoch[3] Batch [2340] Speed: 663.68 samples/sec acc=0.120898 +INFO:root:Epoch[3] Batch [2360] Speed: 663.62 samples/sec acc=0.124219 +INFO:root:Epoch[3] Batch [2380] Speed: 664.04 samples/sec acc=0.123535 +INFO:root:Epoch[3] Batch [2400] Speed: 664.30 samples/sec acc=0.125195 +INFO:root:Epoch[3] Batch [2420] Speed: 663.62 samples/sec acc=0.117969 +INFO:root:Epoch[3] Batch [2440] Speed: 663.52 samples/sec acc=0.125488 +lr-batch-epoch: 0.1 2442 3 +INFO:root:Epoch[3] Batch [2460] Speed: 663.67 samples/sec acc=0.124512 +INFO:root:Epoch[3] Batch [2480] Speed: 664.31 samples/sec acc=0.126562 +INFO:root:Epoch[3] Batch [2500] Speed: 664.13 samples/sec acc=0.122754 +INFO:root:Epoch[3] Batch [2520] Speed: 664.67 samples/sec acc=0.128906 +INFO:root:Epoch[3] Batch [2540] Speed: 662.74 samples/sec acc=0.127637 +INFO:root:Epoch[3] Batch [2560] Speed: 664.93 samples/sec acc=0.121387 +INFO:root:Epoch[3] Batch [2580] Speed: 664.35 samples/sec acc=0.123340 +INFO:root:Epoch[3] Batch [2600] Speed: 663.53 samples/sec acc=0.122754 +INFO:root:Epoch[3] Batch [2620] Speed: 664.64 samples/sec acc=0.119922 +INFO:root:Epoch[3] Batch [2640] Speed: 664.33 samples/sec acc=0.122168 +INFO:root:Epoch[3] Batch [2660] Speed: 662.44 samples/sec acc=0.126660 +INFO:root:Epoch[3] Batch [2680] Speed: 664.43 samples/sec acc=0.121582 +INFO:root:Epoch[3] Batch [2700] Speed: 664.71 samples/sec acc=0.120996 +INFO:root:Epoch[3] Batch [2720] Speed: 663.88 samples/sec acc=0.124023 +INFO:root:Epoch[3] Batch [2740] Speed: 664.39 samples/sec acc=0.126172 +INFO:root:Epoch[3] Batch [2760] Speed: 664.13 samples/sec acc=0.126855 +INFO:root:Epoch[3] Batch [2780] Speed: 663.57 samples/sec acc=0.128125 +INFO:root:Epoch[3] Batch [2800] Speed: 663.28 samples/sec acc=0.126172 +INFO:root:Epoch[3] Batch [2820] Speed: 663.83 samples/sec acc=0.122754 +INFO:root:Epoch[3] Batch [2840] Speed: 658.99 samples/sec acc=0.129883 +INFO:root:Epoch[3] Batch [2860] Speed: 680.46 samples/sec acc=0.124512 +INFO:root:Epoch[3] Batch [2880] Speed: 663.96 samples/sec acc=0.123828 +INFO:root:Epoch[3] Batch [2900] Speed: 663.27 samples/sec acc=0.121875 +INFO:root:Epoch[3] Batch [2920] Speed: 665.04 samples/sec acc=0.122168 +INFO:root:Epoch[3] Batch [2940] Speed: 664.46 samples/sec acc=0.127930 +INFO:root:Epoch[3] Batch [2960] Speed: 663.56 samples/sec acc=0.129590 +INFO:root:Epoch[3] Batch [2980] Speed: 663.95 samples/sec acc=0.132031 +INFO:root:Epoch[3] Batch [3000] Speed: 664.42 samples/sec acc=0.124316 +INFO:root:Epoch[3] Batch [3020] Speed: 663.19 samples/sec acc=0.125879 +INFO:root:Epoch[3] Batch [3040] Speed: 664.69 samples/sec acc=0.128223 +INFO:root:Epoch[3] Batch [3060] Speed: 664.21 samples/sec acc=0.122852 +INFO:root:Epoch[3] Batch [3080] Speed: 663.99 samples/sec acc=0.125195 +INFO:root:Epoch[3] Batch [3100] Speed: 664.47 samples/sec acc=0.120801 +INFO:root:Epoch[3] Batch [3120] Speed: 663.47 samples/sec acc=0.122363 +INFO:root:Epoch[3] Batch [3140] Speed: 663.53 samples/sec acc=0.134668 +INFO:root:Epoch[3] Batch [3160] Speed: 664.83 samples/sec acc=0.125488 +INFO:root:Epoch[3] Batch [3180] Speed: 663.79 samples/sec acc=0.131738 +INFO:root:Epoch[3] Batch [3200] Speed: 663.86 samples/sec acc=0.128125 +INFO:root:Epoch[3] Batch [3220] Speed: 664.37 samples/sec acc=0.126660 +INFO:root:Epoch[3] Batch [3240] Speed: 664.69 samples/sec acc=0.123438 +INFO:root:Epoch[3] Batch [3260] Speed: 663.81 samples/sec acc=0.131348 +INFO:root:Epoch[3] Batch [3280] Speed: 664.47 samples/sec acc=0.128125 +INFO:root:Epoch[3] Batch [3300] Speed: 664.63 samples/sec acc=0.124121 +INFO:root:Epoch[3] Batch [3320] Speed: 664.18 samples/sec acc=0.123633 +INFO:root:Epoch[3] Batch [3340] Speed: 664.41 samples/sec acc=0.130371 +INFO:root:Epoch[3] Batch [3360] Speed: 664.15 samples/sec acc=0.121973 +INFO:root:Epoch[3] Batch [3380] Speed: 663.45 samples/sec acc=0.123145 +INFO:root:Epoch[3] Batch [3400] Speed: 664.41 samples/sec acc=0.127832 +INFO:root:Epoch[3] Batch [3420] Speed: 664.75 samples/sec acc=0.124316 +INFO:root:Epoch[3] Batch [3440] Speed: 663.48 samples/sec acc=0.128809 +[26000][MARGIN]0.661023,0.226349 +lr-batch-epoch: 0.1 3442 3 +testing verification.. +(14000, 512) +infer time 21.8588 +[cfp_ff][26000]XNorm: 22.559293 +[cfp_ff][26000]Accuracy-Flip: 0.99257+-0.00325 +testing verification.. +(14000, 512) +infer time 20.407895 +[cfp_fp][26000]XNorm: 18.426936 +[cfp_fp][26000]Accuracy-Flip: 0.83086+-0.01707 +testing verification.. +(12000, 512) +infer time 21.819959 +[agedb_30][26000]XNorm: 22.785963 +[agedb_30][26000]Accuracy-Flip: 0.94317+-0.01084 +testing verification.. +(12000, 512) +infer time 19.544551 +[lfw][26000]XNorm: 22.925718 +[lfw][26000]Accuracy-Flip: 0.99167+-0.00350 +[26000]Accuracy-Highest: 0.99250 +INFO:root:Epoch[3] Batch [3460] Speed: 87.18 samples/sec acc=0.121484 +INFO:root:Epoch[3] Batch [3480] Speed: 664.00 samples/sec acc=0.127832 +INFO:root:Epoch[3] Batch [3500] Speed: 663.16 samples/sec acc=0.128711 +INFO:root:Epoch[3] Batch [3520] Speed: 664.71 samples/sec acc=0.128223 +INFO:root:Epoch[3] Batch [3540] Speed: 663.81 samples/sec acc=0.123926 +INFO:root:Epoch[3] Batch [3560] Speed: 662.96 samples/sec acc=0.127441 +INFO:root:Epoch[3] Batch [3580] Speed: 663.53 samples/sec acc=0.126074 +INFO:root:Epoch[3] Batch [3600] Speed: 663.95 samples/sec acc=0.129199 +INFO:root:Epoch[3] Batch [3620] Speed: 663.67 samples/sec acc=0.128320 +INFO:root:Epoch[3] Batch [3640] Speed: 667.46 samples/sec acc=0.125098 +INFO:root:Epoch[3] Batch [3660] Speed: 671.07 samples/sec acc=0.126758 +INFO:root:Epoch[3] Batch [3680] Speed: 663.59 samples/sec acc=0.129590 +INFO:root:Epoch[3] Batch [3700] Speed: 665.08 samples/sec acc=0.127051 +INFO:root:Epoch[3] Batch [3720] Speed: 663.88 samples/sec acc=0.121875 +INFO:root:Epoch[3] Batch [3740] Speed: 663.13 samples/sec acc=0.124219 +INFO:root:Epoch[3] Batch [3760] Speed: 664.26 samples/sec acc=0.129785 +INFO:root:Epoch[3] Batch [3780] Speed: 664.86 samples/sec acc=0.125684 +INFO:root:Epoch[3] Batch [3800] Speed: 662.89 samples/sec acc=0.129199 +INFO:root:Epoch[3] Batch [3820] Speed: 664.38 samples/sec acc=0.122949 +INFO:root:Epoch[3] Batch [3840] Speed: 664.12 samples/sec acc=0.128516 +INFO:root:Epoch[3] Batch [3860] Speed: 663.67 samples/sec acc=0.126855 +INFO:root:Epoch[3] Batch [3880] Speed: 664.96 samples/sec acc=0.127441 +INFO:root:Epoch[3] Batch [3900] Speed: 664.07 samples/sec acc=0.125586 +INFO:root:Epoch[3] Batch [3920] Speed: 662.60 samples/sec acc=0.131348 +INFO:root:Epoch[3] Batch [3940] Speed: 663.37 samples/sec acc=0.126660 +INFO:root:Epoch[3] Batch [3960] Speed: 664.11 samples/sec acc=0.132129 +INFO:root:Epoch[3] Batch [3980] Speed: 664.05 samples/sec acc=0.130566 +INFO:root:Epoch[3] Batch [4000] Speed: 664.85 samples/sec acc=0.131055 +INFO:root:Epoch[3] Batch [4020] Speed: 664.73 samples/sec acc=0.125293 +INFO:root:Epoch[3] Batch [4040] Speed: 653.47 samples/sec acc=0.126172 +INFO:root:Epoch[3] Batch [4060] Speed: 664.52 samples/sec acc=0.122949 +INFO:root:Epoch[3] Batch [4080] Speed: 664.28 samples/sec acc=0.123047 +INFO:root:Epoch[3] Batch [4100] Speed: 663.82 samples/sec acc=0.124219 +INFO:root:Epoch[3] Batch [4120] Speed: 664.02 samples/sec acc=0.128809 +INFO:root:Epoch[3] Batch [4140] Speed: 664.64 samples/sec acc=0.123340 +INFO:root:Epoch[3] Batch [4160] Speed: 664.12 samples/sec acc=0.122852 +INFO:root:Epoch[3] Batch [4180] Speed: 665.16 samples/sec acc=0.124902 +INFO:root:Epoch[3] Batch [4200] Speed: 663.81 samples/sec acc=0.121582 +INFO:root:Epoch[3] Batch [4220] Speed: 663.79 samples/sec acc=0.117969 +INFO:root:Epoch[3] Batch [4240] Speed: 664.55 samples/sec acc=0.125586 +INFO:root:Epoch[3] Batch [4260] Speed: 664.06 samples/sec acc=0.128516 +INFO:root:Epoch[3] Batch [4280] Speed: 663.59 samples/sec acc=0.123047 +INFO:root:Epoch[3] Batch [4300] Speed: 665.40 samples/sec acc=0.130957 +INFO:root:Epoch[3] Batch [4320] Speed: 664.98 samples/sec acc=0.123438 +INFO:root:Epoch[3] Batch [4340] Speed: 663.44 samples/sec acc=0.130957 +INFO:root:Epoch[3] Batch [4360] Speed: 663.80 samples/sec acc=0.123730 +INFO:root:Epoch[3] Batch [4380] Speed: 663.76 samples/sec acc=0.133008 +INFO:root:Epoch[3] Batch [4400] Speed: 663.94 samples/sec acc=0.125684 +INFO:root:Epoch[3] Batch [4420] Speed: 665.00 samples/sec acc=0.128125 +INFO:root:Epoch[3] Batch [4440] Speed: 671.72 samples/sec acc=0.129883 +lr-batch-epoch: 0.1 4442 3 +INFO:root:Epoch[3] Batch [4460] Speed: 664.25 samples/sec acc=0.128906 +INFO:root:Epoch[3] Batch [4480] Speed: 663.98 samples/sec acc=0.130371 +INFO:root:Epoch[3] Batch [4500] Speed: 663.85 samples/sec acc=0.127051 +INFO:root:Epoch[3] Batch [4520] Speed: 663.60 samples/sec acc=0.128125 +INFO:root:Epoch[3] Batch [4540] Speed: 664.99 samples/sec acc=0.127148 +INFO:root:Epoch[3] Batch [4560] Speed: 664.75 samples/sec acc=0.126855 +INFO:root:Epoch[3] Batch [4580] Speed: 663.85 samples/sec acc=0.131543 +INFO:root:Epoch[3] Batch [4600] Speed: 664.22 samples/sec acc=0.129688 +INFO:root:Epoch[3] Batch [4620] Speed: 663.74 samples/sec acc=0.128711 +INFO:root:Epoch[3] Batch [4640] Speed: 664.12 samples/sec acc=0.132715 +INFO:root:Epoch[3] Batch [4660] Speed: 664.73 samples/sec acc=0.130273 +INFO:root:Epoch[3] Batch [4680] Speed: 664.34 samples/sec acc=0.128125 +INFO:root:Epoch[3] Batch [4700] Speed: 663.96 samples/sec acc=0.126074 +INFO:root:Epoch[3] Batch [4720] Speed: 664.89 samples/sec acc=0.127051 +INFO:root:Epoch[3] Batch [4740] Speed: 663.51 samples/sec acc=0.129102 +INFO:root:Epoch[3] Batch [4760] Speed: 663.56 samples/sec acc=0.124219 +INFO:root:Epoch[3] Batch [4780] Speed: 664.69 samples/sec acc=0.124121 +INFO:root:Epoch[3] Batch [4800] Speed: 663.76 samples/sec acc=0.127930 +INFO:root:Epoch[3] Batch [4820] Speed: 663.68 samples/sec acc=0.125586 +INFO:root:Epoch[3] Batch [4840] Speed: 664.41 samples/sec acc=0.125391 +INFO:root:Epoch[3] Batch [4860] Speed: 663.67 samples/sec acc=0.121094 +INFO:root:Epoch[3] Batch [4880] Speed: 663.83 samples/sec acc=0.129297 +INFO:root:Epoch[3] Batch [4900] Speed: 664.27 samples/sec acc=0.123145 +INFO:root:Epoch[3] Batch [4920] Speed: 663.89 samples/sec acc=0.130859 +INFO:root:Epoch[3] Batch [4940] Speed: 662.91 samples/sec acc=0.127441 +INFO:root:Epoch[3] Batch [4960] Speed: 665.17 samples/sec acc=0.130664 +INFO:root:Epoch[3] Batch [4980] Speed: 664.26 samples/sec acc=0.127539 +INFO:root:Epoch[3] Batch [5000] Speed: 663.62 samples/sec acc=0.134668 +INFO:root:Epoch[3] Batch [5020] Speed: 663.40 samples/sec acc=0.125098 +INFO:root:Epoch[3] Batch [5040] Speed: 663.95 samples/sec acc=0.124121 +INFO:root:Epoch[3] Batch [5060] Speed: 663.76 samples/sec acc=0.128125 +INFO:root:Epoch[3] Batch [5080] Speed: 664.72 samples/sec acc=0.124219 +INFO:root:Epoch[3] Batch [5100] Speed: 663.57 samples/sec acc=0.127344 +INFO:root:Epoch[3] Batch [5120] Speed: 664.31 samples/sec acc=0.129297 +INFO:root:Epoch[3] Batch [5140] Speed: 663.71 samples/sec acc=0.134570 +INFO:root:Epoch[3] Batch [5160] Speed: 664.63 samples/sec acc=0.125684 +INFO:root:Epoch[3] Batch [5180] Speed: 663.41 samples/sec acc=0.130566 +INFO:root:Epoch[3] Batch [5200] Speed: 664.59 samples/sec acc=0.130566 +INFO:root:Epoch[3] Batch [5220] Speed: 658.54 samples/sec acc=0.127148 +INFO:root:Epoch[3] Batch [5240] Speed: 675.42 samples/sec acc=0.125879 +INFO:root:Epoch[3] Batch [5260] Speed: 677.59 samples/sec acc=0.131348 +INFO:root:Epoch[3] Batch [5280] Speed: 679.10 samples/sec acc=0.129395 +INFO:root:Epoch[3] Batch [5300] Speed: 663.36 samples/sec acc=0.123535 +INFO:root:Epoch[3] Batch [5320] Speed: 664.75 samples/sec acc=0.122949 +INFO:root:Epoch[3] Batch [5340] Speed: 663.91 samples/sec acc=0.131543 +INFO:root:Epoch[3] Batch [5360] Speed: 663.92 samples/sec acc=0.132324 +INFO:root:Epoch[3] Batch [5380] Speed: 664.66 samples/sec acc=0.130566 +INFO:root:Epoch[3] Batch [5400] Speed: 663.47 samples/sec acc=0.125684 +INFO:root:Epoch[3] Batch [5420] Speed: 662.88 samples/sec acc=0.136230 +INFO:root:Epoch[3] Batch [5440] Speed: 663.58 samples/sec acc=0.126758 +[28000][MARGIN]0.672505,0.241496 +lr-batch-epoch: 0.1 5442 3 +testing verification.. +(14000, 512) +infer time 20.845058 +[cfp_ff][28000]XNorm: 21.863884 +[cfp_ff][28000]Accuracy-Flip: 0.99343+-0.00321 +testing verification.. +(14000, 512) +infer time 20.262105 +[cfp_fp][28000]XNorm: 17.841239 +[cfp_fp][28000]Accuracy-Flip: 0.83929+-0.01692 +testing verification.. +(12000, 512) +infer time 20.014003 +[agedb_30][28000]XNorm: 21.388760 +[agedb_30][28000]Accuracy-Flip: 0.94683+-0.01092 +testing verification.. +(12000, 512) +infer time 19.268613 +[lfw][28000]XNorm: 21.858025 +[lfw][28000]Accuracy-Flip: 0.99267+-0.00455 +saving 14 +INFO:root:Saved checkpoint to "../model-r50-am-lfw/model-0014.params" +[28000]Accuracy-Highest: 0.99267 +INFO:root:Epoch[3] Batch [5460] Speed: 87.04 samples/sec acc=0.131445 +INFO:root:Epoch[3] Batch [5480] Speed: 677.46 samples/sec acc=0.123926 +INFO:root:Epoch[3] Batch [5500] Speed: 663.41 samples/sec acc=0.128418 +INFO:root:Epoch[3] Batch [5520] Speed: 663.99 samples/sec acc=0.122363 +INFO:root:Epoch[3] Batch [5540] Speed: 663.13 samples/sec acc=0.129883 +INFO:root:Epoch[3] Batch [5560] Speed: 664.72 samples/sec acc=0.127344 +INFO:root:Epoch[3] Batch [5580] Speed: 664.61 samples/sec acc=0.127344 +INFO:root:Epoch[3] Batch [5600] Speed: 663.83 samples/sec acc=0.127637 +INFO:root:Epoch[3] Batch [5620] Speed: 664.57 samples/sec acc=0.129102 +INFO:root:Epoch[3] Batch [5640] Speed: 655.02 samples/sec acc=0.123535 +INFO:root:Epoch[3] Batch [5660] Speed: 663.64 samples/sec acc=0.128027 +INFO:root:Epoch[3] Batch [5680] Speed: 664.13 samples/sec acc=0.125098 +INFO:root:Epoch[3] Batch [5700] Speed: 663.81 samples/sec acc=0.124707 +INFO:root:Epoch[3] Batch [5720] Speed: 663.50 samples/sec acc=0.133398 +INFO:root:Epoch[3] Batch [5740] Speed: 663.96 samples/sec acc=0.129785 +INFO:root:Epoch[3] Batch [5760] Speed: 664.77 samples/sec acc=0.134180 +INFO:root:Epoch[3] Batch [5780] Speed: 645.82 samples/sec acc=0.131152 +INFO:root:Epoch[3] Batch [5800] Speed: 664.52 samples/sec acc=0.129297 +INFO:root:Epoch[3] Batch [5820] Speed: 663.54 samples/sec acc=0.130469 +INFO:root:Epoch[3] Batch [5840] Speed: 663.43 samples/sec acc=0.128906 +INFO:root:Epoch[3] Batch [5860] Speed: 657.87 samples/sec acc=0.126465 +INFO:root:Epoch[3] Batch [5880] Speed: 663.86 samples/sec acc=0.130957 +INFO:root:Epoch[3] Batch [5900] Speed: 663.04 samples/sec acc=0.132422 +INFO:root:Epoch[3] Batch [5920] Speed: 663.75 samples/sec acc=0.130371 +INFO:root:Epoch[3] Batch [5940] Speed: 662.68 samples/sec acc=0.125488 +INFO:root:Epoch[3] Batch [5960] Speed: 663.85 samples/sec acc=0.124414 +INFO:root:Epoch[3] Batch [5980] Speed: 663.71 samples/sec acc=0.129785 +INFO:root:Epoch[3] Batch [6000] Speed: 663.49 samples/sec acc=0.126953 +INFO:root:Epoch[3] Batch [6020] Speed: 663.35 samples/sec acc=0.127734 +INFO:root:Epoch[3] Batch [6040] Speed: 663.89 samples/sec acc=0.129297 +INFO:root:Epoch[3] Batch [6060] Speed: 663.14 samples/sec acc=0.126367 +INFO:root:Epoch[3] Batch [6080] Speed: 662.93 samples/sec acc=0.129004 +INFO:root:Epoch[3] Batch [6100] Speed: 664.81 samples/sec acc=0.127148 +INFO:root:Epoch[3] Batch [6120] Speed: 664.00 samples/sec acc=0.125684 +INFO:root:Epoch[3] Batch [6140] Speed: 662.86 samples/sec acc=0.130176 +INFO:root:Epoch[3] Batch [6160] Speed: 664.56 samples/sec acc=0.126855 +INFO:root:Epoch[3] Batch [6180] Speed: 663.60 samples/sec acc=0.129980 +INFO:root:Epoch[3] Batch [6200] Speed: 663.43 samples/sec acc=0.128320 +INFO:root:Epoch[3] Batch [6220] Speed: 662.30 samples/sec acc=0.124902 +INFO:root:Epoch[3] Batch [6240] Speed: 664.36 samples/sec acc=0.126172 +INFO:root:Epoch[3] Batch [6260] Speed: 663.59 samples/sec acc=0.124902 +INFO:root:Epoch[3] Batch [6280] Speed: 664.64 samples/sec acc=0.122559 +INFO:root:Epoch[3] Batch [6300] Speed: 663.70 samples/sec acc=0.127441 +INFO:root:Epoch[3] Batch [6320] Speed: 663.98 samples/sec acc=0.138184 +INFO:root:Epoch[3] Batch [6340] Speed: 664.47 samples/sec acc=0.126758 +INFO:root:Epoch[3] Batch [6360] Speed: 663.74 samples/sec acc=0.123340 +INFO:root:Epoch[3] Batch [6380] Speed: 663.78 samples/sec acc=0.126172 +INFO:root:Epoch[3] Batch [6400] Speed: 664.66 samples/sec acc=0.135059 +INFO:root:Epoch[3] Batch [6420] Speed: 663.86 samples/sec acc=0.119141 +INFO:root:Epoch[3] Batch [6440] Speed: 662.84 samples/sec acc=0.127734 +lr-batch-epoch: 0.1 6442 3 +INFO:root:Epoch[3] Batch [6460] Speed: 663.55 samples/sec acc=0.128320 +INFO:root:Epoch[3] Batch [6480] Speed: 664.26 samples/sec acc=0.128613 +INFO:root:Epoch[3] Batch [6500] Speed: 663.40 samples/sec acc=0.131348 +INFO:root:Epoch[3] Batch [6520] Speed: 664.24 samples/sec acc=0.128516 +INFO:root:Epoch[3] Batch [6540] Speed: 664.42 samples/sec acc=0.125879 +INFO:root:Epoch[3] Batch [6560] Speed: 663.78 samples/sec acc=0.133301 +INFO:root:Epoch[3] Batch [6580] Speed: 664.83 samples/sec acc=0.129785 +INFO:root:Epoch[3] Batch [6600] Speed: 664.32 samples/sec acc=0.128613 +INFO:root:Epoch[3] Batch [6620] Speed: 662.97 samples/sec acc=0.129199 +INFO:root:Epoch[3] Batch [6640] Speed: 664.96 samples/sec acc=0.127148 +INFO:root:Epoch[3] Batch [6660] Speed: 664.42 samples/sec acc=0.128711 +INFO:root:Epoch[3] Batch [6680] Speed: 663.26 samples/sec acc=0.130957 +INFO:root:Epoch[3] Batch [6700] Speed: 664.43 samples/sec acc=0.131250 +INFO:root:Epoch[3] Batch [6720] Speed: 664.17 samples/sec acc=0.129199 +INFO:root:Epoch[3] Batch [6740] Speed: 663.50 samples/sec acc=0.124023 +INFO:root:Epoch[3] Batch [6760] Speed: 667.68 samples/sec acc=0.125195 +INFO:root:Epoch[3] Batch [6780] Speed: 664.16 samples/sec acc=0.128516 +INFO:root:Epoch[3] Batch [6800] Speed: 664.15 samples/sec acc=0.124512 +INFO:root:Epoch[3] Batch [6820] Speed: 663.64 samples/sec acc=0.129395 +INFO:root:Epoch[3] Batch [6840] Speed: 664.13 samples/sec acc=0.127832 +INFO:root:Epoch[3] Batch [6860] Speed: 663.07 samples/sec acc=0.129590 +INFO:root:Epoch[3] Batch [6880] Speed: 664.00 samples/sec acc=0.126074 +INFO:root:Epoch[3] Batch [6900] Speed: 663.31 samples/sec acc=0.131934 +INFO:root:Epoch[3] Batch [6920] Speed: 663.62 samples/sec acc=0.138770 +INFO:root:Epoch[3] Batch [6940] Speed: 664.47 samples/sec acc=0.127832 +INFO:root:Epoch[3] Batch [6960] Speed: 663.95 samples/sec acc=0.125293 +INFO:root:Epoch[3] Batch [6980] Speed: 663.62 samples/sec acc=0.129102 +INFO:root:Epoch[3] Batch [7000] Speed: 663.89 samples/sec acc=0.124902 +INFO:root:Epoch[3] Batch [7020] Speed: 664.24 samples/sec acc=0.129883 +INFO:root:Epoch[3] Batch [7040] Speed: 662.99 samples/sec acc=0.135742 +INFO:root:Epoch[3] Batch [7060] Speed: 664.31 samples/sec acc=0.132422 +INFO:root:Epoch[3] Batch [7080] Speed: 663.11 samples/sec acc=0.136719 +INFO:root:Epoch[3] Batch [7100] Speed: 663.35 samples/sec acc=0.131934 +INFO:root:Epoch[3] Batch [7120] Speed: 664.66 samples/sec acc=0.124707 +INFO:root:Epoch[3] Batch [7140] Speed: 664.30 samples/sec acc=0.127441 +INFO:root:Epoch[3] Batch [7160] Speed: 663.58 samples/sec acc=0.131055 +INFO:root:Epoch[3] Batch [7180] Speed: 663.99 samples/sec acc=0.128223 +INFO:root:Epoch[3] Batch [7200] Speed: 664.17 samples/sec acc=0.129102 +INFO:root:Epoch[3] Batch [7220] Speed: 663.18 samples/sec acc=0.131543 +INFO:root:Epoch[3] Batch [7240] Speed: 664.60 samples/sec acc=0.126270 +INFO:root:Epoch[3] Batch [7260] Speed: 663.31 samples/sec acc=0.128809 +INFO:root:Epoch[3] Batch [7280] Speed: 661.80 samples/sec acc=0.131250 +INFO:root:Epoch[3] Batch [7300] Speed: 664.73 samples/sec acc=0.132910 +INFO:root:Epoch[3] Batch [7320] Speed: 666.62 samples/sec acc=0.129980 +INFO:root:Epoch[3] Batch [7340] Speed: 677.70 samples/sec acc=0.128906 +INFO:root:Epoch[3] Batch [7360] Speed: 677.18 samples/sec acc=0.123145 +INFO:root:Epoch[3] Batch [7380] Speed: 679.76 samples/sec acc=0.124219 +INFO:root:Epoch[3] Batch [7400] Speed: 662.22 samples/sec acc=0.126660 +INFO:root:Epoch[3] Batch [7420] Speed: 664.41 samples/sec acc=0.128906 +INFO:root:Epoch[3] Batch [7440] Speed: 663.52 samples/sec acc=0.130176 +[30000][MARGIN]0.661733,0.226331 +lr-batch-epoch: 0.1 7442 3 +testing verification.. +(14000, 512) +infer time 19.90458 +[cfp_ff][30000]XNorm: 23.170623 +[cfp_ff][30000]Accuracy-Flip: 0.99271+-0.00329 +testing verification.. +(14000, 512) +infer time 22.25676 +[cfp_fp][30000]XNorm: 19.201502 +[cfp_fp][30000]Accuracy-Flip: 0.82100+-0.01378 +testing verification.. +(12000, 512) +infer time 20.529218 +[agedb_30][30000]XNorm: 22.540779 +[agedb_30][30000]Accuracy-Flip: 0.94417+-0.00932 +testing verification.. +(12000, 512) +infer time 18.718563 +[lfw][30000]XNorm: 23.312340 +[lfw][30000]Accuracy-Flip: 0.99283+-0.00441 +saving 15 +INFO:root:Saved checkpoint to "../model-r50-am-lfw/model-0015.params" +[30000]Accuracy-Highest: 0.99283 +INFO:root:Epoch[3] Batch [7460] Speed: 86.43 samples/sec acc=0.133203 +INFO:root:Epoch[3] Batch [7480] Speed: 663.38 samples/sec acc=0.127441 +INFO:root:Epoch[3] Batch [7500] Speed: 662.21 samples/sec acc=0.132617 +INFO:root:Epoch[3] Train-acc=0.129449 +INFO:root:Epoch[3] Time cost=6194.280 +call reset() +INFO:root:Epoch[4] Batch [20] Speed: 673.87 samples/sec acc=0.155041 +INFO:root:Epoch[4] Batch [40] Speed: 663.79 samples/sec acc=0.158008 +INFO:root:Epoch[4] Batch [60] Speed: 662.85 samples/sec acc=0.154590 +INFO:root:Epoch[4] Batch [80] Speed: 664.58 samples/sec acc=0.150977 +INFO:root:Epoch[4] Batch [100] Speed: 663.91 samples/sec acc=0.148535 +INFO:root:Epoch[4] Batch [120] Speed: 663.78 samples/sec acc=0.144043 +INFO:root:Epoch[4] Batch [140] Speed: 663.78 samples/sec acc=0.150684 +INFO:root:Epoch[4] Batch [160] Speed: 664.75 samples/sec acc=0.147656 +INFO:root:Epoch[4] Batch [180] Speed: 664.28 samples/sec acc=0.144727 +INFO:root:Epoch[4] Batch [200] Speed: 663.78 samples/sec acc=0.141211 +INFO:root:Epoch[4] Batch [220] Speed: 664.62 samples/sec acc=0.149023 +INFO:root:Epoch[4] Batch [240] Speed: 663.82 samples/sec acc=0.140039 +INFO:root:Epoch[4] Batch [260] Speed: 664.21 samples/sec acc=0.136719 +INFO:root:Epoch[4] Batch [280] Speed: 664.80 samples/sec acc=0.136230 +INFO:root:Epoch[4] Batch [300] Speed: 664.31 samples/sec acc=0.144922 +INFO:root:Epoch[4] Batch [320] Speed: 664.58 samples/sec acc=0.142871 +INFO:root:Epoch[4] Batch [340] Speed: 664.43 samples/sec acc=0.137891 +INFO:root:Epoch[4] Batch [360] Speed: 664.43 samples/sec acc=0.138086 +INFO:root:Epoch[4] Batch [380] Speed: 664.11 samples/sec acc=0.139648 +INFO:root:Epoch[4] Batch [400] Speed: 663.53 samples/sec acc=0.140137 +INFO:root:Epoch[4] Batch [420] Speed: 664.35 samples/sec acc=0.139746 +INFO:root:Epoch[4] Batch [440] Speed: 664.55 samples/sec acc=0.140234 +INFO:root:Epoch[4] Batch [460] Speed: 664.32 samples/sec acc=0.136523 +INFO:root:Epoch[4] Batch [480] Speed: 664.06 samples/sec acc=0.138770 +INFO:root:Epoch[4] Batch [500] Speed: 664.08 samples/sec acc=0.133008 +INFO:root:Epoch[4] Batch [520] Speed: 664.79 samples/sec acc=0.137988 +INFO:root:Epoch[4] Batch [540] Speed: 664.51 samples/sec acc=0.134277 +INFO:root:Epoch[4] Batch [560] Speed: 664.15 samples/sec acc=0.136035 +INFO:root:Epoch[4] Batch [580] Speed: 664.48 samples/sec acc=0.123633 +INFO:root:Epoch[4] Batch [600] Speed: 664.55 samples/sec acc=0.136230 +INFO:root:Epoch[4] Batch [620] Speed: 664.31 samples/sec acc=0.130957 +INFO:root:Epoch[4] Batch [640] Speed: 664.24 samples/sec acc=0.130078 +INFO:root:Epoch[4] Batch [660] Speed: 664.04 samples/sec acc=0.136621 +INFO:root:Epoch[4] Batch [680] Speed: 665.17 samples/sec acc=0.132812 +INFO:root:Epoch[4] Batch [700] Speed: 664.30 samples/sec acc=0.137500 +INFO:root:Epoch[4] Batch [720] Speed: 664.43 samples/sec acc=0.137891 +INFO:root:Epoch[4] Batch [740] Speed: 664.00 samples/sec acc=0.126758 +INFO:root:Epoch[4] Batch [760] Speed: 664.27 samples/sec acc=0.142383 +INFO:root:Epoch[4] Batch [780] Speed: 664.59 samples/sec acc=0.134082 +INFO:root:Epoch[4] Batch [800] Speed: 664.90 samples/sec acc=0.128027 +INFO:root:Epoch[4] Batch [820] Speed: 683.19 samples/sec acc=0.136914 +INFO:root:Epoch[4] Batch [840] Speed: 663.24 samples/sec acc=0.137891 +INFO:root:Epoch[4] Batch [860] Speed: 664.29 samples/sec acc=0.133594 +INFO:root:Epoch[4] Batch [880] Speed: 664.50 samples/sec acc=0.134473 +INFO:root:Epoch[4] Batch [900] Speed: 664.25 samples/sec acc=0.128711 +INFO:root:Epoch[4] Batch [920] Speed: 664.04 samples/sec acc=0.127930 +lr-batch-epoch: 0.1 923 4 +INFO:root:Epoch[4] Batch [940] Speed: 664.25 samples/sec acc=0.130957 +INFO:root:Epoch[4] Batch [960] Speed: 663.67 samples/sec acc=0.128711 +INFO:root:Epoch[4] Batch [980] Speed: 663.79 samples/sec acc=0.131836 +INFO:root:Epoch[4] Batch [1000] Speed: 663.87 samples/sec acc=0.129102 +INFO:root:Epoch[4] Batch [1020] Speed: 664.87 samples/sec acc=0.127930 +INFO:root:Epoch[4] Batch [1040] Speed: 663.82 samples/sec acc=0.130566 +INFO:root:Epoch[4] Batch [1060] Speed: 664.12 samples/sec acc=0.131836 +INFO:root:Epoch[4] Batch [1080] Speed: 664.72 samples/sec acc=0.127637 +INFO:root:Epoch[4] Batch [1100] Speed: 664.79 samples/sec acc=0.124707 +INFO:root:Epoch[4] Batch [1120] Speed: 665.24 samples/sec acc=0.127930 +INFO:root:Epoch[4] Batch [1140] Speed: 663.19 samples/sec acc=0.132324 +INFO:root:Epoch[4] Batch [1160] Speed: 663.95 samples/sec acc=0.134180 +INFO:root:Epoch[4] Batch [1180] Speed: 664.73 samples/sec acc=0.128516 +INFO:root:Epoch[4] Batch [1200] Speed: 664.67 samples/sec acc=0.131641 +INFO:root:Epoch[4] Batch [1220] Speed: 664.35 samples/sec acc=0.133105 +INFO:root:Epoch[4] Batch [1240] Speed: 664.22 samples/sec acc=0.136816 +INFO:root:Epoch[4] Batch [1260] Speed: 664.81 samples/sec acc=0.136914 +INFO:root:Epoch[4] Batch [1280] Speed: 664.22 samples/sec acc=0.134082 +INFO:root:Epoch[4] Batch [1300] Speed: 665.18 samples/sec acc=0.132812 +INFO:root:Epoch[4] Batch [1320] Speed: 664.18 samples/sec acc=0.133008 +INFO:root:Epoch[4] Batch [1340] Speed: 664.17 samples/sec acc=0.136426 +INFO:root:Epoch[4] Batch [1360] Speed: 663.57 samples/sec acc=0.133887 +INFO:root:Epoch[4] Batch [1380] Speed: 664.20 samples/sec acc=0.129785 +INFO:root:Epoch[4] Batch [1400] Speed: 664.27 samples/sec acc=0.123633 +INFO:root:Epoch[4] Batch [1420] Speed: 664.61 samples/sec acc=0.129980 +INFO:root:Epoch[4] Batch [1440] Speed: 663.41 samples/sec acc=0.129980 +INFO:root:Epoch[4] Batch [1460] Speed: 664.07 samples/sec acc=0.138867 +INFO:root:Epoch[4] Batch [1480] Speed: 664.34 samples/sec acc=0.124219 +INFO:root:Epoch[4] Batch [1500] Speed: 664.73 samples/sec acc=0.127344 +INFO:root:Epoch[4] Batch [1520] Speed: 663.56 samples/sec acc=0.135742 +INFO:root:Epoch[4] Batch [1540] Speed: 664.24 samples/sec acc=0.127930 +INFO:root:Epoch[4] Batch [1560] Speed: 664.63 samples/sec acc=0.131152 +INFO:root:Epoch[4] Batch [1580] Speed: 659.18 samples/sec acc=0.136816 +INFO:root:Epoch[4] Batch [1600] Speed: 681.27 samples/sec acc=0.129688 +INFO:root:Epoch[4] Batch [1620] Speed: 663.35 samples/sec acc=0.128027 +INFO:root:Epoch[4] Batch [1640] Speed: 664.00 samples/sec acc=0.135059 +INFO:root:Epoch[4] Batch [1660] Speed: 664.82 samples/sec acc=0.131250 +INFO:root:Epoch[4] Batch [1680] Speed: 663.46 samples/sec acc=0.134277 +INFO:root:Epoch[4] Batch [1700] Speed: 663.90 samples/sec acc=0.140332 +INFO:root:Epoch[4] Batch [1720] Speed: 663.26 samples/sec acc=0.132715 +INFO:root:Epoch[4] Batch [1740] Speed: 664.70 samples/sec acc=0.136719 +INFO:root:Epoch[4] Batch [1760] Speed: 664.55 samples/sec acc=0.131055 +INFO:root:Epoch[4] Batch [1780] Speed: 663.91 samples/sec acc=0.136230 +INFO:root:Epoch[4] Batch [1800] Speed: 664.39 samples/sec acc=0.132617 +INFO:root:Epoch[4] Batch [1820] Speed: 664.18 samples/sec acc=0.132227 +INFO:root:Epoch[4] Batch [1840] Speed: 663.53 samples/sec acc=0.134473 +INFO:root:Epoch[4] Batch [1860] Speed: 664.66 samples/sec acc=0.132715 +INFO:root:Epoch[4] Batch [1880] Speed: 663.26 samples/sec acc=0.131055 +INFO:root:Epoch[4] Batch [1900] Speed: 663.04 samples/sec acc=0.128711 +INFO:root:Epoch[4] Batch [1920] Speed: 664.32 samples/sec acc=0.134375 +[32000][MARGIN]0.665787,0.234442 +lr-batch-epoch: 0.1 1923 4 +testing verification.. +(14000, 512) +infer time 23.744189 +[cfp_ff][32000]XNorm: 21.983676 +[cfp_ff][32000]Accuracy-Flip: 0.99286+-0.00389 +testing verification.. +(14000, 512) +infer time 22.832868 +[cfp_fp][32000]XNorm: 18.096088 +[cfp_fp][32000]Accuracy-Flip: 0.84700+-0.02116 +testing verification.. +(12000, 512) +infer time 17.128199 +[agedb_30][32000]XNorm: 21.840082 +[agedb_30][32000]Accuracy-Flip: 0.94300+-0.00963 +testing verification.. +(12000, 512) +infer time 20.034206 +[lfw][32000]XNorm: 21.846459 +[lfw][32000]Accuracy-Flip: 0.99183+-0.00329 +[32000]Accuracy-Highest: 0.99283 +INFO:root:Epoch[4] Batch [1940] Speed: 86.30 samples/sec acc=0.131445 +INFO:root:Epoch[4] Batch [1960] Speed: 682.94 samples/sec acc=0.131152 +INFO:root:Epoch[4] Batch [1980] Speed: 662.51 samples/sec acc=0.135352 +INFO:root:Epoch[4] Batch [2000] Speed: 662.63 samples/sec acc=0.136230 +INFO:root:Epoch[4] Batch [2020] Speed: 662.96 samples/sec acc=0.130078 +INFO:root:Epoch[4] Batch [2040] Speed: 663.31 samples/sec acc=0.130469 +INFO:root:Epoch[4] Batch [2060] Speed: 664.32 samples/sec acc=0.135254 +INFO:root:Epoch[4] Batch [2080] Speed: 664.79 samples/sec acc=0.136133 +INFO:root:Epoch[4] Batch [2100] Speed: 663.51 samples/sec acc=0.132129 +INFO:root:Epoch[4] Batch [2120] Speed: 663.86 samples/sec acc=0.130176 +INFO:root:Epoch[4] Batch [2140] Speed: 664.23 samples/sec acc=0.127930 +INFO:root:Epoch[4] Batch [2160] Speed: 664.24 samples/sec acc=0.135352 +INFO:root:Epoch[4] Batch [2180] Speed: 663.77 samples/sec acc=0.141797 +INFO:root:Epoch[4] Batch [2200] Speed: 664.26 samples/sec acc=0.133105 +INFO:root:Epoch[4] Batch [2220] Speed: 663.63 samples/sec acc=0.135156 +INFO:root:Epoch[4] Batch [2240] Speed: 664.33 samples/sec acc=0.133008 +INFO:root:Epoch[4] Batch [2260] Speed: 664.29 samples/sec acc=0.134277 +INFO:root:Epoch[4] Batch [2280] Speed: 663.78 samples/sec acc=0.137305 +INFO:root:Epoch[4] Batch [2300] Speed: 663.89 samples/sec acc=0.128027 +INFO:root:Epoch[4] Batch [2320] Speed: 663.85 samples/sec acc=0.131543 +INFO:root:Epoch[4] Batch [2340] Speed: 663.91 samples/sec acc=0.137891 +INFO:root:Epoch[4] Batch [2360] Speed: 665.93 samples/sec acc=0.132715 +INFO:root:Epoch[4] Batch [2380] Speed: 671.25 samples/sec acc=0.132520 +INFO:root:Epoch[4] Batch [2400] Speed: 663.57 samples/sec acc=0.134570 +INFO:root:Epoch[4] Batch [2420] Speed: 664.41 samples/sec acc=0.141016 +INFO:root:Epoch[4] Batch [2440] Speed: 663.11 samples/sec acc=0.131836 +INFO:root:Epoch[4] Batch [2460] Speed: 664.21 samples/sec acc=0.135937 +INFO:root:Epoch[4] Batch [2480] Speed: 664.47 samples/sec acc=0.133594 +INFO:root:Epoch[4] Batch [2500] Speed: 664.19 samples/sec acc=0.133887 +INFO:root:Epoch[4] Batch [2520] Speed: 664.20 samples/sec acc=0.138379 +INFO:root:Epoch[4] Batch [2540] Speed: 663.68 samples/sec acc=0.131250 +INFO:root:Epoch[4] Batch [2560] Speed: 664.52 samples/sec acc=0.138672 +INFO:root:Epoch[4] Batch [2580] Speed: 663.96 samples/sec acc=0.137500 +INFO:root:Epoch[4] Batch [2600] Speed: 663.75 samples/sec acc=0.136719 +INFO:root:Epoch[4] Batch [2620] Speed: 663.78 samples/sec acc=0.133301 +INFO:root:Epoch[4] Batch [2640] Speed: 663.47 samples/sec acc=0.140137 +INFO:root:Epoch[4] Batch [2660] Speed: 664.15 samples/sec acc=0.126172 +INFO:root:Epoch[4] Batch [2680] Speed: 664.19 samples/sec acc=0.126270 +INFO:root:Epoch[4] Batch [2700] Speed: 664.57 samples/sec acc=0.128027 +INFO:root:Epoch[4] Batch [2720] Speed: 663.94 samples/sec acc=0.134473 +INFO:root:Epoch[4] Batch [2740] Speed: 664.51 samples/sec acc=0.131934 +INFO:root:Epoch[4] Batch [2760] Speed: 663.85 samples/sec acc=0.131250 +INFO:root:Epoch[4] Batch [2780] Speed: 664.24 samples/sec acc=0.129004 +INFO:root:Epoch[4] Batch [2800] Speed: 665.26 samples/sec acc=0.131445 +INFO:root:Epoch[4] Batch [2820] Speed: 663.78 samples/sec acc=0.134668 +INFO:root:Epoch[4] Batch [2840] Speed: 664.51 samples/sec acc=0.129102 +INFO:root:Epoch[4] Batch [2860] Speed: 664.75 samples/sec acc=0.134180 +INFO:root:Epoch[4] Batch [2880] Speed: 664.51 samples/sec acc=0.130078 +INFO:root:Epoch[4] Batch [2900] Speed: 665.17 samples/sec acc=0.132617 +INFO:root:Epoch[4] Batch [2920] Speed: 663.81 samples/sec acc=0.129004 +lr-batch-epoch: 0.1 2923 4 +INFO:root:Epoch[4] Batch [2940] Speed: 665.69 samples/sec acc=0.138184 +INFO:root:Epoch[4] Batch [2960] Speed: 663.00 samples/sec acc=0.135254 +INFO:root:Epoch[4] Batch [2980] Speed: 664.51 samples/sec acc=0.132520 +INFO:root:Epoch[4] Batch [3000] Speed: 665.11 samples/sec acc=0.139648 +INFO:root:Epoch[4] Batch [3020] Speed: 664.24 samples/sec acc=0.130957 +INFO:root:Epoch[4] Batch [3040] Speed: 664.43 samples/sec acc=0.133496 +INFO:root:Epoch[4] Batch [3060] Speed: 665.05 samples/sec acc=0.135352 +INFO:root:Epoch[4] Batch [3080] Speed: 663.79 samples/sec acc=0.135937 +INFO:root:Epoch[4] Batch [3100] Speed: 664.52 samples/sec acc=0.133691 +INFO:root:Epoch[4] Batch [3120] Speed: 663.78 samples/sec acc=0.128516 +INFO:root:Epoch[4] Batch [3140] Speed: 663.99 samples/sec acc=0.134375 +INFO:root:Epoch[4] Batch [3160] Speed: 676.10 samples/sec acc=0.136719 +INFO:root:Epoch[4] Batch [3180] Speed: 664.20 samples/sec acc=0.134961 +INFO:root:Epoch[4] Batch [3200] Speed: 664.30 samples/sec acc=0.142480 +INFO:root:Epoch[4] Batch [3220] Speed: 664.11 samples/sec acc=0.140039 +INFO:root:Epoch[4] Batch [3240] Speed: 664.07 samples/sec acc=0.139941 +INFO:root:Epoch[4] Batch [3260] Speed: 664.08 samples/sec acc=0.130664 +INFO:root:Epoch[4] Batch [3280] Speed: 664.14 samples/sec acc=0.135742 +INFO:root:Epoch[4] Batch [3300] Speed: 664.48 samples/sec acc=0.133496 +INFO:root:Epoch[4] Batch [3320] Speed: 664.40 samples/sec acc=0.137012 +INFO:root:Epoch[4] Batch [3340] Speed: 664.75 samples/sec acc=0.133301 +INFO:root:Epoch[4] Batch [3360] Speed: 664.32 samples/sec acc=0.133984 +INFO:root:Epoch[4] Batch [3380] Speed: 664.18 samples/sec acc=0.132910 +INFO:root:Epoch[4] Batch [3400] Speed: 664.52 samples/sec acc=0.134961 +INFO:root:Epoch[4] Batch [3420] Speed: 664.84 samples/sec acc=0.135254 +INFO:root:Epoch[4] Batch [3440] Speed: 663.48 samples/sec acc=0.135937 +INFO:root:Epoch[4] Batch [3460] Speed: 664.85 samples/sec acc=0.134570 +INFO:root:Epoch[4] Batch [3480] Speed: 664.66 samples/sec acc=0.135449 +INFO:root:Epoch[4] Batch [3500] Speed: 663.44 samples/sec acc=0.132324 +INFO:root:Epoch[4] Batch [3520] Speed: 664.61 samples/sec acc=0.134668 +INFO:root:Epoch[4] Batch [3540] Speed: 664.72 samples/sec acc=0.140137 +INFO:root:Epoch[4] Batch [3560] Speed: 663.91 samples/sec acc=0.130469 +INFO:root:Epoch[4] Batch [3580] Speed: 664.69 samples/sec acc=0.130566 +INFO:root:Epoch[4] Batch [3600] Speed: 664.72 samples/sec acc=0.132227 +INFO:root:Epoch[4] Batch [3620] Speed: 664.70 samples/sec acc=0.134961 +INFO:root:Epoch[4] Batch [3640] Speed: 664.29 samples/sec acc=0.133203 +INFO:root:Epoch[4] Batch [3660] Speed: 664.37 samples/sec acc=0.135840 +INFO:root:Epoch[4] Batch [3680] Speed: 665.23 samples/sec acc=0.133594 +INFO:root:Epoch[4] Batch [3700] Speed: 664.60 samples/sec acc=0.133105 +INFO:root:Epoch[4] Batch [3720] Speed: 664.21 samples/sec acc=0.130469 +INFO:root:Epoch[4] Batch [3740] Speed: 664.38 samples/sec acc=0.134473 +INFO:root:Epoch[4] Batch [3760] Speed: 664.03 samples/sec acc=0.136719 +INFO:root:Epoch[4] Batch [3780] Speed: 665.02 samples/sec acc=0.135059 +INFO:root:Epoch[4] Batch [3800] Speed: 664.89 samples/sec acc=0.140234 +INFO:root:Epoch[4] Batch [3820] Speed: 664.25 samples/sec acc=0.134277 +INFO:root:Epoch[4] Batch [3840] Speed: 664.22 samples/sec acc=0.139551 +INFO:root:Epoch[4] Batch [3860] Speed: 664.00 samples/sec acc=0.133105 +INFO:root:Epoch[4] Batch [3880] Speed: 664.00 samples/sec acc=0.134180 +INFO:root:Epoch[4] Batch [3900] Speed: 664.55 samples/sec acc=0.132715 +INFO:root:Epoch[4] Batch [3920] Speed: 664.51 samples/sec acc=0.129199 +[34000][MARGIN]0.665160,0.233647 +lr-batch-epoch: 0.1 3923 4 +testing verification.. +(14000, 512) +infer time 20.705559 +[cfp_ff][34000]XNorm: 21.942060 +[cfp_ff][34000]Accuracy-Flip: 0.99429+-0.00319 +testing verification.. +(14000, 512) +infer time 24.046523 +[cfp_fp][34000]XNorm: 17.491616 +[cfp_fp][34000]Accuracy-Flip: 0.83771+-0.01322 +testing verification.. +(12000, 512) +infer time 18.027092 +[agedb_30][34000]XNorm: 21.578602 +[agedb_30][34000]Accuracy-Flip: 0.94017+-0.01031 +testing verification.. +(12000, 512) +infer time 15.701564 +[lfw][34000]XNorm: 21.812679 +[lfw][34000]Accuracy-Flip: 0.99267+-0.00403 +[34000]Accuracy-Highest: 0.99283 +INFO:root:Epoch[4] Batch [3940] Speed: 92.10 samples/sec acc=0.136035 +INFO:root:Epoch[4] Batch [3960] Speed: 674.59 samples/sec acc=0.138477 +INFO:root:Epoch[4] Batch [3980] Speed: 685.53 samples/sec acc=0.128711 +INFO:root:Epoch[4] Batch [4000] Speed: 663.08 samples/sec acc=0.133594 +INFO:root:Epoch[4] Batch [4020] Speed: 663.84 samples/sec acc=0.128613 +INFO:root:Epoch[4] Batch [4040] Speed: 663.94 samples/sec acc=0.137793 +INFO:root:Epoch[4] Batch [4060] Speed: 665.00 samples/sec acc=0.137598 +INFO:root:Epoch[4] Batch [4080] Speed: 664.74 samples/sec acc=0.132715 +INFO:root:Epoch[4] Batch [4100] Speed: 664.42 samples/sec acc=0.132812 +INFO:root:Epoch[4] Batch [4120] Speed: 664.66 samples/sec acc=0.135352 +INFO:root:Epoch[4] Batch [4140] Speed: 664.08 samples/sec acc=0.133691 +INFO:root:Epoch[4] Batch [4160] Speed: 665.17 samples/sec acc=0.136719 +INFO:root:Epoch[4] Batch [4180] Speed: 664.43 samples/sec acc=0.133496 +INFO:root:Epoch[4] Batch [4200] Speed: 664.08 samples/sec acc=0.132910 +INFO:root:Epoch[4] Batch [4220] Speed: 664.07 samples/sec acc=0.131738 +INFO:root:Epoch[4] Batch [4240] Speed: 665.29 samples/sec acc=0.132129 +INFO:root:Epoch[4] Batch [4260] Speed: 663.19 samples/sec acc=0.138477 +INFO:root:Epoch[4] Batch [4280] Speed: 664.24 samples/sec acc=0.141699 +INFO:root:Epoch[4] Batch [4300] Speed: 663.71 samples/sec acc=0.136621 +INFO:root:Epoch[4] Batch [4320] Speed: 664.06 samples/sec acc=0.144336 +INFO:root:Epoch[4] Batch [4340] Speed: 664.00 samples/sec acc=0.134961 +INFO:root:Epoch[4] Batch [4360] Speed: 664.02 samples/sec acc=0.134668 +INFO:root:Epoch[4] Batch [4380] Speed: 664.18 samples/sec acc=0.137109 +INFO:root:Epoch[4] Batch [4400] Speed: 664.32 samples/sec acc=0.129590 +INFO:root:Epoch[4] Batch [4420] Speed: 664.66 samples/sec acc=0.135156 +INFO:root:Epoch[4] Batch [4440] Speed: 664.54 samples/sec acc=0.133008 +INFO:root:Epoch[4] Batch [4460] Speed: 663.62 samples/sec acc=0.133887 +INFO:root:Epoch[4] Batch [4480] Speed: 664.57 samples/sec acc=0.135449 +INFO:root:Epoch[4] Batch [4500] Speed: 664.19 samples/sec acc=0.135547 +INFO:root:Epoch[4] Batch [4520] Speed: 664.83 samples/sec acc=0.133105 +INFO:root:Epoch[4] Batch [4540] Speed: 664.35 samples/sec acc=0.136230 +INFO:root:Epoch[4] Batch [4560] Speed: 664.76 samples/sec acc=0.136230 +INFO:root:Epoch[4] Batch [4580] Speed: 664.14 samples/sec acc=0.130664 +INFO:root:Epoch[4] Batch [4600] Speed: 664.79 samples/sec acc=0.136621 +INFO:root:Epoch[4] Batch [4620] Speed: 664.17 samples/sec acc=0.134375 +INFO:root:Epoch[4] Batch [4640] Speed: 664.96 samples/sec acc=0.136914 +INFO:root:Epoch[4] Batch [4660] Speed: 664.42 samples/sec acc=0.135547 +INFO:root:Epoch[4] Batch [4680] Speed: 665.15 samples/sec acc=0.126953 +INFO:root:Epoch[4] Batch [4700] Speed: 665.06 samples/sec acc=0.137109 +INFO:root:Epoch[4] Batch [4720] Speed: 664.71 samples/sec acc=0.128027 +INFO:root:Epoch[4] Batch [4740] Speed: 662.65 samples/sec acc=0.135547 +INFO:root:Epoch[4] Batch [4760] Speed: 679.88 samples/sec acc=0.133105 +INFO:root:Epoch[4] Batch [4780] Speed: 664.17 samples/sec acc=0.138965 +INFO:root:Epoch[4] Batch [4800] Speed: 665.00 samples/sec acc=0.139648 +INFO:root:Epoch[4] Batch [4820] Speed: 664.83 samples/sec acc=0.127344 +INFO:root:Epoch[4] Batch [4840] Speed: 664.51 samples/sec acc=0.136523 +INFO:root:Epoch[4] Batch [4860] Speed: 664.51 samples/sec acc=0.135645 +INFO:root:Epoch[4] Batch [4880] Speed: 664.12 samples/sec acc=0.135254 +INFO:root:Epoch[4] Batch [4900] Speed: 664.45 samples/sec acc=0.136914 +INFO:root:Epoch[4] Batch [4920] Speed: 664.58 samples/sec acc=0.138770 +lr-batch-epoch: 0.1 4923 4 +INFO:root:Epoch[4] Batch [4940] Speed: 664.65 samples/sec acc=0.140625 +INFO:root:Epoch[4] Batch [4960] Speed: 664.46 samples/sec acc=0.130078 +INFO:root:Epoch[4] Batch [4980] Speed: 664.99 samples/sec acc=0.131641 +INFO:root:Epoch[4] Batch [5000] Speed: 664.16 samples/sec acc=0.132715 +INFO:root:Epoch[4] Batch [5020] Speed: 664.60 samples/sec acc=0.132227 +INFO:root:Epoch[4] Batch [5040] Speed: 664.37 samples/sec acc=0.133789 +INFO:root:Epoch[4] Batch [5060] Speed: 664.67 samples/sec acc=0.139258 +INFO:root:Epoch[4] Batch [5080] Speed: 663.77 samples/sec acc=0.137793 +INFO:root:Epoch[4] Batch [5100] Speed: 664.68 samples/sec acc=0.135937 +INFO:root:Epoch[4] Batch [5120] Speed: 664.37 samples/sec acc=0.137305 +INFO:root:Epoch[4] Batch [5140] Speed: 664.57 samples/sec acc=0.132520 +INFO:root:Epoch[4] Batch [5160] Speed: 664.06 samples/sec acc=0.132031 +INFO:root:Epoch[4] Batch [5180] Speed: 664.06 samples/sec acc=0.133301 +INFO:root:Epoch[4] Batch [5200] Speed: 664.69 samples/sec acc=0.134473 +INFO:root:Epoch[4] Batch [5220] Speed: 664.23 samples/sec acc=0.136523 +INFO:root:Epoch[4] Batch [5240] Speed: 663.82 samples/sec acc=0.129590 +INFO:root:Epoch[4] Batch [5260] Speed: 664.67 samples/sec acc=0.135059 +INFO:root:Epoch[4] Batch [5280] Speed: 664.65 samples/sec acc=0.131543 +INFO:root:Epoch[4] Batch [5300] Speed: 664.45 samples/sec acc=0.138672 +INFO:root:Epoch[4] Batch [5320] Speed: 664.67 samples/sec acc=0.132324 +INFO:root:Epoch[4] Batch [5340] Speed: 664.22 samples/sec acc=0.136621 +INFO:root:Epoch[4] Batch [5360] Speed: 664.42 samples/sec acc=0.133301 +INFO:root:Epoch[4] Batch [5380] Speed: 664.16 samples/sec acc=0.139258 +INFO:root:Epoch[4] Batch [5400] Speed: 664.97 samples/sec acc=0.141211 +INFO:root:Epoch[4] Batch [5420] Speed: 664.40 samples/sec acc=0.137988 +INFO:root:Epoch[4] Batch [5440] Speed: 664.17 samples/sec acc=0.135352 +INFO:root:Epoch[4] Batch [5460] Speed: 664.70 samples/sec acc=0.133398 +INFO:root:Epoch[4] Batch [5480] Speed: 664.55 samples/sec acc=0.133984 +INFO:root:Epoch[4] Batch [5500] Speed: 664.81 samples/sec acc=0.141699 +INFO:root:Epoch[4] Batch [5520] Speed: 664.80 samples/sec acc=0.135547 +INFO:root:Epoch[4] Batch [5540] Speed: 670.28 samples/sec acc=0.135352 +INFO:root:Epoch[4] Batch [5560] Speed: 676.06 samples/sec acc=0.141699 +INFO:root:Epoch[4] Batch [5580] Speed: 664.74 samples/sec acc=0.138281 +INFO:root:Epoch[4] Batch [5600] Speed: 664.49 samples/sec acc=0.140039 +INFO:root:Epoch[4] Batch [5620] Speed: 664.72 samples/sec acc=0.138477 +INFO:root:Epoch[4] Batch [5640] Speed: 664.31 samples/sec acc=0.138379 +INFO:root:Epoch[4] Batch [5660] Speed: 664.81 samples/sec acc=0.137891 +INFO:root:Epoch[4] Batch [5680] Speed: 664.42 samples/sec acc=0.140430 +INFO:root:Epoch[4] Batch [5700] Speed: 664.92 samples/sec acc=0.139453 +INFO:root:Epoch[4] Batch [5720] Speed: 664.49 samples/sec acc=0.138184 +INFO:root:Epoch[4] Batch [5740] Speed: 664.19 samples/sec acc=0.140820 +INFO:root:Epoch[4] Batch [5760] Speed: 663.58 samples/sec acc=0.139355 +INFO:root:Epoch[4] Batch [5780] Speed: 664.84 samples/sec acc=0.136523 +INFO:root:Epoch[4] Batch [5800] Speed: 664.59 samples/sec acc=0.137109 +INFO:root:Epoch[4] Batch [5820] Speed: 664.72 samples/sec acc=0.136719 +INFO:root:Epoch[4] Batch [5840] Speed: 664.29 samples/sec acc=0.137891 +INFO:root:Epoch[4] Batch [5860] Speed: 664.58 samples/sec acc=0.135156 +INFO:root:Epoch[4] Batch [5880] Speed: 665.22 samples/sec acc=0.132324 +INFO:root:Epoch[4] Batch [5900] Speed: 664.37 samples/sec acc=0.138281 +INFO:root:Epoch[4] Batch [5920] Speed: 664.57 samples/sec acc=0.136523 +[36000][MARGIN]0.645507,0.208008 +lr-batch-epoch: 0.1 5923 4 +testing verification.. +(14000, 512) +infer time 20.000716 +[cfp_ff][36000]XNorm: 22.755588 +[cfp_ff][36000]Accuracy-Flip: 0.99329+-0.00332 +testing verification.. +(14000, 512) +infer time 19.54085 +[cfp_fp][36000]XNorm: 19.190483 +[cfp_fp][36000]Accuracy-Flip: 0.84314+-0.01479 +testing verification.. +(12000, 512) +infer time 15.789011 +[agedb_30][36000]XNorm: 22.199309 +[agedb_30][36000]Accuracy-Flip: 0.94867+-0.00799 +testing verification.. +(12000, 512) +infer time 16.240729 +[lfw][36000]XNorm: 22.511726 +[lfw][36000]Accuracy-Flip: 0.99267+-0.00382 +[36000]Accuracy-Highest: 0.99283 +INFO:root:Epoch[4] Batch [5940] Speed: 97.95 samples/sec acc=0.139648 +INFO:root:Epoch[4] Batch [5960] Speed: 662.60 samples/sec acc=0.138379 +INFO:root:Epoch[4] Batch [5980] Speed: 663.66 samples/sec acc=0.137891 +INFO:root:Epoch[4] Batch [6000] Speed: 663.55 samples/sec acc=0.134570 +INFO:root:Epoch[4] Batch [6020] Speed: 664.27 samples/sec acc=0.142676 +INFO:root:Epoch[4] Batch [6040] Speed: 664.79 samples/sec acc=0.139355 +INFO:root:Epoch[4] Batch [6060] Speed: 664.88 samples/sec acc=0.134863 +INFO:root:Epoch[4] Batch [6080] Speed: 664.20 samples/sec acc=0.137598 +INFO:root:Epoch[4] Batch [6100] Speed: 664.54 samples/sec acc=0.136621 +INFO:root:Epoch[4] Batch [6120] Speed: 664.35 samples/sec acc=0.141211 +INFO:root:Epoch[4] Batch [6140] Speed: 665.22 samples/sec acc=0.129590 +INFO:root:Epoch[4] Batch [6160] Speed: 664.82 samples/sec acc=0.135156 +INFO:root:Epoch[4] Batch [6180] Speed: 664.03 samples/sec acc=0.124902 +INFO:root:Epoch[4] Batch [6200] Speed: 664.97 samples/sec acc=0.140527 +INFO:root:Epoch[4] Batch [6220] Speed: 665.33 samples/sec acc=0.133789 +INFO:root:Epoch[4] Batch [6240] Speed: 663.84 samples/sec acc=0.134180 +INFO:root:Epoch[4] Batch [6260] Speed: 665.07 samples/sec acc=0.137695 +INFO:root:Epoch[4] Batch [6280] Speed: 664.55 samples/sec acc=0.130664 +INFO:root:Epoch[4] Batch [6300] Speed: 663.94 samples/sec acc=0.133008 +INFO:root:Epoch[4] Batch [6320] Speed: 664.43 samples/sec acc=0.138379 +INFO:root:Epoch[4] Batch [6340] Speed: 661.38 samples/sec acc=0.132422 +INFO:root:Epoch[4] Batch [6360] Speed: 683.76 samples/sec acc=0.136035 +INFO:root:Epoch[4] Batch [6380] Speed: 681.21 samples/sec acc=0.136035 +INFO:root:Epoch[4] Batch [6400] Speed: 664.48 samples/sec acc=0.137402 +INFO:root:Epoch[4] Batch [6420] Speed: 663.51 samples/sec acc=0.135352 +INFO:root:Epoch[4] Batch [6440] Speed: 664.72 samples/sec acc=0.142187 +INFO:root:Epoch[4] Batch [6460] Speed: 664.49 samples/sec acc=0.135352 +INFO:root:Epoch[4] Batch [6480] Speed: 664.50 samples/sec acc=0.128027 +INFO:root:Epoch[4] Batch [6500] Speed: 664.78 samples/sec acc=0.133301 +INFO:root:Epoch[4] Batch [6520] Speed: 664.70 samples/sec acc=0.139355 +INFO:root:Epoch[4] Batch [6540] Speed: 664.90 samples/sec acc=0.139063 +INFO:root:Epoch[4] Batch [6560] Speed: 663.38 samples/sec acc=0.137500 +INFO:root:Epoch[4] Batch [6580] Speed: 663.54 samples/sec acc=0.140918 +INFO:root:Epoch[4] Batch [6600] Speed: 664.60 samples/sec acc=0.134766 +INFO:root:Epoch[4] Batch [6620] Speed: 664.66 samples/sec acc=0.135254 +INFO:root:Epoch[4] Batch [6640] Speed: 663.58 samples/sec acc=0.133008 +INFO:root:Epoch[4] Batch [6660] Speed: 664.11 samples/sec acc=0.138672 +INFO:root:Epoch[4] Batch [6680] Speed: 664.11 samples/sec acc=0.137109 +INFO:root:Epoch[4] Batch [6700] Speed: 664.94 samples/sec acc=0.131445 +INFO:root:Epoch[4] Batch [6720] Speed: 664.73 samples/sec acc=0.138086 +INFO:root:Epoch[4] Batch [6740] Speed: 665.07 samples/sec acc=0.137305 +INFO:root:Epoch[4] Batch [6760] Speed: 663.99 samples/sec acc=0.138965 +INFO:root:Epoch[4] Batch [6780] Speed: 664.90 samples/sec acc=0.134082 +INFO:root:Epoch[4] Batch [6800] Speed: 664.52 samples/sec acc=0.136035 +INFO:root:Epoch[4] Batch [6820] Speed: 665.04 samples/sec acc=0.140039 +INFO:root:Epoch[4] Batch [6840] Speed: 664.37 samples/sec acc=0.141699 +INFO:root:Epoch[4] Batch [6860] Speed: 663.94 samples/sec acc=0.134961 +INFO:root:Epoch[4] Batch [6880] Speed: 664.10 samples/sec acc=0.139063 +INFO:root:Epoch[4] Batch [6900] Speed: 664.04 samples/sec acc=0.132617 +INFO:root:Epoch[4] Batch [6920] Speed: 664.35 samples/sec acc=0.131445 +lr-batch-epoch: 0.1 6923 4 +INFO:root:Epoch[4] Batch [6940] Speed: 663.91 samples/sec acc=0.142090 +INFO:root:Epoch[4] Batch [6960] Speed: 664.03 samples/sec acc=0.140430 +INFO:root:Epoch[4] Batch [6980] Speed: 664.41 samples/sec acc=0.135840 +INFO:root:Epoch[4] Batch [7000] Speed: 664.84 samples/sec acc=0.134570 +INFO:root:Epoch[4] Batch [7020] Speed: 664.88 samples/sec acc=0.131152 +INFO:root:Epoch[4] Batch [7040] Speed: 664.72 samples/sec acc=0.136133 +INFO:root:Epoch[4] Batch [7060] Speed: 664.12 samples/sec acc=0.138770 +INFO:root:Epoch[4] Batch [7080] Speed: 664.15 samples/sec acc=0.138770 +INFO:root:Epoch[4] Batch [7100] Speed: 664.44 samples/sec acc=0.134180 +INFO:root:Epoch[4] Batch [7120] Speed: 664.46 samples/sec acc=0.140625 +INFO:root:Epoch[4] Batch [7140] Speed: 672.42 samples/sec acc=0.135547 +INFO:root:Epoch[4] Batch [7160] Speed: 663.99 samples/sec acc=0.140137 +INFO:root:Epoch[4] Batch [7180] Speed: 664.67 samples/sec acc=0.137109 +INFO:root:Epoch[4] Batch [7200] Speed: 664.55 samples/sec acc=0.143652 +INFO:root:Epoch[4] Batch [7220] Speed: 664.70 samples/sec acc=0.136133 +INFO:root:Epoch[4] Batch [7240] Speed: 663.62 samples/sec acc=0.137109 +INFO:root:Epoch[4] Batch [7260] Speed: 664.10 samples/sec acc=0.131934 +INFO:root:Epoch[4] Batch [7280] Speed: 664.57 samples/sec acc=0.135937 +INFO:root:Epoch[4] Batch [7300] Speed: 664.42 samples/sec acc=0.136719 +INFO:root:Epoch[4] Batch [7320] Speed: 663.67 samples/sec acc=0.136426 +INFO:root:Epoch[4] Batch [7340] Speed: 665.36 samples/sec acc=0.133398 +INFO:root:Epoch[4] Batch [7360] Speed: 665.25 samples/sec acc=0.135547 +INFO:root:Epoch[4] Batch [7380] Speed: 663.89 samples/sec acc=0.137109 +INFO:root:Epoch[4] Batch [7400] Speed: 664.44 samples/sec acc=0.133203 +INFO:root:Epoch[4] Batch [7420] Speed: 664.29 samples/sec acc=0.137793 +INFO:root:Epoch[4] Batch [7440] Speed: 665.10 samples/sec acc=0.140039 +INFO:root:Epoch[4] Batch [7460] Speed: 664.15 samples/sec acc=0.134961 +INFO:root:Epoch[4] Batch [7480] Speed: 664.55 samples/sec acc=0.142187 +INFO:root:Epoch[4] Batch [7500] Speed: 663.73 samples/sec acc=0.142773 +INFO:root:Epoch[4] Train-acc=0.134440 +INFO:root:Epoch[4] Time cost=6079.750 +call reset() +INFO:root:Epoch[5] Batch [20] Speed: 663.62 samples/sec acc=0.166109 +INFO:root:Epoch[5] Batch [40] Speed: 664.27 samples/sec acc=0.161230 +INFO:root:Epoch[5] Batch [60] Speed: 664.47 samples/sec acc=0.165039 +INFO:root:Epoch[5] Batch [80] Speed: 664.35 samples/sec acc=0.163086 +INFO:root:Epoch[5] Batch [100] Speed: 654.32 samples/sec acc=0.162207 +INFO:root:Epoch[5] Batch [120] Speed: 664.08 samples/sec acc=0.152832 +INFO:root:Epoch[5] Batch [140] Speed: 661.47 samples/sec acc=0.155469 +INFO:root:Epoch[5] Batch [160] Speed: 664.58 samples/sec acc=0.154883 +INFO:root:Epoch[5] Batch [180] Speed: 664.20 samples/sec acc=0.154688 +INFO:root:Epoch[5] Batch [200] Speed: 663.64 samples/sec acc=0.158105 +INFO:root:Epoch[5] Batch [220] Speed: 664.81 samples/sec acc=0.145898 +INFO:root:Epoch[5] Batch [240] Speed: 663.89 samples/sec acc=0.151074 +INFO:root:Epoch[5] Batch [260] Speed: 663.86 samples/sec acc=0.147168 +INFO:root:Epoch[5] Batch [280] Speed: 665.24 samples/sec acc=0.149512 +INFO:root:Epoch[5] Batch [300] Speed: 664.04 samples/sec acc=0.141992 +INFO:root:Epoch[5] Batch [320] Speed: 663.53 samples/sec acc=0.149414 +INFO:root:Epoch[5] Batch [340] Speed: 664.68 samples/sec acc=0.140430 +INFO:root:Epoch[5] Batch [360] Speed: 664.66 samples/sec acc=0.146875 +INFO:root:Epoch[5] Batch [380] Speed: 663.84 samples/sec acc=0.141699 +INFO:root:Epoch[5] Batch [400] Speed: 660.39 samples/sec acc=0.145996 +[38000][MARGIN]0.674743,0.245232 +lr-batch-epoch: 0.1 404 5 +testing verification.. +(14000, 512) +infer time 24.081838 +[cfp_ff][38000]XNorm: 20.832129 +[cfp_ff][38000]Accuracy-Flip: 0.99443+-0.00274 +testing verification.. +(14000, 512) +infer time 20.217836 +[cfp_fp][38000]XNorm: 16.794967 +[cfp_fp][38000]Accuracy-Flip: 0.82929+-0.01178 +testing verification.. +(12000, 512) +infer time 16.184396 +[agedb_30][38000]XNorm: 20.580146 +[agedb_30][38000]Accuracy-Flip: 0.94733+-0.01003 +testing verification.. +(12000, 512) +infer time 19.499908 +[lfw][38000]XNorm: 20.892786 +[lfw][38000]Accuracy-Flip: 0.99283+-0.00358 +[38000]Accuracy-Highest: 0.99283 +INFO:root:Epoch[5] Batch [420] Speed: 89.99 samples/sec acc=0.141113 +INFO:root:Epoch[5] Batch [440] Speed: 662.99 samples/sec acc=0.140723 +INFO:root:Epoch[5] Batch [460] Speed: 663.46 samples/sec acc=0.144531 +INFO:root:Epoch[5] Batch [480] Speed: 663.60 samples/sec acc=0.141602 +INFO:root:Epoch[5] Batch [500] Speed: 663.94 samples/sec acc=0.151562 +INFO:root:Epoch[5] Batch [520] Speed: 664.22 samples/sec acc=0.143652 +INFO:root:Epoch[5] Batch [540] Speed: 664.63 samples/sec acc=0.149316 +INFO:root:Epoch[5] Batch [560] Speed: 663.84 samples/sec acc=0.141797 +INFO:root:Epoch[5] Batch [580] Speed: 664.94 samples/sec acc=0.143848 +INFO:root:Epoch[5] Batch [600] Speed: 663.69 samples/sec acc=0.138281 +INFO:root:Epoch[5] Batch [620] Speed: 664.76 samples/sec acc=0.139258 +INFO:root:Epoch[5] Batch [640] Speed: 664.76 samples/sec acc=0.145703 +INFO:root:Epoch[5] Batch [660] Speed: 664.68 samples/sec acc=0.140430 +INFO:root:Epoch[5] Batch [680] Speed: 664.21 samples/sec acc=0.142090 +INFO:root:Epoch[5] Batch [700] Speed: 665.14 samples/sec acc=0.143945 +INFO:root:Epoch[5] Batch [720] Speed: 663.31 samples/sec acc=0.138574 +INFO:root:Epoch[5] Batch [740] Speed: 663.76 samples/sec acc=0.144824 +INFO:root:Epoch[5] Batch [760] Speed: 665.33 samples/sec acc=0.149805 +INFO:root:Epoch[5] Batch [780] Speed: 664.25 samples/sec acc=0.141309 +INFO:root:Epoch[5] Batch [800] Speed: 664.17 samples/sec acc=0.134375 +INFO:root:Epoch[5] Batch [820] Speed: 664.50 samples/sec acc=0.138672 +INFO:root:Epoch[5] Batch [840] Speed: 664.42 samples/sec acc=0.148926 +INFO:root:Epoch[5] Batch [860] Speed: 662.96 samples/sec acc=0.145996 +INFO:root:Epoch[5] Batch [880] Speed: 664.84 samples/sec acc=0.138086 +INFO:root:Epoch[5] Batch [900] Speed: 664.76 samples/sec acc=0.137500 +INFO:root:Epoch[5] Batch [920] Speed: 663.49 samples/sec acc=0.136523 +INFO:root:Epoch[5] Batch [940] Speed: 664.41 samples/sec acc=0.138281 +INFO:root:Epoch[5] Batch [960] Speed: 663.75 samples/sec acc=0.134180 +INFO:root:Epoch[5] Batch [980] Speed: 663.83 samples/sec acc=0.138379 +INFO:root:Epoch[5] Batch [1000] Speed: 664.62 samples/sec acc=0.141309 +INFO:root:Epoch[5] Batch [1020] Speed: 664.05 samples/sec acc=0.142383 +INFO:root:Epoch[5] Batch [1040] Speed: 664.07 samples/sec acc=0.132422 +INFO:root:Epoch[5] Batch [1060] Speed: 663.73 samples/sec acc=0.149121 +INFO:root:Epoch[5] Batch [1080] Speed: 664.80 samples/sec acc=0.142969 +INFO:root:Epoch[5] Batch [1100] Speed: 664.45 samples/sec acc=0.142969 +INFO:root:Epoch[5] Batch [1120] Speed: 664.61 samples/sec acc=0.138965 +INFO:root:Epoch[5] Batch [1140] Speed: 664.27 samples/sec acc=0.136230 +INFO:root:Epoch[5] Batch [1160] Speed: 663.53 samples/sec acc=0.143652 +INFO:root:Epoch[5] Batch [1180] Speed: 668.77 samples/sec acc=0.140039 +INFO:root:Epoch[5] Batch [1200] Speed: 668.72 samples/sec acc=0.138281 +INFO:root:Epoch[5] Batch [1220] Speed: 664.03 samples/sec acc=0.147070 +INFO:root:Epoch[5] Batch [1240] Speed: 665.04 samples/sec acc=0.141016 +INFO:root:Epoch[5] Batch [1260] Speed: 663.91 samples/sec acc=0.135645 +INFO:root:Epoch[5] Batch [1280] Speed: 663.42 samples/sec acc=0.138574 +INFO:root:Epoch[5] Batch [1300] Speed: 665.14 samples/sec acc=0.142578 +INFO:root:Epoch[5] Batch [1320] Speed: 664.59 samples/sec acc=0.140430 +INFO:root:Epoch[5] Batch [1340] Speed: 663.83 samples/sec acc=0.138184 +INFO:root:Epoch[5] Batch [1360] Speed: 663.44 samples/sec acc=0.136914 +INFO:root:Epoch[5] Batch [1380] Speed: 664.78 samples/sec acc=0.137305 +INFO:root:Epoch[5] Batch [1400] Speed: 663.30 samples/sec acc=0.137695 +lr-batch-epoch: 0.1 1404 5 +INFO:root:Epoch[5] Batch [1420] Speed: 664.21 samples/sec acc=0.140332 +INFO:root:Epoch[5] Batch [1440] Speed: 664.92 samples/sec acc=0.135937 +INFO:root:Epoch[5] Batch [1460] Speed: 663.71 samples/sec acc=0.141504 +INFO:root:Epoch[5] Batch [1480] Speed: 664.19 samples/sec acc=0.138770 +INFO:root:Epoch[5] Batch [1500] Speed: 664.02 samples/sec acc=0.135645 +INFO:root:Epoch[5] Batch [1520] Speed: 663.46 samples/sec acc=0.145215 +INFO:root:Epoch[5] Batch [1540] Speed: 664.59 samples/sec acc=0.134180 +INFO:root:Epoch[5] Batch [1560] Speed: 664.48 samples/sec acc=0.144727 +INFO:root:Epoch[5] Batch [1580] Speed: 662.96 samples/sec acc=0.140039 +INFO:root:Epoch[5] Batch [1600] Speed: 665.13 samples/sec acc=0.132520 +INFO:root:Epoch[5] Batch [1620] Speed: 664.44 samples/sec acc=0.134277 +INFO:root:Epoch[5] Batch [1640] Speed: 663.46 samples/sec acc=0.131055 +INFO:root:Epoch[5] Batch [1660] Speed: 664.37 samples/sec acc=0.138184 +INFO:root:Epoch[5] Batch [1680] Speed: 664.78 samples/sec acc=0.140723 +INFO:root:Epoch[5] Batch [1700] Speed: 663.94 samples/sec acc=0.139063 +INFO:root:Epoch[5] Batch [1720] Speed: 665.22 samples/sec acc=0.143652 +INFO:root:Epoch[5] Batch [1740] Speed: 663.99 samples/sec acc=0.140137 +INFO:root:Epoch[5] Batch [1760] Speed: 662.98 samples/sec acc=0.134863 +INFO:root:Epoch[5] Batch [1780] Speed: 664.87 samples/sec acc=0.138770 +INFO:root:Epoch[5] Batch [1800] Speed: 663.63 samples/sec acc=0.140527 +INFO:root:Epoch[5] Batch [1820] Speed: 663.02 samples/sec acc=0.141113 +INFO:root:Epoch[5] Batch [1840] Speed: 665.15 samples/sec acc=0.136426 +INFO:root:Epoch[5] Batch [1860] Speed: 663.57 samples/sec acc=0.141016 +INFO:root:Epoch[5] Batch [1880] Speed: 663.35 samples/sec acc=0.136621 +INFO:root:Epoch[5] Batch [1900] Speed: 664.57 samples/sec acc=0.137988 +INFO:root:Epoch[5] Batch [1920] Speed: 664.58 samples/sec acc=0.139453 +INFO:root:Epoch[5] Batch [1940] Speed: 663.83 samples/sec acc=0.135937 +INFO:root:Epoch[5] Batch [1960] Speed: 665.31 samples/sec acc=0.133594 +INFO:root:Epoch[5] Batch [1980] Speed: 658.59 samples/sec acc=0.134961 +INFO:root:Epoch[5] Batch [2000] Speed: 670.41 samples/sec acc=0.137695 +INFO:root:Epoch[5] Batch [2020] Speed: 664.72 samples/sec acc=0.136621 +INFO:root:Epoch[5] Batch [2040] Speed: 663.46 samples/sec acc=0.137402 +INFO:root:Epoch[5] Batch [2060] Speed: 663.82 samples/sec acc=0.139453 +INFO:root:Epoch[5] Batch [2080] Speed: 665.01 samples/sec acc=0.142676 +INFO:root:Epoch[5] Batch [2100] Speed: 663.95 samples/sec acc=0.142285 +INFO:root:Epoch[5] Batch [2120] Speed: 661.91 samples/sec acc=0.140430 +INFO:root:Epoch[5] Batch [2140] Speed: 664.59 samples/sec acc=0.134961 +INFO:root:Epoch[5] Batch [2160] Speed: 664.50 samples/sec acc=0.141406 +INFO:root:Epoch[5] Batch [2180] Speed: 664.63 samples/sec acc=0.140234 +INFO:root:Epoch[5] Batch [2200] Speed: 664.21 samples/sec acc=0.138965 +INFO:root:Epoch[5] Batch [2220] Speed: 664.70 samples/sec acc=0.137207 +INFO:root:Epoch[5] Batch [2240] Speed: 663.67 samples/sec acc=0.140820 +INFO:root:Epoch[5] Batch [2260] Speed: 665.07 samples/sec acc=0.137793 +INFO:root:Epoch[5] Batch [2280] Speed: 663.87 samples/sec acc=0.136133 +INFO:root:Epoch[5] Batch [2300] Speed: 662.99 samples/sec acc=0.145117 +INFO:root:Epoch[5] Batch [2320] Speed: 666.01 samples/sec acc=0.136426 +INFO:root:Epoch[5] Batch [2340] Speed: 664.30 samples/sec acc=0.136621 +INFO:root:Epoch[5] Batch [2360] Speed: 662.86 samples/sec acc=0.138184 +INFO:root:Epoch[5] Batch [2380] Speed: 664.91 samples/sec acc=0.138965 +INFO:root:Epoch[5] Batch [2400] Speed: 663.83 samples/sec acc=0.142090 +[40000][MARGIN]0.655353,0.218351 +lr-batch-epoch: 0.1 2404 5 +testing verification.. +(14000, 512) +infer time 17.79534 +[cfp_ff][40000]XNorm: 22.351214 +[cfp_ff][40000]Accuracy-Flip: 0.99414+-0.00370 +testing verification.. +(14000, 512) +infer time 23.573196 +[cfp_fp][40000]XNorm: 18.387278 +[cfp_fp][40000]Accuracy-Flip: 0.83371+-0.01716 +testing verification.. +(12000, 512) +infer time 18.960611 +[agedb_30][40000]XNorm: 21.789830 +[agedb_30][40000]Accuracy-Flip: 0.95050+-0.01088 +testing verification.. +(12000, 512) +infer time 18.417199 +[lfw][40000]XNorm: 22.354413 +[lfw][40000]Accuracy-Flip: 0.99233+-0.00442 +[40000]Accuracy-Highest: 0.99283 +INFO:root:Epoch[5] Batch [2420] Speed: 91.45 samples/sec acc=0.135352 +INFO:root:Epoch[5] Batch [2440] Speed: 663.59 samples/sec acc=0.129004 +INFO:root:Epoch[5] Batch [2460] Speed: 661.14 samples/sec acc=0.136914 +INFO:root:Epoch[5] Batch [2480] Speed: 663.48 samples/sec acc=0.136328 +INFO:root:Epoch[5] Batch [2500] Speed: 664.00 samples/sec acc=0.143164 +INFO:root:Epoch[5] Batch [2520] Speed: 663.39 samples/sec acc=0.142773 +INFO:root:Epoch[5] Batch [2540] Speed: 663.66 samples/sec acc=0.137012 +INFO:root:Epoch[5] Batch [2560] Speed: 664.64 samples/sec acc=0.145703 +INFO:root:Epoch[5] Batch [2580] Speed: 663.41 samples/sec acc=0.141602 +INFO:root:Epoch[5] Batch [2600] Speed: 663.93 samples/sec acc=0.141895 +INFO:root:Epoch[5] Batch [2620] Speed: 663.51 samples/sec acc=0.138672 +INFO:root:Epoch[5] Batch [2640] Speed: 664.87 samples/sec acc=0.145410 +INFO:root:Epoch[5] Batch [2660] Speed: 662.66 samples/sec acc=0.139648 +INFO:root:Epoch[5] Batch [2680] Speed: 664.42 samples/sec acc=0.135742 +INFO:root:Epoch[5] Batch [2700] Speed: 663.91 samples/sec acc=0.139160 +INFO:root:Epoch[5] Batch [2720] Speed: 663.33 samples/sec acc=0.148047 +INFO:root:Epoch[5] Batch [2740] Speed: 664.85 samples/sec acc=0.139551 +INFO:root:Epoch[5] Batch [2760] Speed: 663.97 samples/sec acc=0.141309 +INFO:root:Epoch[5] Batch [2780] Speed: 663.62 samples/sec acc=0.139844 +INFO:root:Epoch[5] Batch [2800] Speed: 667.05 samples/sec acc=0.133008 +INFO:root:Epoch[5] Batch [2820] Speed: 679.24 samples/sec acc=0.140625 +INFO:root:Epoch[5] Batch [2840] Speed: 677.24 samples/sec acc=0.144824 +INFO:root:Epoch[5] Batch [2860] Speed: 678.42 samples/sec acc=0.143555 +INFO:root:Epoch[5] Batch [2880] Speed: 672.38 samples/sec acc=0.139844 +INFO:root:Epoch[5] Batch [2900] Speed: 663.84 samples/sec acc=0.140332 +INFO:root:Epoch[5] Batch [2920] Speed: 665.11 samples/sec acc=0.134082 +INFO:root:Epoch[5] Batch [2940] Speed: 664.44 samples/sec acc=0.140039 +INFO:root:Epoch[5] Batch [2960] Speed: 664.03 samples/sec acc=0.140625 +INFO:root:Epoch[5] Batch [2980] Speed: 664.50 samples/sec acc=0.143750 +INFO:root:Epoch[5] Batch [3000] Speed: 663.73 samples/sec acc=0.139355 +INFO:root:Epoch[5] Batch [3020] Speed: 663.63 samples/sec acc=0.134277 +INFO:root:Epoch[5] Batch [3040] Speed: 663.70 samples/sec acc=0.133691 +INFO:root:Epoch[5] Batch [3060] Speed: 664.19 samples/sec acc=0.135742 +INFO:root:Epoch[5] Batch [3080] Speed: 664.15 samples/sec acc=0.144629 +INFO:root:Epoch[5] Batch [3100] Speed: 665.04 samples/sec acc=0.133984 +INFO:root:Epoch[5] Batch [3120] Speed: 663.98 samples/sec acc=0.142969 +INFO:root:Epoch[5] Batch [3140] Speed: 663.58 samples/sec acc=0.137402 +INFO:root:Epoch[5] Batch [3160] Speed: 664.99 samples/sec acc=0.143848 +INFO:root:Epoch[5] Batch [3180] Speed: 663.77 samples/sec acc=0.134570 +INFO:root:Epoch[5] Batch [3200] Speed: 663.87 samples/sec acc=0.138477 +INFO:root:Epoch[5] Batch [3220] Speed: 664.80 samples/sec acc=0.146289 +INFO:root:Epoch[5] Batch [3240] Speed: 664.14 samples/sec acc=0.135449 +INFO:root:Epoch[5] Batch [3260] Speed: 662.59 samples/sec acc=0.138867 +INFO:root:Epoch[5] Batch [3280] Speed: 665.15 samples/sec acc=0.138574 +INFO:root:Epoch[5] Batch [3300] Speed: 664.25 samples/sec acc=0.136914 +INFO:root:Epoch[5] Batch [3320] Speed: 663.58 samples/sec acc=0.135059 +INFO:root:Epoch[5] Batch [3340] Speed: 663.94 samples/sec acc=0.138379 +INFO:root:Epoch[5] Batch [3360] Speed: 664.14 samples/sec acc=0.140820 +INFO:root:Epoch[5] Batch [3380] Speed: 662.51 samples/sec acc=0.139258 +INFO:root:Epoch[5] Batch [3400] Speed: 664.20 samples/sec acc=0.137109 +lr-batch-epoch: 0.1 3404 5 +INFO:root:Epoch[5] Batch [3420] Speed: 663.72 samples/sec acc=0.138965 +INFO:root:Epoch[5] Batch [3440] Speed: 663.61 samples/sec acc=0.143359 +INFO:root:Epoch[5] Batch [3460] Speed: 665.30 samples/sec acc=0.142383 +INFO:root:Epoch[5] Batch [3480] Speed: 664.14 samples/sec acc=0.144043 +INFO:root:Epoch[5] Batch [3500] Speed: 663.99 samples/sec acc=0.143262 +INFO:root:Epoch[5] Batch [3520] Speed: 664.94 samples/sec acc=0.139355 +INFO:root:Epoch[5] Batch [3540] Speed: 664.22 samples/sec acc=0.145508 +INFO:root:Epoch[5] Batch [3560] Speed: 663.89 samples/sec acc=0.138965 +INFO:root:Epoch[5] Batch [3580] Speed: 665.22 samples/sec acc=0.137598 +INFO:root:Epoch[5] Batch [3600] Speed: 664.23 samples/sec acc=0.141895 +INFO:root:Epoch[5] Batch [3620] Speed: 664.12 samples/sec acc=0.137305 +INFO:root:Epoch[5] Batch [3640] Speed: 664.70 samples/sec acc=0.135937 +INFO:root:Epoch[5] Batch [3660] Speed: 664.32 samples/sec acc=0.134277 +INFO:root:Epoch[5] Batch [3680] Speed: 663.33 samples/sec acc=0.139941 +INFO:root:Epoch[5] Batch [3700] Speed: 664.60 samples/sec acc=0.140332 +INFO:root:Epoch[5] Batch [3720] Speed: 664.25 samples/sec acc=0.137305 +INFO:root:Epoch[5] Batch [3740] Speed: 663.31 samples/sec acc=0.141113 +INFO:root:Epoch[5] Batch [3760] Speed: 664.45 samples/sec acc=0.139063 +INFO:root:Epoch[5] Batch [3780] Speed: 663.92 samples/sec acc=0.140723 +INFO:root:Epoch[5] Batch [3800] Speed: 664.14 samples/sec acc=0.141113 +INFO:root:Epoch[5] Batch [3820] Speed: 665.16 samples/sec acc=0.144336 +INFO:root:Epoch[5] Batch [3840] Speed: 663.53 samples/sec acc=0.136621 +INFO:root:Epoch[5] Batch [3860] Speed: 663.64 samples/sec acc=0.141895 +INFO:root:Epoch[5] Batch [3880] Speed: 664.70 samples/sec acc=0.142383 +INFO:root:Epoch[5] Batch [3900] Speed: 663.63 samples/sec acc=0.145313 +INFO:root:Epoch[5] Batch [3920] Speed: 663.99 samples/sec acc=0.136426 +INFO:root:Epoch[5] Batch [3940] Speed: 665.28 samples/sec acc=0.139160 +INFO:root:Epoch[5] Batch [3960] Speed: 664.01 samples/sec acc=0.143652 +INFO:root:Epoch[5] Batch [3980] Speed: 663.47 samples/sec acc=0.139648 +INFO:root:Epoch[5] Batch [4000] Speed: 664.92 samples/sec acc=0.136426 +INFO:root:Epoch[5] Batch [4020] Speed: 664.63 samples/sec acc=0.138281 +INFO:root:Epoch[5] Batch [4040] Speed: 663.66 samples/sec acc=0.137891 +INFO:root:Epoch[5] Batch [4060] Speed: 665.09 samples/sec acc=0.141113 +INFO:root:Epoch[5] Batch [4080] Speed: 664.93 samples/sec acc=0.141797 +INFO:root:Epoch[5] Batch [4100] Speed: 664.06 samples/sec acc=0.133789 +INFO:root:Epoch[5] Batch [4120] Speed: 665.31 samples/sec acc=0.142187 +INFO:root:Epoch[5] Batch [4140] Speed: 664.33 samples/sec acc=0.137500 +INFO:root:Epoch[5] Batch [4160] Speed: 663.90 samples/sec acc=0.144141 +INFO:root:Epoch[5] Batch [4180] Speed: 663.52 samples/sec acc=0.146484 +INFO:root:Epoch[5] Batch [4200] Speed: 663.22 samples/sec acc=0.142480 +INFO:root:Epoch[5] Batch [4220] Speed: 664.41 samples/sec acc=0.140332 +INFO:root:Epoch[5] Batch [4240] Speed: 664.94 samples/sec acc=0.143164 +INFO:root:Epoch[5] Batch [4260] Speed: 664.87 samples/sec acc=0.138086 +INFO:root:Epoch[5] Batch [4280] Speed: 663.42 samples/sec acc=0.143555 +INFO:root:Epoch[5] Batch [4300] Speed: 663.76 samples/sec acc=0.140039 +INFO:root:Epoch[5] Batch [4320] Speed: 664.04 samples/sec acc=0.143555 +INFO:root:Epoch[5] Batch [4340] Speed: 663.19 samples/sec acc=0.136133 +INFO:root:Epoch[5] Batch [4360] Speed: 664.42 samples/sec acc=0.144141 +INFO:root:Epoch[5] Batch [4380] Speed: 674.18 samples/sec acc=0.139648 +INFO:root:Epoch[5] Batch [4400] Speed: 663.61 samples/sec acc=0.137402 +[42000][MARGIN]0.649567,0.212691 +lr-batch-epoch: 0.1 4404 5 +testing verification.. +(14000, 512) +infer time 20.639069 +[cfp_ff][42000]XNorm: 21.065195 +[cfp_ff][42000]Accuracy-Flip: 0.99371+-0.00294 +testing verification.. +(14000, 512) +infer time 23.804205 +[cfp_fp][42000]XNorm: 17.375979 +[cfp_fp][42000]Accuracy-Flip: 0.83529+-0.01796 +testing verification.. +(12000, 512) +infer time 17.203058 +[agedb_30][42000]XNorm: 21.139623 +[agedb_30][42000]Accuracy-Flip: 0.94650+-0.01277 +testing verification.. +(12000, 512) +infer time 18.317502 +[lfw][42000]XNorm: 21.489225 +[lfw][42000]Accuracy-Flip: 0.99317+-0.00337 +saving 21 +INFO:root:Saved checkpoint to "../model-r50-am-lfw/model-0021.params" +[42000]Accuracy-Highest: 0.99317 +INFO:root:Epoch[5] Batch [4420] Speed: 87.85 samples/sec acc=0.141309 +INFO:root:Epoch[5] Batch [4440] Speed: 663.33 samples/sec acc=0.143262 +INFO:root:Epoch[5] Batch [4460] Speed: 661.54 samples/sec acc=0.141211 +INFO:root:Epoch[5] Batch [4480] Speed: 649.46 samples/sec acc=0.143555 +INFO:root:Epoch[5] Batch [4500] Speed: 662.12 samples/sec acc=0.141406 +INFO:root:Epoch[5] Batch [4520] Speed: 661.52 samples/sec acc=0.145703 +INFO:root:Epoch[5] Batch [4540] Speed: 664.12 samples/sec acc=0.131250 +INFO:root:Epoch[5] Batch [4560] Speed: 663.76 samples/sec acc=0.140820 +INFO:root:Epoch[5] Batch [4580] Speed: 663.64 samples/sec acc=0.141504 +INFO:root:Epoch[5] Batch [4600] Speed: 655.64 samples/sec acc=0.143457 +INFO:root:Epoch[5] Batch [4620] Speed: 664.14 samples/sec acc=0.143945 +INFO:root:Epoch[5] Batch [4640] Speed: 663.61 samples/sec acc=0.133496 +INFO:root:Epoch[5] Batch [4660] Speed: 664.78 samples/sec acc=0.145410 +INFO:root:Epoch[5] Batch [4680] Speed: 664.46 samples/sec acc=0.136426 +INFO:root:Epoch[5] Batch [4700] Speed: 664.31 samples/sec acc=0.141016 +INFO:root:Epoch[5] Batch [4720] Speed: 664.74 samples/sec acc=0.137500 +INFO:root:Epoch[5] Batch [4740] Speed: 663.75 samples/sec acc=0.140918 +INFO:root:Epoch[5] Batch [4760] Speed: 662.78 samples/sec acc=0.142383 +INFO:root:Epoch[5] Batch [4780] Speed: 664.63 samples/sec acc=0.139648 +INFO:root:Epoch[5] Batch [4800] Speed: 664.86 samples/sec acc=0.137793 +INFO:root:Epoch[5] Batch [4820] Speed: 663.84 samples/sec acc=0.139355 +INFO:root:Epoch[5] Batch [4840] Speed: 664.22 samples/sec acc=0.132129 +INFO:root:Epoch[5] Batch [4860] Speed: 662.86 samples/sec acc=0.138867 +INFO:root:Epoch[5] Batch [4880] Speed: 664.17 samples/sec acc=0.143652 +INFO:root:Epoch[5] Batch [4900] Speed: 664.26 samples/sec acc=0.138086 +INFO:root:Epoch[5] Batch [4920] Speed: 664.34 samples/sec acc=0.141895 +INFO:root:Epoch[5] Batch [4940] Speed: 662.41 samples/sec acc=0.140137 +INFO:root:Epoch[5] Batch [4960] Speed: 663.66 samples/sec acc=0.143945 +INFO:root:Epoch[5] Batch [4980] Speed: 664.03 samples/sec acc=0.136719 +INFO:root:Epoch[5] Batch [5000] Speed: 663.58 samples/sec acc=0.140039 +INFO:root:Epoch[5] Batch [5020] Speed: 664.20 samples/sec acc=0.139648 +INFO:root:Epoch[5] Batch [5040] Speed: 664.79 samples/sec acc=0.137598 +INFO:root:Epoch[5] Batch [5060] Speed: 663.25 samples/sec acc=0.141309 +INFO:root:Epoch[5] Batch [5080] Speed: 664.25 samples/sec acc=0.142871 +INFO:root:Epoch[5] Batch [5100] Speed: 665.24 samples/sec acc=0.142773 +INFO:root:Epoch[5] Batch [5120] Speed: 664.04 samples/sec acc=0.146973 +INFO:root:Epoch[5] Batch [5140] Speed: 664.69 samples/sec acc=0.136914 +INFO:root:Epoch[5] Batch [5160] Speed: 663.48 samples/sec acc=0.141113 +INFO:root:Epoch[5] Batch [5180] Speed: 662.54 samples/sec acc=0.139844 +INFO:root:Epoch[5] Batch [5200] Speed: 664.93 samples/sec acc=0.143652 +INFO:root:Epoch[5] Batch [5220] Speed: 664.31 samples/sec acc=0.138965 +INFO:root:Epoch[5] Batch [5240] Speed: 663.49 samples/sec acc=0.137012 +INFO:root:Epoch[5] Batch [5260] Speed: 664.44 samples/sec acc=0.136914 +INFO:root:Epoch[5] Batch [5280] Speed: 664.07 samples/sec acc=0.138184 +INFO:root:Epoch[5] Batch [5300] Speed: 663.11 samples/sec acc=0.144043 +INFO:root:Epoch[5] Batch [5320] Speed: 664.79 samples/sec acc=0.143945 +INFO:root:Epoch[5] Batch [5340] Speed: 663.83 samples/sec acc=0.140430 +INFO:root:Epoch[5] Batch [5360] Speed: 663.35 samples/sec acc=0.137695 +INFO:root:Epoch[5] Batch [5380] Speed: 664.62 samples/sec acc=0.136035 +INFO:root:Epoch[5] Batch [5400] Speed: 664.29 samples/sec acc=0.141211 +lr-batch-epoch: 0.1 5404 5 +INFO:root:Epoch[5] Batch [5420] Speed: 662.08 samples/sec acc=0.139941 +INFO:root:Epoch[5] Batch [5440] Speed: 665.13 samples/sec acc=0.138770 +INFO:root:Epoch[5] Batch [5460] Speed: 664.00 samples/sec acc=0.137500 +INFO:root:Epoch[5] Batch [5480] Speed: 663.09 samples/sec acc=0.139258 +INFO:root:Epoch[5] Batch [5500] Speed: 664.19 samples/sec acc=0.138086 +INFO:root:Epoch[5] Batch [5520] Speed: 663.79 samples/sec acc=0.142187 +INFO:root:Epoch[5] Batch [5540] Speed: 662.85 samples/sec acc=0.143652 +INFO:root:Epoch[5] Batch [5560] Speed: 652.96 samples/sec acc=0.141406 +INFO:root:Epoch[5] Batch [5580] Speed: 665.66 samples/sec acc=0.139844 +INFO:root:Epoch[5] Batch [5600] Speed: 663.40 samples/sec acc=0.140527 +INFO:root:Epoch[5] Batch [5620] Speed: 664.40 samples/sec acc=0.140332 +INFO:root:Epoch[5] Batch [5640] Speed: 664.85 samples/sec acc=0.141016 +INFO:root:Epoch[5] Batch [5660] Speed: 664.22 samples/sec acc=0.142187 +INFO:root:Epoch[5] Batch [5680] Speed: 664.72 samples/sec acc=0.139551 +INFO:root:Epoch[5] Batch [5700] Speed: 664.22 samples/sec acc=0.142285 +INFO:root:Epoch[5] Batch [5720] Speed: 663.39 samples/sec acc=0.141797 +INFO:root:Epoch[5] Batch [5740] Speed: 664.20 samples/sec acc=0.143848 +INFO:root:Epoch[5] Batch [5760] Speed: 662.64 samples/sec acc=0.149609 +INFO:root:Epoch[5] Batch [5780] Speed: 664.10 samples/sec acc=0.140430 +INFO:root:Epoch[5] Batch [5800] Speed: 664.61 samples/sec acc=0.141016 +INFO:root:Epoch[5] Batch [5820] Speed: 663.71 samples/sec acc=0.142383 +INFO:root:Epoch[5] Batch [5840] Speed: 662.78 samples/sec acc=0.139355 +INFO:root:Epoch[5] Batch [5860] Speed: 664.34 samples/sec acc=0.141406 +INFO:root:Epoch[5] Batch [5880] Speed: 663.50 samples/sec acc=0.139941 +INFO:root:Epoch[5] Batch [5900] Speed: 668.71 samples/sec acc=0.139551 +INFO:root:Epoch[5] Batch [5920] Speed: 663.03 samples/sec acc=0.143750 +INFO:root:Epoch[5] Batch [5940] Speed: 663.94 samples/sec acc=0.133789 +INFO:root:Epoch[5] Batch [5960] Speed: 663.10 samples/sec acc=0.143164 +INFO:root:Epoch[5] Batch [5980] Speed: 665.03 samples/sec acc=0.139551 +INFO:root:Epoch[5] Batch [6000] Speed: 663.63 samples/sec acc=0.141406 +INFO:root:Epoch[5] Batch [6020] Speed: 662.55 samples/sec acc=0.140234 +INFO:root:Epoch[5] Batch [6040] Speed: 664.72 samples/sec acc=0.138770 +INFO:root:Epoch[5] Batch [6060] Speed: 663.19 samples/sec acc=0.142383 +INFO:root:Epoch[5] Batch [6080] Speed: 663.71 samples/sec acc=0.139453 +INFO:root:Epoch[5] Batch [6100] Speed: 664.06 samples/sec acc=0.137500 +INFO:root:Epoch[5] Batch [6120] Speed: 663.20 samples/sec acc=0.139453 +INFO:root:Epoch[5] Batch [6140] Speed: 664.21 samples/sec acc=0.135742 +INFO:root:Epoch[5] Batch [6160] Speed: 664.02 samples/sec acc=0.140723 +INFO:root:Epoch[5] Batch [6180] Speed: 664.25 samples/sec acc=0.146582 +INFO:root:Epoch[5] Batch [6200] Speed: 662.77 samples/sec acc=0.145703 +INFO:root:Epoch[5] Batch [6220] Speed: 664.51 samples/sec acc=0.139160 +INFO:root:Epoch[5] Batch [6240] Speed: 664.71 samples/sec acc=0.143555 +INFO:root:Epoch[5] Batch [6260] Speed: 657.63 samples/sec acc=0.144336 +INFO:root:Epoch[5] Batch [6280] Speed: 671.55 samples/sec acc=0.137207 +INFO:root:Epoch[5] Batch [6300] Speed: 663.84 samples/sec acc=0.142578 +INFO:root:Epoch[5] Batch [6320] Speed: 662.12 samples/sec acc=0.145801 +INFO:root:Epoch[5] Batch [6340] Speed: 664.68 samples/sec acc=0.136523 +INFO:root:Epoch[5] Batch [6360] Speed: 663.53 samples/sec acc=0.147266 +INFO:root:Epoch[5] Batch [6380] Speed: 663.06 samples/sec acc=0.140430 +INFO:root:Epoch[5] Batch [6400] Speed: 664.70 samples/sec acc=0.142773 +[44000][MARGIN]0.647738,0.209751 +lr-batch-epoch: 0.1 6404 5 +testing verification.. +(14000, 512) +infer time 19.897472 +[cfp_ff][44000]XNorm: 21.254379 +[cfp_ff][44000]Accuracy-Flip: 0.99471+-0.00362 +testing verification.. +(14000, 512) +infer time 21.493764 +[cfp_fp][44000]XNorm: 16.929554 +[cfp_fp][44000]Accuracy-Flip: 0.84329+-0.01483 +testing verification.. +(12000, 512) +infer time 17.169521 +[agedb_30][44000]XNorm: 21.279628 +[agedb_30][44000]Accuracy-Flip: 0.94500+-0.00771 +testing verification.. +(12000, 512) +infer time 20.694546 +[lfw][44000]XNorm: 21.324684 +[lfw][44000]Accuracy-Flip: 0.99350+-0.00462 +saving 22 +INFO:root:Saved checkpoint to "../model-r50-am-lfw/model-0022.params" +[44000]Accuracy-Highest: 0.99350 +INFO:root:Epoch[5] Batch [6420] Speed: 86.97 samples/sec acc=0.145996 +INFO:root:Epoch[5] Batch [6440] Speed: 662.84 samples/sec acc=0.137109 +INFO:root:Epoch[5] Batch [6460] Speed: 664.30 samples/sec acc=0.147070 +INFO:root:Epoch[5] Batch [6480] Speed: 664.11 samples/sec acc=0.142676 +INFO:root:Epoch[5] Batch [6500] Speed: 663.76 samples/sec acc=0.141602 +INFO:root:Epoch[5] Batch [6520] Speed: 663.39 samples/sec acc=0.141504 +INFO:root:Epoch[5] Batch [6540] Speed: 663.41 samples/sec acc=0.140430 +INFO:root:Epoch[5] Batch [6560] Speed: 662.88 samples/sec acc=0.145996 +INFO:root:Epoch[5] Batch [6580] Speed: 644.82 samples/sec acc=0.140332 +INFO:root:Epoch[5] Batch [6600] Speed: 664.77 samples/sec acc=0.143359 +INFO:root:Epoch[5] Batch [6620] Speed: 664.02 samples/sec acc=0.142090 +INFO:root:Epoch[5] Batch [6640] Speed: 665.13 samples/sec acc=0.143652 +INFO:root:Epoch[5] Batch [6660] Speed: 663.57 samples/sec acc=0.141406 +INFO:root:Epoch[5] Batch [6680] Speed: 663.94 samples/sec acc=0.141113 +INFO:root:Epoch[5] Batch [6700] Speed: 662.27 samples/sec acc=0.138867 +INFO:root:Epoch[5] Batch [6720] Speed: 664.19 samples/sec acc=0.141016 +INFO:root:Epoch[5] Batch [6740] Speed: 664.16 samples/sec acc=0.148438 +INFO:root:Epoch[5] Batch [6760] Speed: 664.51 samples/sec acc=0.135937 +INFO:root:Epoch[5] Batch [6780] Speed: 664.74 samples/sec acc=0.139648 +INFO:root:Epoch[5] Batch [6800] Speed: 664.05 samples/sec acc=0.138965 +INFO:root:Epoch[5] Batch [6820] Speed: 664.56 samples/sec acc=0.142676 +INFO:root:Epoch[5] Batch [6840] Speed: 663.77 samples/sec acc=0.140234 +INFO:root:Epoch[5] Batch [6860] Speed: 663.26 samples/sec acc=0.139453 +INFO:root:Epoch[5] Batch [6880] Speed: 664.40 samples/sec acc=0.136719 +INFO:root:Epoch[5] Batch [6900] Speed: 664.28 samples/sec acc=0.139551 +INFO:root:Epoch[5] Batch [6920] Speed: 664.14 samples/sec acc=0.141211 +INFO:root:Epoch[5] Batch [6940] Speed: 664.51 samples/sec acc=0.138770 +INFO:root:Epoch[5] Batch [6960] Speed: 663.96 samples/sec acc=0.136914 +INFO:root:Epoch[5] Batch [6980] Speed: 663.14 samples/sec acc=0.134375 +INFO:root:Epoch[5] Batch [7000] Speed: 664.34 samples/sec acc=0.142480 +INFO:root:Epoch[5] Batch [7020] Speed: 664.31 samples/sec acc=0.143457 +INFO:root:Epoch[5] Batch [7040] Speed: 663.75 samples/sec acc=0.145703 +INFO:root:Epoch[5] Batch [7060] Speed: 664.19 samples/sec acc=0.140234 +INFO:root:Epoch[5] Batch [7080] Speed: 664.91 samples/sec acc=0.143652 +INFO:root:Epoch[5] Batch [7100] Speed: 663.76 samples/sec acc=0.146484 +INFO:root:Epoch[5] Batch [7120] Speed: 664.68 samples/sec acc=0.145605 +INFO:root:Epoch[5] Batch [7140] Speed: 664.94 samples/sec acc=0.142480 +INFO:root:Epoch[5] Batch [7160] Speed: 662.88 samples/sec acc=0.144141 +INFO:root:Epoch[5] Batch [7180] Speed: 664.68 samples/sec acc=0.145508 +INFO:root:Epoch[5] Batch [7200] Speed: 663.77 samples/sec acc=0.135156 +INFO:root:Epoch[5] Batch [7220] Speed: 663.80 samples/sec acc=0.144238 +INFO:root:Epoch[5] Batch [7240] Speed: 663.88 samples/sec acc=0.143652 +INFO:root:Epoch[5] Batch [7260] Speed: 663.73 samples/sec acc=0.146484 +INFO:root:Epoch[5] Batch [7280] Speed: 664.01 samples/sec acc=0.145605 +INFO:root:Epoch[5] Batch [7300] Speed: 664.18 samples/sec acc=0.147070 +INFO:root:Epoch[5] Batch [7320] Speed: 663.87 samples/sec acc=0.141699 +INFO:root:Epoch[5] Batch [7340] Speed: 663.77 samples/sec acc=0.139258 +INFO:root:Epoch[5] Batch [7360] Speed: 665.46 samples/sec acc=0.145313 +INFO:root:Epoch[5] Batch [7380] Speed: 664.04 samples/sec acc=0.141602 +INFO:root:Epoch[5] Batch [7400] Speed: 663.55 samples/sec acc=0.145703 +lr-batch-epoch: 0.1 7404 5 +INFO:root:Epoch[5] Batch [7420] Speed: 664.02 samples/sec acc=0.146680 +INFO:root:Epoch[5] Batch [7440] Speed: 663.70 samples/sec acc=0.147559 +INFO:root:Epoch[5] Batch [7460] Speed: 662.97 samples/sec acc=0.142285 +INFO:root:Epoch[5] Batch [7480] Speed: 664.53 samples/sec acc=0.142285 +INFO:root:Epoch[5] Batch [7500] Speed: 663.38 samples/sec acc=0.140332 +INFO:root:Epoch[5] Train-acc=0.142036 +INFO:root:Epoch[5] Time cost=6196.751 +call reset() +INFO:root:Epoch[6] Batch [20] Speed: 662.29 samples/sec acc=0.174014 +INFO:root:Epoch[6] Batch [40] Speed: 662.44 samples/sec acc=0.167969 +INFO:root:Epoch[6] Batch [60] Speed: 663.39 samples/sec acc=0.163770 +INFO:root:Epoch[6] Batch [80] Speed: 663.85 samples/sec acc=0.168359 +INFO:root:Epoch[6] Batch [100] Speed: 664.30 samples/sec acc=0.159766 +INFO:root:Epoch[6] Batch [120] Speed: 663.88 samples/sec acc=0.160449 +INFO:root:Epoch[6] Batch [140] Speed: 663.93 samples/sec acc=0.161816 +INFO:root:Epoch[6] Batch [160] Speed: 664.02 samples/sec acc=0.168750 +INFO:root:Epoch[6] Batch [180] Speed: 663.41 samples/sec acc=0.160059 +INFO:root:Epoch[6] Batch [200] Speed: 663.83 samples/sec acc=0.158496 +INFO:root:Epoch[6] Batch [220] Speed: 663.52 samples/sec acc=0.154590 +INFO:root:Epoch[6] Batch [240] Speed: 670.53 samples/sec acc=0.160840 +INFO:root:Epoch[6] Batch [260] Speed: 663.52 samples/sec acc=0.155371 +INFO:root:Epoch[6] Batch [280] Speed: 664.40 samples/sec acc=0.156250 +INFO:root:Epoch[6] Batch [300] Speed: 664.41 samples/sec acc=0.145996 +INFO:root:Epoch[6] Batch [320] Speed: 664.04 samples/sec acc=0.154004 +INFO:root:Epoch[6] Batch [340] Speed: 663.87 samples/sec acc=0.155371 +INFO:root:Epoch[6] Batch [360] Speed: 663.85 samples/sec acc=0.153906 +INFO:root:Epoch[6] Batch [380] Speed: 664.61 samples/sec acc=0.153418 +INFO:root:Epoch[6] Batch [400] Speed: 664.03 samples/sec acc=0.148242 +INFO:root:Epoch[6] Batch [420] Speed: 664.00 samples/sec acc=0.150488 +INFO:root:Epoch[6] Batch [440] Speed: 663.86 samples/sec acc=0.148633 +INFO:root:Epoch[6] Batch [460] Speed: 664.19 samples/sec acc=0.146484 +INFO:root:Epoch[6] Batch [480] Speed: 663.86 samples/sec acc=0.151562 +INFO:root:Epoch[6] Batch [500] Speed: 664.20 samples/sec acc=0.144922 +INFO:root:Epoch[6] Batch [520] Speed: 663.98 samples/sec acc=0.146680 +INFO:root:Epoch[6] Batch [540] Speed: 664.51 samples/sec acc=0.145898 +INFO:root:Epoch[6] Batch [560] Speed: 663.90 samples/sec acc=0.152539 +INFO:root:Epoch[6] Batch [580] Speed: 663.67 samples/sec acc=0.146777 +INFO:root:Epoch[6] Batch [600] Speed: 663.76 samples/sec acc=0.151953 +INFO:root:Epoch[6] Batch [620] Speed: 664.55 samples/sec acc=0.149121 +INFO:root:Epoch[6] Batch [640] Speed: 663.42 samples/sec acc=0.134570 +INFO:root:Epoch[6] Batch [660] Speed: 662.98 samples/sec acc=0.141992 +INFO:root:Epoch[6] Batch [680] Speed: 663.58 samples/sec acc=0.143164 +INFO:root:Epoch[6] Batch [700] Speed: 664.35 samples/sec acc=0.146582 +INFO:root:Epoch[6] Batch [720] Speed: 664.09 samples/sec acc=0.145801 +INFO:root:Epoch[6] Batch [740] Speed: 663.95 samples/sec acc=0.148535 +INFO:root:Epoch[6] Batch [760] Speed: 663.34 samples/sec acc=0.145703 +INFO:root:Epoch[6] Batch [780] Speed: 663.74 samples/sec acc=0.148438 +INFO:root:Epoch[6] Batch [800] Speed: 664.31 samples/sec acc=0.148145 +INFO:root:Epoch[6] Batch [820] Speed: 664.28 samples/sec acc=0.146875 +INFO:root:Epoch[6] Batch [840] Speed: 663.79 samples/sec acc=0.141797 +INFO:root:Epoch[6] Batch [860] Speed: 663.27 samples/sec acc=0.141797 +INFO:root:Epoch[6] Batch [880] Speed: 664.06 samples/sec acc=0.141602 +[46000][MARGIN]0.642032,0.204640 +lr-batch-epoch: 0.1 885 6 +testing verification.. +(14000, 512) +infer time 19.069164 +[cfp_ff][46000]XNorm: 21.353451 +[cfp_ff][46000]Accuracy-Flip: 0.99457+-0.00343 +testing verification.. +(14000, 512) +infer time 22.772816 +[cfp_fp][46000]XNorm: 17.712679 +[cfp_fp][46000]Accuracy-Flip: 0.85229+-0.02026 +testing verification.. +(12000, 512) +infer time 18.130649 +[agedb_30][46000]XNorm: 21.008399 +[agedb_30][46000]Accuracy-Flip: 0.94267+-0.01158 +testing verification.. +(12000, 512) +infer time 18.063264 +[lfw][46000]XNorm: 21.172505 +[lfw][46000]Accuracy-Flip: 0.99183+-0.00383 +[46000]Accuracy-Highest: 0.99350 +INFO:root:Epoch[6] Batch [900] Speed: 92.75 samples/sec acc=0.143945 +INFO:root:Epoch[6] Batch [920] Speed: 662.55 samples/sec acc=0.143848 +INFO:root:Epoch[6] Batch [940] Speed: 662.12 samples/sec acc=0.147754 +INFO:root:Epoch[6] Batch [960] Speed: 663.18 samples/sec acc=0.145020 +INFO:root:Epoch[6] Batch [980] Speed: 662.61 samples/sec acc=0.144336 +INFO:root:Epoch[6] Batch [1000] Speed: 663.46 samples/sec acc=0.139355 +INFO:root:Epoch[6] Batch [1020] Speed: 663.76 samples/sec acc=0.145117 +INFO:root:Epoch[6] Batch [1040] Speed: 663.61 samples/sec acc=0.142773 +INFO:root:Epoch[6] Batch [1060] Speed: 681.50 samples/sec acc=0.146484 +INFO:root:Epoch[6] Batch [1080] Speed: 672.49 samples/sec acc=0.143457 +INFO:root:Epoch[6] Batch [1100] Speed: 664.28 samples/sec acc=0.146289 +INFO:root:Epoch[6] Batch [1120] Speed: 664.24 samples/sec acc=0.140332 +INFO:root:Epoch[6] Batch [1140] Speed: 663.65 samples/sec acc=0.147070 +INFO:root:Epoch[6] Batch [1160] Speed: 664.59 samples/sec acc=0.147559 +INFO:root:Epoch[6] Batch [1180] Speed: 663.48 samples/sec acc=0.141699 +INFO:root:Epoch[6] Batch [1200] Speed: 664.38 samples/sec acc=0.137793 +INFO:root:Epoch[6] Batch [1220] Speed: 664.34 samples/sec acc=0.136719 +INFO:root:Epoch[6] Batch [1240] Speed: 664.15 samples/sec acc=0.142285 +INFO:root:Epoch[6] Batch [1260] Speed: 662.74 samples/sec acc=0.145996 +INFO:root:Epoch[6] Batch [1280] Speed: 664.45 samples/sec acc=0.138379 +INFO:root:Epoch[6] Batch [1300] Speed: 664.42 samples/sec acc=0.140527 +INFO:root:Epoch[6] Batch [1320] Speed: 663.64 samples/sec acc=0.143750 +INFO:root:Epoch[6] Batch [1340] Speed: 663.89 samples/sec acc=0.131445 +INFO:root:Epoch[6] Batch [1360] Speed: 663.15 samples/sec acc=0.138184 +INFO:root:Epoch[6] Batch [1380] Speed: 663.79 samples/sec acc=0.148730 +INFO:root:Epoch[6] Batch [1400] Speed: 664.57 samples/sec acc=0.152051 +INFO:root:Epoch[6] Batch [1420] Speed: 664.19 samples/sec acc=0.139746 +INFO:root:Epoch[6] Batch [1440] Speed: 662.39 samples/sec acc=0.140918 +INFO:root:Epoch[6] Batch [1460] Speed: 663.26 samples/sec acc=0.139453 +INFO:root:Epoch[6] Batch [1480] Speed: 663.11 samples/sec acc=0.142285 +INFO:root:Epoch[6] Batch [1500] Speed: 664.47 samples/sec acc=0.145117 +INFO:root:Epoch[6] Batch [1520] Speed: 664.42 samples/sec acc=0.135059 +INFO:root:Epoch[6] Batch [1540] Speed: 663.77 samples/sec acc=0.143262 +INFO:root:Epoch[6] Batch [1560] Speed: 663.89 samples/sec acc=0.143164 +INFO:root:Epoch[6] Batch [1580] Speed: 664.31 samples/sec acc=0.138965 +INFO:root:Epoch[6] Batch [1600] Speed: 664.42 samples/sec acc=0.140332 +INFO:root:Epoch[6] Batch [1620] Speed: 663.47 samples/sec acc=0.142676 +INFO:root:Epoch[6] Batch [1640] Speed: 663.39 samples/sec acc=0.142969 +INFO:root:Epoch[6] Batch [1660] Speed: 664.44 samples/sec acc=0.144727 +INFO:root:Epoch[6] Batch [1680] Speed: 663.32 samples/sec acc=0.147461 +INFO:root:Epoch[6] Batch [1700] Speed: 664.47 samples/sec acc=0.141309 +INFO:root:Epoch[6] Batch [1720] Speed: 664.69 samples/sec acc=0.144727 +INFO:root:Epoch[6] Batch [1740] Speed: 663.18 samples/sec acc=0.146875 +INFO:root:Epoch[6] Batch [1760] Speed: 663.96 samples/sec acc=0.144141 +INFO:root:Epoch[6] Batch [1780] Speed: 663.76 samples/sec acc=0.142187 +INFO:root:Epoch[6] Batch [1800] Speed: 664.06 samples/sec acc=0.141113 +INFO:root:Epoch[6] Batch [1820] Speed: 662.88 samples/sec acc=0.141309 +INFO:root:Epoch[6] Batch [1840] Speed: 664.29 samples/sec acc=0.138672 +INFO:root:Epoch[6] Batch [1860] Speed: 663.40 samples/sec acc=0.145996 +INFO:root:Epoch[6] Batch [1880] Speed: 664.21 samples/sec acc=0.137598 +lr-batch-epoch: 0.1 1885 6 +INFO:root:Epoch[6] Batch [1900] Speed: 664.62 samples/sec acc=0.142676 +INFO:root:Epoch[6] Batch [1920] Speed: 664.06 samples/sec acc=0.140332 +INFO:root:Epoch[6] Batch [1940] Speed: 664.00 samples/sec acc=0.151367 +INFO:root:Epoch[6] Batch [1960] Speed: 663.72 samples/sec acc=0.142480 +INFO:root:Epoch[6] Batch [1980] Speed: 664.23 samples/sec acc=0.142578 +INFO:root:Epoch[6] Batch [2000] Speed: 663.22 samples/sec acc=0.142578 +INFO:root:Epoch[6] Batch [2020] Speed: 663.53 samples/sec acc=0.145605 +INFO:root:Epoch[6] Batch [2040] Speed: 663.54 samples/sec acc=0.143945 +INFO:root:Epoch[6] Batch [2060] Speed: 663.74 samples/sec acc=0.136035 +INFO:root:Epoch[6] Batch [2080] Speed: 665.14 samples/sec acc=0.144336 +INFO:root:Epoch[6] Batch [2100] Speed: 663.37 samples/sec acc=0.145313 +INFO:root:Epoch[6] Batch [2120] Speed: 664.34 samples/sec acc=0.138477 +INFO:root:Epoch[6] Batch [2140] Speed: 663.86 samples/sec acc=0.146484 +INFO:root:Epoch[6] Batch [2160] Speed: 663.84 samples/sec acc=0.144824 +INFO:root:Epoch[6] Batch [2180] Speed: 663.19 samples/sec acc=0.143359 +INFO:root:Epoch[6] Batch [2200] Speed: 663.75 samples/sec acc=0.149121 +INFO:root:Epoch[6] Batch [2220] Speed: 664.50 samples/sec acc=0.145117 +INFO:root:Epoch[6] Batch [2240] Speed: 664.77 samples/sec acc=0.142578 +INFO:root:Epoch[6] Batch [2260] Speed: 664.15 samples/sec acc=0.141016 +INFO:root:Epoch[6] Batch [2280] Speed: 663.72 samples/sec acc=0.138867 +INFO:root:Epoch[6] Batch [2300] Speed: 664.22 samples/sec acc=0.139648 +INFO:root:Epoch[6] Batch [2320] Speed: 656.90 samples/sec acc=0.145703 +INFO:root:Epoch[6] Batch [2340] Speed: 662.47 samples/sec acc=0.147461 +INFO:root:Epoch[6] Batch [2360] Speed: 658.40 samples/sec acc=0.148535 +INFO:root:Epoch[6] Batch [2380] Speed: 661.27 samples/sec acc=0.145410 +INFO:root:Epoch[6] Batch [2400] Speed: 663.12 samples/sec acc=0.151367 +INFO:root:Epoch[6] Batch [2420] Speed: 663.54 samples/sec acc=0.142285 +INFO:root:Epoch[6] Batch [2440] Speed: 662.92 samples/sec acc=0.138672 +INFO:root:Epoch[6] Batch [2460] Speed: 663.02 samples/sec acc=0.140527 +INFO:root:Epoch[6] Batch [2480] Speed: 663.40 samples/sec acc=0.140625 +INFO:root:Epoch[6] Batch [2500] Speed: 662.60 samples/sec acc=0.146094 +INFO:root:Epoch[6] Batch [2520] Speed: 663.47 samples/sec acc=0.146777 +INFO:root:Epoch[6] Batch [2540] Speed: 662.83 samples/sec acc=0.142383 +INFO:root:Epoch[6] Batch [2560] Speed: 662.33 samples/sec acc=0.147852 +INFO:root:Epoch[6] Batch [2580] Speed: 663.48 samples/sec acc=0.141309 +INFO:root:Epoch[6] Batch [2600] Speed: 662.30 samples/sec acc=0.135449 +INFO:root:Epoch[6] Batch [2620] Speed: 660.78 samples/sec acc=0.144727 +INFO:root:Epoch[6] Batch [2640] Speed: 677.00 samples/sec acc=0.144141 +INFO:root:Epoch[6] Batch [2660] Speed: 662.99 samples/sec acc=0.144434 +INFO:root:Epoch[6] Batch [2680] Speed: 663.08 samples/sec acc=0.146582 +INFO:root:Epoch[6] Batch [2700] Speed: 662.79 samples/sec acc=0.142969 +INFO:root:Epoch[6] Batch [2720] Speed: 662.02 samples/sec acc=0.148828 +INFO:root:Epoch[6] Batch [2740] Speed: 663.42 samples/sec acc=0.141016 +INFO:root:Epoch[6] Batch [2760] Speed: 663.46 samples/sec acc=0.141309 +INFO:root:Epoch[6] Batch [2780] Speed: 662.95 samples/sec acc=0.146777 +INFO:root:Epoch[6] Batch [2800] Speed: 663.11 samples/sec acc=0.144922 +INFO:root:Epoch[6] Batch [2820] Speed: 663.00 samples/sec acc=0.146582 +INFO:root:Epoch[6] Batch [2840] Speed: 663.41 samples/sec acc=0.146094 +INFO:root:Epoch[6] Batch [2860] Speed: 662.67 samples/sec acc=0.142676 +INFO:root:Epoch[6] Batch [2880] Speed: 663.64 samples/sec acc=0.149512 +[48000][MARGIN]0.650225,0.212011 +lr-batch-epoch: 0.1 2885 6 +testing verification.. +(14000, 512) +infer time 21.576396 +[cfp_ff][48000]XNorm: 19.684269 +[cfp_ff][48000]Accuracy-Flip: 0.99271+-0.00296 +testing verification.. +(14000, 512) +infer time 26.514342 +[cfp_fp][48000]XNorm: 15.737945 +[cfp_fp][48000]Accuracy-Flip: 0.84371+-0.01511 +testing verification.. +(12000, 512) +infer time 19.399874 +[agedb_30][48000]XNorm: 19.425554 +[agedb_30][48000]Accuracy-Flip: 0.94800+-0.00945 +testing verification.. +(12000, 512) +infer time 17.305142 +[lfw][48000]XNorm: 19.654909 +[lfw][48000]Accuracy-Flip: 0.99267+-0.00523 +[48000]Accuracy-Highest: 0.99350 +INFO:root:Epoch[6] Batch [2900] Speed: 85.54 samples/sec acc=0.138477 +INFO:root:Epoch[6] Batch [2920] Speed: 662.61 samples/sec acc=0.147168 +INFO:root:Epoch[6] Batch [2940] Speed: 662.29 samples/sec acc=0.146973 +INFO:root:Epoch[6] Batch [2960] Speed: 661.81 samples/sec acc=0.146094 +INFO:root:Epoch[6] Batch [2980] Speed: 662.29 samples/sec acc=0.136523 +INFO:root:Epoch[6] Batch [3000] Speed: 662.23 samples/sec acc=0.139160 +INFO:root:Epoch[6] Batch [3020] Speed: 662.76 samples/sec acc=0.142187 +INFO:root:Epoch[6] Batch [3040] Speed: 662.81 samples/sec acc=0.140234 +INFO:root:Epoch[6] Batch [3060] Speed: 662.97 samples/sec acc=0.141406 +INFO:root:Epoch[6] Batch [3080] Speed: 662.93 samples/sec acc=0.142871 +INFO:root:Epoch[6] Batch [3100] Speed: 662.54 samples/sec acc=0.143262 +INFO:root:Epoch[6] Batch [3120] Speed: 662.54 samples/sec acc=0.146875 +INFO:root:Epoch[6] Batch [3140] Speed: 662.60 samples/sec acc=0.143359 +INFO:root:Epoch[6] Batch [3160] Speed: 663.18 samples/sec acc=0.143164 +INFO:root:Epoch[6] Batch [3180] Speed: 662.85 samples/sec acc=0.142578 +INFO:root:Epoch[6] Batch [3200] Speed: 662.26 samples/sec acc=0.144629 +INFO:root:Epoch[6] Batch [3220] Speed: 663.10 samples/sec acc=0.144629 +INFO:root:Epoch[6] Batch [3240] Speed: 663.06 samples/sec acc=0.145703 +INFO:root:Epoch[6] Batch [3260] Speed: 662.07 samples/sec acc=0.144434 +INFO:root:Epoch[6] Batch [3280] Speed: 663.05 samples/sec acc=0.139551 +INFO:root:Epoch[6] Batch [3300] Speed: 662.41 samples/sec acc=0.146973 +INFO:root:Epoch[6] Batch [3320] Speed: 663.01 samples/sec acc=0.146094 +INFO:root:Epoch[6] Batch [3340] Speed: 663.48 samples/sec acc=0.148438 +INFO:root:Epoch[6] Batch [3360] Speed: 662.62 samples/sec acc=0.144629 +INFO:root:Epoch[6] Batch [3380] Speed: 663.01 samples/sec acc=0.143457 +INFO:root:Epoch[6] Batch [3400] Speed: 663.14 samples/sec acc=0.144434 +INFO:root:Epoch[6] Batch [3420] Speed: 667.89 samples/sec acc=0.137402 +INFO:root:Epoch[6] Batch [3440] Speed: 662.94 samples/sec acc=0.140039 +INFO:root:Epoch[6] Batch [3460] Speed: 662.01 samples/sec acc=0.143750 +INFO:root:Epoch[6] Batch [3480] Speed: 662.62 samples/sec acc=0.146289 +INFO:root:Epoch[6] Batch [3500] Speed: 663.05 samples/sec acc=0.147070 +INFO:root:Epoch[6] Batch [3520] Speed: 661.63 samples/sec acc=0.148535 +INFO:root:Epoch[6] Batch [3540] Speed: 662.67 samples/sec acc=0.140918 +INFO:root:Epoch[6] Batch [3560] Speed: 662.30 samples/sec acc=0.140723 +INFO:root:Epoch[6] Batch [3580] Speed: 662.38 samples/sec acc=0.144141 +INFO:root:Epoch[6] Batch [3600] Speed: 662.21 samples/sec acc=0.150391 +INFO:root:Epoch[6] Batch [3620] Speed: 662.30 samples/sec acc=0.143457 +INFO:root:Epoch[6] Batch [3640] Speed: 663.17 samples/sec acc=0.139648 +INFO:root:Epoch[6] Batch [3660] Speed: 663.06 samples/sec acc=0.144727 +INFO:root:Epoch[6] Batch [3680] Speed: 663.17 samples/sec acc=0.142480 +INFO:root:Epoch[6] Batch [3700] Speed: 661.97 samples/sec acc=0.148145 +INFO:root:Epoch[6] Batch [3720] Speed: 662.74 samples/sec acc=0.142480 +INFO:root:Epoch[6] Batch [3740] Speed: 662.58 samples/sec acc=0.143164 +INFO:root:Epoch[6] Batch [3760] Speed: 662.09 samples/sec acc=0.149023 +INFO:root:Epoch[6] Batch [3780] Speed: 662.58 samples/sec acc=0.147754 +INFO:root:Epoch[6] Batch [3800] Speed: 662.42 samples/sec acc=0.146289 +INFO:root:Epoch[6] Batch [3820] Speed: 662.73 samples/sec acc=0.150977 +INFO:root:Epoch[6] Batch [3840] Speed: 662.65 samples/sec acc=0.135840 +INFO:root:Epoch[6] Batch [3860] Speed: 661.90 samples/sec acc=0.141016 +INFO:root:Epoch[6] Batch [3880] Speed: 662.53 samples/sec acc=0.137012 +lr-batch-epoch: 0.1 3885 6 +INFO:root:Epoch[6] Batch [3900] Speed: 662.18 samples/sec acc=0.147070 +INFO:root:Epoch[6] Batch [3920] Speed: 661.96 samples/sec acc=0.145508 +INFO:root:Epoch[6] Batch [3940] Speed: 662.30 samples/sec acc=0.152051 +INFO:root:Epoch[6] Batch [3960] Speed: 662.66 samples/sec acc=0.144336 +INFO:root:Epoch[6] Batch [3980] Speed: 662.56 samples/sec acc=0.143359 +INFO:root:Epoch[6] Batch [4000] Speed: 663.18 samples/sec acc=0.146191 +INFO:root:Epoch[6] Batch [4020] Speed: 663.72 samples/sec acc=0.149805 +INFO:root:Epoch[6] Batch [4040] Speed: 663.32 samples/sec acc=0.147461 +INFO:root:Epoch[6] Batch [4060] Speed: 663.35 samples/sec acc=0.143945 +INFO:root:Epoch[6] Batch [4080] Speed: 663.21 samples/sec acc=0.144434 +INFO:root:Epoch[6] Batch [4100] Speed: 663.13 samples/sec acc=0.144922 +INFO:root:Epoch[6] Batch [4120] Speed: 663.12 samples/sec acc=0.150488 +INFO:root:Epoch[6] Batch [4140] Speed: 662.99 samples/sec acc=0.148926 +INFO:root:Epoch[6] Batch [4160] Speed: 662.67 samples/sec acc=0.145801 +INFO:root:Epoch[6] Batch [4180] Speed: 663.13 samples/sec acc=0.138574 +INFO:root:Epoch[6] Batch [4200] Speed: 663.08 samples/sec acc=0.144238 +INFO:root:Epoch[6] Batch [4220] Speed: 665.64 samples/sec acc=0.139941 +INFO:root:Epoch[6] Batch [4240] Speed: 662.62 samples/sec acc=0.144824 +INFO:root:Epoch[6] Batch [4260] Speed: 662.86 samples/sec acc=0.142676 +INFO:root:Epoch[6] Batch [4280] Speed: 663.09 samples/sec acc=0.144141 +INFO:root:Epoch[6] Batch [4300] Speed: 662.95 samples/sec acc=0.146289 +INFO:root:Epoch[6] Batch [4320] Speed: 663.10 samples/sec acc=0.142676 +INFO:root:Epoch[6] Batch [4340] Speed: 662.35 samples/sec acc=0.146191 +INFO:root:Epoch[6] Batch [4360] Speed: 662.78 samples/sec acc=0.137500 +INFO:root:Epoch[6] Batch [4380] Speed: 662.40 samples/sec acc=0.142578 +INFO:root:Epoch[6] Batch [4400] Speed: 662.31 samples/sec acc=0.150586 +INFO:root:Epoch[6] Batch [4420] Speed: 662.28 samples/sec acc=0.145508 +INFO:root:Epoch[6] Batch [4440] Speed: 663.28 samples/sec acc=0.151758 +INFO:root:Epoch[6] Batch [4460] Speed: 662.63 samples/sec acc=0.144531 +INFO:root:Epoch[6] Batch [4480] Speed: 662.45 samples/sec acc=0.143359 +INFO:root:Epoch[6] Batch [4500] Speed: 661.36 samples/sec acc=0.143457 +INFO:root:Epoch[6] Batch [4520] Speed: 662.74 samples/sec acc=0.148828 +INFO:root:Epoch[6] Batch [4540] Speed: 662.27 samples/sec acc=0.138867 +INFO:root:Epoch[6] Batch [4560] Speed: 662.26 samples/sec acc=0.146191 +INFO:root:Epoch[6] Batch [4580] Speed: 662.78 samples/sec acc=0.141895 +INFO:root:Epoch[6] Batch [4600] Speed: 662.50 samples/sec acc=0.145703 +INFO:root:Epoch[6] Batch [4620] Speed: 661.88 samples/sec acc=0.147168 +INFO:root:Epoch[6] Batch [4640] Speed: 662.62 samples/sec acc=0.144824 +INFO:root:Epoch[6] Batch [4660] Speed: 661.89 samples/sec acc=0.136230 +INFO:root:Epoch[6] Batch [4680] Speed: 661.81 samples/sec acc=0.145020 +INFO:root:Epoch[6] Batch [4700] Speed: 662.03 samples/sec acc=0.149414 +INFO:root:Epoch[6] Batch [4720] Speed: 662.78 samples/sec acc=0.146191 +INFO:root:Epoch[6] Batch [4740] Speed: 662.65 samples/sec acc=0.142676 +INFO:root:Epoch[6] Batch [4760] Speed: 662.85 samples/sec acc=0.147852 +INFO:root:Epoch[6] Batch [4780] Speed: 662.85 samples/sec acc=0.149121 +INFO:root:Epoch[6] Batch [4800] Speed: 662.89 samples/sec acc=0.145508 +INFO:root:Epoch[6] Batch [4820] Speed: 663.18 samples/sec acc=0.147461 +INFO:root:Epoch[6] Batch [4840] Speed: 663.00 samples/sec acc=0.140039 +INFO:root:Epoch[6] Batch [4860] Speed: 661.96 samples/sec acc=0.144141 +INFO:root:Epoch[6] Batch [4880] Speed: 662.72 samples/sec acc=0.146484 +[50000][MARGIN]0.644800,0.205978 +lr change to 0.01 +lr-batch-epoch: 0.01 4885 6 +testing verification.. +(14000, 512) +infer time 20.111636 +[cfp_ff][50000]XNorm: 20.538264 +[cfp_ff][50000]Accuracy-Flip: 0.99443+-0.00370 +testing verification.. +(14000, 512) +infer time 21.836273 +[cfp_fp][50000]XNorm: 16.234446 +[cfp_fp][50000]Accuracy-Flip: 0.83786+-0.01698 +testing verification.. +(12000, 512) +infer time 20.022741 +[agedb_30][50000]XNorm: 20.046532 +[agedb_30][50000]Accuracy-Flip: 0.94617+-0.00882 +testing verification.. +(12000, 512) +infer time 17.533046 +[lfw][50000]XNorm: 20.479102 +[lfw][50000]Accuracy-Flip: 0.99467+-0.00420 +saving 25 +INFO:root:Saved checkpoint to "../model-r50-am-lfw/model-0025.params" +[50000]Accuracy-Highest: 0.99467 +INFO:root:Epoch[6] Batch [4900] Speed: 86.64 samples/sec acc=0.115137 +INFO:root:Epoch[6] Batch [4920] Speed: 670.62 samples/sec acc=0.133691 +INFO:root:Epoch[6] Batch [4940] Speed: 662.34 samples/sec acc=0.167285 +INFO:root:Epoch[6] Batch [4960] Speed: 662.80 samples/sec acc=0.188867 +INFO:root:Epoch[6] Batch [4980] Speed: 662.64 samples/sec acc=0.198242 +INFO:root:Epoch[6] Batch [5000] Speed: 663.02 samples/sec acc=0.206348 +INFO:root:Epoch[6] Batch [5020] Speed: 662.72 samples/sec acc=0.206934 +INFO:root:Epoch[6] Batch [5040] Speed: 662.40 samples/sec acc=0.216211 +INFO:root:Epoch[6] Batch [5060] Speed: 662.95 samples/sec acc=0.211230 +INFO:root:Epoch[6] Batch [5080] Speed: 662.37 samples/sec acc=0.233789 +INFO:root:Epoch[6] Batch [5100] Speed: 663.51 samples/sec acc=0.226660 +INFO:root:Epoch[6] Batch [5120] Speed: 662.94 samples/sec acc=0.241113 +INFO:root:Epoch[6] Batch [5140] Speed: 662.56 samples/sec acc=0.242090 +INFO:root:Epoch[6] Batch [5160] Speed: 663.08 samples/sec acc=0.246777 +INFO:root:Epoch[6] Batch [5180] Speed: 662.62 samples/sec acc=0.255371 +INFO:root:Epoch[6] Batch [5200] Speed: 662.65 samples/sec acc=0.242480 +INFO:root:Epoch[6] Batch [5220] Speed: 662.60 samples/sec acc=0.261328 +INFO:root:Epoch[6] Batch [5240] Speed: 662.80 samples/sec acc=0.266895 +INFO:root:Epoch[6] Batch [5260] Speed: 662.61 samples/sec acc=0.261035 +INFO:root:Epoch[6] Batch [5280] Speed: 663.17 samples/sec acc=0.272168 +INFO:root:Epoch[6] Batch [5300] Speed: 662.79 samples/sec acc=0.267285 +INFO:root:Epoch[6] Batch [5320] Speed: 662.95 samples/sec acc=0.270703 +INFO:root:Epoch[6] Batch [5340] Speed: 663.26 samples/sec acc=0.270898 +INFO:root:Epoch[6] Batch [5360] Speed: 662.69 samples/sec acc=0.276855 +INFO:root:Epoch[6] Batch [5380] Speed: 662.18 samples/sec acc=0.285742 +INFO:root:Epoch[6] Batch [5400] Speed: 662.56 samples/sec acc=0.280078 +INFO:root:Epoch[6] Batch [5420] Speed: 662.15 samples/sec acc=0.286719 +INFO:root:Epoch[6] Batch [5440] Speed: 663.39 samples/sec acc=0.293262 +INFO:root:Epoch[6] Batch [5460] Speed: 662.71 samples/sec acc=0.290527 +INFO:root:Epoch[6] Batch [5480] Speed: 662.32 samples/sec acc=0.295898 +INFO:root:Epoch[6] Batch [5500] Speed: 662.77 samples/sec acc=0.296875 +INFO:root:Epoch[6] Batch [5520] Speed: 663.21 samples/sec acc=0.302246 +INFO:root:Epoch[6] Batch [5540] Speed: 663.61 samples/sec acc=0.305566 +INFO:root:Epoch[6] Batch [5560] Speed: 662.96 samples/sec acc=0.305664 +INFO:root:Epoch[6] Batch [5580] Speed: 662.10 samples/sec acc=0.300195 +INFO:root:Epoch[6] Batch [5600] Speed: 663.28 samples/sec acc=0.311426 +INFO:root:Epoch[6] Batch [5620] Speed: 662.87 samples/sec acc=0.304688 +INFO:root:Epoch[6] Batch [5640] Speed: 663.11 samples/sec acc=0.305371 +INFO:root:Epoch[6] Batch [5660] Speed: 662.46 samples/sec acc=0.319824 +INFO:root:Epoch[6] Batch [5680] Speed: 663.26 samples/sec acc=0.325684 +INFO:root:Epoch[6] Batch [5700] Speed: 663.42 samples/sec acc=0.315137 +INFO:root:Epoch[6] Batch [5720] Speed: 663.85 samples/sec acc=0.331543 +INFO:root:Epoch[6] Batch [5740] Speed: 663.76 samples/sec acc=0.327051 +INFO:root:Epoch[6] Batch [5760] Speed: 667.94 samples/sec acc=0.331836 +INFO:root:Epoch[6] Batch [5780] Speed: 663.71 samples/sec acc=0.326074 +INFO:root:Epoch[6] Batch [5800] Speed: 662.27 samples/sec acc=0.329395 +INFO:root:Epoch[6] Batch [5820] Speed: 663.85 samples/sec acc=0.336230 +INFO:root:Epoch[6] Batch [5840] Speed: 662.37 samples/sec acc=0.335547 +INFO:root:Epoch[6] Batch [5860] Speed: 662.94 samples/sec acc=0.340820 +INFO:root:Epoch[6] Batch [5880] Speed: 663.35 samples/sec acc=0.332227 +lr-batch-epoch: 0.01 5885 6 +INFO:root:Epoch[6] Batch [5900] Speed: 663.53 samples/sec acc=0.342090 +INFO:root:Epoch[6] Batch [5920] Speed: 663.25 samples/sec acc=0.355469 +INFO:root:Epoch[6] Batch [5940] Speed: 663.21 samples/sec acc=0.337891 +INFO:root:Epoch[6] Batch [5960] Speed: 662.47 samples/sec acc=0.351465 +INFO:root:Epoch[6] Batch [5980] Speed: 662.16 samples/sec acc=0.347363 +INFO:root:Epoch[6] Batch [6000] Speed: 663.61 samples/sec acc=0.346777 +INFO:root:Epoch[6] Batch [6020] Speed: 662.37 samples/sec acc=0.356055 +INFO:root:Epoch[6] Batch [6040] Speed: 662.63 samples/sec acc=0.350488 +INFO:root:Epoch[6] Batch [6060] Speed: 662.13 samples/sec acc=0.349805 +INFO:root:Epoch[6] Batch [6080] Speed: 663.49 samples/sec acc=0.362500 +INFO:root:Epoch[6] Batch [6100] Speed: 662.45 samples/sec acc=0.358398 +INFO:root:Epoch[6] Batch [6120] Speed: 663.36 samples/sec acc=0.359766 +INFO:root:Epoch[6] Batch [6140] Speed: 663.26 samples/sec acc=0.375781 +INFO:root:Epoch[6] Batch [6160] Speed: 662.71 samples/sec acc=0.370117 +INFO:root:Epoch[6] Batch [6180] Speed: 663.07 samples/sec acc=0.363965 +INFO:root:Epoch[6] Batch [6200] Speed: 663.55 samples/sec acc=0.368848 +INFO:root:Epoch[6] Batch [6220] Speed: 662.87 samples/sec acc=0.367090 +INFO:root:Epoch[6] Batch [6240] Speed: 662.68 samples/sec acc=0.369629 +INFO:root:Epoch[6] Batch [6260] Speed: 662.97 samples/sec acc=0.379492 +INFO:root:Epoch[6] Batch [6280] Speed: 662.98 samples/sec acc=0.381348 +INFO:root:Epoch[6] Batch [6300] Speed: 662.60 samples/sec acc=0.373926 +INFO:root:Epoch[6] Batch [6320] Speed: 663.18 samples/sec acc=0.377734 +INFO:root:Epoch[6] Batch [6340] Speed: 663.05 samples/sec acc=0.384766 +INFO:root:Epoch[6] Batch [6360] Speed: 663.17 samples/sec acc=0.380566 +INFO:root:Epoch[6] Batch [6380] Speed: 662.61 samples/sec acc=0.387500 +INFO:root:Epoch[6] Batch [6400] Speed: 662.98 samples/sec acc=0.378418 +INFO:root:Epoch[6] Batch [6420] Speed: 663.25 samples/sec acc=0.391309 +INFO:root:Epoch[6] Batch [6440] Speed: 663.24 samples/sec acc=0.386328 +INFO:root:Epoch[6] Batch [6460] Speed: 662.99 samples/sec acc=0.401562 +INFO:root:Epoch[6] Batch [6480] Speed: 662.61 samples/sec acc=0.388965 +INFO:root:Epoch[6] Batch [6500] Speed: 663.38 samples/sec acc=0.389648 +INFO:root:Epoch[6] Batch [6520] Speed: 662.88 samples/sec acc=0.400391 +INFO:root:Epoch[6] Batch [6540] Speed: 665.61 samples/sec acc=0.400391 +INFO:root:Epoch[6] Batch [6560] Speed: 662.97 samples/sec acc=0.394727 +INFO:root:Epoch[6] Batch [6580] Speed: 662.53 samples/sec acc=0.401367 +INFO:root:Epoch[6] Batch [6600] Speed: 663.05 samples/sec acc=0.395605 +INFO:root:Epoch[6] Batch [6620] Speed: 662.09 samples/sec acc=0.397852 +INFO:root:Epoch[6] Batch [6640] Speed: 663.59 samples/sec acc=0.405371 +INFO:root:Epoch[6] Batch [6660] Speed: 663.33 samples/sec acc=0.408496 +INFO:root:Epoch[6] Batch [6680] Speed: 663.26 samples/sec acc=0.399414 +INFO:root:Epoch[6] Batch [6700] Speed: 663.49 samples/sec acc=0.406836 +INFO:root:Epoch[6] Batch [6720] Speed: 662.72 samples/sec acc=0.411719 +INFO:root:Epoch[6] Batch [6740] Speed: 662.40 samples/sec acc=0.407422 +INFO:root:Epoch[6] Batch [6760] Speed: 662.93 samples/sec acc=0.416309 +INFO:root:Epoch[6] Batch [6780] Speed: 663.07 samples/sec acc=0.414844 +INFO:root:Epoch[6] Batch [6800] Speed: 662.97 samples/sec acc=0.415137 +INFO:root:Epoch[6] Batch [6820] Speed: 663.15 samples/sec acc=0.418945 +INFO:root:Epoch[6] Batch [6840] Speed: 662.41 samples/sec acc=0.405176 +INFO:root:Epoch[6] Batch [6860] Speed: 663.37 samples/sec acc=0.412695 +INFO:root:Epoch[6] Batch [6880] Speed: 662.82 samples/sec acc=0.411719 +[52000][MARGIN]0.728075,0.315939 +lr-batch-epoch: 0.01 6885 6 +testing verification.. +(14000, 512) +infer time 18.323727 +[cfp_ff][52000]XNorm: 22.220222 +[cfp_ff][52000]Accuracy-Flip: 0.99671+-0.00313 +testing verification.. +(14000, 512) +infer time 16.814555 +[cfp_fp][52000]XNorm: 18.628988 +[cfp_fp][52000]Accuracy-Flip: 0.89243+-0.01752 +testing verification.. +(12000, 512) +infer time 14.207714 +[agedb_30][52000]XNorm: 22.086024 +[agedb_30][52000]Accuracy-Flip: 0.96650+-0.00728 +testing verification.. +(12000, 512) +infer time 13.266452 +[lfw][52000]XNorm: 22.244432 +[lfw][52000]Accuracy-Flip: 0.99617+-0.00259 +saving 26 +INFO:root:Saved checkpoint to "../model-r50-am-lfw/model-0026.params" +[52000]Accuracy-Highest: 0.99617 +INFO:root:Epoch[6] Batch [6900] Speed: 96.11 samples/sec acc=0.415625 +INFO:root:Epoch[6] Batch [6920] Speed: 662.27 samples/sec acc=0.417773 +INFO:root:Epoch[6] Batch [6940] Speed: 662.22 samples/sec acc=0.412695 +INFO:root:Epoch[6] Batch [6960] Speed: 662.51 samples/sec acc=0.421973 +INFO:root:Epoch[6] Batch [6980] Speed: 662.38 samples/sec acc=0.420117 +INFO:root:Epoch[6] Batch [7000] Speed: 662.57 samples/sec acc=0.424121 +INFO:root:Epoch[6] Batch [7020] Speed: 662.19 samples/sec acc=0.424219 +INFO:root:Epoch[6] Batch [7040] Speed: 662.63 samples/sec acc=0.437207 +INFO:root:Epoch[6] Batch [7060] Speed: 663.33 samples/sec acc=0.432422 +INFO:root:Epoch[6] Batch [7080] Speed: 662.37 samples/sec acc=0.423926 +INFO:root:Epoch[6] Batch [7100] Speed: 663.58 samples/sec acc=0.425391 +INFO:root:Epoch[6] Batch [7120] Speed: 662.68 samples/sec acc=0.429395 +INFO:root:Epoch[6] Batch [7140] Speed: 662.70 samples/sec acc=0.440332 +INFO:root:Epoch[6] Batch [7160] Speed: 663.03 samples/sec acc=0.431250 +INFO:root:Epoch[6] Batch [7180] Speed: 663.07 samples/sec acc=0.436621 +INFO:root:Epoch[6] Batch [7200] Speed: 662.73 samples/sec acc=0.434180 +INFO:root:Epoch[6] Batch [7220] Speed: 662.90 samples/sec acc=0.440527 +INFO:root:Epoch[6] Batch [7240] Speed: 672.57 samples/sec acc=0.440234 +INFO:root:Epoch[6] Batch [7260] Speed: 673.00 samples/sec acc=0.433887 +INFO:root:Epoch[6] Batch [7280] Speed: 662.85 samples/sec acc=0.441309 +INFO:root:Epoch[6] Batch [7300] Speed: 662.86 samples/sec acc=0.443750 +INFO:root:Epoch[6] Batch [7320] Speed: 663.38 samples/sec acc=0.442676 +INFO:root:Epoch[6] Batch [7340] Speed: 663.13 samples/sec acc=0.435352 +INFO:root:Epoch[6] Batch [7360] Speed: 662.60 samples/sec acc=0.448047 +INFO:root:Epoch[6] Batch [7380] Speed: 663.53 samples/sec acc=0.446777 +INFO:root:Epoch[6] Batch [7400] Speed: 663.37 samples/sec acc=0.446387 +INFO:root:Epoch[6] Batch [7420] Speed: 664.19 samples/sec acc=0.454688 +INFO:root:Epoch[6] Batch [7440] Speed: 662.77 samples/sec acc=0.459766 +INFO:root:Epoch[6] Batch [7460] Speed: 663.38 samples/sec acc=0.445020 +INFO:root:Epoch[6] Batch [7480] Speed: 663.61 samples/sec acc=0.449023 +INFO:root:Epoch[6] Batch [7500] Speed: 663.36 samples/sec acc=0.450293 +INFO:root:Epoch[6] Train-acc=0.447266 +INFO:root:Epoch[6] Time cost=6197.176 +call reset() +INFO:root:Epoch[7] Batch [20] Speed: 678.15 samples/sec acc=0.518601 +INFO:root:Epoch[7] Batch [40] Speed: 662.57 samples/sec acc=0.509570 +INFO:root:Epoch[7] Batch [60] Speed: 662.93 samples/sec acc=0.513574 +INFO:root:Epoch[7] Batch [80] Speed: 662.33 samples/sec acc=0.519824 +INFO:root:Epoch[7] Batch [100] Speed: 662.92 samples/sec acc=0.524512 +INFO:root:Epoch[7] Batch [120] Speed: 662.60 samples/sec acc=0.512207 +INFO:root:Epoch[7] Batch [140] Speed: 662.62 samples/sec acc=0.516113 +INFO:root:Epoch[7] Batch [160] Speed: 662.45 samples/sec acc=0.528320 +INFO:root:Epoch[7] Batch [180] Speed: 663.33 samples/sec acc=0.515723 +INFO:root:Epoch[7] Batch [200] Speed: 662.14 samples/sec acc=0.514844 +INFO:root:Epoch[7] Batch [220] Speed: 663.23 samples/sec acc=0.517480 +INFO:root:Epoch[7] Batch [240] Speed: 662.47 samples/sec acc=0.521484 +INFO:root:Epoch[7] Batch [260] Speed: 662.32 samples/sec acc=0.523828 +INFO:root:Epoch[7] Batch [280] Speed: 662.67 samples/sec acc=0.518750 +INFO:root:Epoch[7] Batch [300] Speed: 662.91 samples/sec acc=0.520898 +INFO:root:Epoch[7] Batch [320] Speed: 662.64 samples/sec acc=0.520215 +INFO:root:Epoch[7] Batch [340] Speed: 663.27 samples/sec acc=0.531641 +INFO:root:Epoch[7] Batch [360] Speed: 662.94 samples/sec acc=0.520020 +lr-batch-epoch: 0.01 366 7 +INFO:root:Epoch[7] Batch [380] Speed: 662.31 samples/sec acc=0.522168 +INFO:root:Epoch[7] Batch [400] Speed: 663.03 samples/sec acc=0.535742 +INFO:root:Epoch[7] Batch [420] Speed: 662.55 samples/sec acc=0.531836 +INFO:root:Epoch[7] Batch [440] Speed: 663.08 samples/sec acc=0.523730 +INFO:root:Epoch[7] Batch [460] Speed: 678.53 samples/sec acc=0.528418 +INFO:root:Epoch[7] Batch [480] Speed: 662.93 samples/sec acc=0.522559 +INFO:root:Epoch[7] Batch [500] Speed: 662.50 samples/sec acc=0.519336 +INFO:root:Epoch[7] Batch [520] Speed: 663.41 samples/sec acc=0.534668 +INFO:root:Epoch[7] Batch [540] Speed: 662.82 samples/sec acc=0.530859 +INFO:root:Epoch[7] Batch [560] Speed: 663.39 samples/sec acc=0.530664 +INFO:root:Epoch[7] Batch [580] Speed: 662.86 samples/sec acc=0.527930 +INFO:root:Epoch[7] Batch [600] Speed: 663.42 samples/sec acc=0.527734 +INFO:root:Epoch[7] Batch [620] Speed: 662.39 samples/sec acc=0.523047 +INFO:root:Epoch[7] Batch [640] Speed: 662.75 samples/sec acc=0.534668 +INFO:root:Epoch[7] Batch [660] Speed: 663.35 samples/sec acc=0.529102 +INFO:root:Epoch[7] Batch [680] Speed: 661.91 samples/sec acc=0.528906 +INFO:root:Epoch[7] Batch [700] Speed: 663.22 samples/sec acc=0.531641 +INFO:root:Epoch[7] Batch [720] Speed: 662.41 samples/sec acc=0.531445 +INFO:root:Epoch[7] Batch [740] Speed: 663.06 samples/sec acc=0.530566 +INFO:root:Epoch[7] Batch [760] Speed: 663.04 samples/sec acc=0.535547 +INFO:root:Epoch[7] Batch [780] Speed: 661.68 samples/sec acc=0.529492 +INFO:root:Epoch[7] Batch [800] Speed: 663.62 samples/sec acc=0.529590 +INFO:root:Epoch[7] Batch [820] Speed: 662.37 samples/sec acc=0.525195 +INFO:root:Epoch[7] Batch [840] Speed: 661.92 samples/sec acc=0.526660 +INFO:root:Epoch[7] Batch [860] Speed: 662.73 samples/sec acc=0.530664 +INFO:root:Epoch[7] Batch [880] Speed: 663.21 samples/sec acc=0.530371 +INFO:root:Epoch[7] Batch [900] Speed: 661.90 samples/sec acc=0.524023 +INFO:root:Epoch[7] Batch [920] Speed: 663.07 samples/sec acc=0.530762 +INFO:root:Epoch[7] Batch [940] Speed: 663.84 samples/sec acc=0.531250 +INFO:root:Epoch[7] Batch [960] Speed: 662.83 samples/sec acc=0.540723 +INFO:root:Epoch[7] Batch [980] Speed: 662.47 samples/sec acc=0.538477 +INFO:root:Epoch[7] Batch [1000] Speed: 663.60 samples/sec acc=0.534863 +INFO:root:Epoch[7] Batch [1020] Speed: 662.45 samples/sec acc=0.530957 +INFO:root:Epoch[7] Batch [1040] Speed: 662.32 samples/sec acc=0.539258 +INFO:root:Epoch[7] Batch [1060] Speed: 663.14 samples/sec acc=0.536133 +INFO:root:Epoch[7] Batch [1080] Speed: 663.39 samples/sec acc=0.523633 +INFO:root:Epoch[7] Batch [1100] Speed: 663.21 samples/sec acc=0.535547 +INFO:root:Epoch[7] Batch [1120] Speed: 662.40 samples/sec acc=0.536426 +INFO:root:Epoch[7] Batch [1140] Speed: 663.16 samples/sec acc=0.533496 +INFO:root:Epoch[7] Batch [1160] Speed: 663.36 samples/sec acc=0.536816 +INFO:root:Epoch[7] Batch [1180] Speed: 662.86 samples/sec acc=0.535352 +INFO:root:Epoch[7] Batch [1200] Speed: 663.11 samples/sec acc=0.537695 +INFO:root:Epoch[7] Batch [1220] Speed: 662.92 samples/sec acc=0.534863 +INFO:root:Epoch[7] Batch [1240] Speed: 662.70 samples/sec acc=0.532715 +INFO:root:Epoch[7] Batch [1260] Speed: 664.53 samples/sec acc=0.534375 +INFO:root:Epoch[7] Batch [1280] Speed: 683.48 samples/sec acc=0.534766 +INFO:root:Epoch[7] Batch [1300] Speed: 663.26 samples/sec acc=0.534277 +INFO:root:Epoch[7] Batch [1320] Speed: 662.50 samples/sec acc=0.550098 +INFO:root:Epoch[7] Batch [1340] Speed: 662.82 samples/sec acc=0.545410 +INFO:root:Epoch[7] Batch [1360] Speed: 662.96 samples/sec acc=0.543066 +[54000][MARGIN]0.775398,0.382445 +lr-batch-epoch: 0.01 1366 7 +testing verification.. +(14000, 512) +infer time 16.71862 +[cfp_ff][54000]XNorm: 21.741931 +[cfp_ff][54000]Accuracy-Flip: 0.99600+-0.00262 +testing verification.. +(14000, 512) +infer time 20.062862 +[cfp_fp][54000]XNorm: 18.540964 +[cfp_fp][54000]Accuracy-Flip: 0.89271+-0.01541 +testing verification.. +(12000, 512) +infer time 16.860989 +[agedb_30][54000]XNorm: 21.926127 +[agedb_30][54000]Accuracy-Flip: 0.96850+-0.00693 +testing verification.. +(12000, 512) +infer time 16.569762 +[lfw][54000]XNorm: 21.878332 +[lfw][54000]Accuracy-Flip: 0.99683+-0.00217 +saving 27 +INFO:root:Saved checkpoint to "../model-r50-am-lfw/model-0027.params" +[54000]Accuracy-Highest: 0.99683 +INFO:root:Epoch[7] Batch [1380] Speed: 91.55 samples/sec acc=0.540039 +INFO:root:Epoch[7] Batch [1400] Speed: 661.47 samples/sec acc=0.544922 +INFO:root:Epoch[7] Batch [1420] Speed: 663.12 samples/sec acc=0.545996 +INFO:root:Epoch[7] Batch [1440] Speed: 662.23 samples/sec acc=0.541895 +INFO:root:Epoch[7] Batch [1460] Speed: 661.89 samples/sec acc=0.544434 +INFO:root:Epoch[7] Batch [1480] Speed: 663.06 samples/sec acc=0.531934 +INFO:root:Epoch[7] Batch [1500] Speed: 657.32 samples/sec acc=0.543555 +INFO:root:Epoch[7] Batch [1520] Speed: 662.67 samples/sec acc=0.543750 +INFO:root:Epoch[7] Batch [1540] Speed: 663.48 samples/sec acc=0.538867 +INFO:root:Epoch[7] Batch [1560] Speed: 662.85 samples/sec acc=0.544336 +INFO:root:Epoch[7] Batch [1580] Speed: 661.97 samples/sec acc=0.552148 +INFO:root:Epoch[7] Batch [1600] Speed: 657.65 samples/sec acc=0.537988 +INFO:root:Epoch[7] Batch [1620] Speed: 662.40 samples/sec acc=0.546973 +INFO:root:Epoch[7] Batch [1640] Speed: 662.50 samples/sec acc=0.548145 +INFO:root:Epoch[7] Batch [1660] Speed: 657.64 samples/sec acc=0.551758 +INFO:root:Epoch[7] Batch [1680] Speed: 657.15 samples/sec acc=0.538184 +INFO:root:Epoch[7] Batch [1700] Speed: 663.33 samples/sec acc=0.543848 +INFO:root:Epoch[7] Batch [1720] Speed: 664.19 samples/sec acc=0.548438 +INFO:root:Epoch[7] Batch [1740] Speed: 663.08 samples/sec acc=0.538867 +INFO:root:Epoch[7] Batch [1760] Speed: 662.19 samples/sec acc=0.543555 +INFO:root:Epoch[7] Batch [1780] Speed: 663.11 samples/sec acc=0.546094 +INFO:root:Epoch[7] Batch [1800] Speed: 663.32 samples/sec acc=0.540430 +INFO:root:Epoch[7] Batch [1820] Speed: 662.51 samples/sec acc=0.538086 +INFO:root:Epoch[7] Batch [1840] Speed: 663.27 samples/sec acc=0.548828 +INFO:root:Epoch[7] Batch [1860] Speed: 662.65 samples/sec acc=0.539844 +INFO:root:Epoch[7] Batch [1880] Speed: 662.60 samples/sec acc=0.543457 +INFO:root:Epoch[7] Batch [1900] Speed: 663.18 samples/sec acc=0.543652 +INFO:root:Epoch[7] Batch [1920] Speed: 662.38 samples/sec acc=0.554395 +INFO:root:Epoch[7] Batch [1940] Speed: 663.46 samples/sec acc=0.543945 +INFO:root:Epoch[7] Batch [1960] Speed: 662.48 samples/sec acc=0.552344 +INFO:root:Epoch[7] Batch [1980] Speed: 665.00 samples/sec acc=0.554785 +INFO:root:Epoch[7] Batch [2000] Speed: 662.69 samples/sec acc=0.551758 +INFO:root:Epoch[7] Batch [2020] Speed: 662.52 samples/sec acc=0.547559 +INFO:root:Epoch[7] Batch [2040] Speed: 662.63 samples/sec acc=0.547363 +INFO:root:Epoch[7] Batch [2060] Speed: 663.16 samples/sec acc=0.546875 +INFO:root:Epoch[7] Batch [2080] Speed: 663.27 samples/sec acc=0.545996 +INFO:root:Epoch[7] Batch [2100] Speed: 663.18 samples/sec acc=0.551270 +INFO:root:Epoch[7] Batch [2120] Speed: 662.36 samples/sec acc=0.552246 +INFO:root:Epoch[7] Batch [2140] Speed: 662.86 samples/sec acc=0.546973 +INFO:root:Epoch[7] Batch [2160] Speed: 662.17 samples/sec acc=0.553125 +INFO:root:Epoch[7] Batch [2180] Speed: 662.46 samples/sec acc=0.553516 +INFO:root:Epoch[7] Batch [2200] Speed: 663.52 samples/sec acc=0.553027 +INFO:root:Epoch[7] Batch [2220] Speed: 662.72 samples/sec acc=0.549316 +INFO:root:Epoch[7] Batch [2240] Speed: 662.83 samples/sec acc=0.543750 +INFO:root:Epoch[7] Batch [2260] Speed: 663.20 samples/sec acc=0.553027 +INFO:root:Epoch[7] Batch [2280] Speed: 662.76 samples/sec acc=0.559473 +INFO:root:Epoch[7] Batch [2300] Speed: 662.83 samples/sec acc=0.552148 +INFO:root:Epoch[7] Batch [2320] Speed: 663.47 samples/sec acc=0.553516 +INFO:root:Epoch[7] Batch [2340] Speed: 662.57 samples/sec acc=0.546875 +INFO:root:Epoch[7] Batch [2360] Speed: 662.05 samples/sec acc=0.556738 +lr-batch-epoch: 0.01 2366 7 +INFO:root:Epoch[7] Batch [2380] Speed: 662.67 samples/sec acc=0.548730 +INFO:root:Epoch[7] Batch [2400] Speed: 662.44 samples/sec acc=0.553223 +INFO:root:Epoch[7] Batch [2420] Speed: 662.69 samples/sec acc=0.552148 +INFO:root:Epoch[7] Batch [2440] Speed: 662.60 samples/sec acc=0.548828 +INFO:root:Epoch[7] Batch [2460] Speed: 662.86 samples/sec acc=0.552637 +INFO:root:Epoch[7] Batch [2480] Speed: 662.85 samples/sec acc=0.554395 +INFO:root:Epoch[7] Batch [2500] Speed: 663.20 samples/sec acc=0.557910 +INFO:root:Epoch[7] Batch [2520] Speed: 662.90 samples/sec acc=0.548145 +INFO:root:Epoch[7] Batch [2540] Speed: 662.80 samples/sec acc=0.555957 +INFO:root:Epoch[7] Batch [2560] Speed: 661.57 samples/sec acc=0.552930 +INFO:root:Epoch[7] Batch [2580] Speed: 663.33 samples/sec acc=0.547363 +INFO:root:Epoch[7] Batch [2600] Speed: 661.64 samples/sec acc=0.559961 +INFO:root:Epoch[7] Batch [2620] Speed: 663.17 samples/sec acc=0.558008 +INFO:root:Epoch[7] Batch [2640] Speed: 662.61 samples/sec acc=0.549121 +INFO:root:Epoch[7] Batch [2660] Speed: 662.87 samples/sec acc=0.548242 +INFO:root:Epoch[7] Batch [2680] Speed: 663.34 samples/sec acc=0.560059 +INFO:root:Epoch[7] Batch [2700] Speed: 663.18 samples/sec acc=0.560840 +INFO:root:Epoch[7] Batch [2720] Speed: 662.61 samples/sec acc=0.555957 +INFO:root:Epoch[7] Batch [2740] Speed: 663.05 samples/sec acc=0.548730 +INFO:root:Epoch[7] Batch [2760] Speed: 662.94 samples/sec acc=0.546875 +INFO:root:Epoch[7] Batch [2780] Speed: 663.00 samples/sec acc=0.547461 +INFO:root:Epoch[7] Batch [2800] Speed: 663.56 samples/sec acc=0.543750 +INFO:root:Epoch[7] Batch [2820] Speed: 663.41 samples/sec acc=0.565430 +INFO:root:Epoch[7] Batch [2840] Speed: 662.85 samples/sec acc=0.554688 +INFO:root:Epoch[7] Batch [2860] Speed: 663.34 samples/sec acc=0.554785 +INFO:root:Epoch[7] Batch [2880] Speed: 662.57 samples/sec acc=0.555762 +INFO:root:Epoch[7] Batch [2900] Speed: 662.86 samples/sec acc=0.561426 +INFO:root:Epoch[7] Batch [2920] Speed: 662.44 samples/sec acc=0.566211 +INFO:root:Epoch[7] Batch [2940] Speed: 662.34 samples/sec acc=0.551367 +INFO:root:Epoch[7] Batch [2960] Speed: 662.46 samples/sec acc=0.555469 +INFO:root:Epoch[7] Batch [2980] Speed: 662.83 samples/sec acc=0.559863 +INFO:root:Epoch[7] Batch [3000] Speed: 662.79 samples/sec acc=0.556348 +INFO:root:Epoch[7] Batch [3020] Speed: 661.89 samples/sec acc=0.565137 +INFO:root:Epoch[7] Batch [3040] Speed: 662.90 samples/sec acc=0.560254 +INFO:root:Epoch[7] Batch [3060] Speed: 662.85 samples/sec acc=0.555957 +INFO:root:Epoch[7] Batch [3080] Speed: 662.76 samples/sec acc=0.551953 +INFO:root:Epoch[7] Batch [3100] Speed: 662.42 samples/sec acc=0.559082 +INFO:root:Epoch[7] Batch [3120] Speed: 662.71 samples/sec acc=0.551660 +INFO:root:Epoch[7] Batch [3140] Speed: 663.09 samples/sec acc=0.564453 +INFO:root:Epoch[7] Batch [3160] Speed: 662.15 samples/sec acc=0.559961 +INFO:root:Epoch[7] Batch [3180] Speed: 662.73 samples/sec acc=0.558984 +INFO:root:Epoch[7] Batch [3200] Speed: 662.85 samples/sec acc=0.550977 +INFO:root:Epoch[7] Batch [3220] Speed: 661.50 samples/sec acc=0.560156 +INFO:root:Epoch[7] Batch [3240] Speed: 663.03 samples/sec acc=0.552441 +INFO:root:Epoch[7] Batch [3260] Speed: 662.21 samples/sec acc=0.560840 +INFO:root:Epoch[7] Batch [3280] Speed: 662.11 samples/sec acc=0.557031 +INFO:root:Epoch[7] Batch [3300] Speed: 662.16 samples/sec acc=0.553125 +INFO:root:Epoch[7] Batch [3320] Speed: 662.30 samples/sec acc=0.557520 +INFO:root:Epoch[7] Batch [3340] Speed: 662.42 samples/sec acc=0.560352 +INFO:root:Epoch[7] Batch [3360] Speed: 662.02 samples/sec acc=0.559766 +[56000][MARGIN]0.766567,0.369890 +lr-batch-epoch: 0.01 3366 7 +testing verification.. +(14000, 512) +infer time 16.51119 +[cfp_ff][56000]XNorm: 22.216972 +[cfp_ff][56000]Accuracy-Flip: 0.99714+-0.00286 +testing verification.. +(14000, 512) +infer time 16.271374 +[cfp_fp][56000]XNorm: 19.052099 +[cfp_fp][56000]Accuracy-Flip: 0.89857+-0.01664 +testing verification.. +(12000, 512) +infer time 13.25264 +[agedb_30][56000]XNorm: 22.501946 +[agedb_30][56000]Accuracy-Flip: 0.96817+-0.00769 +testing verification.. +(12000, 512) +infer time 12.692111 +[lfw][56000]XNorm: 22.469747 +[lfw][56000]Accuracy-Flip: 0.99683+-0.00273 +[56000]Accuracy-Highest: 0.99683 +INFO:root:Epoch[7] Batch [3380] Speed: 109.23 samples/sec acc=0.564941 +INFO:root:Epoch[7] Batch [3400] Speed: 682.15 samples/sec acc=0.564746 +INFO:root:Epoch[7] Batch [3420] Speed: 679.39 samples/sec acc=0.559473 +INFO:root:Epoch[7] Batch [3440] Speed: 663.74 samples/sec acc=0.569043 +INFO:root:Epoch[7] Batch [3460] Speed: 663.19 samples/sec acc=0.555371 +INFO:root:Epoch[7] Batch [3480] Speed: 662.48 samples/sec acc=0.554590 +INFO:root:Epoch[7] Batch [3500] Speed: 662.13 samples/sec acc=0.560547 +INFO:root:Epoch[7] Batch [3520] Speed: 658.64 samples/sec acc=0.562500 +INFO:root:Epoch[7] Batch [3540] Speed: 669.50 samples/sec acc=0.555273 +INFO:root:Epoch[7] Batch [3560] Speed: 663.13 samples/sec acc=0.560742 +INFO:root:Epoch[7] Batch [3580] Speed: 663.01 samples/sec acc=0.569922 +INFO:root:Epoch[7] Batch [3600] Speed: 662.88 samples/sec acc=0.561328 +INFO:root:Epoch[7] Batch [3620] Speed: 662.45 samples/sec acc=0.560449 +INFO:root:Epoch[7] Batch [3640] Speed: 662.72 samples/sec acc=0.565527 +INFO:root:Epoch[7] Batch [3660] Speed: 662.76 samples/sec acc=0.563379 +INFO:root:Epoch[7] Batch [3680] Speed: 663.08 samples/sec acc=0.556152 +INFO:root:Epoch[7] Batch [3700] Speed: 663.33 samples/sec acc=0.554883 +INFO:root:Epoch[7] Batch [3720] Speed: 662.68 samples/sec acc=0.553711 +INFO:root:Epoch[7] Batch [3740] Speed: 662.79 samples/sec acc=0.563867 +INFO:root:Epoch[7] Batch [3760] Speed: 663.54 samples/sec acc=0.563770 +INFO:root:Epoch[7] Batch [3780] Speed: 662.54 samples/sec acc=0.565723 +INFO:root:Epoch[7] Batch [3800] Speed: 663.19 samples/sec acc=0.558398 +INFO:root:Epoch[7] Batch [3820] Speed: 662.68 samples/sec acc=0.555176 +INFO:root:Epoch[7] Batch [3840] Speed: 662.74 samples/sec acc=0.558887 +INFO:root:Epoch[7] Batch [3860] Speed: 663.54 samples/sec acc=0.563086 +INFO:root:Epoch[7] Batch [3880] Speed: 663.39 samples/sec acc=0.558594 +INFO:root:Epoch[7] Batch [3900] Speed: 663.33 samples/sec acc=0.561621 +INFO:root:Epoch[7] Batch [3920] Speed: 663.21 samples/sec acc=0.566211 +INFO:root:Epoch[7] Batch [3940] Speed: 663.09 samples/sec acc=0.564453 +INFO:root:Epoch[7] Batch [3960] Speed: 662.81 samples/sec acc=0.560254 +INFO:root:Epoch[7] Batch [3980] Speed: 663.26 samples/sec acc=0.569434 +INFO:root:Epoch[7] Batch [4000] Speed: 663.27 samples/sec acc=0.569141 +INFO:root:Epoch[7] Batch [4020] Speed: 662.82 samples/sec acc=0.573242 +INFO:root:Epoch[7] Batch [4040] Speed: 662.83 samples/sec acc=0.567676 +INFO:root:Epoch[7] Batch [4060] Speed: 663.42 samples/sec acc=0.558691 +INFO:root:Epoch[7] Batch [4080] Speed: 663.15 samples/sec acc=0.564844 +INFO:root:Epoch[7] Batch [4100] Speed: 662.78 samples/sec acc=0.561230 +INFO:root:Epoch[7] Batch [4120] Speed: 663.27 samples/sec acc=0.560840 +INFO:root:Epoch[7] Batch [4140] Speed: 663.65 samples/sec acc=0.567871 +INFO:root:Epoch[7] Batch [4160] Speed: 662.98 samples/sec acc=0.566797 +INFO:root:Epoch[7] Batch [4180] Speed: 662.90 samples/sec acc=0.563965 +INFO:root:Epoch[7] Batch [4200] Speed: 663.56 samples/sec acc=0.558594 +INFO:root:Epoch[7] Batch [4220] Speed: 662.66 samples/sec acc=0.565918 +INFO:root:Epoch[7] Batch [4240] Speed: 662.53 samples/sec acc=0.566895 +INFO:root:Epoch[7] Batch [4260] Speed: 662.27 samples/sec acc=0.568945 +INFO:root:Epoch[7] Batch [4280] Speed: 663.32 samples/sec acc=0.568848 +INFO:root:Epoch[7] Batch [4300] Speed: 663.25 samples/sec acc=0.568164 +INFO:root:Epoch[7] Batch [4320] Speed: 666.19 samples/sec acc=0.573340 +INFO:root:Epoch[7] Batch [4340] Speed: 662.84 samples/sec acc=0.569336 +INFO:root:Epoch[7] Batch [4360] Speed: 662.21 samples/sec acc=0.563867 +lr-batch-epoch: 0.01 4366 7 +INFO:root:Epoch[7] Batch [4380] Speed: 663.10 samples/sec acc=0.562012 +INFO:root:Epoch[7] Batch [4400] Speed: 662.20 samples/sec acc=0.559570 +INFO:root:Epoch[7] Batch [4420] Speed: 663.43 samples/sec acc=0.568652 +INFO:root:Epoch[7] Batch [4440] Speed: 663.31 samples/sec acc=0.562012 +INFO:root:Epoch[7] Batch [4460] Speed: 662.77 samples/sec acc=0.564453 +INFO:root:Epoch[7] Batch [4480] Speed: 663.17 samples/sec acc=0.572559 +INFO:root:Epoch[7] Batch [4500] Speed: 662.90 samples/sec acc=0.559277 +INFO:root:Epoch[7] Batch [4520] Speed: 662.83 samples/sec acc=0.556738 +INFO:root:Epoch[7] Batch [4540] Speed: 662.90 samples/sec acc=0.559766 +INFO:root:Epoch[7] Batch [4560] Speed: 662.50 samples/sec acc=0.562109 +INFO:root:Epoch[7] Batch [4580] Speed: 662.70 samples/sec acc=0.567383 +INFO:root:Epoch[7] Batch [4600] Speed: 663.10 samples/sec acc=0.562695 +INFO:root:Epoch[7] Batch [4620] Speed: 663.27 samples/sec acc=0.559277 +INFO:root:Epoch[7] Batch [4640] Speed: 662.70 samples/sec acc=0.569043 +INFO:root:Epoch[7] Batch [4660] Speed: 663.18 samples/sec acc=0.571680 +INFO:root:Epoch[7] Batch [4680] Speed: 663.11 samples/sec acc=0.561133 +INFO:root:Epoch[7] Batch [4700] Speed: 663.14 samples/sec acc=0.565820 +INFO:root:Epoch[7] Batch [4720] Speed: 663.20 samples/sec acc=0.558887 +INFO:root:Epoch[7] Batch [4740] Speed: 662.66 samples/sec acc=0.566113 +INFO:root:Epoch[7] Batch [4760] Speed: 663.27 samples/sec acc=0.573828 +INFO:root:Epoch[7] Batch [4780] Speed: 662.69 samples/sec acc=0.561719 +INFO:root:Epoch[7] Batch [4800] Speed: 663.29 samples/sec acc=0.566406 +INFO:root:Epoch[7] Batch [4820] Speed: 662.53 samples/sec acc=0.556055 +INFO:root:Epoch[7] Batch [4840] Speed: 662.92 samples/sec acc=0.566406 +INFO:root:Epoch[7] Batch [4860] Speed: 663.60 samples/sec acc=0.551660 +INFO:root:Epoch[7] Batch [4880] Speed: 662.14 samples/sec acc=0.564648 +INFO:root:Epoch[7] Batch [4900] Speed: 663.08 samples/sec acc=0.563184 +INFO:root:Epoch[7] Batch [4920] Speed: 663.13 samples/sec acc=0.562402 +INFO:root:Epoch[7] Batch [4940] Speed: 663.14 samples/sec acc=0.561621 +INFO:root:Epoch[7] Batch [4960] Speed: 663.71 samples/sec acc=0.566992 +INFO:root:Epoch[7] Batch [4980] Speed: 663.25 samples/sec acc=0.564941 +INFO:root:Epoch[7] Batch [5000] Speed: 663.42 samples/sec acc=0.564746 +INFO:root:Epoch[7] Batch [5020] Speed: 662.01 samples/sec acc=0.564746 +INFO:root:Epoch[7] Batch [5040] Speed: 662.94 samples/sec acc=0.563477 +INFO:root:Epoch[7] Batch [5060] Speed: 662.70 samples/sec acc=0.568555 +INFO:root:Epoch[7] Batch [5080] Speed: 663.13 samples/sec acc=0.561035 +INFO:root:Epoch[7] Batch [5100] Speed: 663.31 samples/sec acc=0.561133 +INFO:root:Epoch[7] Batch [5120] Speed: 662.60 samples/sec acc=0.560254 +INFO:root:Epoch[7] Batch [5140] Speed: 663.65 samples/sec acc=0.567578 +INFO:root:Epoch[7] Batch [5160] Speed: 662.53 samples/sec acc=0.563477 +INFO:root:Epoch[7] Batch [5180] Speed: 663.18 samples/sec acc=0.567969 +INFO:root:Epoch[7] Batch [5200] Speed: 663.63 samples/sec acc=0.574219 +INFO:root:Epoch[7] Batch [5220] Speed: 664.17 samples/sec acc=0.564551 +INFO:root:Epoch[7] Batch [5240] Speed: 663.71 samples/sec acc=0.561621 +INFO:root:Epoch[7] Batch [5260] Speed: 663.66 samples/sec acc=0.566504 +INFO:root:Epoch[7] Batch [5280] Speed: 663.67 samples/sec acc=0.565527 +INFO:root:Epoch[7] Batch [5300] Speed: 663.17 samples/sec acc=0.557422 +INFO:root:Epoch[7] Batch [5320] Speed: 662.68 samples/sec acc=0.567090 +INFO:root:Epoch[7] Batch [5340] Speed: 662.38 samples/sec acc=0.574023 +INFO:root:Epoch[7] Batch [5360] Speed: 663.03 samples/sec acc=0.565820 +[58000][MARGIN]0.770447,0.375042 +lr-batch-epoch: 0.01 5366 7 +testing verification.. +(14000, 512) +infer time 15.049288 +[cfp_ff][58000]XNorm: 22.002785 +[cfp_ff][58000]Accuracy-Flip: 0.99643+-0.00280 +testing verification.. +(14000, 512) +infer time 16.034628 +[cfp_fp][58000]XNorm: 19.186742 +[cfp_fp][58000]Accuracy-Flip: 0.90157+-0.01607 +testing verification.. +(12000, 512) +infer time 12.954738 +[agedb_30][58000]XNorm: 22.275353 +[agedb_30][58000]Accuracy-Flip: 0.96983+-0.00524 +testing verification.. +(12000, 512) +infer time 12.860242 +[lfw][58000]XNorm: 22.386572 +[lfw][58000]Accuracy-Flip: 0.99533+-0.00356 +[58000]Accuracy-Highest: 0.99683 +INFO:root:Epoch[7] Batch [5380] Speed: 112.08 samples/sec acc=0.566992 +INFO:root:Epoch[7] Batch [5400] Speed: 662.09 samples/sec acc=0.567090 +INFO:root:Epoch[7] Batch [5420] Speed: 662.21 samples/sec acc=0.570020 +INFO:root:Epoch[7] Batch [5440] Speed: 662.80 samples/sec acc=0.559375 +INFO:root:Epoch[7] Batch [5460] Speed: 662.08 samples/sec acc=0.567871 +INFO:root:Epoch[7] Batch [5480] Speed: 662.28 samples/sec acc=0.560254 +INFO:root:Epoch[7] Batch [5500] Speed: 662.19 samples/sec acc=0.571680 +INFO:root:Epoch[7] Batch [5520] Speed: 662.29 samples/sec acc=0.555664 +INFO:root:Epoch[7] Batch [5540] Speed: 662.10 samples/sec acc=0.562988 +INFO:root:Epoch[7] Batch [5560] Speed: 662.11 samples/sec acc=0.569043 +INFO:root:Epoch[7] Batch [5580] Speed: 662.40 samples/sec acc=0.566992 +INFO:root:Epoch[7] Batch [5600] Speed: 662.02 samples/sec acc=0.564160 +INFO:root:Epoch[7] Batch [5620] Speed: 662.04 samples/sec acc=0.565820 +INFO:root:Epoch[7] Batch [5640] Speed: 661.81 samples/sec acc=0.562305 +INFO:root:Epoch[7] Batch [5660] Speed: 662.65 samples/sec acc=0.562305 +INFO:root:Epoch[7] Batch [5680] Speed: 663.26 samples/sec acc=0.567871 +INFO:root:Epoch[7] Batch [5700] Speed: 663.16 samples/sec acc=0.563281 +INFO:root:Epoch[7] Batch [5720] Speed: 662.99 samples/sec acc=0.561621 +INFO:root:Epoch[7] Batch [5740] Speed: 662.33 samples/sec acc=0.563281 +INFO:root:Epoch[7] Batch [5760] Speed: 663.01 samples/sec acc=0.558887 +INFO:root:Epoch[7] Batch [5780] Speed: 662.58 samples/sec acc=0.563477 +INFO:root:Epoch[7] Batch [5800] Speed: 663.19 samples/sec acc=0.562305 +INFO:root:Epoch[7] Batch [5820] Speed: 662.43 samples/sec acc=0.563965 +INFO:root:Epoch[7] Batch [5840] Speed: 663.04 samples/sec acc=0.565527 +INFO:root:Epoch[7] Batch [5860] Speed: 663.36 samples/sec acc=0.559180 +INFO:root:Epoch[7] Batch [5880] Speed: 663.33 samples/sec acc=0.560156 +INFO:root:Epoch[7] Batch [5900] Speed: 662.62 samples/sec acc=0.565918 +INFO:root:Epoch[7] Batch [5920] Speed: 662.16 samples/sec acc=0.555762 +INFO:root:Epoch[7] Batch [5940] Speed: 677.51 samples/sec acc=0.561426 +INFO:root:Epoch[7] Batch [5960] Speed: 662.67 samples/sec acc=0.558008 +INFO:root:Epoch[7] Batch [5980] Speed: 662.93 samples/sec acc=0.567676 +INFO:root:Epoch[7] Batch [6000] Speed: 662.95 samples/sec acc=0.566016 +INFO:root:Epoch[7] Batch [6020] Speed: 662.33 samples/sec acc=0.562695 +INFO:root:Epoch[7] Batch [6040] Speed: 655.95 samples/sec acc=0.559082 +INFO:root:Epoch[7] Batch [6060] Speed: 661.90 samples/sec acc=0.571973 +INFO:root:Epoch[7] Batch [6080] Speed: 661.77 samples/sec acc=0.561133 +INFO:root:Epoch[7] Batch [6100] Speed: 662.14 samples/sec acc=0.566406 +INFO:root:Epoch[7] Batch [6120] Speed: 662.32 samples/sec acc=0.562695 +INFO:root:Epoch[7] Batch [6140] Speed: 662.70 samples/sec acc=0.566797 +INFO:root:Epoch[7] Batch [6160] Speed: 662.76 samples/sec acc=0.559570 +INFO:root:Epoch[7] Batch [6180] Speed: 663.09 samples/sec acc=0.559375 +INFO:root:Epoch[7] Batch [6200] Speed: 662.51 samples/sec acc=0.568848 +INFO:root:Epoch[7] Batch [6220] Speed: 663.49 samples/sec acc=0.570801 +INFO:root:Epoch[7] Batch [6240] Speed: 662.45 samples/sec acc=0.562598 +INFO:root:Epoch[7] Batch [6260] Speed: 662.56 samples/sec acc=0.563867 +INFO:root:Epoch[7] Batch [6280] Speed: 662.48 samples/sec acc=0.554297 +INFO:root:Epoch[7] Batch [6300] Speed: 663.36 samples/sec acc=0.559863 +INFO:root:Epoch[7] Batch [6320] Speed: 662.34 samples/sec acc=0.553027 +INFO:root:Epoch[7] Batch [6340] Speed: 662.78 samples/sec acc=0.573242 +INFO:root:Epoch[7] Batch [6360] Speed: 663.15 samples/sec acc=0.553613 +lr-batch-epoch: 0.01 6366 7 +INFO:root:Epoch[7] Batch [6380] Speed: 662.90 samples/sec acc=0.564551 +INFO:root:Epoch[7] Batch [6400] Speed: 662.54 samples/sec acc=0.563770 +INFO:root:Epoch[7] Batch [6420] Speed: 662.67 samples/sec acc=0.563477 +INFO:root:Epoch[7] Batch [6440] Speed: 663.15 samples/sec acc=0.570508 +INFO:root:Epoch[7] Batch [6460] Speed: 662.33 samples/sec acc=0.566602 +INFO:root:Epoch[7] Batch [6480] Speed: 663.59 samples/sec acc=0.555469 +INFO:root:Epoch[7] Batch [6500] Speed: 662.00 samples/sec acc=0.566016 +INFO:root:Epoch[7] Batch [6520] Speed: 663.49 samples/sec acc=0.551270 +INFO:root:Epoch[7] Batch [6540] Speed: 662.65 samples/sec acc=0.559180 +INFO:root:Epoch[7] Batch [6560] Speed: 662.63 samples/sec acc=0.566406 +INFO:root:Epoch[7] Batch [6580] Speed: 662.58 samples/sec acc=0.554785 +INFO:root:Epoch[7] Batch [6600] Speed: 662.78 samples/sec acc=0.564844 +INFO:root:Epoch[7] Batch [6620] Speed: 662.69 samples/sec acc=0.567480 +INFO:root:Epoch[7] Batch [6640] Speed: 662.88 samples/sec acc=0.569238 +INFO:root:Epoch[7] Batch [6660] Speed: 662.59 samples/sec acc=0.559766 +INFO:root:Epoch[7] Batch [6680] Speed: 663.37 samples/sec acc=0.568164 +INFO:root:Epoch[7] Batch [6700] Speed: 658.12 samples/sec acc=0.567480 +INFO:root:Epoch[7] Batch [6720] Speed: 667.62 samples/sec acc=0.561523 +INFO:root:Epoch[7] Batch [6740] Speed: 663.36 samples/sec acc=0.567090 +INFO:root:Epoch[7] Batch [6760] Speed: 663.23 samples/sec acc=0.559961 +INFO:root:Epoch[7] Batch [6780] Speed: 663.26 samples/sec acc=0.556543 +INFO:root:Epoch[7] Batch [6800] Speed: 662.93 samples/sec acc=0.567090 +INFO:root:Epoch[7] Batch [6820] Speed: 662.99 samples/sec acc=0.563867 +INFO:root:Epoch[7] Batch [6840] Speed: 661.98 samples/sec acc=0.560547 +INFO:root:Epoch[7] Batch [6860] Speed: 663.24 samples/sec acc=0.566699 +INFO:root:Epoch[7] Batch [6880] Speed: 663.39 samples/sec acc=0.568457 +INFO:root:Epoch[7] Batch [6900] Speed: 663.01 samples/sec acc=0.560156 +INFO:root:Epoch[7] Batch [6920] Speed: 662.36 samples/sec acc=0.562305 +INFO:root:Epoch[7] Batch [6940] Speed: 664.53 samples/sec acc=0.556055 +INFO:root:Epoch[7] Batch [6960] Speed: 663.67 samples/sec acc=0.569629 +INFO:root:Epoch[7] Batch [6980] Speed: 660.94 samples/sec acc=0.564648 +INFO:root:Epoch[7] Batch [7000] Speed: 664.06 samples/sec acc=0.558301 +INFO:root:Epoch[7] Batch [7020] Speed: 662.75 samples/sec acc=0.564941 +INFO:root:Epoch[7] Batch [7040] Speed: 662.92 samples/sec acc=0.563281 +INFO:root:Epoch[7] Batch [7060] Speed: 662.19 samples/sec acc=0.558008 +INFO:root:Epoch[7] Batch [7080] Speed: 663.18 samples/sec acc=0.573047 +INFO:root:Epoch[7] Batch [7100] Speed: 661.87 samples/sec acc=0.566211 +INFO:root:Epoch[7] Batch [7120] Speed: 663.65 samples/sec acc=0.572070 +INFO:root:Epoch[7] Batch [7140] Speed: 663.38 samples/sec acc=0.567090 +INFO:root:Epoch[7] Batch [7160] Speed: 662.94 samples/sec acc=0.562402 +INFO:root:Epoch[7] Batch [7180] Speed: 662.58 samples/sec acc=0.551855 +INFO:root:Epoch[7] Batch [7200] Speed: 662.51 samples/sec acc=0.566602 +INFO:root:Epoch[7] Batch [7220] Speed: 662.50 samples/sec acc=0.563086 +INFO:root:Epoch[7] Batch [7240] Speed: 661.71 samples/sec acc=0.567285 +INFO:root:Epoch[7] Batch [7260] Speed: 663.15 samples/sec acc=0.569141 +INFO:root:Epoch[7] Batch [7280] Speed: 661.54 samples/sec acc=0.561230 +INFO:root:Epoch[7] Batch [7300] Speed: 663.32 samples/sec acc=0.555078 +INFO:root:Epoch[7] Batch [7320] Speed: 661.87 samples/sec acc=0.561328 +INFO:root:Epoch[7] Batch [7340] Speed: 662.68 samples/sec acc=0.552832 +INFO:root:Epoch[7] Batch [7360] Speed: 662.83 samples/sec acc=0.557227 +[60000][MARGIN]0.769198,0.372772 +lr-batch-epoch: 0.01 7366 7 +testing verification.. +(14000, 512) +infer time 16.559355 +[cfp_ff][60000]XNorm: 21.482792 +[cfp_ff][60000]Accuracy-Flip: 0.99700+-0.00216 +testing verification.. +(14000, 512) +infer time 16.091501 +[cfp_fp][60000]XNorm: 18.637491 +[cfp_fp][60000]Accuracy-Flip: 0.89843+-0.01690 +testing verification.. +(12000, 512) +infer time 14.041797 +[agedb_30][60000]XNorm: 21.774649 +[agedb_30][60000]Accuracy-Flip: 0.97100+-0.00696 +testing verification.. +(12000, 512) +infer time 12.773174 +[lfw][60000]XNorm: 21.725741 +[lfw][60000]Accuracy-Flip: 0.99650+-0.00337 +[60000]Accuracy-Highest: 0.99683 +INFO:root:Epoch[7] Batch [7380] Speed: 108.26 samples/sec acc=0.570703 +INFO:root:Epoch[7] Batch [7400] Speed: 662.95 samples/sec acc=0.553418 +INFO:root:Epoch[7] Batch [7420] Speed: 662.13 samples/sec acc=0.560059 +INFO:root:Epoch[7] Batch [7440] Speed: 661.59 samples/sec acc=0.558008 +INFO:root:Epoch[7] Batch [7460] Speed: 662.32 samples/sec acc=0.567969 +INFO:root:Epoch[7] Batch [7480] Speed: 662.22 samples/sec acc=0.562402 +INFO:root:Epoch[7] Batch [7500] Speed: 662.55 samples/sec acc=0.557324 +INFO:root:Epoch[7] Train-acc=0.556966 +INFO:root:Epoch[7] Time cost=6136.256 +call reset() +INFO:root:Epoch[8] Batch [20] Speed: 661.37 samples/sec acc=0.621280 +INFO:root:Epoch[8] Batch [40] Speed: 662.02 samples/sec acc=0.629395 +INFO:root:Epoch[8] Batch [60] Speed: 661.46 samples/sec acc=0.623437 +INFO:root:Epoch[8] Batch [80] Speed: 661.96 samples/sec acc=0.627734 +INFO:root:Epoch[8] Batch [100] Speed: 662.54 samples/sec acc=0.627930 +INFO:root:Epoch[8] Batch [120] Speed: 662.20 samples/sec acc=0.626172 +INFO:root:Epoch[8] Batch [140] Speed: 661.02 samples/sec acc=0.625195 +INFO:root:Epoch[8] Batch [160] Speed: 661.96 samples/sec acc=0.625391 +INFO:root:Epoch[8] Batch [180] Speed: 660.91 samples/sec acc=0.626172 +INFO:root:Epoch[8] Batch [200] Speed: 662.66 samples/sec acc=0.615039 +INFO:root:Epoch[8] Batch [220] Speed: 661.65 samples/sec acc=0.616016 +INFO:root:Epoch[8] Batch [240] Speed: 661.94 samples/sec acc=0.626855 +INFO:root:Epoch[8] Batch [260] Speed: 661.40 samples/sec acc=0.621191 +INFO:root:Epoch[8] Batch [280] Speed: 659.96 samples/sec acc=0.622852 +INFO:root:Epoch[8] Batch [300] Speed: 667.73 samples/sec acc=0.621680 +INFO:root:Epoch[8] Batch [320] Speed: 661.89 samples/sec acc=0.616992 +INFO:root:Epoch[8] Batch [340] Speed: 662.09 samples/sec acc=0.609668 +INFO:root:Epoch[8] Batch [360] Speed: 662.16 samples/sec acc=0.613379 +INFO:root:Epoch[8] Batch [380] Speed: 661.77 samples/sec acc=0.614258 +INFO:root:Epoch[8] Batch [400] Speed: 661.18 samples/sec acc=0.621484 +INFO:root:Epoch[8] Batch [420] Speed: 662.60 samples/sec acc=0.611621 +INFO:root:Epoch[8] Batch [440] Speed: 661.92 samples/sec acc=0.613477 +INFO:root:Epoch[8] Batch [460] Speed: 660.99 samples/sec acc=0.616113 +INFO:root:Epoch[8] Batch [480] Speed: 661.69 samples/sec acc=0.605176 +INFO:root:Epoch[8] Batch [500] Speed: 661.82 samples/sec acc=0.609961 +INFO:root:Epoch[8] Batch [520] Speed: 662.37 samples/sec acc=0.617090 +INFO:root:Epoch[8] Batch [540] Speed: 662.26 samples/sec acc=0.619043 +INFO:root:Epoch[8] Batch [560] Speed: 661.58 samples/sec acc=0.609277 +INFO:root:Epoch[8] Batch [580] Speed: 662.40 samples/sec acc=0.605762 +INFO:root:Epoch[8] Batch [600] Speed: 662.98 samples/sec acc=0.610156 +INFO:root:Epoch[8] Batch [620] Speed: 662.04 samples/sec acc=0.610840 +INFO:root:Epoch[8] Batch [640] Speed: 662.83 samples/sec acc=0.599805 +INFO:root:Epoch[8] Batch [660] Speed: 661.74 samples/sec acc=0.609473 +INFO:root:Epoch[8] Batch [680] Speed: 662.21 samples/sec acc=0.608789 +INFO:root:Epoch[8] Batch [700] Speed: 662.47 samples/sec acc=0.597949 +INFO:root:Epoch[8] Batch [720] Speed: 663.14 samples/sec acc=0.610059 +INFO:root:Epoch[8] Batch [740] Speed: 663.06 samples/sec acc=0.600684 +INFO:root:Epoch[8] Batch [760] Speed: 662.34 samples/sec acc=0.604980 +INFO:root:Epoch[8] Batch [780] Speed: 663.13 samples/sec acc=0.602734 +INFO:root:Epoch[8] Batch [800] Speed: 662.39 samples/sec acc=0.605176 +INFO:root:Epoch[8] Batch [820] Speed: 662.50 samples/sec acc=0.600586 +INFO:root:Epoch[8] Batch [840] Speed: 662.41 samples/sec acc=0.600781 +lr-batch-epoch: 0.01 847 8 +INFO:root:Epoch[8] Batch [860] Speed: 663.16 samples/sec acc=0.594824 +INFO:root:Epoch[8] Batch [880] Speed: 662.29 samples/sec acc=0.597852 +INFO:root:Epoch[8] Batch [900] Speed: 662.97 samples/sec acc=0.585156 +INFO:root:Epoch[8] Batch [920] Speed: 661.87 samples/sec acc=0.601953 +INFO:root:Epoch[8] Batch [940] Speed: 663.31 samples/sec acc=0.595996 +INFO:root:Epoch[8] Batch [960] Speed: 662.19 samples/sec acc=0.597266 +INFO:root:Epoch[8] Batch [980] Speed: 662.90 samples/sec acc=0.588867 +INFO:root:Epoch[8] Batch [1000] Speed: 662.16 samples/sec acc=0.592480 +INFO:root:Epoch[8] Batch [1020] Speed: 662.76 samples/sec acc=0.603320 +INFO:root:Epoch[8] Batch [1040] Speed: 662.69 samples/sec acc=0.598926 +INFO:root:Epoch[8] Batch [1060] Speed: 662.92 samples/sec acc=0.602148 +INFO:root:Epoch[8] Batch [1080] Speed: 662.64 samples/sec acc=0.590527 +INFO:root:Epoch[8] Batch [1100] Speed: 662.91 samples/sec acc=0.593164 +INFO:root:Epoch[8] Batch [1120] Speed: 662.30 samples/sec acc=0.594922 +INFO:root:Epoch[8] Batch [1140] Speed: 663.00 samples/sec acc=0.589258 +INFO:root:Epoch[8] Batch [1160] Speed: 664.21 samples/sec acc=0.601465 +INFO:root:Epoch[8] Batch [1180] Speed: 662.96 samples/sec acc=0.590625 +INFO:root:Epoch[8] Batch [1200] Speed: 663.02 samples/sec acc=0.591797 +INFO:root:Epoch[8] Batch [1220] Speed: 664.01 samples/sec acc=0.597559 +INFO:root:Epoch[8] Batch [1240] Speed: 663.73 samples/sec acc=0.592090 +INFO:root:Epoch[8] Batch [1260] Speed: 662.97 samples/sec acc=0.578809 +INFO:root:Epoch[8] Batch [1280] Speed: 662.84 samples/sec acc=0.587598 +INFO:root:Epoch[8] Batch [1300] Speed: 662.32 samples/sec acc=0.595215 +INFO:root:Epoch[8] Batch [1320] Speed: 662.54 samples/sec acc=0.589355 +INFO:root:Epoch[8] Batch [1340] Speed: 663.29 samples/sec acc=0.587793 +INFO:root:Epoch[8] Batch [1360] Speed: 662.83 samples/sec acc=0.585059 +INFO:root:Epoch[8] Batch [1380] Speed: 662.78 samples/sec acc=0.585840 +INFO:root:Epoch[8] Batch [1400] Speed: 662.38 samples/sec acc=0.596289 +INFO:root:Epoch[8] Batch [1420] Speed: 663.13 samples/sec acc=0.583789 +INFO:root:Epoch[8] Batch [1440] Speed: 661.78 samples/sec acc=0.577637 +INFO:root:Epoch[8] Batch [1460] Speed: 663.16 samples/sec acc=0.585645 +INFO:root:Epoch[8] Batch [1480] Speed: 662.54 samples/sec acc=0.586328 +INFO:root:Epoch[8] Batch [1500] Speed: 662.35 samples/sec acc=0.585742 +INFO:root:Epoch[8] Batch [1520] Speed: 664.16 samples/sec acc=0.583496 +INFO:root:Epoch[8] Batch [1540] Speed: 670.63 samples/sec acc=0.575879 +INFO:root:Epoch[8] Batch [1560] Speed: 663.11 samples/sec acc=0.574316 +INFO:root:Epoch[8] Batch [1580] Speed: 662.89 samples/sec acc=0.584375 +INFO:root:Epoch[8] Batch [1600] Speed: 662.28 samples/sec acc=0.587109 +INFO:root:Epoch[8] Batch [1620] Speed: 661.61 samples/sec acc=0.578223 +INFO:root:Epoch[8] Batch [1640] Speed: 662.98 samples/sec acc=0.595020 +INFO:root:Epoch[8] Batch [1660] Speed: 661.34 samples/sec acc=0.584961 +INFO:root:Epoch[8] Batch [1680] Speed: 663.11 samples/sec acc=0.571973 +INFO:root:Epoch[8] Batch [1700] Speed: 662.06 samples/sec acc=0.579004 +INFO:root:Epoch[8] Batch [1720] Speed: 662.32 samples/sec acc=0.569336 +INFO:root:Epoch[8] Batch [1740] Speed: 661.97 samples/sec acc=0.571094 +INFO:root:Epoch[8] Batch [1760] Speed: 662.63 samples/sec acc=0.581738 +INFO:root:Epoch[8] Batch [1780] Speed: 663.27 samples/sec acc=0.579297 +INFO:root:Epoch[8] Batch [1800] Speed: 662.86 samples/sec acc=0.573242 +INFO:root:Epoch[8] Batch [1820] Speed: 662.43 samples/sec acc=0.574902 +INFO:root:Epoch[8] Batch [1840] Speed: 662.56 samples/sec acc=0.572949 +[62000][MARGIN]0.773695,0.380082 +lr-batch-epoch: 0.01 1847 8 +testing verification.. +(14000, 512) +infer time 18.252385 +[cfp_ff][62000]XNorm: 22.598683 +[cfp_ff][62000]Accuracy-Flip: 0.99657+-0.00287 +testing verification.. +(14000, 512) +infer time 19.152856 +[cfp_fp][62000]XNorm: 19.481398 +[cfp_fp][62000]Accuracy-Flip: 0.91057+-0.01518 +testing verification.. +(12000, 512) +infer time 14.422528 +[agedb_30][62000]XNorm: 22.709066 +[agedb_30][62000]Accuracy-Flip: 0.96800+-0.00694 +testing verification.. +(12000, 512) +infer time 13.125019 +[lfw][62000]XNorm: 22.687945 +[lfw][62000]Accuracy-Flip: 0.99650+-0.00273 +[62000]Accuracy-Highest: 0.99683 +INFO:root:Epoch[8] Batch [1860] Speed: 100.11 samples/sec acc=0.576562 +INFO:root:Epoch[8] Batch [1880] Speed: 673.88 samples/sec acc=0.581543 +INFO:root:Epoch[8] Batch [1900] Speed: 661.95 samples/sec acc=0.572363 +INFO:root:Epoch[8] Batch [1920] Speed: 661.93 samples/sec acc=0.561230 +INFO:root:Epoch[8] Batch [1940] Speed: 661.48 samples/sec acc=0.580273 +INFO:root:Epoch[8] Batch [1960] Speed: 662.28 samples/sec acc=0.576660 +INFO:root:Epoch[8] Batch [1980] Speed: 660.65 samples/sec acc=0.574902 +INFO:root:Epoch[8] Batch [2000] Speed: 662.51 samples/sec acc=0.570410 +INFO:root:Epoch[8] Batch [2020] Speed: 662.49 samples/sec acc=0.567285 +INFO:root:Epoch[8] Batch [2040] Speed: 662.99 samples/sec acc=0.565137 +INFO:root:Epoch[8] Batch [2060] Speed: 662.68 samples/sec acc=0.568945 +INFO:root:Epoch[8] Batch [2080] Speed: 662.68 samples/sec acc=0.571094 +INFO:root:Epoch[8] Batch [2100] Speed: 662.51 samples/sec acc=0.577734 +INFO:root:Epoch[8] Batch [2120] Speed: 662.47 samples/sec acc=0.580957 +INFO:root:Epoch[8] Batch [2140] Speed: 662.47 samples/sec acc=0.575098 +INFO:root:Epoch[8] Batch [2160] Speed: 663.03 samples/sec acc=0.573828 +INFO:root:Epoch[8] Batch [2180] Speed: 662.67 samples/sec acc=0.573242 +INFO:root:Epoch[8] Batch [2200] Speed: 662.66 samples/sec acc=0.570898 +INFO:root:Epoch[8] Batch [2220] Speed: 662.59 samples/sec acc=0.563965 +INFO:root:Epoch[8] Batch [2240] Speed: 662.75 samples/sec acc=0.574512 +INFO:root:Epoch[8] Batch [2260] Speed: 661.11 samples/sec acc=0.567676 +INFO:root:Epoch[8] Batch [2280] Speed: 661.77 samples/sec acc=0.556055 +INFO:root:Epoch[8] Batch [2300] Speed: 672.93 samples/sec acc=0.571582 +INFO:root:Epoch[8] Batch [2320] Speed: 661.91 samples/sec acc=0.576953 +INFO:root:Epoch[8] Batch [2340] Speed: 662.78 samples/sec acc=0.572363 +INFO:root:Epoch[8] Batch [2360] Speed: 662.40 samples/sec acc=0.573633 +INFO:root:Epoch[8] Batch [2380] Speed: 662.78 samples/sec acc=0.567480 +INFO:root:Epoch[8] Batch [2400] Speed: 662.30 samples/sec acc=0.563281 +INFO:root:Epoch[8] Batch [2420] Speed: 662.82 samples/sec acc=0.567578 +INFO:root:Epoch[8] Batch [2440] Speed: 662.74 samples/sec acc=0.568359 +INFO:root:Epoch[8] Batch [2460] Speed: 662.31 samples/sec acc=0.560937 +INFO:root:Epoch[8] Batch [2480] Speed: 663.23 samples/sec acc=0.562012 +INFO:root:Epoch[8] Batch [2500] Speed: 662.24 samples/sec acc=0.570215 +INFO:root:Epoch[8] Batch [2520] Speed: 662.91 samples/sec acc=0.574805 +INFO:root:Epoch[8] Batch [2540] Speed: 663.08 samples/sec acc=0.569238 +INFO:root:Epoch[8] Batch [2560] Speed: 662.90 samples/sec acc=0.562305 +INFO:root:Epoch[8] Batch [2580] Speed: 662.96 samples/sec acc=0.570508 +INFO:root:Epoch[8] Batch [2600] Speed: 662.28 samples/sec acc=0.564355 +INFO:root:Epoch[8] Batch [2620] Speed: 663.15 samples/sec acc=0.554492 +INFO:root:Epoch[8] Batch [2640] Speed: 662.47 samples/sec acc=0.563184 +INFO:root:Epoch[8] Batch [2660] Speed: 662.35 samples/sec acc=0.563574 +INFO:root:Epoch[8] Batch [2680] Speed: 663.41 samples/sec acc=0.559961 +INFO:root:Epoch[8] Batch [2700] Speed: 662.38 samples/sec acc=0.572852 +INFO:root:Epoch[8] Batch [2720] Speed: 662.53 samples/sec acc=0.557715 +INFO:root:Epoch[8] Batch [2740] Speed: 663.01 samples/sec acc=0.561914 +INFO:root:Epoch[8] Batch [2760] Speed: 661.74 samples/sec acc=0.556641 +INFO:root:Epoch[8] Batch [2780] Speed: 662.34 samples/sec acc=0.559082 +INFO:root:Epoch[8] Batch [2800] Speed: 661.84 samples/sec acc=0.560840 +INFO:root:Epoch[8] Batch [2820] Speed: 662.49 samples/sec acc=0.568066 +INFO:root:Epoch[8] Batch [2840] Speed: 662.17 samples/sec acc=0.569922 +lr-batch-epoch: 0.01 2847 8 +INFO:root:Epoch[8] Batch [2860] Speed: 663.15 samples/sec acc=0.563086 +INFO:root:Epoch[8] Batch [2880] Speed: 663.10 samples/sec acc=0.561621 +INFO:root:Epoch[8] Batch [2900] Speed: 663.82 samples/sec acc=0.566113 +INFO:root:Epoch[8] Batch [2920] Speed: 663.19 samples/sec acc=0.557715 +INFO:root:Epoch[8] Batch [2940] Speed: 663.51 samples/sec acc=0.557129 +INFO:root:Epoch[8] Batch [2960] Speed: 663.43 samples/sec acc=0.553809 +INFO:root:Epoch[8] Batch [2980] Speed: 662.56 samples/sec acc=0.570410 +INFO:root:Epoch[8] Batch [3000] Speed: 662.38 samples/sec acc=0.566406 +INFO:root:Epoch[8] Batch [3020] Speed: 662.95 samples/sec acc=0.562109 +INFO:root:Epoch[8] Batch [3040] Speed: 662.20 samples/sec acc=0.550391 +INFO:root:Epoch[8] Batch [3060] Speed: 662.24 samples/sec acc=0.557813 +INFO:root:Epoch[8] Batch [3080] Speed: 665.51 samples/sec acc=0.556152 +INFO:root:Epoch[8] Batch [3100] Speed: 662.16 samples/sec acc=0.546387 +INFO:root:Epoch[8] Batch [3120] Speed: 663.27 samples/sec acc=0.550098 +INFO:root:Epoch[8] Batch [3140] Speed: 662.79 samples/sec acc=0.554492 +INFO:root:Epoch[8] Batch [3160] Speed: 662.66 samples/sec acc=0.560449 +INFO:root:Epoch[8] Batch [3180] Speed: 662.74 samples/sec acc=0.551758 +INFO:root:Epoch[8] Batch [3200] Speed: 662.66 samples/sec acc=0.550195 +INFO:root:Epoch[8] Batch [3220] Speed: 662.52 samples/sec acc=0.549121 +INFO:root:Epoch[8] Batch [3240] Speed: 662.36 samples/sec acc=0.559766 +INFO:root:Epoch[8] Batch [3260] Speed: 662.29 samples/sec acc=0.565039 +INFO:root:Epoch[8] Batch [3280] Speed: 663.23 samples/sec acc=0.554004 +INFO:root:Epoch[8] Batch [3300] Speed: 662.22 samples/sec acc=0.564160 +INFO:root:Epoch[8] Batch [3320] Speed: 663.11 samples/sec acc=0.557129 +INFO:root:Epoch[8] Batch [3340] Speed: 662.52 samples/sec acc=0.545703 +INFO:root:Epoch[8] Batch [3360] Speed: 662.15 samples/sec acc=0.551855 +INFO:root:Epoch[8] Batch [3380] Speed: 662.77 samples/sec acc=0.557910 +INFO:root:Epoch[8] Batch [3400] Speed: 662.50 samples/sec acc=0.558789 +INFO:root:Epoch[8] Batch [3420] Speed: 662.37 samples/sec acc=0.553320 +INFO:root:Epoch[8] Batch [3440] Speed: 662.41 samples/sec acc=0.549707 +INFO:root:Epoch[8] Batch [3460] Speed: 662.75 samples/sec acc=0.552344 +INFO:root:Epoch[8] Batch [3480] Speed: 661.67 samples/sec acc=0.555859 +INFO:root:Epoch[8] Batch [3500] Speed: 663.11 samples/sec acc=0.550195 +INFO:root:Epoch[8] Batch [3520] Speed: 662.13 samples/sec acc=0.551270 +INFO:root:Epoch[8] Batch [3540] Speed: 662.49 samples/sec acc=0.548047 +INFO:root:Epoch[8] Batch [3560] Speed: 662.86 samples/sec acc=0.542578 +INFO:root:Epoch[8] Batch [3580] Speed: 662.68 samples/sec acc=0.559082 +INFO:root:Epoch[8] Batch [3600] Speed: 662.54 samples/sec acc=0.558594 +INFO:root:Epoch[8] Batch [3620] Speed: 662.55 samples/sec acc=0.550000 +INFO:root:Epoch[8] Batch [3640] Speed: 662.30 samples/sec acc=0.549414 +INFO:root:Epoch[8] Batch [3660] Speed: 662.70 samples/sec acc=0.542285 +INFO:root:Epoch[8] Batch [3680] Speed: 662.84 samples/sec acc=0.542969 +INFO:root:Epoch[8] Batch [3700] Speed: 662.94 samples/sec acc=0.546387 +INFO:root:Epoch[8] Batch [3720] Speed: 663.06 samples/sec acc=0.555078 +INFO:root:Epoch[8] Batch [3740] Speed: 662.32 samples/sec acc=0.547852 +INFO:root:Epoch[8] Batch [3760] Speed: 662.77 samples/sec acc=0.545020 +INFO:root:Epoch[8] Batch [3780] Speed: 662.96 samples/sec acc=0.547754 +INFO:root:Epoch[8] Batch [3800] Speed: 662.71 samples/sec acc=0.554980 +INFO:root:Epoch[8] Batch [3820] Speed: 662.42 samples/sec acc=0.553418 +INFO:root:Epoch[8] Batch [3840] Speed: 662.83 samples/sec acc=0.547363 +[64000][MARGIN]0.768907,0.373218 +lr-batch-epoch: 0.01 3847 8 +testing verification.. +(14000, 512) +infer time 18.847999 +[cfp_ff][64000]XNorm: 22.131319 +[cfp_ff][64000]Accuracy-Flip: 0.99643+-0.00308 +testing verification.. +(14000, 512) +infer time 15.98134 +[cfp_fp][64000]XNorm: 19.149032 +[cfp_fp][64000]Accuracy-Flip: 0.90443+-0.01668 +testing verification.. +(12000, 512) +infer time 14.032172 +[agedb_30][64000]XNorm: 22.305228 +[agedb_30][64000]Accuracy-Flip: 0.97133+-0.00552 +testing verification.. +(12000, 512) +infer time 13.825691 +[lfw][64000]XNorm: 22.346278 +[lfw][64000]Accuracy-Flip: 0.99700+-0.00256 +saving 32 +INFO:root:Saved checkpoint to "../model-r50-am-lfw/model-0032.params" +[64000]Accuracy-Highest: 0.99700 +INFO:root:Epoch[8] Batch [3860] Speed: 99.33 samples/sec acc=0.552930 +INFO:root:Epoch[8] Batch [3880] Speed: 662.10 samples/sec acc=0.553516 +INFO:root:Epoch[8] Batch [3900] Speed: 659.01 samples/sec acc=0.550586 +INFO:root:Epoch[8] Batch [3920] Speed: 682.55 samples/sec acc=0.545410 +INFO:root:Epoch[8] Batch [3940] Speed: 661.49 samples/sec acc=0.548145 +INFO:root:Epoch[8] Batch [3960] Speed: 662.42 samples/sec acc=0.547852 +INFO:root:Epoch[8] Batch [3980] Speed: 660.63 samples/sec acc=0.547852 +INFO:root:Epoch[8] Batch [4000] Speed: 661.70 samples/sec acc=0.543945 +INFO:root:Epoch[8] Batch [4020] Speed: 662.08 samples/sec acc=0.543359 +INFO:root:Epoch[8] Batch [4040] Speed: 662.71 samples/sec acc=0.547754 +INFO:root:Epoch[8] Batch [4060] Speed: 661.52 samples/sec acc=0.537500 +INFO:root:Epoch[8] Batch [4080] Speed: 662.18 samples/sec acc=0.538086 +INFO:root:Epoch[8] Batch [4100] Speed: 661.93 samples/sec acc=0.541699 +INFO:root:Epoch[8] Batch [4120] Speed: 661.88 samples/sec acc=0.553027 +INFO:root:Epoch[8] Batch [4140] Speed: 662.36 samples/sec acc=0.540234 +INFO:root:Epoch[8] Batch [4160] Speed: 662.05 samples/sec acc=0.545508 +INFO:root:Epoch[8] Batch [4180] Speed: 662.81 samples/sec acc=0.545117 +INFO:root:Epoch[8] Batch [4200] Speed: 662.65 samples/sec acc=0.541406 +INFO:root:Epoch[8] Batch [4220] Speed: 662.79 samples/sec acc=0.545020 +INFO:root:Epoch[8] Batch [4240] Speed: 662.36 samples/sec acc=0.550293 +INFO:root:Epoch[8] Batch [4260] Speed: 662.43 samples/sec acc=0.550488 +INFO:root:Epoch[8] Batch [4280] Speed: 663.45 samples/sec acc=0.550098 +INFO:root:Epoch[8] Batch [4300] Speed: 662.83 samples/sec acc=0.543164 +INFO:root:Epoch[8] Batch [4320] Speed: 662.35 samples/sec acc=0.544141 +INFO:root:Epoch[8] Batch [4340] Speed: 662.80 samples/sec acc=0.539453 +INFO:root:Epoch[8] Batch [4360] Speed: 663.19 samples/sec acc=0.544238 +INFO:root:Epoch[8] Batch [4380] Speed: 662.74 samples/sec acc=0.539551 +INFO:root:Epoch[8] Batch [4400] Speed: 662.32 samples/sec acc=0.541113 +INFO:root:Epoch[8] Batch [4420] Speed: 663.58 samples/sec acc=0.541797 +INFO:root:Epoch[8] Batch [4440] Speed: 662.52 samples/sec acc=0.544727 +INFO:root:Epoch[8] Batch [4460] Speed: 663.27 samples/sec acc=0.541309 +INFO:root:Epoch[8] Batch [4480] Speed: 662.25 samples/sec acc=0.556055 +INFO:root:Epoch[8] Batch [4500] Speed: 662.99 samples/sec acc=0.544141 +INFO:root:Epoch[8] Batch [4520] Speed: 661.80 samples/sec acc=0.541406 +INFO:root:Epoch[8] Batch [4540] Speed: 662.64 samples/sec acc=0.546191 +INFO:root:Epoch[8] Batch [4560] Speed: 663.28 samples/sec acc=0.545605 +INFO:root:Epoch[8] Batch [4580] Speed: 662.77 samples/sec acc=0.538379 +INFO:root:Epoch[8] Batch [4600] Speed: 663.23 samples/sec acc=0.542090 +INFO:root:Epoch[8] Batch [4620] Speed: 662.88 samples/sec acc=0.534473 +INFO:root:Epoch[8] Batch [4640] Speed: 662.99 samples/sec acc=0.541016 +INFO:root:Epoch[8] Batch [4660] Speed: 663.14 samples/sec acc=0.545117 +INFO:root:Epoch[8] Batch [4680] Speed: 663.12 samples/sec acc=0.539062 +INFO:root:Epoch[8] Batch [4700] Speed: 660.96 samples/sec acc=0.542188 +INFO:root:Epoch[8] Batch [4720] Speed: 675.86 samples/sec acc=0.533203 +INFO:root:Epoch[8] Batch [4740] Speed: 663.70 samples/sec acc=0.531543 +INFO:root:Epoch[8] Batch [4760] Speed: 662.14 samples/sec acc=0.534863 +INFO:root:Epoch[8] Batch [4780] Speed: 662.59 samples/sec acc=0.532520 +INFO:root:Epoch[8] Batch [4800] Speed: 662.37 samples/sec acc=0.538672 +INFO:root:Epoch[8] Batch [4820] Speed: 662.58 samples/sec acc=0.544238 +INFO:root:Epoch[8] Batch [4840] Speed: 662.62 samples/sec acc=0.537891 +lr-batch-epoch: 0.01 4847 8 +INFO:root:Epoch[8] Batch [4860] Speed: 662.82 samples/sec acc=0.549512 +INFO:root:Epoch[8] Batch [4880] Speed: 662.81 samples/sec acc=0.532617 +INFO:root:Epoch[8] Batch [4900] Speed: 662.83 samples/sec acc=0.544141 +INFO:root:Epoch[8] Batch [4920] Speed: 662.27 samples/sec acc=0.538574 +INFO:root:Epoch[8] Batch [4940] Speed: 662.30 samples/sec acc=0.539844 +INFO:root:Epoch[8] Batch [4960] Speed: 662.64 samples/sec acc=0.532227 +INFO:root:Epoch[8] Batch [4980] Speed: 662.82 samples/sec acc=0.545898 +INFO:root:Epoch[8] Batch [5000] Speed: 662.74 samples/sec acc=0.535254 +INFO:root:Epoch[8] Batch [5020] Speed: 663.17 samples/sec acc=0.527930 +INFO:root:Epoch[8] Batch [5040] Speed: 662.83 samples/sec acc=0.531445 +INFO:root:Epoch[8] Batch [5060] Speed: 662.55 samples/sec acc=0.535840 +INFO:root:Epoch[8] Batch [5080] Speed: 662.17 samples/sec acc=0.542285 +INFO:root:Epoch[8] Batch [5100] Speed: 662.99 samples/sec acc=0.542773 +INFO:root:Epoch[8] Batch [5120] Speed: 662.50 samples/sec acc=0.535547 +INFO:root:Epoch[8] Batch [5140] Speed: 661.90 samples/sec acc=0.539551 +INFO:root:Epoch[8] Batch [5160] Speed: 662.93 samples/sec acc=0.530078 +INFO:root:Epoch[8] Batch [5180] Speed: 662.14 samples/sec acc=0.546875 +INFO:root:Epoch[8] Batch [5200] Speed: 663.12 samples/sec acc=0.540430 +INFO:root:Epoch[8] Batch [5220] Speed: 662.71 samples/sec acc=0.536328 +INFO:root:Epoch[8] Batch [5240] Speed: 661.76 samples/sec acc=0.531738 +INFO:root:Epoch[8] Batch [5260] Speed: 662.63 samples/sec acc=0.536426 +INFO:root:Epoch[8] Batch [5280] Speed: 662.88 samples/sec acc=0.532227 +INFO:root:Epoch[8] Batch [5300] Speed: 662.28 samples/sec acc=0.529687 +INFO:root:Epoch[8] Batch [5320] Speed: 661.40 samples/sec acc=0.534082 +INFO:root:Epoch[8] Batch [5340] Speed: 662.14 samples/sec acc=0.538574 +INFO:root:Epoch[8] Batch [5360] Speed: 662.35 samples/sec acc=0.536719 +INFO:root:Epoch[8] Batch [5380] Speed: 662.62 samples/sec acc=0.542578 +INFO:root:Epoch[8] Batch [5400] Speed: 662.29 samples/sec acc=0.531641 +INFO:root:Epoch[8] Batch [5420] Speed: 662.81 samples/sec acc=0.540137 +INFO:root:Epoch[8] Batch [5440] Speed: 661.97 samples/sec acc=0.546289 +INFO:root:Epoch[8] Batch [5460] Speed: 663.01 samples/sec acc=0.530566 +INFO:root:Epoch[8] Batch [5480] Speed: 663.19 samples/sec acc=0.536816 +INFO:root:Epoch[8] Batch [5500] Speed: 673.49 samples/sec acc=0.525293 +INFO:root:Epoch[8] Batch [5520] Speed: 663.15 samples/sec acc=0.538477 +INFO:root:Epoch[8] Batch [5540] Speed: 662.00 samples/sec acc=0.537598 +INFO:root:Epoch[8] Batch [5560] Speed: 663.11 samples/sec acc=0.536035 +INFO:root:Epoch[8] Batch [5580] Speed: 662.38 samples/sec acc=0.531641 +INFO:root:Epoch[8] Batch [5600] Speed: 662.83 samples/sec acc=0.532422 +INFO:root:Epoch[8] Batch [5620] Speed: 662.47 samples/sec acc=0.532422 +INFO:root:Epoch[8] Batch [5640] Speed: 662.81 samples/sec acc=0.530078 +INFO:root:Epoch[8] Batch [5660] Speed: 661.91 samples/sec acc=0.537793 +INFO:root:Epoch[8] Batch [5680] Speed: 662.42 samples/sec acc=0.529395 +INFO:root:Epoch[8] Batch [5700] Speed: 662.99 samples/sec acc=0.529785 +INFO:root:Epoch[8] Batch [5720] Speed: 663.23 samples/sec acc=0.529102 +INFO:root:Epoch[8] Batch [5740] Speed: 662.18 samples/sec acc=0.536914 +INFO:root:Epoch[8] Batch [5760] Speed: 662.67 samples/sec acc=0.540430 +INFO:root:Epoch[8] Batch [5780] Speed: 662.91 samples/sec acc=0.526855 +INFO:root:Epoch[8] Batch [5800] Speed: 663.34 samples/sec acc=0.536914 +INFO:root:Epoch[8] Batch [5820] Speed: 661.92 samples/sec acc=0.532031 +INFO:root:Epoch[8] Batch [5840] Speed: 662.36 samples/sec acc=0.528125 +[66000][MARGIN]0.766712,0.370095 +lr-batch-epoch: 0.01 5847 8 +testing verification.. +(14000, 512) +infer time 20.762311 +[cfp_ff][66000]XNorm: 22.646185 +[cfp_ff][66000]Accuracy-Flip: 0.99714+-0.00313 +testing verification.. +(14000, 512) +infer time 21.247468 +[cfp_fp][66000]XNorm: 19.670236 +[cfp_fp][66000]Accuracy-Flip: 0.90014+-0.01603 +testing verification.. +(12000, 512) +infer time 13.983546 +[agedb_30][66000]XNorm: 22.844877 +[agedb_30][66000]Accuracy-Flip: 0.97333+-0.00624 +testing verification.. +(12000, 512) +infer time 15.502448 +[lfw][66000]XNorm: 22.865621 +[lfw][66000]Accuracy-Flip: 0.99717+-0.00236 +saving 33 +INFO:root:Saved checkpoint to "../model-r50-am-lfw/model-0033.params" +[66000]Accuracy-Highest: 0.99717 +INFO:root:Epoch[8] Batch [5860] Speed: 90.48 samples/sec acc=0.532617 +INFO:root:Epoch[8] Batch [5880] Speed: 661.43 samples/sec acc=0.529687 +INFO:root:Epoch[8] Batch [5900] Speed: 662.62 samples/sec acc=0.537305 +INFO:root:Epoch[8] Batch [5920] Speed: 661.57 samples/sec acc=0.534375 +INFO:root:Epoch[8] Batch [5940] Speed: 662.01 samples/sec acc=0.528809 +INFO:root:Epoch[8] Batch [5960] Speed: 661.92 samples/sec acc=0.534961 +INFO:root:Epoch[8] Batch [5980] Speed: 662.58 samples/sec acc=0.530078 +INFO:root:Epoch[8] Batch [6000] Speed: 662.10 samples/sec acc=0.531250 +INFO:root:Epoch[8] Batch [6020] Speed: 662.08 samples/sec acc=0.529004 +INFO:root:Epoch[8] Batch [6040] Speed: 663.01 samples/sec acc=0.535742 +INFO:root:Epoch[8] Batch [6060] Speed: 663.00 samples/sec acc=0.515430 +INFO:root:Epoch[8] Batch [6080] Speed: 662.07 samples/sec acc=0.534473 +INFO:root:Epoch[8] Batch [6100] Speed: 662.07 samples/sec acc=0.522656 +INFO:root:Epoch[8] Batch [6120] Speed: 663.23 samples/sec acc=0.533301 +INFO:root:Epoch[8] Batch [6140] Speed: 662.00 samples/sec acc=0.530078 +INFO:root:Epoch[8] Batch [6160] Speed: 662.43 samples/sec acc=0.530957 +INFO:root:Epoch[8] Batch [6180] Speed: 662.49 samples/sec acc=0.532031 +INFO:root:Epoch[8] Batch [6200] Speed: 680.07 samples/sec acc=0.522949 +INFO:root:Epoch[8] Batch [6220] Speed: 662.70 samples/sec acc=0.531738 +INFO:root:Epoch[8] Batch [6240] Speed: 661.72 samples/sec acc=0.532715 +INFO:root:Epoch[8] Batch [6260] Speed: 662.62 samples/sec acc=0.529590 +INFO:root:Epoch[8] Batch [6280] Speed: 662.80 samples/sec acc=0.532031 +INFO:root:Epoch[8] Batch [6300] Speed: 662.60 samples/sec acc=0.527051 +INFO:root:Epoch[8] Batch [6320] Speed: 662.27 samples/sec acc=0.528711 +INFO:root:Epoch[8] Batch [6340] Speed: 661.90 samples/sec acc=0.529297 +INFO:root:Epoch[8] Batch [6360] Speed: 663.17 samples/sec acc=0.526172 +INFO:root:Epoch[8] Batch [6380] Speed: 663.73 samples/sec acc=0.530762 +INFO:root:Epoch[8] Batch [6400] Speed: 663.35 samples/sec acc=0.521973 +INFO:root:Epoch[8] Batch [6420] Speed: 662.75 samples/sec acc=0.544727 +INFO:root:Epoch[8] Batch [6440] Speed: 663.62 samples/sec acc=0.525586 +INFO:root:Epoch[8] Batch [6460] Speed: 663.89 samples/sec acc=0.528320 +INFO:root:Epoch[8] Batch [6480] Speed: 662.90 samples/sec acc=0.521484 +INFO:root:Epoch[8] Batch [6500] Speed: 662.64 samples/sec acc=0.518457 +INFO:root:Epoch[8] Batch [6520] Speed: 663.21 samples/sec acc=0.528125 +INFO:root:Epoch[8] Batch [6540] Speed: 663.04 samples/sec acc=0.530371 +INFO:root:Epoch[8] Batch [6560] Speed: 662.59 samples/sec acc=0.532617 +INFO:root:Epoch[8] Batch [6580] Speed: 663.02 samples/sec acc=0.528223 +INFO:root:Epoch[8] Batch [6600] Speed: 662.53 samples/sec acc=0.529687 +INFO:root:Epoch[8] Batch [6620] Speed: 662.09 samples/sec acc=0.522266 +INFO:root:Epoch[8] Batch [6640] Speed: 663.10 samples/sec acc=0.520508 +INFO:root:Epoch[8] Batch [6660] Speed: 662.85 samples/sec acc=0.530371 +INFO:root:Epoch[8] Batch [6680] Speed: 662.07 samples/sec acc=0.528418 +INFO:root:Epoch[8] Batch [6700] Speed: 663.03 samples/sec acc=0.528613 +INFO:root:Epoch[8] Batch [6720] Speed: 662.89 samples/sec acc=0.527539 +INFO:root:Epoch[8] Batch [6740] Speed: 666.24 samples/sec acc=0.521777 +INFO:root:Epoch[8] Batch [6760] Speed: 663.10 samples/sec acc=0.531738 +INFO:root:Epoch[8] Batch [6780] Speed: 662.72 samples/sec acc=0.527246 +INFO:root:Epoch[8] Batch [6800] Speed: 662.72 samples/sec acc=0.523242 +INFO:root:Epoch[8] Batch [6820] Speed: 662.92 samples/sec acc=0.516113 +INFO:root:Epoch[8] Batch [6840] Speed: 662.77 samples/sec acc=0.525000 +lr-batch-epoch: 0.01 6847 8 +INFO:root:Epoch[8] Batch [6860] Speed: 663.16 samples/sec acc=0.521680 +INFO:root:Epoch[8] Batch [6880] Speed: 662.46 samples/sec acc=0.527637 +INFO:root:Epoch[8] Batch [6900] Speed: 663.05 samples/sec acc=0.520508 +INFO:root:Epoch[8] Batch [6920] Speed: 662.62 samples/sec acc=0.520410 +INFO:root:Epoch[8] Batch [6940] Speed: 662.76 samples/sec acc=0.521484 +INFO:root:Epoch[8] Batch [6960] Speed: 667.88 samples/sec acc=0.521289 +INFO:root:Epoch[8] Batch [6980] Speed: 675.75 samples/sec acc=0.525586 +INFO:root:Epoch[8] Batch [7000] Speed: 662.07 samples/sec acc=0.524512 +INFO:root:Epoch[8] Batch [7020] Speed: 663.91 samples/sec acc=0.523535 +INFO:root:Epoch[8] Batch [7040] Speed: 662.99 samples/sec acc=0.529297 +INFO:root:Epoch[8] Batch [7060] Speed: 662.86 samples/sec acc=0.515039 +INFO:root:Epoch[8] Batch [7080] Speed: 662.33 samples/sec acc=0.523828 +INFO:root:Epoch[8] Batch [7100] Speed: 662.64 samples/sec acc=0.524512 +INFO:root:Epoch[8] Batch [7120] Speed: 663.30 samples/sec acc=0.527051 +INFO:root:Epoch[8] Batch [7140] Speed: 662.98 samples/sec acc=0.524414 +INFO:root:Epoch[8] Batch [7160] Speed: 663.00 samples/sec acc=0.526172 +INFO:root:Epoch[8] Batch [7180] Speed: 662.78 samples/sec acc=0.525977 +INFO:root:Epoch[8] Batch [7200] Speed: 662.91 samples/sec acc=0.523047 +INFO:root:Epoch[8] Batch [7220] Speed: 663.00 samples/sec acc=0.527051 +INFO:root:Epoch[8] Batch [7240] Speed: 662.71 samples/sec acc=0.521094 +INFO:root:Epoch[8] Batch [7260] Speed: 662.93 samples/sec acc=0.521387 +INFO:root:Epoch[8] Batch [7280] Speed: 662.24 samples/sec acc=0.523438 +INFO:root:Epoch[8] Batch [7300] Speed: 663.24 samples/sec acc=0.503223 +INFO:root:Epoch[8] Batch [7320] Speed: 662.66 samples/sec acc=0.527344 +INFO:root:Epoch[8] Batch [7340] Speed: 662.69 samples/sec acc=0.526074 +INFO:root:Epoch[8] Batch [7360] Speed: 662.47 samples/sec acc=0.508691 +INFO:root:Epoch[8] Batch [7380] Speed: 662.35 samples/sec acc=0.522559 +INFO:root:Epoch[8] Batch [7400] Speed: 662.73 samples/sec acc=0.524512 +INFO:root:Epoch[8] Batch [7420] Speed: 662.89 samples/sec acc=0.523242 +INFO:root:Epoch[8] Batch [7440] Speed: 662.68 samples/sec acc=0.531934 +INFO:root:Epoch[8] Batch [7460] Speed: 662.82 samples/sec acc=0.522070 +INFO:root:Epoch[8] Batch [7480] Speed: 663.24 samples/sec acc=0.530762 +INFO:root:Epoch[8] Batch [7500] Speed: 663.06 samples/sec acc=0.514941 +INFO:root:Epoch[8] Train-acc=0.515516 +INFO:root:Epoch[8] Time cost=6080.978 +call reset() +INFO:root:Epoch[9] Batch [20] Speed: 656.42 samples/sec acc=0.588170 +INFO:root:Epoch[9] Batch [40] Speed: 662.05 samples/sec acc=0.585254 +INFO:root:Epoch[9] Batch [60] Speed: 662.01 samples/sec acc=0.588867 +INFO:root:Epoch[9] Batch [80] Speed: 662.56 samples/sec acc=0.577246 +INFO:root:Epoch[9] Batch [100] Speed: 662.69 samples/sec acc=0.593164 +INFO:root:Epoch[9] Batch [120] Speed: 662.88 samples/sec acc=0.586523 +INFO:root:Epoch[9] Batch [140] Speed: 662.44 samples/sec acc=0.588965 +INFO:root:Epoch[9] Batch [160] Speed: 663.17 samples/sec acc=0.581152 +INFO:root:Epoch[9] Batch [180] Speed: 662.39 samples/sec acc=0.579102 +INFO:root:Epoch[9] Batch [200] Speed: 666.46 samples/sec acc=0.578809 +INFO:root:Epoch[9] Batch [220] Speed: 663.15 samples/sec acc=0.585059 +INFO:root:Epoch[9] Batch [240] Speed: 662.37 samples/sec acc=0.586133 +INFO:root:Epoch[9] Batch [260] Speed: 662.37 samples/sec acc=0.582129 +INFO:root:Epoch[9] Batch [280] Speed: 662.80 samples/sec acc=0.583789 +INFO:root:Epoch[9] Batch [300] Speed: 662.80 samples/sec acc=0.578223 +INFO:root:Epoch[9] Batch [320] Speed: 662.52 samples/sec acc=0.567773 +[68000][MARGIN]0.767312,0.369418 +lr-batch-epoch: 0.01 328 9 +testing verification.. +(14000, 512) +infer time 17.877052 +[cfp_ff][68000]XNorm: 21.374485 +[cfp_ff][68000]Accuracy-Flip: 0.99643+-0.00287 +testing verification.. +(14000, 512) +infer time 16.813819 +[cfp_fp][68000]XNorm: 18.497272 +[cfp_fp][68000]Accuracy-Flip: 0.90357+-0.01978 +testing verification.. +(12000, 512) +infer time 15.67068 +[agedb_30][68000]XNorm: 22.127080 +[agedb_30][68000]Accuracy-Flip: 0.97217+-0.00823 +testing verification.. +(12000, 512) +infer time 16.458884 +[lfw][68000]XNorm: 21.713268 +[lfw][68000]Accuracy-Flip: 0.99600+-0.00271 +[68000]Accuracy-Highest: 0.99717 +INFO:root:Epoch[9] Batch [340] Speed: 100.36 samples/sec acc=0.574707 +INFO:root:Epoch[9] Batch [360] Speed: 662.11 samples/sec acc=0.574414 +INFO:root:Epoch[9] Batch [380] Speed: 661.70 samples/sec acc=0.577441 +INFO:root:Epoch[9] Batch [400] Speed: 661.94 samples/sec acc=0.578906 +INFO:root:Epoch[9] Batch [420] Speed: 662.16 samples/sec acc=0.565430 +INFO:root:Epoch[9] Batch [440] Speed: 661.48 samples/sec acc=0.575098 +INFO:root:Epoch[9] Batch [460] Speed: 662.69 samples/sec acc=0.573535 +INFO:root:Epoch[9] Batch [480] Speed: 662.18 samples/sec acc=0.572168 +INFO:root:Epoch[9] Batch [500] Speed: 662.38 samples/sec acc=0.570410 +INFO:root:Epoch[9] Batch [520] Speed: 662.30 samples/sec acc=0.564941 +INFO:root:Epoch[9] Batch [540] Speed: 662.54 samples/sec acc=0.571680 +INFO:root:Epoch[9] Batch [560] Speed: 662.65 samples/sec acc=0.557031 +INFO:root:Epoch[9] Batch [580] Speed: 663.02 samples/sec acc=0.566504 +INFO:root:Epoch[9] Batch [600] Speed: 662.92 samples/sec acc=0.563379 +INFO:root:Epoch[9] Batch [620] Speed: 664.00 samples/sec acc=0.566211 +INFO:root:Epoch[9] Batch [640] Speed: 663.43 samples/sec acc=0.559082 +INFO:root:Epoch[9] Batch [660] Speed: 663.89 samples/sec acc=0.571484 +INFO:root:Epoch[9] Batch [680] Speed: 660.50 samples/sec acc=0.564551 +INFO:root:Epoch[9] Batch [700] Speed: 662.50 samples/sec acc=0.564648 +INFO:root:Epoch[9] Batch [720] Speed: 653.16 samples/sec acc=0.554004 +INFO:root:Epoch[9] Batch [740] Speed: 662.42 samples/sec acc=0.553125 +INFO:root:Epoch[9] Batch [760] Speed: 663.35 samples/sec acc=0.565332 +INFO:root:Epoch[9] Batch [780] Speed: 662.57 samples/sec acc=0.558789 +INFO:root:Epoch[9] Batch [800] Speed: 662.36 samples/sec acc=0.558887 +INFO:root:Epoch[9] Batch [820] Speed: 662.99 samples/sec acc=0.554395 +INFO:root:Epoch[9] Batch [840] Speed: 662.52 samples/sec acc=0.545508 +INFO:root:Epoch[9] Batch [860] Speed: 662.48 samples/sec acc=0.550488 +INFO:root:Epoch[9] Batch [880] Speed: 663.44 samples/sec acc=0.561426 +INFO:root:Epoch[9] Batch [900] Speed: 661.99 samples/sec acc=0.551270 +INFO:root:Epoch[9] Batch [920] Speed: 662.65 samples/sec acc=0.563086 +INFO:root:Epoch[9] Batch [940] Speed: 662.92 samples/sec acc=0.551465 +INFO:root:Epoch[9] Batch [960] Speed: 666.34 samples/sec acc=0.561719 +INFO:root:Epoch[9] Batch [980] Speed: 665.32 samples/sec acc=0.549512 +INFO:root:Epoch[9] Batch [1000] Speed: 661.90 samples/sec acc=0.554492 +INFO:root:Epoch[9] Batch [1020] Speed: 662.17 samples/sec acc=0.557324 +INFO:root:Epoch[9] Batch [1040] Speed: 661.93 samples/sec acc=0.545312 +INFO:root:Epoch[9] Batch [1060] Speed: 663.08 samples/sec acc=0.550977 +INFO:root:Epoch[9] Batch [1080] Speed: 661.79 samples/sec acc=0.556348 +INFO:root:Epoch[9] Batch [1100] Speed: 662.20 samples/sec acc=0.550977 +INFO:root:Epoch[9] Batch [1120] Speed: 661.90 samples/sec acc=0.547949 +INFO:root:Epoch[9] Batch [1140] Speed: 662.83 samples/sec acc=0.544141 +INFO:root:Epoch[9] Batch [1160] Speed: 662.01 samples/sec acc=0.551855 +INFO:root:Epoch[9] Batch [1180] Speed: 663.57 samples/sec acc=0.548242 +INFO:root:Epoch[9] Batch [1200] Speed: 662.99 samples/sec acc=0.536914 +INFO:root:Epoch[9] Batch [1220] Speed: 661.53 samples/sec acc=0.544336 +INFO:root:Epoch[9] Batch [1240] Speed: 663.69 samples/sec acc=0.543457 +INFO:root:Epoch[9] Batch [1260] Speed: 662.85 samples/sec acc=0.546387 +INFO:root:Epoch[9] Batch [1280] Speed: 662.51 samples/sec acc=0.547070 +INFO:root:Epoch[9] Batch [1300] Speed: 663.24 samples/sec acc=0.538965 +INFO:root:Epoch[9] Batch [1320] Speed: 663.33 samples/sec acc=0.546289 +lr-batch-epoch: 0.01 1328 9 +INFO:root:Epoch[9] Batch [1340] Speed: 662.55 samples/sec acc=0.549902 +INFO:root:Epoch[9] Batch [1360] Speed: 663.39 samples/sec acc=0.548438 +INFO:root:Epoch[9] Batch [1380] Speed: 662.75 samples/sec acc=0.548047 +INFO:root:Epoch[9] Batch [1400] Speed: 661.94 samples/sec acc=0.537598 +INFO:root:Epoch[9] Batch [1420] Speed: 662.57 samples/sec acc=0.536523 +INFO:root:Epoch[9] Batch [1440] Speed: 662.88 samples/sec acc=0.542480 +INFO:root:Epoch[9] Batch [1460] Speed: 661.88 samples/sec acc=0.537988 +INFO:root:Epoch[9] Batch [1480] Speed: 663.84 samples/sec acc=0.534473 +INFO:root:Epoch[9] Batch [1500] Speed: 662.25 samples/sec acc=0.535937 +INFO:root:Epoch[9] Batch [1520] Speed: 662.12 samples/sec acc=0.541895 +INFO:root:Epoch[9] Batch [1540] Speed: 663.11 samples/sec acc=0.536816 +INFO:root:Epoch[9] Batch [1560] Speed: 662.51 samples/sec acc=0.548828 +INFO:root:Epoch[9] Batch [1580] Speed: 662.10 samples/sec acc=0.533105 +INFO:root:Epoch[9] Batch [1600] Speed: 663.62 samples/sec acc=0.536230 +INFO:root:Epoch[9] Batch [1620] Speed: 662.23 samples/sec acc=0.542480 +INFO:root:Epoch[9] Batch [1640] Speed: 662.58 samples/sec acc=0.539551 +INFO:root:Epoch[9] Batch [1660] Speed: 663.12 samples/sec acc=0.540918 +INFO:root:Epoch[9] Batch [1680] Speed: 662.66 samples/sec acc=0.524707 +INFO:root:Epoch[9] Batch [1700] Speed: 662.67 samples/sec acc=0.537793 +INFO:root:Epoch[9] Batch [1720] Speed: 662.23 samples/sec acc=0.538867 +INFO:root:Epoch[9] Batch [1740] Speed: 662.24 samples/sec acc=0.531055 +INFO:root:Epoch[9] Batch [1760] Speed: 662.15 samples/sec acc=0.534277 +INFO:root:Epoch[9] Batch [1780] Speed: 662.73 samples/sec acc=0.526660 +INFO:root:Epoch[9] Batch [1800] Speed: 662.97 samples/sec acc=0.525000 +INFO:root:Epoch[9] Batch [1820] Speed: 662.26 samples/sec acc=0.531250 +INFO:root:Epoch[9] Batch [1840] Speed: 663.02 samples/sec acc=0.545117 +INFO:root:Epoch[9] Batch [1860] Speed: 662.53 samples/sec acc=0.532422 +INFO:root:Epoch[9] Batch [1880] Speed: 662.70 samples/sec acc=0.539258 +INFO:root:Epoch[9] Batch [1900] Speed: 662.50 samples/sec acc=0.532227 +INFO:root:Epoch[9] Batch [1920] Speed: 662.53 samples/sec acc=0.518262 +INFO:root:Epoch[9] Batch [1940] Speed: 661.63 samples/sec acc=0.539746 +INFO:root:Epoch[9] Batch [1960] Speed: 663.46 samples/sec acc=0.523535 +INFO:root:Epoch[9] Batch [1980] Speed: 662.62 samples/sec acc=0.531738 +INFO:root:Epoch[9] Batch [2000] Speed: 662.28 samples/sec acc=0.534863 +INFO:root:Epoch[9] Batch [2020] Speed: 662.93 samples/sec acc=0.525293 +INFO:root:Epoch[9] Batch [2040] Speed: 661.63 samples/sec acc=0.522461 +INFO:root:Epoch[9] Batch [2060] Speed: 662.51 samples/sec acc=0.528027 +INFO:root:Epoch[9] Batch [2080] Speed: 663.02 samples/sec acc=0.524707 +INFO:root:Epoch[9] Batch [2100] Speed: 662.54 samples/sec acc=0.533789 +INFO:root:Epoch[9] Batch [2120] Speed: 661.47 samples/sec acc=0.520117 +INFO:root:Epoch[9] Batch [2140] Speed: 663.56 samples/sec acc=0.530664 +INFO:root:Epoch[9] Batch [2160] Speed: 662.27 samples/sec acc=0.536230 +INFO:root:Epoch[9] Batch [2180] Speed: 661.78 samples/sec acc=0.529883 +INFO:root:Epoch[9] Batch [2200] Speed: 663.35 samples/sec acc=0.534668 +INFO:root:Epoch[9] Batch [2220] Speed: 662.67 samples/sec acc=0.525586 +INFO:root:Epoch[9] Batch [2240] Speed: 661.81 samples/sec acc=0.524121 +INFO:root:Epoch[9] Batch [2260] Speed: 662.75 samples/sec acc=0.527930 +INFO:root:Epoch[9] Batch [2280] Speed: 662.19 samples/sec acc=0.523438 +INFO:root:Epoch[9] Batch [2300] Speed: 662.35 samples/sec acc=0.522266 +INFO:root:Epoch[9] Batch [2320] Speed: 663.38 samples/sec acc=0.522559 +[70000][MARGIN]0.765564,0.367320 +lr-batch-epoch: 0.01 2328 9 +testing verification.. +(14000, 512) +infer time 27.911592 +[cfp_ff][70000]XNorm: 21.644177 +[cfp_ff][70000]Accuracy-Flip: 0.99771+-0.00265 +testing verification.. +(14000, 512) +infer time 23.607039 +[cfp_fp][70000]XNorm: 18.785028 +[cfp_fp][70000]Accuracy-Flip: 0.90643+-0.01594 +testing verification.. +(12000, 512) +infer time 23.314731 +[agedb_30][70000]XNorm: 21.917033 +[agedb_30][70000]Accuracy-Flip: 0.97333+-0.00799 +testing verification.. +(12000, 512) +infer time 15.590005 +[lfw][70000]XNorm: 22.027640 +[lfw][70000]Accuracy-Flip: 0.99633+-0.00332 +[70000]Accuracy-Highest: 0.99717 +INFO:root:Epoch[9] Batch [2340] Speed: 82.29 samples/sec acc=0.523047 +INFO:root:Epoch[9] Batch [2360] Speed: 662.43 samples/sec acc=0.521191 +INFO:root:Epoch[9] Batch [2380] Speed: 648.00 samples/sec acc=0.527637 +INFO:root:Epoch[9] Batch [2400] Speed: 662.46 samples/sec acc=0.524512 +INFO:root:Epoch[9] Batch [2420] Speed: 660.77 samples/sec acc=0.531055 +INFO:root:Epoch[9] Batch [2440] Speed: 661.77 samples/sec acc=0.523730 +INFO:root:Epoch[9] Batch [2460] Speed: 661.78 samples/sec acc=0.518457 +INFO:root:Epoch[9] Batch [2480] Speed: 661.47 samples/sec acc=0.523828 +INFO:root:Epoch[9] Batch [2500] Speed: 662.50 samples/sec acc=0.522852 +INFO:root:Epoch[9] Batch [2520] Speed: 659.43 samples/sec acc=0.528906 +INFO:root:Epoch[9] Batch [2540] Speed: 665.35 samples/sec acc=0.524219 +INFO:root:Epoch[9] Batch [2560] Speed: 654.97 samples/sec acc=0.516699 +INFO:root:Epoch[9] Batch [2580] Speed: 651.54 samples/sec acc=0.524414 +INFO:root:Epoch[9] Batch [2600] Speed: 662.40 samples/sec acc=0.517773 +INFO:root:Epoch[9] Batch [2620] Speed: 661.62 samples/sec acc=0.526367 +INFO:root:Epoch[9] Batch [2640] Speed: 656.55 samples/sec acc=0.523340 +INFO:root:Epoch[9] Batch [2660] Speed: 662.23 samples/sec acc=0.520703 +INFO:root:Epoch[9] Batch [2680] Speed: 662.40 samples/sec acc=0.527148 +INFO:root:Epoch[9] Batch [2700] Speed: 650.95 samples/sec acc=0.515527 +INFO:root:Epoch[9] Batch [2720] Speed: 660.91 samples/sec acc=0.524707 +INFO:root:Epoch[9] Batch [2740] Speed: 655.28 samples/sec acc=0.522559 +INFO:root:Epoch[9] Batch [2760] Speed: 662.50 samples/sec acc=0.520215 +INFO:root:Epoch[9] Batch [2780] Speed: 653.57 samples/sec acc=0.516309 +INFO:root:Epoch[9] Batch [2800] Speed: 662.41 samples/sec acc=0.518457 +INFO:root:Epoch[9] Batch [2820] Speed: 661.59 samples/sec acc=0.513770 +INFO:root:Epoch[9] Batch [2840] Speed: 661.27 samples/sec acc=0.519141 +INFO:root:Epoch[9] Batch [2860] Speed: 662.31 samples/sec acc=0.525098 +INFO:root:Epoch[9] Batch [2880] Speed: 661.77 samples/sec acc=0.518848 +INFO:root:Epoch[9] Batch [2900] Speed: 661.07 samples/sec acc=0.525098 +INFO:root:Epoch[9] Batch [2920] Speed: 662.76 samples/sec acc=0.523340 +INFO:root:Epoch[9] Batch [2940] Speed: 662.26 samples/sec acc=0.518848 +INFO:root:Epoch[9] Batch [2960] Speed: 661.94 samples/sec acc=0.513086 +INFO:root:Epoch[9] Batch [2980] Speed: 663.77 samples/sec acc=0.518164 +INFO:root:Epoch[9] Batch [3000] Speed: 662.63 samples/sec acc=0.523242 +INFO:root:Epoch[9] Batch [3020] Speed: 662.70 samples/sec acc=0.522656 +INFO:root:Epoch[9] Batch [3040] Speed: 662.61 samples/sec acc=0.519336 +INFO:root:Epoch[9] Batch [3060] Speed: 662.72 samples/sec acc=0.519824 +INFO:root:Epoch[9] Batch [3080] Speed: 661.95 samples/sec acc=0.519434 +INFO:root:Epoch[9] Batch [3100] Speed: 662.84 samples/sec acc=0.520215 +INFO:root:Epoch[9] Batch [3120] Speed: 661.70 samples/sec acc=0.516309 +INFO:root:Epoch[9] Batch [3140] Speed: 662.81 samples/sec acc=0.509473 +INFO:root:Epoch[9] Batch [3160] Speed: 663.25 samples/sec acc=0.518750 +INFO:root:Epoch[9] Batch [3180] Speed: 662.64 samples/sec acc=0.513965 +INFO:root:Epoch[9] Batch [3200] Speed: 661.91 samples/sec acc=0.514941 +INFO:root:Epoch[9] Batch [3220] Speed: 663.86 samples/sec acc=0.517090 +INFO:root:Epoch[9] Batch [3240] Speed: 662.60 samples/sec acc=0.513379 +INFO:root:Epoch[9] Batch [3260] Speed: 661.86 samples/sec acc=0.513184 +INFO:root:Epoch[9] Batch [3280] Speed: 663.02 samples/sec acc=0.513672 +INFO:root:Epoch[9] Batch [3300] Speed: 663.08 samples/sec acc=0.517969 +INFO:root:Epoch[9] Batch [3320] Speed: 661.09 samples/sec acc=0.520801 +lr-batch-epoch: 0.01 3328 9 +INFO:root:Epoch[9] Batch [3340] Speed: 663.25 samples/sec acc=0.517871 +INFO:root:Epoch[9] Batch [3360] Speed: 663.17 samples/sec acc=0.522559 +INFO:root:Epoch[9] Batch [3380] Speed: 660.95 samples/sec acc=0.520898 +INFO:root:Epoch[9] Batch [3400] Speed: 663.58 samples/sec acc=0.516113 +INFO:root:Epoch[9] Batch [3420] Speed: 662.31 samples/sec acc=0.510547 +INFO:root:Epoch[9] Batch [3440] Speed: 643.11 samples/sec acc=0.516406 +INFO:root:Epoch[9] Batch [3460] Speed: 661.78 samples/sec acc=0.520801 +INFO:root:Epoch[9] Batch [3480] Speed: 658.51 samples/sec acc=0.524023 +INFO:root:Epoch[9] Batch [3500] Speed: 661.26 samples/sec acc=0.516016 +INFO:root:Epoch[9] Batch [3520] Speed: 661.55 samples/sec acc=0.516309 +INFO:root:Epoch[9] Batch [3540] Speed: 661.00 samples/sec acc=0.509180 +INFO:root:Epoch[9] Batch [3560] Speed: 655.79 samples/sec acc=0.508887 +INFO:root:Epoch[9] Batch [3580] Speed: 662.92 samples/sec acc=0.522168 +INFO:root:Epoch[9] Batch [3600] Speed: 658.86 samples/sec acc=0.517383 +INFO:root:Epoch[9] Batch [3620] Speed: 661.58 samples/sec acc=0.514746 +INFO:root:Epoch[9] Batch [3640] Speed: 662.47 samples/sec acc=0.512305 +INFO:root:Epoch[9] Batch [3660] Speed: 662.36 samples/sec acc=0.513477 +INFO:root:Epoch[9] Batch [3680] Speed: 662.87 samples/sec acc=0.510352 +INFO:root:Epoch[9] Batch [3700] Speed: 662.48 samples/sec acc=0.516113 +INFO:root:Epoch[9] Batch [3720] Speed: 662.53 samples/sec acc=0.512695 +INFO:root:Epoch[9] Batch [3740] Speed: 657.88 samples/sec acc=0.511328 +INFO:root:Epoch[9] Batch [3760] Speed: 662.30 samples/sec acc=0.509961 +INFO:root:Epoch[9] Batch [3780] Speed: 661.73 samples/sec acc=0.514648 +INFO:root:Epoch[9] Batch [3800] Speed: 660.65 samples/sec acc=0.514551 +INFO:root:Epoch[9] Batch [3820] Speed: 662.21 samples/sec acc=0.514844 +INFO:root:Epoch[9] Batch [3840] Speed: 661.00 samples/sec acc=0.516797 +INFO:root:Epoch[9] Batch [3860] Speed: 654.57 samples/sec acc=0.512207 +INFO:root:Epoch[9] Batch [3880] Speed: 662.28 samples/sec acc=0.511621 +INFO:root:Epoch[9] Batch [3900] Speed: 657.76 samples/sec acc=0.509668 +INFO:root:Epoch[9] Batch [3920] Speed: 660.59 samples/sec acc=0.518945 +INFO:root:Epoch[9] Batch [3940] Speed: 662.61 samples/sec acc=0.516113 +INFO:root:Epoch[9] Batch [3960] Speed: 661.99 samples/sec acc=0.520020 +INFO:root:Epoch[9] Batch [3980] Speed: 660.75 samples/sec acc=0.516699 +INFO:root:Epoch[9] Batch [4000] Speed: 662.86 samples/sec acc=0.513379 +INFO:root:Epoch[9] Batch [4020] Speed: 661.95 samples/sec acc=0.520410 +INFO:root:Epoch[9] Batch [4040] Speed: 661.62 samples/sec acc=0.512012 +INFO:root:Epoch[9] Batch [4060] Speed: 662.03 samples/sec acc=0.504883 +INFO:root:Epoch[9] Batch [4080] Speed: 662.06 samples/sec acc=0.503711 +INFO:root:Epoch[9] Batch [4100] Speed: 655.99 samples/sec acc=0.512402 +INFO:root:Epoch[9] Batch [4120] Speed: 669.69 samples/sec acc=0.511328 +INFO:root:Epoch[9] Batch [4140] Speed: 661.86 samples/sec acc=0.516699 +INFO:root:Epoch[9] Batch [4160] Speed: 661.47 samples/sec acc=0.509082 +INFO:root:Epoch[9] Batch [4180] Speed: 663.27 samples/sec acc=0.513574 +INFO:root:Epoch[9] Batch [4200] Speed: 658.29 samples/sec acc=0.516309 +INFO:root:Epoch[9] Batch [4220] Speed: 661.75 samples/sec acc=0.523535 +INFO:root:Epoch[9] Batch [4240] Speed: 651.90 samples/sec acc=0.513770 +INFO:root:Epoch[9] Batch [4260] Speed: 662.95 samples/sec acc=0.521094 +INFO:root:Epoch[9] Batch [4280] Speed: 661.30 samples/sec acc=0.517285 +INFO:root:Epoch[9] Batch [4300] Speed: 662.20 samples/sec acc=0.508789 +INFO:root:Epoch[9] Batch [4320] Speed: 661.79 samples/sec acc=0.510840 +[72000][MARGIN]0.751948,0.348412 +lr-batch-epoch: 0.01 4328 9 +testing verification.. +(14000, 512) +infer time 24.142456 +[cfp_ff][72000]XNorm: 21.711886 +[cfp_ff][72000]Accuracy-Flip: 0.99643+-0.00308 +testing verification.. +(14000, 512) +infer time 22.896593 +[cfp_fp][72000]XNorm: 18.571745 +[cfp_fp][72000]Accuracy-Flip: 0.89929+-0.01595 +testing verification.. +(12000, 512) +infer time 18.760471 +[agedb_30][72000]XNorm: 21.802036 +[agedb_30][72000]Accuracy-Flip: 0.97317+-0.00639 +testing verification.. +(12000, 512) +infer time 20.440505 +[lfw][72000]XNorm: 21.822876 +[lfw][72000]Accuracy-Flip: 0.99667+-0.00279 +[72000]Accuracy-Highest: 0.99717 +INFO:root:Epoch[9] Batch [4340] Speed: 83.42 samples/sec acc=0.510352 +INFO:root:Epoch[9] Batch [4360] Speed: 662.56 samples/sec acc=0.507227 +INFO:root:Epoch[9] Batch [4380] Speed: 661.52 samples/sec acc=0.507812 +INFO:root:Epoch[9] Batch [4400] Speed: 661.25 samples/sec acc=0.518555 +INFO:root:Epoch[9] Batch [4420] Speed: 661.68 samples/sec acc=0.514453 +INFO:root:Epoch[9] Batch [4440] Speed: 662.03 samples/sec acc=0.514844 +INFO:root:Epoch[9] Batch [4460] Speed: 661.64 samples/sec acc=0.502344 +INFO:root:Epoch[9] Batch [4480] Speed: 661.63 samples/sec acc=0.514746 +INFO:root:Epoch[9] Batch [4500] Speed: 661.95 samples/sec acc=0.517480 +INFO:root:Epoch[9] Batch [4520] Speed: 662.30 samples/sec acc=0.508984 +INFO:root:Epoch[9] Batch [4540] Speed: 662.95 samples/sec acc=0.514355 +INFO:root:Epoch[9] Batch [4560] Speed: 663.05 samples/sec acc=0.507227 +INFO:root:Epoch[9] Batch [4580] Speed: 655.40 samples/sec acc=0.504590 +INFO:root:Epoch[9] Batch [4600] Speed: 661.93 samples/sec acc=0.513281 +INFO:root:Epoch[9] Batch [4620] Speed: 662.17 samples/sec acc=0.515918 +INFO:root:Epoch[9] Batch [4640] Speed: 661.89 samples/sec acc=0.507324 +INFO:root:Epoch[9] Batch [4660] Speed: 662.38 samples/sec acc=0.506738 +INFO:root:Epoch[9] Batch [4680] Speed: 662.63 samples/sec acc=0.499609 +INFO:root:Epoch[9] Batch [4700] Speed: 662.33 samples/sec acc=0.513281 +INFO:root:Epoch[9] Batch [4720] Speed: 651.96 samples/sec acc=0.504785 +INFO:root:Epoch[9] Batch [4740] Speed: 661.74 samples/sec acc=0.515918 +INFO:root:Epoch[9] Batch [4760] Speed: 661.80 samples/sec acc=0.516504 +INFO:root:Epoch[9] Batch [4780] Speed: 659.50 samples/sec acc=0.501270 +INFO:root:Epoch[9] Batch [4800] Speed: 662.41 samples/sec acc=0.505078 +INFO:root:Epoch[9] Batch [4820] Speed: 661.83 samples/sec acc=0.511816 +INFO:root:Epoch[9] Batch [4840] Speed: 662.11 samples/sec acc=0.515039 +INFO:root:Epoch[9] Batch [4860] Speed: 662.90 samples/sec acc=0.503711 +INFO:root:Epoch[9] Batch [4880] Speed: 662.31 samples/sec acc=0.523535 +INFO:root:Epoch[9] Batch [4900] Speed: 662.34 samples/sec acc=0.510645 +INFO:root:Epoch[9] Batch [4920] Speed: 659.97 samples/sec acc=0.512305 +INFO:root:Epoch[9] Batch [4940] Speed: 672.18 samples/sec acc=0.508789 +INFO:root:Epoch[9] Batch [4960] Speed: 662.94 samples/sec acc=0.502051 +INFO:root:Epoch[9] Batch [4980] Speed: 662.65 samples/sec acc=0.508301 +INFO:root:Epoch[9] Batch [5000] Speed: 662.61 samples/sec acc=0.507324 +INFO:root:Epoch[9] Batch [5020] Speed: 663.05 samples/sec acc=0.505664 +INFO:root:Epoch[9] Batch [5040] Speed: 662.17 samples/sec acc=0.515332 +INFO:root:Epoch[9] Batch [5060] Speed: 662.30 samples/sec acc=0.509961 +INFO:root:Epoch[9] Batch [5080] Speed: 663.25 samples/sec acc=0.512402 +INFO:root:Epoch[9] Batch [5100] Speed: 662.61 samples/sec acc=0.507227 +INFO:root:Epoch[9] Batch [5120] Speed: 662.87 samples/sec acc=0.508887 +INFO:root:Epoch[9] Batch [5140] Speed: 663.21 samples/sec acc=0.513965 +INFO:root:Epoch[9] Batch [5160] Speed: 663.15 samples/sec acc=0.509668 +INFO:root:Epoch[9] Batch [5180] Speed: 662.53 samples/sec acc=0.511230 +INFO:root:Epoch[9] Batch [5200] Speed: 662.27 samples/sec acc=0.507031 +INFO:root:Epoch[9] Batch [5220] Speed: 662.23 samples/sec acc=0.508496 +INFO:root:Epoch[9] Batch [5240] Speed: 661.91 samples/sec acc=0.506836 +INFO:root:Epoch[9] Batch [5260] Speed: 663.00 samples/sec acc=0.505566 +INFO:root:Epoch[9] Batch [5280] Speed: 662.85 samples/sec acc=0.510645 +INFO:root:Epoch[9] Batch [5300] Speed: 663.09 samples/sec acc=0.510352 +INFO:root:Epoch[9] Batch [5320] Speed: 663.47 samples/sec acc=0.507031 +lr-batch-epoch: 0.01 5328 9 +INFO:root:Epoch[9] Batch [5340] Speed: 662.02 samples/sec acc=0.508105 +INFO:root:Epoch[9] Batch [5360] Speed: 661.85 samples/sec acc=0.500781 +INFO:root:Epoch[9] Batch [5380] Speed: 663.58 samples/sec acc=0.520508 +INFO:root:Epoch[9] Batch [5400] Speed: 663.17 samples/sec acc=0.523047 +INFO:root:Epoch[9] Batch [5420] Speed: 662.52 samples/sec acc=0.516895 +INFO:root:Epoch[9] Batch [5440] Speed: 662.87 samples/sec acc=0.516211 +INFO:root:Epoch[9] Batch [5460] Speed: 665.00 samples/sec acc=0.499902 +INFO:root:Epoch[9] Batch [5480] Speed: 662.03 samples/sec acc=0.515430 +INFO:root:Epoch[9] Batch [5500] Speed: 663.76 samples/sec acc=0.507227 +INFO:root:Epoch[9] Batch [5520] Speed: 662.11 samples/sec acc=0.508594 +INFO:root:Epoch[9] Batch [5540] Speed: 662.86 samples/sec acc=0.508301 +INFO:root:Epoch[9] Batch [5560] Speed: 652.79 samples/sec acc=0.512402 +INFO:root:Epoch[9] Batch [5580] Speed: 661.73 samples/sec acc=0.511426 +INFO:root:Epoch[9] Batch [5600] Speed: 661.65 samples/sec acc=0.511035 +INFO:root:Epoch[9] Batch [5620] Speed: 672.23 samples/sec acc=0.500684 +INFO:root:Epoch[9] Batch [5640] Speed: 664.06 samples/sec acc=0.505469 +INFO:root:Epoch[9] Batch [5660] Speed: 661.38 samples/sec acc=0.499023 +INFO:root:Epoch[9] Batch [5680] Speed: 662.43 samples/sec acc=0.512207 +INFO:root:Epoch[9] Batch [5700] Speed: 661.49 samples/sec acc=0.501465 +INFO:root:Epoch[9] Batch [5720] Speed: 667.14 samples/sec acc=0.512500 +INFO:root:Epoch[9] Batch [5740] Speed: 668.91 samples/sec acc=0.511719 +INFO:root:Epoch[9] Batch [5760] Speed: 662.83 samples/sec acc=0.508398 +INFO:root:Epoch[9] Batch [5780] Speed: 660.89 samples/sec acc=0.513477 +INFO:root:Epoch[9] Batch [5800] Speed: 661.61 samples/sec acc=0.515430 +INFO:root:Epoch[9] Batch [5820] Speed: 662.08 samples/sec acc=0.503223 +INFO:root:Epoch[9] Batch [5840] Speed: 661.93 samples/sec acc=0.511426 +INFO:root:Epoch[9] Batch [5860] Speed: 661.95 samples/sec acc=0.511328 +INFO:root:Epoch[9] Batch [5880] Speed: 662.67 samples/sec acc=0.509180 +INFO:root:Epoch[9] Batch [5900] Speed: 661.47 samples/sec acc=0.510254 +INFO:root:Epoch[9] Batch [5920] Speed: 662.88 samples/sec acc=0.505957 +INFO:root:Epoch[9] Batch [5940] Speed: 662.11 samples/sec acc=0.514941 +INFO:root:Epoch[9] Batch [5960] Speed: 662.01 samples/sec acc=0.503125 +INFO:root:Epoch[9] Batch [5980] Speed: 662.48 samples/sec acc=0.508398 +INFO:root:Epoch[9] Batch [6000] Speed: 662.72 samples/sec acc=0.509473 +INFO:root:Epoch[9] Batch [6020] Speed: 661.06 samples/sec acc=0.506348 +INFO:root:Epoch[9] Batch [6040] Speed: 652.16 samples/sec acc=0.508789 +INFO:root:Epoch[9] Batch [6060] Speed: 661.07 samples/sec acc=0.499512 +INFO:root:Epoch[9] Batch [6080] Speed: 660.13 samples/sec acc=0.508105 +INFO:root:Epoch[9] Batch [6100] Speed: 662.20 samples/sec acc=0.505566 +INFO:root:Epoch[9] Batch [6120] Speed: 662.20 samples/sec acc=0.509180 +INFO:root:Epoch[9] Batch [6140] Speed: 661.70 samples/sec acc=0.502930 +INFO:root:Epoch[9] Batch [6160] Speed: 662.93 samples/sec acc=0.509277 +INFO:root:Epoch[9] Batch [6180] Speed: 661.12 samples/sec acc=0.507031 +INFO:root:Epoch[9] Batch [6200] Speed: 661.10 samples/sec acc=0.508105 +INFO:root:Epoch[9] Batch [6220] Speed: 662.87 samples/sec acc=0.503613 +INFO:root:Epoch[9] Batch [6240] Speed: 662.82 samples/sec acc=0.512891 +INFO:root:Epoch[9] Batch [6260] Speed: 654.14 samples/sec acc=0.499121 +INFO:root:Epoch[9] Batch [6280] Speed: 651.94 samples/sec acc=0.507324 +INFO:root:Epoch[9] Batch [6300] Speed: 658.09 samples/sec acc=0.503906 +INFO:root:Epoch[9] Batch [6320] Speed: 660.61 samples/sec acc=0.515039 +[74000][MARGIN]0.766221,0.369203 +lr-batch-epoch: 0.01 6328 9 +testing verification.. +(14000, 512) +infer time 20.714861 +[cfp_ff][74000]XNorm: 22.009638 +[cfp_ff][74000]Accuracy-Flip: 0.99614+-0.00384 +testing verification.. +(14000, 512) +infer time 23.832139 +[cfp_fp][74000]XNorm: 18.695112 +[cfp_fp][74000]Accuracy-Flip: 0.89957+-0.01733 +testing verification.. +(12000, 512) +infer time 19.248342 +[agedb_30][74000]XNorm: 22.202675 +[agedb_30][74000]Accuracy-Flip: 0.96933+-0.00834 +testing verification.. +(12000, 512) +infer time 17.353995 +[lfw][74000]XNorm: 22.211637 +[lfw][74000]Accuracy-Flip: 0.99533+-0.00332 +[74000]Accuracy-Highest: 0.99717 +INFO:root:Epoch[9] Batch [6340] Speed: 88.14 samples/sec acc=0.506152 +INFO:root:Epoch[9] Batch [6360] Speed: 678.09 samples/sec acc=0.509863 +INFO:root:Epoch[9] Batch [6380] Speed: 661.56 samples/sec acc=0.519043 +INFO:root:Epoch[9] Batch [6400] Speed: 662.25 samples/sec acc=0.499609 +INFO:root:Epoch[9] Batch [6420] Speed: 661.29 samples/sec acc=0.507617 +INFO:root:Epoch[9] Batch [6440] Speed: 659.65 samples/sec acc=0.502344 +INFO:root:Epoch[9] Batch [6460] Speed: 664.17 samples/sec acc=0.513867 +INFO:root:Epoch[9] Batch [6480] Speed: 661.81 samples/sec acc=0.505273 +INFO:root:Epoch[9] Batch [6500] Speed: 661.72 samples/sec acc=0.516211 +INFO:root:Epoch[9] Batch [6520] Speed: 658.98 samples/sec acc=0.495898 +INFO:root:Epoch[9] Batch [6540] Speed: 670.75 samples/sec acc=0.499023 +INFO:root:Epoch[9] Batch [6560] Speed: 662.01 samples/sec acc=0.506348 +INFO:root:Epoch[9] Batch [6580] Speed: 662.92 samples/sec acc=0.501563 +INFO:root:Epoch[9] Batch [6600] Speed: 662.90 samples/sec acc=0.503516 +INFO:root:Epoch[9] Batch [6620] Speed: 661.23 samples/sec acc=0.502637 +INFO:root:Epoch[9] Batch [6640] Speed: 663.16 samples/sec acc=0.500781 +INFO:root:Epoch[9] Batch [6660] Speed: 662.84 samples/sec acc=0.518945 +INFO:root:Epoch[9] Batch [6680] Speed: 662.72 samples/sec acc=0.512402 +INFO:root:Epoch[9] Batch [6700] Speed: 662.72 samples/sec acc=0.502637 +INFO:root:Epoch[9] Batch [6720] Speed: 662.78 samples/sec acc=0.510059 +INFO:root:Epoch[9] Batch [6740] Speed: 661.68 samples/sec acc=0.506543 +INFO:root:Epoch[9] Batch [6760] Speed: 663.19 samples/sec acc=0.496484 +INFO:root:Epoch[9] Batch [6780] Speed: 662.72 samples/sec acc=0.506055 +INFO:root:Epoch[9] Batch [6800] Speed: 662.32 samples/sec acc=0.504492 +INFO:root:Epoch[9] Batch [6820] Speed: 662.93 samples/sec acc=0.508691 +INFO:root:Epoch[9] Batch [6840] Speed: 662.26 samples/sec acc=0.502637 +INFO:root:Epoch[9] Batch [6860] Speed: 662.54 samples/sec acc=0.501270 +INFO:root:Epoch[9] Batch [6880] Speed: 663.21 samples/sec acc=0.512109 +INFO:root:Epoch[9] Batch [6900] Speed: 662.14 samples/sec acc=0.500098 +INFO:root:Epoch[9] Batch [6920] Speed: 649.15 samples/sec acc=0.505859 +INFO:root:Epoch[9] Batch [6940] Speed: 662.76 samples/sec acc=0.508594 +INFO:root:Epoch[9] Batch [6960] Speed: 661.61 samples/sec acc=0.499805 +INFO:root:Epoch[9] Batch [6980] Speed: 661.25 samples/sec acc=0.512598 +INFO:root:Epoch[9] Batch [7000] Speed: 661.99 samples/sec acc=0.505664 +INFO:root:Epoch[9] Batch [7020] Speed: 661.92 samples/sec acc=0.508496 +INFO:root:Epoch[9] Batch [7040] Speed: 661.09 samples/sec acc=0.502051 +INFO:root:Epoch[9] Batch [7060] Speed: 662.27 samples/sec acc=0.504883 +INFO:root:Epoch[9] Batch [7080] Speed: 661.38 samples/sec acc=0.511719 +INFO:root:Epoch[9] Batch [7100] Speed: 661.90 samples/sec acc=0.508594 +INFO:root:Epoch[9] Batch [7120] Speed: 661.90 samples/sec acc=0.508984 +INFO:root:Epoch[9] Batch [7140] Speed: 661.86 samples/sec acc=0.508691 +INFO:root:Epoch[9] Batch [7160] Speed: 662.13 samples/sec acc=0.507031 +INFO:root:Epoch[9] Batch [7180] Speed: 662.90 samples/sec acc=0.508691 +INFO:root:Epoch[9] Batch [7200] Speed: 662.94 samples/sec acc=0.509961 +INFO:root:Epoch[9] Batch [7220] Speed: 662.17 samples/sec acc=0.503613 +INFO:root:Epoch[9] Batch [7240] Speed: 661.95 samples/sec acc=0.505957 +INFO:root:Epoch[9] Batch [7260] Speed: 662.50 samples/sec acc=0.504395 +INFO:root:Epoch[9] Batch [7280] Speed: 662.35 samples/sec acc=0.510254 +INFO:root:Epoch[9] Batch [7300] Speed: 662.92 samples/sec acc=0.507129 +INFO:root:Epoch[9] Batch [7320] Speed: 663.28 samples/sec acc=0.512207 +lr-batch-epoch: 0.01 7328 9 +INFO:root:Epoch[9] Batch [7340] Speed: 673.43 samples/sec acc=0.504395 +INFO:root:Epoch[9] Batch [7360] Speed: 662.14 samples/sec acc=0.507031 +INFO:root:Epoch[9] Batch [7380] Speed: 662.52 samples/sec acc=0.499512 +INFO:root:Epoch[9] Batch [7400] Speed: 661.93 samples/sec acc=0.504687 +INFO:root:Epoch[9] Batch [7420] Speed: 663.24 samples/sec acc=0.496191 +INFO:root:Epoch[9] Batch [7440] Speed: 661.83 samples/sec acc=0.507227 +INFO:root:Epoch[9] Batch [7460] Speed: 662.80 samples/sec acc=0.515625 +INFO:root:Epoch[9] Batch [7480] Speed: 663.18 samples/sec acc=0.500195 +INFO:root:Epoch[9] Batch [7500] Speed: 662.56 samples/sec acc=0.511523 +INFO:root:Epoch[9] Train-acc=0.494575 +INFO:root:Epoch[9] Time cost=6220.531 +call reset() +INFO:root:Epoch[10] Batch [20] Speed: 656.37 samples/sec acc=0.562686 +INFO:root:Epoch[10] Batch [40] Speed: 662.70 samples/sec acc=0.573242 +INFO:root:Epoch[10] Batch [60] Speed: 662.41 samples/sec acc=0.568652 +INFO:root:Epoch[10] Batch [80] Speed: 662.11 samples/sec acc=0.573438 +INFO:root:Epoch[10] Batch [100] Speed: 649.89 samples/sec acc=0.571582 +INFO:root:Epoch[10] Batch [120] Speed: 663.32 samples/sec acc=0.569238 +INFO:root:Epoch[10] Batch [140] Speed: 661.99 samples/sec acc=0.567969 +INFO:root:Epoch[10] Batch [160] Speed: 662.46 samples/sec acc=0.570215 +INFO:root:Epoch[10] Batch [180] Speed: 662.94 samples/sec acc=0.569434 +INFO:root:Epoch[10] Batch [200] Speed: 648.88 samples/sec acc=0.568359 +INFO:root:Epoch[10] Batch [220] Speed: 662.10 samples/sec acc=0.570703 +INFO:root:Epoch[10] Batch [240] Speed: 662.05 samples/sec acc=0.556445 +INFO:root:Epoch[10] Batch [260] Speed: 661.54 samples/sec acc=0.555859 +INFO:root:Epoch[10] Batch [280] Speed: 661.71 samples/sec acc=0.565527 +INFO:root:Epoch[10] Batch [300] Speed: 661.64 samples/sec acc=0.559961 +INFO:root:Epoch[10] Batch [320] Speed: 661.54 samples/sec acc=0.554492 +INFO:root:Epoch[10] Batch [340] Speed: 662.55 samples/sec acc=0.562207 +INFO:root:Epoch[10] Batch [360] Speed: 662.66 samples/sec acc=0.570020 +INFO:root:Epoch[10] Batch [380] Speed: 661.60 samples/sec acc=0.557227 +INFO:root:Epoch[10] Batch [400] Speed: 661.85 samples/sec acc=0.558496 +INFO:root:Epoch[10] Batch [420] Speed: 663.39 samples/sec acc=0.559766 +INFO:root:Epoch[10] Batch [440] Speed: 654.99 samples/sec acc=0.564551 +INFO:root:Epoch[10] Batch [460] Speed: 662.77 samples/sec acc=0.556738 +INFO:root:Epoch[10] Batch [480] Speed: 662.70 samples/sec acc=0.553613 +INFO:root:Epoch[10] Batch [500] Speed: 661.84 samples/sec acc=0.558398 +INFO:root:Epoch[10] Batch [520] Speed: 662.20 samples/sec acc=0.557520 +INFO:root:Epoch[10] Batch [540] Speed: 663.36 samples/sec acc=0.549219 +INFO:root:Epoch[10] Batch [560] Speed: 662.10 samples/sec acc=0.550391 +INFO:root:Epoch[10] Batch [580] Speed: 663.33 samples/sec acc=0.550781 +INFO:root:Epoch[10] Batch [600] Speed: 659.12 samples/sec acc=0.552539 +INFO:root:Epoch[10] Batch [620] Speed: 677.53 samples/sec acc=0.550684 +INFO:root:Epoch[10] Batch [640] Speed: 662.77 samples/sec acc=0.543066 +INFO:root:Epoch[10] Batch [660] Speed: 662.42 samples/sec acc=0.545410 +INFO:root:Epoch[10] Batch [680] Speed: 662.62 samples/sec acc=0.543750 +INFO:root:Epoch[10] Batch [700] Speed: 661.89 samples/sec acc=0.543555 +INFO:root:Epoch[10] Batch [720] Speed: 662.67 samples/sec acc=0.551660 +INFO:root:Epoch[10] Batch [740] Speed: 662.04 samples/sec acc=0.538477 +INFO:root:Epoch[10] Batch [760] Speed: 663.28 samples/sec acc=0.545117 +INFO:root:Epoch[10] Batch [780] Speed: 662.89 samples/sec acc=0.541113 +INFO:root:Epoch[10] Batch [800] Speed: 662.29 samples/sec acc=0.542676 +[76000][MARGIN]0.766518,0.368607 +lr-batch-epoch: 0.01 809 10 +testing verification.. +(14000, 512) +infer time 21.345826 +[cfp_ff][76000]XNorm: 22.003889 +[cfp_ff][76000]Accuracy-Flip: 0.99714+-0.00230 +testing verification.. +(14000, 512) +infer time 24.937849 +[cfp_fp][76000]XNorm: 18.870976 +[cfp_fp][76000]Accuracy-Flip: 0.90100+-0.01268 +testing verification.. +(12000, 512) +infer time 19.077448 +[agedb_30][76000]XNorm: 21.995266 +[agedb_30][76000]Accuracy-Flip: 0.97067+-0.00779 +testing verification.. +(12000, 512) +infer time 19.046583 +[lfw][76000]XNorm: 22.148182 +[lfw][76000]Accuracy-Flip: 0.99683+-0.00293 +[76000]Accuracy-Highest: 0.99717 +INFO:root:Epoch[10] Batch [820] Speed: 85.54 samples/sec acc=0.548340 +INFO:root:Epoch[10] Batch [840] Speed: 650.51 samples/sec acc=0.546094 +INFO:root:Epoch[10] Batch [860] Speed: 678.89 samples/sec acc=0.546289 +INFO:root:Epoch[10] Batch [880] Speed: 658.34 samples/sec acc=0.539941 +INFO:root:Epoch[10] Batch [900] Speed: 662.61 samples/sec acc=0.538574 +INFO:root:Epoch[10] Batch [920] Speed: 637.39 samples/sec acc=0.548535 +INFO:root:Epoch[10] Batch [940] Speed: 661.71 samples/sec acc=0.550195 +INFO:root:Epoch[10] Batch [960] Speed: 662.33 samples/sec acc=0.539551 +INFO:root:Epoch[10] Batch [980] Speed: 661.54 samples/sec acc=0.539844 +INFO:root:Epoch[10] Batch [1000] Speed: 656.81 samples/sec acc=0.526172 +INFO:root:Epoch[10] Batch [1020] Speed: 660.63 samples/sec acc=0.534375 +INFO:root:Epoch[10] Batch [1040] Speed: 662.14 samples/sec acc=0.529785 +INFO:root:Epoch[10] Batch [1060] Speed: 662.82 samples/sec acc=0.537891 +INFO:root:Epoch[10] Batch [1080] Speed: 661.59 samples/sec acc=0.529687 +INFO:root:Epoch[10] Batch [1100] Speed: 661.61 samples/sec acc=0.540137 +INFO:root:Epoch[10] Batch [1120] Speed: 654.03 samples/sec acc=0.525781 +INFO:root:Epoch[10] Batch [1140] Speed: 645.43 samples/sec acc=0.523828 +INFO:root:Epoch[10] Batch [1160] Speed: 655.88 samples/sec acc=0.538184 +INFO:root:Epoch[10] Batch [1180] Speed: 659.75 samples/sec acc=0.537402 +INFO:root:Epoch[10] Batch [1200] Speed: 662.69 samples/sec acc=0.535645 +INFO:root:Epoch[10] Batch [1220] Speed: 661.87 samples/sec acc=0.532617 +INFO:root:Epoch[10] Batch [1240] Speed: 642.59 samples/sec acc=0.528223 +INFO:root:Epoch[10] Batch [1260] Speed: 642.67 samples/sec acc=0.531055 +INFO:root:Epoch[10] Batch [1280] Speed: 661.76 samples/sec acc=0.532129 +INFO:root:Epoch[10] Batch [1300] Speed: 662.51 samples/sec acc=0.523340 +INFO:root:Epoch[10] Batch [1320] Speed: 652.05 samples/sec acc=0.530176 +INFO:root:Epoch[10] Batch [1340] Speed: 662.16 samples/sec acc=0.532813 +INFO:root:Epoch[10] Batch [1360] Speed: 657.98 samples/sec acc=0.521582 +INFO:root:Epoch[10] Batch [1380] Speed: 662.55 samples/sec acc=0.528809 +INFO:root:Epoch[10] Batch [1400] Speed: 662.14 samples/sec acc=0.529687 +INFO:root:Epoch[10] Batch [1420] Speed: 662.09 samples/sec acc=0.523340 +INFO:root:Epoch[10] Batch [1440] Speed: 663.28 samples/sec acc=0.536719 +INFO:root:Epoch[10] Batch [1460] Speed: 661.95 samples/sec acc=0.524316 +INFO:root:Epoch[10] Batch [1480] Speed: 628.56 samples/sec acc=0.536133 +INFO:root:Epoch[10] Batch [1500] Speed: 662.72 samples/sec acc=0.524121 +INFO:root:Epoch[10] Batch [1520] Speed: 657.61 samples/sec acc=0.531738 +INFO:root:Epoch[10] Batch [1540] Speed: 646.28 samples/sec acc=0.531055 +INFO:root:Epoch[10] Batch [1560] Speed: 663.10 samples/sec acc=0.522070 +INFO:root:Epoch[10] Batch [1580] Speed: 644.19 samples/sec acc=0.523145 +INFO:root:Epoch[10] Batch [1600] Speed: 668.17 samples/sec acc=0.515820 +INFO:root:Epoch[10] Batch [1620] Speed: 662.17 samples/sec acc=0.527637 +INFO:root:Epoch[10] Batch [1640] Speed: 662.61 samples/sec acc=0.516992 +INFO:root:Epoch[10] Batch [1660] Speed: 657.86 samples/sec acc=0.525293 +INFO:root:Epoch[10] Batch [1680] Speed: 663.19 samples/sec acc=0.512109 +INFO:root:Epoch[10] Batch [1700] Speed: 655.94 samples/sec acc=0.536426 +INFO:root:Epoch[10] Batch [1720] Speed: 662.02 samples/sec acc=0.520117 +INFO:root:Epoch[10] Batch [1740] Speed: 663.35 samples/sec acc=0.524707 +INFO:root:Epoch[10] Batch [1760] Speed: 661.70 samples/sec acc=0.521973 +INFO:root:Epoch[10] Batch [1780] Speed: 664.95 samples/sec acc=0.514746 +INFO:root:Epoch[10] Batch [1800] Speed: 662.84 samples/sec acc=0.507812 +lr-batch-epoch: 0.01 1809 10 +INFO:root:Epoch[10] Batch [1820] Speed: 663.07 samples/sec acc=0.522070 +INFO:root:Epoch[10] Batch [1840] Speed: 661.54 samples/sec acc=0.523828 +INFO:root:Epoch[10] Batch [1860] Speed: 656.46 samples/sec acc=0.522852 +INFO:root:Epoch[10] Batch [1880] Speed: 673.98 samples/sec acc=0.522559 +INFO:root:Epoch[10] Batch [1900] Speed: 674.91 samples/sec acc=0.523438 +INFO:root:Epoch[10] Batch [1920] Speed: 636.93 samples/sec acc=0.525293 +INFO:root:Epoch[10] Batch [1940] Speed: 639.67 samples/sec acc=0.514844 +INFO:root:Epoch[10] Batch [1960] Speed: 662.24 samples/sec acc=0.522754 +INFO:root:Epoch[10] Batch [1980] Speed: 663.18 samples/sec acc=0.520801 +INFO:root:Epoch[10] Batch [2000] Speed: 651.25 samples/sec acc=0.513672 +INFO:root:Epoch[10] Batch [2020] Speed: 661.46 samples/sec acc=0.515527 +INFO:root:Epoch[10] Batch [2040] Speed: 662.35 samples/sec acc=0.527930 +INFO:root:Epoch[10] Batch [2060] Speed: 648.15 samples/sec acc=0.522754 +INFO:root:Epoch[10] Batch [2080] Speed: 662.42 samples/sec acc=0.515137 +INFO:root:Epoch[10] Batch [2100] Speed: 662.42 samples/sec acc=0.531250 +INFO:root:Epoch[10] Batch [2120] Speed: 661.77 samples/sec acc=0.524707 +INFO:root:Epoch[10] Batch [2140] Speed: 661.41 samples/sec acc=0.512305 +INFO:root:Epoch[10] Batch [2160] Speed: 661.65 samples/sec acc=0.512891 +INFO:root:Epoch[10] Batch [2180] Speed: 662.07 samples/sec acc=0.521875 +INFO:root:Epoch[10] Batch [2200] Speed: 660.89 samples/sec acc=0.526855 +INFO:root:Epoch[10] Batch [2220] Speed: 675.81 samples/sec acc=0.520312 +INFO:root:Epoch[10] Batch [2240] Speed: 667.51 samples/sec acc=0.514551 +INFO:root:Epoch[10] Batch [2260] Speed: 661.34 samples/sec acc=0.517676 +INFO:root:Epoch[10] Batch [2280] Speed: 662.16 samples/sec acc=0.525293 +INFO:root:Epoch[10] Batch [2300] Speed: 660.90 samples/sec acc=0.525195 +INFO:root:Epoch[10] Batch [2320] Speed: 668.63 samples/sec acc=0.521484 +INFO:root:Epoch[10] Batch [2340] Speed: 661.97 samples/sec acc=0.528711 +INFO:root:Epoch[10] Batch [2360] Speed: 661.82 samples/sec acc=0.515625 +INFO:root:Epoch[10] Batch [2380] Speed: 662.06 samples/sec acc=0.516309 +INFO:root:Epoch[10] Batch [2400] Speed: 662.65 samples/sec acc=0.511816 +INFO:root:Epoch[10] Batch [2420] Speed: 661.43 samples/sec acc=0.515820 +INFO:root:Epoch[10] Batch [2440] Speed: 662.54 samples/sec acc=0.515039 +INFO:root:Epoch[10] Batch [2460] Speed: 662.99 samples/sec acc=0.521289 +INFO:root:Epoch[10] Batch [2480] Speed: 661.58 samples/sec acc=0.517676 +INFO:root:Epoch[10] Batch [2500] Speed: 663.06 samples/sec acc=0.520898 +INFO:root:Epoch[10] Batch [2520] Speed: 662.42 samples/sec acc=0.513770 +INFO:root:Epoch[10] Batch [2540] Speed: 661.06 samples/sec acc=0.512402 +INFO:root:Epoch[10] Batch [2560] Speed: 661.99 samples/sec acc=0.507910 +INFO:root:Epoch[10] Batch [2580] Speed: 663.06 samples/sec acc=0.523633 +INFO:root:Epoch[10] Batch [2600] Speed: 662.34 samples/sec acc=0.521680 +INFO:root:Epoch[10] Batch [2620] Speed: 662.66 samples/sec acc=0.512207 +INFO:root:Epoch[10] Batch [2640] Speed: 662.69 samples/sec acc=0.517383 +INFO:root:Epoch[10] Batch [2660] Speed: 661.49 samples/sec acc=0.517188 +INFO:root:Epoch[10] Batch [2680] Speed: 662.29 samples/sec acc=0.515527 +INFO:root:Epoch[10] Batch [2700] Speed: 661.23 samples/sec acc=0.514551 +INFO:root:Epoch[10] Batch [2720] Speed: 671.05 samples/sec acc=0.512500 +INFO:root:Epoch[10] Batch [2740] Speed: 649.85 samples/sec acc=0.519043 +INFO:root:Epoch[10] Batch [2760] Speed: 663.05 samples/sec acc=0.512500 +INFO:root:Epoch[10] Batch [2780] Speed: 655.80 samples/sec acc=0.514648 +INFO:root:Epoch[10] Batch [2800] Speed: 643.86 samples/sec acc=0.518848 +[78000][MARGIN]0.763951,0.365564 +lr-batch-epoch: 0.01 2809 10 +testing verification.. +(14000, 512) +infer time 22.305833 +[cfp_ff][78000]XNorm: 21.742797 +[cfp_ff][78000]Accuracy-Flip: 0.99743+-0.00246 +testing verification.. +(14000, 512) +infer time 20.541787 +[cfp_fp][78000]XNorm: 18.882740 +[cfp_fp][78000]Accuracy-Flip: 0.90014+-0.01820 +testing verification.. +(12000, 512) +infer time 16.556826 +[agedb_30][78000]XNorm: 21.761145 +[agedb_30][78000]Accuracy-Flip: 0.97050+-0.00683 +testing verification.. +(12000, 512) +infer time 17.500644 +[lfw][78000]XNorm: 21.933259 +[lfw][78000]Accuracy-Flip: 0.99683+-0.00217 +[78000]Accuracy-Highest: 0.99717 +INFO:root:Epoch[10] Batch [2820] Speed: 92.25 samples/sec acc=0.520312 +INFO:root:Epoch[10] Batch [2840] Speed: 661.65 samples/sec acc=0.522559 +INFO:root:Epoch[10] Batch [2860] Speed: 662.77 samples/sec acc=0.515625 +INFO:root:Epoch[10] Batch [2880] Speed: 662.95 samples/sec acc=0.511426 +INFO:root:Epoch[10] Batch [2900] Speed: 661.86 samples/sec acc=0.516406 +INFO:root:Epoch[10] Batch [2920] Speed: 662.70 samples/sec acc=0.514160 +INFO:root:Epoch[10] Batch [2940] Speed: 662.82 samples/sec acc=0.510938 +INFO:root:Epoch[10] Batch [2960] Speed: 662.02 samples/sec acc=0.501660 +INFO:root:Epoch[10] Batch [2980] Speed: 662.04 samples/sec acc=0.512793 +INFO:root:Epoch[10] Batch [3000] Speed: 662.37 samples/sec acc=0.515527 +INFO:root:Epoch[10] Batch [3020] Speed: 660.03 samples/sec acc=0.514160 +INFO:root:Epoch[10] Batch [3040] Speed: 666.67 samples/sec acc=0.523047 +INFO:root:Epoch[10] Batch [3060] Speed: 649.15 samples/sec acc=0.520605 +INFO:root:Epoch[10] Batch [3080] Speed: 661.78 samples/sec acc=0.514258 +INFO:root:Epoch[10] Batch [3100] Speed: 661.87 samples/sec acc=0.519336 +INFO:root:Epoch[10] Batch [3120] Speed: 662.36 samples/sec acc=0.516992 +INFO:root:Epoch[10] Batch [3140] Speed: 658.33 samples/sec acc=0.513770 +INFO:root:Epoch[10] Batch [3160] Speed: 662.19 samples/sec acc=0.510840 +INFO:root:Epoch[10] Batch [3180] Speed: 655.44 samples/sec acc=0.511426 +INFO:root:Epoch[10] Batch [3200] Speed: 678.06 samples/sec acc=0.516797 +INFO:root:Epoch[10] Batch [3220] Speed: 668.03 samples/sec acc=0.507324 +INFO:root:Epoch[10] Batch [3240] Speed: 662.59 samples/sec acc=0.519531 +INFO:root:Epoch[10] Batch [3260] Speed: 661.80 samples/sec acc=0.513672 +INFO:root:Epoch[10] Batch [3280] Speed: 662.00 samples/sec acc=0.515625 +INFO:root:Epoch[10] Batch [3300] Speed: 662.83 samples/sec acc=0.520215 +INFO:root:Epoch[10] Batch [3320] Speed: 661.45 samples/sec acc=0.520312 +INFO:root:Epoch[10] Batch [3340] Speed: 662.13 samples/sec acc=0.507910 +INFO:root:Epoch[10] Batch [3360] Speed: 662.98 samples/sec acc=0.508594 +INFO:root:Epoch[10] Batch [3380] Speed: 660.89 samples/sec acc=0.515625 +INFO:root:Epoch[10] Batch [3400] Speed: 662.11 samples/sec acc=0.519629 +INFO:root:Epoch[10] Batch [3420] Speed: 663.03 samples/sec acc=0.517676 +INFO:root:Epoch[10] Batch [3440] Speed: 661.58 samples/sec acc=0.514941 +INFO:root:Epoch[10] Batch [3460] Speed: 661.81 samples/sec acc=0.514648 +INFO:root:Epoch[10] Batch [3480] Speed: 662.38 samples/sec acc=0.510254 +INFO:root:Epoch[10] Batch [3500] Speed: 659.37 samples/sec acc=0.515039 +INFO:root:Epoch[10] Batch [3520] Speed: 664.48 samples/sec acc=0.512109 +INFO:root:Epoch[10] Batch [3540] Speed: 662.64 samples/sec acc=0.502930 +INFO:root:Epoch[10] Batch [3560] Speed: 662.15 samples/sec acc=0.500977 +INFO:root:Epoch[10] Batch [3580] Speed: 662.73 samples/sec acc=0.521094 +INFO:root:Epoch[10] Batch [3600] Speed: 663.40 samples/sec acc=0.513086 +INFO:root:Epoch[10] Batch [3620] Speed: 662.68 samples/sec acc=0.514258 +INFO:root:Epoch[10] Batch [3640] Speed: 662.94 samples/sec acc=0.510742 +INFO:root:Epoch[10] Batch [3660] Speed: 662.25 samples/sec acc=0.506836 +INFO:root:Epoch[10] Batch [3680] Speed: 661.13 samples/sec acc=0.515039 +INFO:root:Epoch[10] Batch [3700] Speed: 661.54 samples/sec acc=0.507715 +INFO:root:Epoch[10] Batch [3720] Speed: 662.39 samples/sec acc=0.507129 +INFO:root:Epoch[10] Batch [3740] Speed: 661.16 samples/sec acc=0.509277 +INFO:root:Epoch[10] Batch [3760] Speed: 662.50 samples/sec acc=0.513770 +INFO:root:Epoch[10] Batch [3780] Speed: 661.38 samples/sec acc=0.510547 +INFO:root:Epoch[10] Batch [3800] Speed: 668.29 samples/sec acc=0.512207 +lr-batch-epoch: 0.01 3809 10 +INFO:root:Epoch[10] Batch [3820] Speed: 661.98 samples/sec acc=0.515332 +INFO:root:Epoch[10] Batch [3840] Speed: 661.72 samples/sec acc=0.509961 +INFO:root:Epoch[10] Batch [3860] Speed: 662.31 samples/sec acc=0.516504 +INFO:root:Epoch[10] Batch [3880] Speed: 662.12 samples/sec acc=0.516309 +INFO:root:Epoch[10] Batch [3900] Speed: 661.82 samples/sec acc=0.509668 +INFO:root:Epoch[10] Batch [3920] Speed: 661.37 samples/sec acc=0.505176 +INFO:root:Epoch[10] Batch [3940] Speed: 661.32 samples/sec acc=0.508594 +INFO:root:Epoch[10] Batch [3960] Speed: 662.50 samples/sec acc=0.513770 +INFO:root:Epoch[10] Batch [3980] Speed: 661.19 samples/sec acc=0.515234 +INFO:root:Epoch[10] Batch [4000] Speed: 661.51 samples/sec acc=0.513184 +INFO:root:Epoch[10] Batch [4020] Speed: 662.09 samples/sec acc=0.506836 +INFO:root:Epoch[10] Batch [4040] Speed: 661.66 samples/sec acc=0.502832 +INFO:root:Epoch[10] Batch [4060] Speed: 660.81 samples/sec acc=0.515625 +INFO:root:Epoch[10] Batch [4080] Speed: 641.06 samples/sec acc=0.513965 +INFO:root:Epoch[10] Batch [4100] Speed: 661.29 samples/sec acc=0.508887 +INFO:root:Epoch[10] Batch [4120] Speed: 661.94 samples/sec acc=0.518457 +INFO:root:Epoch[10] Batch [4140] Speed: 662.06 samples/sec acc=0.504785 +INFO:root:Epoch[10] Batch [4160] Speed: 661.90 samples/sec acc=0.508789 +INFO:root:Epoch[10] Batch [4180] Speed: 662.09 samples/sec acc=0.516406 +INFO:root:Epoch[10] Batch [4200] Speed: 662.36 samples/sec acc=0.506641 +INFO:root:Epoch[10] Batch [4220] Speed: 649.50 samples/sec acc=0.504492 +INFO:root:Epoch[10] Batch [4240] Speed: 661.27 samples/sec acc=0.503906 +INFO:root:Epoch[10] Batch [4260] Speed: 662.82 samples/sec acc=0.512988 +INFO:root:Epoch[10] Batch [4280] Speed: 661.64 samples/sec acc=0.508984 +INFO:root:Epoch[10] Batch [4300] Speed: 662.20 samples/sec acc=0.522852 +INFO:root:Epoch[10] Batch [4320] Speed: 662.35 samples/sec acc=0.514844 +INFO:root:Epoch[10] Batch [4340] Speed: 661.69 samples/sec acc=0.516309 +INFO:root:Epoch[10] Batch [4360] Speed: 661.98 samples/sec acc=0.519922 +INFO:root:Epoch[10] Batch [4380] Speed: 662.40 samples/sec acc=0.514160 +INFO:root:Epoch[10] Batch [4400] Speed: 661.94 samples/sec acc=0.514746 +INFO:root:Epoch[10] Batch [4420] Speed: 661.95 samples/sec acc=0.510254 +INFO:root:Epoch[10] Batch [4440] Speed: 661.79 samples/sec acc=0.505273 +INFO:root:Epoch[10] Batch [4460] Speed: 661.85 samples/sec acc=0.509473 +INFO:root:Epoch[10] Batch [4480] Speed: 661.30 samples/sec acc=0.515137 +INFO:root:Epoch[10] Batch [4500] Speed: 662.09 samples/sec acc=0.508887 +INFO:root:Epoch[10] Batch [4520] Speed: 661.66 samples/sec acc=0.512891 +INFO:root:Epoch[10] Batch [4540] Speed: 661.62 samples/sec acc=0.511523 +INFO:root:Epoch[10] Batch [4560] Speed: 662.46 samples/sec acc=0.512109 +INFO:root:Epoch[10] Batch [4580] Speed: 657.30 samples/sec acc=0.510254 +INFO:root:Epoch[10] Batch [4600] Speed: 664.14 samples/sec acc=0.513867 +INFO:root:Epoch[10] Batch [4620] Speed: 662.11 samples/sec acc=0.515918 +INFO:root:Epoch[10] Batch [4640] Speed: 662.15 samples/sec acc=0.504297 +INFO:root:Epoch[10] Batch [4660] Speed: 662.22 samples/sec acc=0.515918 +INFO:root:Epoch[10] Batch [4680] Speed: 662.00 samples/sec acc=0.509180 +INFO:root:Epoch[10] Batch [4700] Speed: 656.05 samples/sec acc=0.508887 +INFO:root:Epoch[10] Batch [4720] Speed: 661.71 samples/sec acc=0.511914 +INFO:root:Epoch[10] Batch [4740] Speed: 662.36 samples/sec acc=0.498730 +INFO:root:Epoch[10] Batch [4760] Speed: 661.53 samples/sec acc=0.511328 +INFO:root:Epoch[10] Batch [4780] Speed: 662.24 samples/sec acc=0.505762 +INFO:root:Epoch[10] Batch [4800] Speed: 662.22 samples/sec acc=0.513867 +[80000][MARGIN]0.757792,0.356637 +lr change to 0.001 +lr-batch-epoch: 0.001 4809 10 +testing verification.. +(14000, 512) +infer time 20.193704 +[cfp_ff][80000]XNorm: 21.835066 +[cfp_ff][80000]Accuracy-Flip: 0.99686+-0.00246 +testing verification.. +(14000, 512) +infer time 18.215044 +[cfp_fp][80000]XNorm: 19.073938 +[cfp_fp][80000]Accuracy-Flip: 0.90757+-0.01565 +testing verification.. +(12000, 512) +infer time 14.828748 +[agedb_30][80000]XNorm: 22.301100 +[agedb_30][80000]Accuracy-Flip: 0.96883+-0.00771 +testing verification.. +(12000, 512) +infer time 14.81863 +[lfw][80000]XNorm: 22.352697 +[lfw][80000]Accuracy-Flip: 0.99617+-0.00350 +[80000]Accuracy-Highest: 0.99717 +INFO:root:Epoch[10] Batch [4820] Speed: 100.70 samples/sec acc=0.485156 +INFO:root:Epoch[10] Batch [4840] Speed: 661.51 samples/sec acc=0.479785 +INFO:root:Epoch[10] Batch [4860] Speed: 662.07 samples/sec acc=0.509570 +INFO:root:Epoch[10] Batch [4880] Speed: 661.71 samples/sec acc=0.533594 +INFO:root:Epoch[10] Batch [4900] Speed: 659.34 samples/sec acc=0.533789 +INFO:root:Epoch[10] Batch [4920] Speed: 661.61 samples/sec acc=0.554004 +INFO:root:Epoch[10] Batch [4940] Speed: 660.77 samples/sec acc=0.545508 +INFO:root:Epoch[10] Batch [4960] Speed: 662.51 samples/sec acc=0.560742 +INFO:root:Epoch[10] Batch [4980] Speed: 662.20 samples/sec acc=0.569629 +INFO:root:Epoch[10] Batch [5000] Speed: 660.65 samples/sec acc=0.560742 +INFO:root:Epoch[10] Batch [5020] Speed: 649.35 samples/sec acc=0.566309 +INFO:root:Epoch[10] Batch [5040] Speed: 651.36 samples/sec acc=0.561914 +INFO:root:Epoch[10] Batch [5060] Speed: 661.99 samples/sec acc=0.562988 +INFO:root:Epoch[10] Batch [5080] Speed: 661.57 samples/sec acc=0.575684 +INFO:root:Epoch[10] Batch [5100] Speed: 662.19 samples/sec acc=0.577734 +INFO:root:Epoch[10] Batch [5120] Speed: 661.94 samples/sec acc=0.573438 +INFO:root:Epoch[10] Batch [5140] Speed: 662.21 samples/sec acc=0.579883 +INFO:root:Epoch[10] Batch [5160] Speed: 662.53 samples/sec acc=0.580859 +INFO:root:Epoch[10] Batch [5180] Speed: 656.48 samples/sec acc=0.572070 +INFO:root:Epoch[10] Batch [5200] Speed: 660.39 samples/sec acc=0.587305 +INFO:root:Epoch[10] Batch [5220] Speed: 655.62 samples/sec acc=0.578223 +INFO:root:Epoch[10] Batch [5240] Speed: 661.59 samples/sec acc=0.580176 +INFO:root:Epoch[10] Batch [5260] Speed: 661.71 samples/sec acc=0.586230 +INFO:root:Epoch[10] Batch [5280] Speed: 657.49 samples/sec acc=0.579785 +INFO:root:Epoch[10] Batch [5300] Speed: 650.05 samples/sec acc=0.582715 +INFO:root:Epoch[10] Batch [5320] Speed: 662.82 samples/sec acc=0.587891 +INFO:root:Epoch[10] Batch [5340] Speed: 662.62 samples/sec acc=0.578613 +INFO:root:Epoch[10] Batch [5360] Speed: 642.86 samples/sec acc=0.583203 +INFO:root:Epoch[10] Batch [5380] Speed: 662.66 samples/sec acc=0.586035 +INFO:root:Epoch[10] Batch [5400] Speed: 665.24 samples/sec acc=0.589648 +INFO:root:Epoch[10] Batch [5420] Speed: 661.20 samples/sec acc=0.584082 +INFO:root:Epoch[10] Batch [5440] Speed: 661.75 samples/sec acc=0.582715 +INFO:root:Epoch[10] Batch [5460] Speed: 662.44 samples/sec acc=0.591406 +INFO:root:Epoch[10] Batch [5480] Speed: 661.14 samples/sec acc=0.586621 +INFO:root:Epoch[10] Batch [5500] Speed: 661.79 samples/sec acc=0.591797 +INFO:root:Epoch[10] Batch [5520] Speed: 648.42 samples/sec acc=0.597754 +INFO:root:Epoch[10] Batch [5540] Speed: 672.93 samples/sec acc=0.599414 +INFO:root:Epoch[10] Batch [5560] Speed: 662.42 samples/sec acc=0.597461 +INFO:root:Epoch[10] Batch [5580] Speed: 662.10 samples/sec acc=0.597656 +INFO:root:Epoch[10] Batch [5600] Speed: 661.51 samples/sec acc=0.604102 +INFO:root:Epoch[10] Batch [5620] Speed: 661.90 samples/sec acc=0.586719 +INFO:root:Epoch[10] Batch [5640] Speed: 662.20 samples/sec acc=0.598730 +INFO:root:Epoch[10] Batch [5660] Speed: 661.40 samples/sec acc=0.598437 +INFO:root:Epoch[10] Batch [5680] Speed: 662.36 samples/sec acc=0.601953 +INFO:root:Epoch[10] Batch [5700] Speed: 661.73 samples/sec acc=0.604004 +INFO:root:Epoch[10] Batch [5720] Speed: 661.01 samples/sec acc=0.603027 +INFO:root:Epoch[10] Batch [5740] Speed: 661.64 samples/sec acc=0.605078 +INFO:root:Epoch[10] Batch [5760] Speed: 653.45 samples/sec acc=0.604590 +INFO:root:Epoch[10] Batch [5780] Speed: 666.89 samples/sec acc=0.601074 +INFO:root:Epoch[10] Batch [5800] Speed: 652.31 samples/sec acc=0.612305 +lr-batch-epoch: 0.001 5809 10 +INFO:root:Epoch[10] Batch [5820] Speed: 670.74 samples/sec acc=0.613184 +INFO:root:Epoch[10] Batch [5840] Speed: 661.20 samples/sec acc=0.600391 +INFO:root:Epoch[10] Batch [5860] Speed: 662.13 samples/sec acc=0.596582 +INFO:root:Epoch[10] Batch [5880] Speed: 651.04 samples/sec acc=0.603320 +INFO:root:Epoch[10] Batch [5900] Speed: 661.14 samples/sec acc=0.611426 +INFO:root:Epoch[10] Batch [5920] Speed: 660.84 samples/sec acc=0.610840 +INFO:root:Epoch[10] Batch [5940] Speed: 659.71 samples/sec acc=0.608301 +INFO:root:Epoch[10] Batch [5960] Speed: 662.08 samples/sec acc=0.609570 +INFO:root:Epoch[10] Batch [5980] Speed: 661.93 samples/sec acc=0.615332 +INFO:root:Epoch[10] Batch [6000] Speed: 659.89 samples/sec acc=0.614355 +INFO:root:Epoch[10] Batch [6020] Speed: 661.95 samples/sec acc=0.607227 +INFO:root:Epoch[10] Batch [6040] Speed: 661.60 samples/sec acc=0.610156 +INFO:root:Epoch[10] Batch [6060] Speed: 662.72 samples/sec acc=0.613965 +INFO:root:Epoch[10] Batch [6080] Speed: 661.70 samples/sec acc=0.612695 +INFO:root:Epoch[10] Batch [6100] Speed: 661.85 samples/sec acc=0.612695 +INFO:root:Epoch[10] Batch [6120] Speed: 662.35 samples/sec acc=0.620410 +INFO:root:Epoch[10] Batch [6140] Speed: 661.86 samples/sec acc=0.614648 +INFO:root:Epoch[10] Batch [6160] Speed: 646.63 samples/sec acc=0.614551 +INFO:root:Epoch[10] Batch [6180] Speed: 652.10 samples/sec acc=0.616113 +INFO:root:Epoch[10] Batch [6200] Speed: 659.59 samples/sec acc=0.612012 +INFO:root:Epoch[10] Batch [6220] Speed: 663.49 samples/sec acc=0.615332 +INFO:root:Epoch[10] Batch [6240] Speed: 649.58 samples/sec acc=0.615918 +INFO:root:Epoch[10] Batch [6260] Speed: 661.33 samples/sec acc=0.613379 +INFO:root:Epoch[10] Batch [6280] Speed: 661.48 samples/sec acc=0.612305 +INFO:root:Epoch[10] Batch [6300] Speed: 662.48 samples/sec acc=0.608789 +INFO:root:Epoch[10] Batch [6320] Speed: 666.84 samples/sec acc=0.625977 +INFO:root:Epoch[10] Batch [6340] Speed: 661.62 samples/sec acc=0.615039 +INFO:root:Epoch[10] Batch [6360] Speed: 662.50 samples/sec acc=0.618457 +INFO:root:Epoch[10] Batch [6380] Speed: 658.99 samples/sec acc=0.620996 +INFO:root:Epoch[10] Batch [6400] Speed: 662.38 samples/sec acc=0.624902 +INFO:root:Epoch[10] Batch [6420] Speed: 662.59 samples/sec acc=0.619043 +INFO:root:Epoch[10] Batch [6440] Speed: 661.52 samples/sec acc=0.624219 +INFO:root:Epoch[10] Batch [6460] Speed: 661.98 samples/sec acc=0.626465 +INFO:root:Epoch[10] Batch [6480] Speed: 662.33 samples/sec acc=0.624609 +INFO:root:Epoch[10] Batch [6500] Speed: 661.43 samples/sec acc=0.615625 +INFO:root:Epoch[10] Batch [6520] Speed: 662.08 samples/sec acc=0.617188 +INFO:root:Epoch[10] Batch [6540] Speed: 662.44 samples/sec acc=0.622852 +INFO:root:Epoch[10] Batch [6560] Speed: 668.89 samples/sec acc=0.623828 +INFO:root:Epoch[10] Batch [6580] Speed: 657.25 samples/sec acc=0.629297 +INFO:root:Epoch[10] Batch [6600] Speed: 662.63 samples/sec acc=0.619629 +INFO:root:Epoch[10] Batch [6620] Speed: 661.48 samples/sec acc=0.628320 +INFO:root:Epoch[10] Batch [6640] Speed: 661.40 samples/sec acc=0.622168 +INFO:root:Epoch[10] Batch [6660] Speed: 661.12 samples/sec acc=0.623145 +INFO:root:Epoch[10] Batch [6680] Speed: 661.53 samples/sec acc=0.629687 +INFO:root:Epoch[10] Batch [6700] Speed: 661.27 samples/sec acc=0.623340 +INFO:root:Epoch[10] Batch [6720] Speed: 662.32 samples/sec acc=0.629883 +INFO:root:Epoch[10] Batch [6740] Speed: 661.56 samples/sec acc=0.626074 +INFO:root:Epoch[10] Batch [6760] Speed: 662.13 samples/sec acc=0.630566 +INFO:root:Epoch[10] Batch [6780] Speed: 662.29 samples/sec acc=0.628906 +INFO:root:Epoch[10] Batch [6800] Speed: 662.13 samples/sec acc=0.625586 +[82000][MARGIN]0.795547,0.411048 +lr-batch-epoch: 0.001 6809 10 +testing verification.. +(14000, 512) +infer time 23.51775 +[cfp_ff][82000]XNorm: 21.816110 +[cfp_ff][82000]Accuracy-Flip: 0.99814+-0.00222 +testing verification.. +(14000, 512) +infer time 25.430244 +[cfp_fp][82000]XNorm: 19.249503 +[cfp_fp][82000]Accuracy-Flip: 0.92000+-0.01553 +testing verification.. +(12000, 512) +infer time 20.465929 +[agedb_30][82000]XNorm: 22.299578 +[agedb_30][82000]Accuracy-Flip: 0.97650+-0.00664 +testing verification.. +(12000, 512) +infer time 20.801524 +[lfw][82000]XNorm: 22.182999 +[lfw][82000]Accuracy-Flip: 0.99767+-0.00281 +saving 41 +INFO:root:Saved checkpoint to "../model-r50-am-lfw/model-0041.params" +[82000]Accuracy-Highest: 0.99767 +INFO:root:Epoch[10] Batch [6820] Speed: 78.65 samples/sec acc=0.624414 +INFO:root:Epoch[10] Batch [6840] Speed: 662.41 samples/sec acc=0.634863 +INFO:root:Epoch[10] Batch [6860] Speed: 661.77 samples/sec acc=0.632715 +INFO:root:Epoch[10] Batch [6880] Speed: 661.81 samples/sec acc=0.620703 +INFO:root:Epoch[10] Batch [6900] Speed: 665.16 samples/sec acc=0.635059 +INFO:root:Epoch[10] Batch [6920] Speed: 645.79 samples/sec acc=0.630078 +INFO:root:Epoch[10] Batch [6940] Speed: 651.71 samples/sec acc=0.639062 +INFO:root:Epoch[10] Batch [6960] Speed: 645.37 samples/sec acc=0.639551 +INFO:root:Epoch[10] Batch [6980] Speed: 669.54 samples/sec acc=0.632812 +INFO:root:Epoch[10] Batch [7000] Speed: 661.93 samples/sec acc=0.631055 +INFO:root:Epoch[10] Batch [7020] Speed: 663.21 samples/sec acc=0.626465 +INFO:root:Epoch[10] Batch [7040] Speed: 651.73 samples/sec acc=0.632715 +INFO:root:Epoch[10] Batch [7060] Speed: 627.33 samples/sec acc=0.638672 +INFO:root:Epoch[10] Batch [7080] Speed: 664.37 samples/sec acc=0.638867 +INFO:root:Epoch[10] Batch [7100] Speed: 657.87 samples/sec acc=0.635938 +INFO:root:Epoch[10] Batch [7120] Speed: 665.13 samples/sec acc=0.629883 +INFO:root:Epoch[10] Batch [7140] Speed: 661.72 samples/sec acc=0.627344 +INFO:root:Epoch[10] Batch [7160] Speed: 659.49 samples/sec acc=0.645215 +INFO:root:Epoch[10] Batch [7180] Speed: 653.52 samples/sec acc=0.635254 +INFO:root:Epoch[10] Batch [7200] Speed: 624.98 samples/sec acc=0.644922 +INFO:root:Epoch[10] Batch [7220] Speed: 654.33 samples/sec acc=0.636035 +INFO:root:Epoch[10] Batch [7240] Speed: 662.73 samples/sec acc=0.639941 +INFO:root:Epoch[10] Batch [7260] Speed: 662.53 samples/sec acc=0.639355 +INFO:root:Epoch[10] Batch [7280] Speed: 661.53 samples/sec acc=0.636133 +INFO:root:Epoch[10] Batch [7300] Speed: 662.77 samples/sec acc=0.633789 +INFO:root:Epoch[10] Batch [7320] Speed: 662.60 samples/sec acc=0.642871 +INFO:root:Epoch[10] Batch [7340] Speed: 661.51 samples/sec acc=0.635742 +INFO:root:Epoch[10] Batch [7360] Speed: 618.70 samples/sec acc=0.633984 +INFO:root:Epoch[10] Batch [7380] Speed: 646.58 samples/sec acc=0.638867 +INFO:root:Epoch[10] Batch [7400] Speed: 661.66 samples/sec acc=0.642773 +INFO:root:Epoch[10] Batch [7420] Speed: 660.14 samples/sec acc=0.637012 +INFO:root:Epoch[10] Batch [7440] Speed: 662.69 samples/sec acc=0.635742 +INFO:root:Epoch[10] Batch [7460] Speed: 661.37 samples/sec acc=0.631152 +INFO:root:Epoch[10] Batch [7480] Speed: 662.18 samples/sec acc=0.640332 +INFO:root:Epoch[10] Batch [7500] Speed: 662.74 samples/sec acc=0.629004 +INFO:root:Epoch[10] Train-acc=0.643446 +INFO:root:Epoch[10] Time cost=6231.634 +call reset() +INFO:root:Epoch[11] Batch [20] Speed: 658.18 samples/sec acc=0.713077 +INFO:root:Epoch[11] Batch [40] Speed: 662.09 samples/sec acc=0.717285 +INFO:root:Epoch[11] Batch [60] Speed: 662.33 samples/sec acc=0.723145 +INFO:root:Epoch[11] Batch [80] Speed: 648.65 samples/sec acc=0.722559 +INFO:root:Epoch[11] Batch [100] Speed: 666.57 samples/sec acc=0.711914 +INFO:root:Epoch[11] Batch [120] Speed: 655.94 samples/sec acc=0.723535 +INFO:root:Epoch[11] Batch [140] Speed: 659.46 samples/sec acc=0.714063 +INFO:root:Epoch[11] Batch [160] Speed: 662.45 samples/sec acc=0.720117 +INFO:root:Epoch[11] Batch [180] Speed: 661.51 samples/sec acc=0.714160 +INFO:root:Epoch[11] Batch [200] Speed: 661.18 samples/sec acc=0.718555 +INFO:root:Epoch[11] Batch [220] Speed: 662.64 samples/sec acc=0.719824 +INFO:root:Epoch[11] Batch [240] Speed: 661.38 samples/sec acc=0.718652 +INFO:root:Epoch[11] Batch [260] Speed: 662.89 samples/sec acc=0.727637 +INFO:root:Epoch[11] Batch [280] Speed: 653.24 samples/sec acc=0.721582 +lr-batch-epoch: 0.001 290 11 +INFO:root:Epoch[11] Batch [300] Speed: 657.62 samples/sec acc=0.721973 +INFO:root:Epoch[11] Batch [320] Speed: 656.25 samples/sec acc=0.725098 +INFO:root:Epoch[11] Batch [340] Speed: 653.91 samples/sec acc=0.720605 +INFO:root:Epoch[11] Batch [360] Speed: 661.49 samples/sec acc=0.716309 +INFO:root:Epoch[11] Batch [380] Speed: 660.46 samples/sec acc=0.720508 +INFO:root:Epoch[11] Batch [400] Speed: 650.84 samples/sec acc=0.712305 +INFO:root:Epoch[11] Batch [420] Speed: 667.02 samples/sec acc=0.726270 +INFO:root:Epoch[11] Batch [440] Speed: 642.18 samples/sec acc=0.711816 +INFO:root:Epoch[11] Batch [460] Speed: 661.97 samples/sec acc=0.717578 +INFO:root:Epoch[11] Batch [480] Speed: 661.21 samples/sec acc=0.708496 +INFO:root:Epoch[11] Batch [500] Speed: 661.64 samples/sec acc=0.720801 +INFO:root:Epoch[11] Batch [520] Speed: 662.55 samples/sec acc=0.729297 +INFO:root:Epoch[11] Batch [540] Speed: 661.36 samples/sec acc=0.713672 +INFO:root:Epoch[11] Batch [560] Speed: 662.15 samples/sec acc=0.733887 +INFO:root:Epoch[11] Batch [580] Speed: 637.75 samples/sec acc=0.717773 +INFO:root:Epoch[11] Batch [600] Speed: 661.76 samples/sec acc=0.724023 +INFO:root:Epoch[11] Batch [620] Speed: 662.89 samples/sec acc=0.718359 +INFO:root:Epoch[11] Batch [640] Speed: 644.97 samples/sec acc=0.720117 +INFO:root:Epoch[11] Batch [660] Speed: 643.57 samples/sec acc=0.721484 +INFO:root:Epoch[11] Batch [680] Speed: 660.28 samples/sec acc=0.716504 +INFO:root:Epoch[11] Batch [700] Speed: 656.84 samples/sec acc=0.718262 +INFO:root:Epoch[11] Batch [720] Speed: 662.32 samples/sec acc=0.726270 +INFO:root:Epoch[11] Batch [740] Speed: 662.19 samples/sec acc=0.720313 +INFO:root:Epoch[11] Batch [760] Speed: 662.40 samples/sec acc=0.721777 +INFO:root:Epoch[11] Batch [780] Speed: 661.71 samples/sec acc=0.721875 +INFO:root:Epoch[11] Batch [800] Speed: 662.72 samples/sec acc=0.724023 +INFO:root:Epoch[11] Batch [820] Speed: 662.85 samples/sec acc=0.718555 +INFO:root:Epoch[11] Batch [840] Speed: 662.03 samples/sec acc=0.715039 +INFO:root:Epoch[11] Batch [860] Speed: 661.93 samples/sec acc=0.721191 +INFO:root:Epoch[11] Batch [880] Speed: 664.30 samples/sec acc=0.724609 +INFO:root:Epoch[11] Batch [900] Speed: 661.11 samples/sec acc=0.716504 +INFO:root:Epoch[11] Batch [920] Speed: 662.22 samples/sec acc=0.718848 +INFO:root:Epoch[11] Batch [940] Speed: 661.79 samples/sec acc=0.721973 +INFO:root:Epoch[11] Batch [960] Speed: 641.59 samples/sec acc=0.732227 +INFO:root:Epoch[11] Batch [980] Speed: 662.47 samples/sec acc=0.716797 +INFO:root:Epoch[11] Batch [1000] Speed: 643.29 samples/sec acc=0.717383 +INFO:root:Epoch[11] Batch [1020] Speed: 661.61 samples/sec acc=0.724512 +INFO:root:Epoch[11] Batch [1040] Speed: 644.83 samples/sec acc=0.730273 +INFO:root:Epoch[11] Batch [1060] Speed: 660.10 samples/sec acc=0.720313 +INFO:root:Epoch[11] Batch [1080] Speed: 661.61 samples/sec acc=0.720215 +INFO:root:Epoch[11] Batch [1100] Speed: 659.62 samples/sec acc=0.715332 +INFO:root:Epoch[11] Batch [1120] Speed: 659.91 samples/sec acc=0.724805 +INFO:root:Epoch[11] Batch [1140] Speed: 662.08 samples/sec acc=0.718945 +INFO:root:Epoch[11] Batch [1160] Speed: 661.37 samples/sec acc=0.718945 +INFO:root:Epoch[11] Batch [1180] Speed: 663.30 samples/sec acc=0.716992 +INFO:root:Epoch[11] Batch [1200] Speed: 661.13 samples/sec acc=0.729980 +INFO:root:Epoch[11] Batch [1220] Speed: 659.26 samples/sec acc=0.733008 +INFO:root:Epoch[11] Batch [1240] Speed: 663.69 samples/sec acc=0.730859 +INFO:root:Epoch[11] Batch [1260] Speed: 647.66 samples/sec acc=0.718750 +INFO:root:Epoch[11] Batch [1280] Speed: 662.49 samples/sec acc=0.720410 +[84000][MARGIN]0.783003,0.393450 +lr-batch-epoch: 0.001 1290 11 +testing verification.. +(14000, 512) +infer time 20.904889 +[cfp_ff][84000]XNorm: 21.706894 +[cfp_ff][84000]Accuracy-Flip: 0.99729+-0.00243 +testing verification.. +(14000, 512) +infer time 24.969568 +[cfp_fp][84000]XNorm: 19.449380 +[cfp_fp][84000]Accuracy-Flip: 0.92157+-0.01396 +testing verification.. +(12000, 512) +infer time 21.333209 +[agedb_30][84000]XNorm: 22.451793 +[agedb_30][84000]Accuracy-Flip: 0.97633+-0.00657 +testing verification.. +(12000, 512) +infer time 21.245474 +[lfw][84000]XNorm: 22.198713 +[lfw][84000]Accuracy-Flip: 0.99767+-0.00281 +saving 42 +INFO:root:Saved checkpoint to "../model-r50-am-lfw/model-0042.params" +[84000]Accuracy-Highest: 0.99767 +INFO:root:Epoch[11] Batch [1300] Speed: 80.00 samples/sec acc=0.716992 +INFO:root:Epoch[11] Batch [1320] Speed: 653.05 samples/sec acc=0.725391 +INFO:root:Epoch[11] Batch [1340] Speed: 661.33 samples/sec acc=0.718848 +INFO:root:Epoch[11] Batch [1360] Speed: 661.98 samples/sec acc=0.727051 +INFO:root:Epoch[11] Batch [1380] Speed: 661.54 samples/sec acc=0.723926 +INFO:root:Epoch[11] Batch [1400] Speed: 661.65 samples/sec acc=0.723145 +INFO:root:Epoch[11] Batch [1420] Speed: 662.32 samples/sec acc=0.722363 +INFO:root:Epoch[11] Batch [1440] Speed: 650.98 samples/sec acc=0.724316 +INFO:root:Epoch[11] Batch [1460] Speed: 661.70 samples/sec acc=0.728711 +INFO:root:Epoch[11] Batch [1480] Speed: 661.87 samples/sec acc=0.728516 +INFO:root:Epoch[11] Batch [1500] Speed: 663.45 samples/sec acc=0.728223 +INFO:root:Epoch[11] Batch [1520] Speed: 661.14 samples/sec acc=0.729492 +INFO:root:Epoch[11] Batch [1540] Speed: 660.94 samples/sec acc=0.717383 +INFO:root:Epoch[11] Batch [1560] Speed: 658.77 samples/sec acc=0.719824 +INFO:root:Epoch[11] Batch [1580] Speed: 668.94 samples/sec acc=0.720996 +INFO:root:Epoch[11] Batch [1600] Speed: 662.47 samples/sec acc=0.725488 +INFO:root:Epoch[11] Batch [1620] Speed: 661.41 samples/sec acc=0.724512 +INFO:root:Epoch[11] Batch [1640] Speed: 662.32 samples/sec acc=0.724707 +INFO:root:Epoch[11] Batch [1660] Speed: 656.46 samples/sec acc=0.728125 +INFO:root:Epoch[11] Batch [1680] Speed: 679.16 samples/sec acc=0.730469 +INFO:root:Epoch[11] Batch [1700] Speed: 662.37 samples/sec acc=0.728223 +INFO:root:Epoch[11] Batch [1720] Speed: 662.30 samples/sec acc=0.718555 +INFO:root:Epoch[11] Batch [1740] Speed: 660.93 samples/sec acc=0.721387 +INFO:root:Epoch[11] Batch [1760] Speed: 661.97 samples/sec acc=0.729199 +INFO:root:Epoch[11] Batch [1780] Speed: 661.57 samples/sec acc=0.728711 +INFO:root:Epoch[11] Batch [1800] Speed: 661.51 samples/sec acc=0.724219 +INFO:root:Epoch[11] Batch [1820] Speed: 661.86 samples/sec acc=0.729492 +INFO:root:Epoch[11] Batch [1840] Speed: 646.59 samples/sec acc=0.720117 +INFO:root:Epoch[11] Batch [1860] Speed: 662.02 samples/sec acc=0.722070 +INFO:root:Epoch[11] Batch [1880] Speed: 632.21 samples/sec acc=0.723047 +INFO:root:Epoch[11] Batch [1900] Speed: 636.99 samples/sec acc=0.730371 +INFO:root:Epoch[11] Batch [1920] Speed: 661.67 samples/sec acc=0.732129 +INFO:root:Epoch[11] Batch [1940] Speed: 661.33 samples/sec acc=0.735840 +INFO:root:Epoch[11] Batch [1960] Speed: 661.84 samples/sec acc=0.719434 +INFO:root:Epoch[11] Batch [1980] Speed: 661.64 samples/sec acc=0.730957 +INFO:root:Epoch[11] Batch [2000] Speed: 661.97 samples/sec acc=0.720117 +INFO:root:Epoch[11] Batch [2020] Speed: 662.11 samples/sec acc=0.730957 +INFO:root:Epoch[11] Batch [2040] Speed: 660.18 samples/sec acc=0.732031 +INFO:root:Epoch[11] Batch [2060] Speed: 661.74 samples/sec acc=0.727246 +INFO:root:Epoch[11] Batch [2080] Speed: 656.76 samples/sec acc=0.732520 +INFO:root:Epoch[11] Batch [2100] Speed: 661.27 samples/sec acc=0.730469 +INFO:root:Epoch[11] Batch [2120] Speed: 658.52 samples/sec acc=0.722363 +INFO:root:Epoch[11] Batch [2140] Speed: 662.38 samples/sec acc=0.723242 +INFO:root:Epoch[11] Batch [2160] Speed: 661.00 samples/sec acc=0.728418 +INFO:root:Epoch[11] Batch [2180] Speed: 661.62 samples/sec acc=0.729297 +INFO:root:Epoch[11] Batch [2200] Speed: 662.05 samples/sec acc=0.724512 +INFO:root:Epoch[11] Batch [2220] Speed: 661.49 samples/sec acc=0.734961 +INFO:root:Epoch[11] Batch [2240] Speed: 661.92 samples/sec acc=0.730371 +INFO:root:Epoch[11] Batch [2260] Speed: 662.09 samples/sec acc=0.731934 +INFO:root:Epoch[11] Batch [2280] Speed: 661.26 samples/sec acc=0.733594 +lr-batch-epoch: 0.001 2290 11 +INFO:root:Epoch[11] Batch [2300] Speed: 661.32 samples/sec acc=0.729492 +INFO:root:Epoch[11] Batch [2320] Speed: 661.70 samples/sec acc=0.723730 +INFO:root:Epoch[11] Batch [2340] Speed: 661.63 samples/sec acc=0.731348 +INFO:root:Epoch[11] Batch [2360] Speed: 658.33 samples/sec acc=0.731055 +INFO:root:Epoch[11] Batch [2380] Speed: 658.91 samples/sec acc=0.732129 +INFO:root:Epoch[11] Batch [2400] Speed: 661.71 samples/sec acc=0.732031 +INFO:root:Epoch[11] Batch [2420] Speed: 661.92 samples/sec acc=0.732227 +INFO:root:Epoch[11] Batch [2440] Speed: 657.86 samples/sec acc=0.724902 +INFO:root:Epoch[11] Batch [2460] Speed: 682.65 samples/sec acc=0.728418 +INFO:root:Epoch[11] Batch [2480] Speed: 661.93 samples/sec acc=0.733105 +INFO:root:Epoch[11] Batch [2500] Speed: 662.24 samples/sec acc=0.734961 +INFO:root:Epoch[11] Batch [2520] Speed: 661.05 samples/sec acc=0.733008 +INFO:root:Epoch[11] Batch [2540] Speed: 661.44 samples/sec acc=0.735254 +INFO:root:Epoch[11] Batch [2560] Speed: 662.59 samples/sec acc=0.725977 +INFO:root:Epoch[11] Batch [2580] Speed: 661.05 samples/sec acc=0.731543 +INFO:root:Epoch[11] Batch [2600] Speed: 652.62 samples/sec acc=0.724219 +INFO:root:Epoch[11] Batch [2620] Speed: 663.81 samples/sec acc=0.733398 +INFO:root:Epoch[11] Batch [2640] Speed: 656.05 samples/sec acc=0.728809 +INFO:root:Epoch[11] Batch [2660] Speed: 662.27 samples/sec acc=0.734668 +INFO:root:Epoch[11] Batch [2680] Speed: 661.71 samples/sec acc=0.734082 +INFO:root:Epoch[11] Batch [2700] Speed: 661.47 samples/sec acc=0.727441 +INFO:root:Epoch[11] Batch [2720] Speed: 661.72 samples/sec acc=0.730176 +INFO:root:Epoch[11] Batch [2740] Speed: 662.38 samples/sec acc=0.732129 +INFO:root:Epoch[11] Batch [2760] Speed: 661.35 samples/sec acc=0.729492 +INFO:root:Epoch[11] Batch [2780] Speed: 662.21 samples/sec acc=0.733008 +INFO:root:Epoch[11] Batch [2800] Speed: 662.06 samples/sec acc=0.735547 +INFO:root:Epoch[11] Batch [2820] Speed: 661.69 samples/sec acc=0.740527 +INFO:root:Epoch[11] Batch [2840] Speed: 651.64 samples/sec acc=0.733789 +INFO:root:Epoch[11] Batch [2860] Speed: 662.39 samples/sec acc=0.741113 +INFO:root:Epoch[11] Batch [2880] Speed: 661.72 samples/sec acc=0.737207 +INFO:root:Epoch[11] Batch [2900] Speed: 661.59 samples/sec acc=0.733887 +INFO:root:Epoch[11] Batch [2920] Speed: 661.91 samples/sec acc=0.731445 +INFO:root:Epoch[11] Batch [2940] Speed: 661.61 samples/sec acc=0.733105 +INFO:root:Epoch[11] Batch [2960] Speed: 636.69 samples/sec acc=0.734961 +INFO:root:Epoch[11] Batch [2980] Speed: 662.45 samples/sec acc=0.726758 +INFO:root:Epoch[11] Batch [3000] Speed: 661.14 samples/sec acc=0.734766 +INFO:root:Epoch[11] Batch [3020] Speed: 660.52 samples/sec acc=0.733691 +INFO:root:Epoch[11] Batch [3040] Speed: 640.09 samples/sec acc=0.734766 +INFO:root:Epoch[11] Batch [3060] Speed: 661.77 samples/sec acc=0.734668 +INFO:root:Epoch[11] Batch [3080] Speed: 637.01 samples/sec acc=0.723047 +INFO:root:Epoch[11] Batch [3100] Speed: 653.97 samples/sec acc=0.735352 +INFO:root:Epoch[11] Batch [3120] Speed: 661.59 samples/sec acc=0.733789 +INFO:root:Epoch[11] Batch [3140] Speed: 654.05 samples/sec acc=0.736523 +INFO:root:Epoch[11] Batch [3160] Speed: 669.71 samples/sec acc=0.734082 +INFO:root:Epoch[11] Batch [3180] Speed: 660.87 samples/sec acc=0.731836 +INFO:root:Epoch[11] Batch [3200] Speed: 654.29 samples/sec acc=0.734570 +INFO:root:Epoch[11] Batch [3220] Speed: 661.74 samples/sec acc=0.721875 +INFO:root:Epoch[11] Batch [3240] Speed: 639.25 samples/sec acc=0.730469 +INFO:root:Epoch[11] Batch [3260] Speed: 637.49 samples/sec acc=0.728320 +INFO:root:Epoch[11] Batch [3280] Speed: 661.63 samples/sec acc=0.730176 +[86000][MARGIN]0.789603,0.401927 +lr-batch-epoch: 0.001 3290 11 +testing verification.. +(14000, 512) +infer time 24.048905 +[cfp_ff][86000]XNorm: 21.485136 +[cfp_ff][86000]Accuracy-Flip: 0.99771+-0.00232 +testing verification.. +(14000, 512) +infer time 26.887102 +[cfp_fp][86000]XNorm: 19.288736 +[cfp_fp][86000]Accuracy-Flip: 0.91943+-0.01477 +testing verification.. +(12000, 512) +infer time 23.028544 +[agedb_30][86000]XNorm: 22.311972 +[agedb_30][86000]Accuracy-Flip: 0.97717+-0.00742 +testing verification.. +(12000, 512) +infer time 19.656507 +[lfw][86000]XNorm: 22.103961 +[lfw][86000]Accuracy-Flip: 0.99750+-0.00300 +[86000]Accuracy-Highest: 0.99767 +INFO:root:Epoch[11] Batch [3300] Speed: 79.17 samples/sec acc=0.726953 +INFO:root:Epoch[11] Batch [3320] Speed: 669.48 samples/sec acc=0.734570 +INFO:root:Epoch[11] Batch [3340] Speed: 659.53 samples/sec acc=0.729883 +INFO:root:Epoch[11] Batch [3360] Speed: 672.55 samples/sec acc=0.726270 +INFO:root:Epoch[11] Batch [3380] Speed: 661.74 samples/sec acc=0.733887 +INFO:root:Epoch[11] Batch [3400] Speed: 659.75 samples/sec acc=0.732129 +INFO:root:Epoch[11] Batch [3420] Speed: 658.60 samples/sec acc=0.730762 +INFO:root:Epoch[11] Batch [3440] Speed: 659.50 samples/sec acc=0.732910 +INFO:root:Epoch[11] Batch [3460] Speed: 663.08 samples/sec acc=0.736133 +INFO:root:Epoch[11] Batch [3480] Speed: 661.39 samples/sec acc=0.739551 +INFO:root:Epoch[11] Batch [3500] Speed: 657.22 samples/sec acc=0.735254 +INFO:root:Epoch[11] Batch [3520] Speed: 662.30 samples/sec acc=0.731836 +INFO:root:Epoch[11] Batch [3540] Speed: 645.55 samples/sec acc=0.734180 +INFO:root:Epoch[11] Batch [3560] Speed: 661.63 samples/sec acc=0.733984 +INFO:root:Epoch[11] Batch [3580] Speed: 662.72 samples/sec acc=0.734473 +INFO:root:Epoch[11] Batch [3600] Speed: 661.90 samples/sec acc=0.736426 +INFO:root:Epoch[11] Batch [3620] Speed: 661.98 samples/sec acc=0.732129 +INFO:root:Epoch[11] Batch [3640] Speed: 662.60 samples/sec acc=0.741797 +INFO:root:Epoch[11] Batch [3660] Speed: 647.91 samples/sec acc=0.735742 +INFO:root:Epoch[11] Batch [3680] Speed: 651.55 samples/sec acc=0.734375 +INFO:root:Epoch[11] Batch [3700] Speed: 662.54 samples/sec acc=0.739551 +INFO:root:Epoch[11] Batch [3720] Speed: 661.66 samples/sec acc=0.737109 +INFO:root:Epoch[11] Batch [3740] Speed: 662.01 samples/sec acc=0.731836 +INFO:root:Epoch[11] Batch [3760] Speed: 661.91 samples/sec acc=0.737598 +INFO:root:Epoch[11] Batch [3780] Speed: 661.57 samples/sec acc=0.739941 +INFO:root:Epoch[11] Batch [3800] Speed: 662.41 samples/sec acc=0.735547 +INFO:root:Epoch[11] Batch [3820] Speed: 662.43 samples/sec acc=0.731738 +INFO:root:Epoch[11] Batch [3840] Speed: 642.35 samples/sec acc=0.731543 +INFO:root:Epoch[11] Batch [3860] Speed: 661.69 samples/sec acc=0.731152 +INFO:root:Epoch[11] Batch [3880] Speed: 654.56 samples/sec acc=0.737012 +INFO:root:Epoch[11] Batch [3900] Speed: 662.29 samples/sec acc=0.731836 +INFO:root:Epoch[11] Batch [3920] Speed: 662.00 samples/sec acc=0.737988 +INFO:root:Epoch[11] Batch [3940] Speed: 662.76 samples/sec acc=0.735156 +INFO:root:Epoch[11] Batch [3960] Speed: 661.84 samples/sec acc=0.737109 +INFO:root:Epoch[11] Batch [3980] Speed: 661.54 samples/sec acc=0.737500 +INFO:root:Epoch[11] Batch [4000] Speed: 656.51 samples/sec acc=0.741895 +INFO:root:Epoch[11] Batch [4020] Speed: 667.01 samples/sec acc=0.727344 +INFO:root:Epoch[11] Batch [4040] Speed: 645.09 samples/sec acc=0.734863 +INFO:root:Epoch[11] Batch [4060] Speed: 663.69 samples/sec acc=0.735645 +INFO:root:Epoch[11] Batch [4080] Speed: 659.10 samples/sec acc=0.741211 +INFO:root:Epoch[11] Batch [4100] Speed: 662.61 samples/sec acc=0.735254 +INFO:root:Epoch[11] Batch [4120] Speed: 659.04 samples/sec acc=0.743555 +INFO:root:Epoch[11] Batch [4140] Speed: 661.71 samples/sec acc=0.733594 +INFO:root:Epoch[11] Batch [4160] Speed: 645.73 samples/sec acc=0.730762 +INFO:root:Epoch[11] Batch [4180] Speed: 656.21 samples/sec acc=0.733008 +INFO:root:Epoch[11] Batch [4200] Speed: 662.37 samples/sec acc=0.741602 +INFO:root:Epoch[11] Batch [4220] Speed: 662.17 samples/sec acc=0.733984 +INFO:root:Epoch[11] Batch [4240] Speed: 662.48 samples/sec acc=0.734766 +INFO:root:Epoch[11] Batch [4260] Speed: 655.27 samples/sec acc=0.735156 +INFO:root:Epoch[11] Batch [4280] Speed: 666.01 samples/sec acc=0.740820 +lr-batch-epoch: 0.001 4290 11 +INFO:root:Epoch[11] Batch [4300] Speed: 663.31 samples/sec acc=0.735938 +INFO:root:Epoch[11] Batch [4320] Speed: 661.94 samples/sec acc=0.739746 +INFO:root:Epoch[11] Batch [4340] Speed: 660.34 samples/sec acc=0.729590 +INFO:root:Epoch[11] Batch [4360] Speed: 663.02 samples/sec acc=0.733984 +INFO:root:Epoch[11] Batch [4380] Speed: 662.01 samples/sec acc=0.743066 +INFO:root:Epoch[11] Batch [4400] Speed: 639.29 samples/sec acc=0.732129 +INFO:root:Epoch[11] Batch [4420] Speed: 663.29 samples/sec acc=0.739355 +INFO:root:Epoch[11] Batch [4440] Speed: 661.22 samples/sec acc=0.740625 +INFO:root:Epoch[11] Batch [4460] Speed: 658.87 samples/sec acc=0.744531 +INFO:root:Epoch[11] Batch [4480] Speed: 656.89 samples/sec acc=0.737305 +INFO:root:Epoch[11] Batch [4500] Speed: 638.92 samples/sec acc=0.736621 +INFO:root:Epoch[11] Batch [4520] Speed: 664.03 samples/sec acc=0.736914 +INFO:root:Epoch[11] Batch [4540] Speed: 662.87 samples/sec acc=0.736719 +INFO:root:Epoch[11] Batch [4560] Speed: 661.89 samples/sec acc=0.746680 +INFO:root:Epoch[11] Batch [4580] Speed: 658.52 samples/sec acc=0.738184 +INFO:root:Epoch[11] Batch [4600] Speed: 638.56 samples/sec acc=0.735156 +INFO:root:Epoch[11] Batch [4620] Speed: 661.60 samples/sec acc=0.734180 +INFO:root:Epoch[11] Batch [4640] Speed: 661.08 samples/sec acc=0.741504 +INFO:root:Epoch[11] Batch [4660] Speed: 661.79 samples/sec acc=0.741406 +INFO:root:Epoch[11] Batch [4680] Speed: 662.22 samples/sec acc=0.737891 +INFO:root:Epoch[11] Batch [4700] Speed: 634.13 samples/sec acc=0.737402 +INFO:root:Epoch[11] Batch [4720] Speed: 662.49 samples/sec acc=0.740723 +INFO:root:Epoch[11] Batch [4740] Speed: 661.47 samples/sec acc=0.739355 +INFO:root:Epoch[11] Batch [4760] Speed: 636.50 samples/sec acc=0.739844 +INFO:root:Epoch[11] Batch [4780] Speed: 664.18 samples/sec acc=0.734668 +INFO:root:Epoch[11] Batch [4800] Speed: 659.44 samples/sec acc=0.743164 +INFO:root:Epoch[11] Batch [4820] Speed: 677.97 samples/sec acc=0.743359 +INFO:root:Epoch[11] Batch [4840] Speed: 662.85 samples/sec acc=0.737207 +INFO:root:Epoch[11] Batch [4860] Speed: 642.66 samples/sec acc=0.740039 +INFO:root:Epoch[11] Batch [4880] Speed: 661.34 samples/sec acc=0.744629 +INFO:root:Epoch[11] Batch [4900] Speed: 654.49 samples/sec acc=0.738379 +INFO:root:Epoch[11] Batch [4920] Speed: 626.99 samples/sec acc=0.729395 +INFO:root:Epoch[11] Batch [4940] Speed: 670.26 samples/sec acc=0.741113 +INFO:root:Epoch[11] Batch [4960] Speed: 664.32 samples/sec acc=0.742773 +INFO:root:Epoch[11] Batch [4980] Speed: 650.18 samples/sec acc=0.749805 +INFO:root:Epoch[11] Batch [5000] Speed: 662.01 samples/sec acc=0.739355 +INFO:root:Epoch[11] Batch [5020] Speed: 649.19 samples/sec acc=0.739941 +INFO:root:Epoch[11] Batch [5040] Speed: 660.84 samples/sec acc=0.745410 +INFO:root:Epoch[11] Batch [5060] Speed: 662.38 samples/sec acc=0.745801 +INFO:root:Epoch[11] Batch [5080] Speed: 662.39 samples/sec acc=0.743359 +INFO:root:Epoch[11] Batch [5100] Speed: 661.41 samples/sec acc=0.736719 +INFO:root:Epoch[11] Batch [5120] Speed: 657.94 samples/sec acc=0.739258 +INFO:root:Epoch[11] Batch [5140] Speed: 662.43 samples/sec acc=0.737793 +INFO:root:Epoch[11] Batch [5160] Speed: 661.45 samples/sec acc=0.738672 +INFO:root:Epoch[11] Batch [5180] Speed: 661.66 samples/sec acc=0.746680 +INFO:root:Epoch[11] Batch [5200] Speed: 659.85 samples/sec acc=0.741113 +INFO:root:Epoch[11] Batch [5220] Speed: 659.06 samples/sec acc=0.738086 +INFO:root:Epoch[11] Batch [5240] Speed: 648.75 samples/sec acc=0.737012 +INFO:root:Epoch[11] Batch [5260] Speed: 662.55 samples/sec acc=0.739355 +INFO:root:Epoch[11] Batch [5280] Speed: 661.31 samples/sec acc=0.738184 +[88000][MARGIN]0.800128,0.417858 +lr-batch-epoch: 0.001 5290 11 +testing verification.. +(14000, 512) +infer time 21.09969 +[cfp_ff][88000]XNorm: 21.877948 +[cfp_ff][88000]Accuracy-Flip: 0.99814+-0.00231 +testing verification.. +(14000, 512) +infer time 24.106134 +[cfp_fp][88000]XNorm: 19.718805 +[cfp_fp][88000]Accuracy-Flip: 0.92357+-0.01305 +testing verification.. +(12000, 512) +infer time 20.448449 +[agedb_30][88000]XNorm: 22.722104 +[agedb_30][88000]Accuracy-Flip: 0.97783+-0.00650 +testing verification.. +(12000, 512) +infer time 18.662641 +[lfw][88000]XNorm: 22.350139 +[lfw][88000]Accuracy-Flip: 0.99783+-0.00279 +saving 44 +INFO:root:Saved checkpoint to "../model-r50-am-lfw/model-0044.params" +[88000]Accuracy-Highest: 0.99783 +INFO:root:Epoch[11] Batch [5300] Speed: 82.98 samples/sec acc=0.739551 +INFO:root:Epoch[11] Batch [5320] Speed: 641.87 samples/sec acc=0.743652 +INFO:root:Epoch[11] Batch [5340] Speed: 667.66 samples/sec acc=0.741211 +INFO:root:Epoch[11] Batch [5360] Speed: 665.03 samples/sec acc=0.742383 +INFO:root:Epoch[11] Batch [5380] Speed: 660.35 samples/sec acc=0.735156 +INFO:root:Epoch[11] Batch [5400] Speed: 661.58 samples/sec acc=0.739160 +INFO:root:Epoch[11] Batch [5420] Speed: 651.04 samples/sec acc=0.743945 +INFO:root:Epoch[11] Batch [5440] Speed: 663.00 samples/sec acc=0.742188 +INFO:root:Epoch[11] Batch [5460] Speed: 654.73 samples/sec acc=0.739355 +INFO:root:Epoch[11] Batch [5480] Speed: 652.51 samples/sec acc=0.742773 +INFO:root:Epoch[11] Batch [5500] Speed: 656.31 samples/sec acc=0.739453 +INFO:root:Epoch[11] Batch [5520] Speed: 661.66 samples/sec acc=0.735156 +INFO:root:Epoch[11] Batch [5540] Speed: 661.88 samples/sec acc=0.740625 +INFO:root:Epoch[11] Batch [5560] Speed: 662.69 samples/sec acc=0.745117 +INFO:root:Epoch[11] Batch [5580] Speed: 629.39 samples/sec acc=0.743652 +INFO:root:Epoch[11] Batch [5600] Speed: 666.49 samples/sec acc=0.743262 +INFO:root:Epoch[11] Batch [5620] Speed: 663.09 samples/sec acc=0.738379 +INFO:root:Epoch[11] Batch [5640] Speed: 661.37 samples/sec acc=0.741309 +INFO:root:Epoch[11] Batch [5660] Speed: 661.69 samples/sec acc=0.734961 +INFO:root:Epoch[11] Batch [5680] Speed: 662.36 samples/sec acc=0.736719 +INFO:root:Epoch[11] Batch [5700] Speed: 661.70 samples/sec acc=0.743262 +INFO:root:Epoch[11] Batch [5720] Speed: 652.33 samples/sec acc=0.731250 +INFO:root:Epoch[11] Batch [5740] Speed: 661.65 samples/sec acc=0.738477 +INFO:root:Epoch[11] Batch [5760] Speed: 661.72 samples/sec acc=0.737695 +INFO:root:Epoch[11] Batch [5780] Speed: 662.20 samples/sec acc=0.743848 +INFO:root:Epoch[11] Batch [5800] Speed: 662.74 samples/sec acc=0.740137 +INFO:root:Epoch[11] Batch [5820] Speed: 656.33 samples/sec acc=0.735645 +INFO:root:Epoch[11] Batch [5840] Speed: 644.27 samples/sec acc=0.742773 +INFO:root:Epoch[11] Batch [5860] Speed: 660.99 samples/sec acc=0.740625 +INFO:root:Epoch[11] Batch [5880] Speed: 654.13 samples/sec acc=0.741992 +INFO:root:Epoch[11] Batch [5900] Speed: 654.64 samples/sec acc=0.743652 +INFO:root:Epoch[11] Batch [5920] Speed: 657.07 samples/sec acc=0.748340 +INFO:root:Epoch[11] Batch [5940] Speed: 661.80 samples/sec acc=0.740039 +INFO:root:Epoch[11] Batch [5960] Speed: 661.93 samples/sec acc=0.745898 +INFO:root:Epoch[11] Batch [5980] Speed: 662.66 samples/sec acc=0.744824 +INFO:root:Epoch[11] Batch [6000] Speed: 669.99 samples/sec acc=0.747656 +INFO:root:Epoch[11] Batch [6020] Speed: 661.92 samples/sec acc=0.742285 +INFO:root:Epoch[11] Batch [6040] Speed: 662.28 samples/sec acc=0.746777 +INFO:root:Epoch[11] Batch [6060] Speed: 662.11 samples/sec acc=0.744238 +INFO:root:Epoch[11] Batch [6080] Speed: 662.52 samples/sec acc=0.738574 +INFO:root:Epoch[11] Batch [6100] Speed: 640.49 samples/sec acc=0.742773 +INFO:root:Epoch[11] Batch [6120] Speed: 666.58 samples/sec acc=0.744922 +INFO:root:Epoch[11] Batch [6140] Speed: 665.33 samples/sec acc=0.743945 +INFO:root:Epoch[11] Batch [6160] Speed: 662.45 samples/sec acc=0.740332 +INFO:root:Epoch[11] Batch [6180] Speed: 661.67 samples/sec acc=0.745605 +INFO:root:Epoch[11] Batch [6200] Speed: 654.57 samples/sec acc=0.739160 +INFO:root:Epoch[11] Batch [6220] Speed: 662.67 samples/sec acc=0.742090 +INFO:root:Epoch[11] Batch [6240] Speed: 661.51 samples/sec acc=0.747168 +INFO:root:Epoch[11] Batch [6260] Speed: 662.50 samples/sec acc=0.745215 +INFO:root:Epoch[11] Batch [6280] Speed: 653.99 samples/sec acc=0.749219 +lr-batch-epoch: 0.001 6290 11 +INFO:root:Epoch[11] Batch [6300] Speed: 660.84 samples/sec acc=0.737695 +INFO:root:Epoch[11] Batch [6320] Speed: 662.02 samples/sec acc=0.743555 +INFO:root:Epoch[11] Batch [6340] Speed: 661.27 samples/sec acc=0.744434 +INFO:root:Epoch[11] Batch [6360] Speed: 661.85 samples/sec acc=0.747852 +INFO:root:Epoch[11] Batch [6380] Speed: 661.96 samples/sec acc=0.754297 +INFO:root:Epoch[11] Batch [6400] Speed: 668.44 samples/sec acc=0.747656 +INFO:root:Epoch[11] Batch [6420] Speed: 661.69 samples/sec acc=0.743652 +INFO:root:Epoch[11] Batch [6440] Speed: 662.23 samples/sec acc=0.748730 +INFO:root:Epoch[11] Batch [6460] Speed: 647.46 samples/sec acc=0.744727 +INFO:root:Epoch[11] Batch [6480] Speed: 656.54 samples/sec acc=0.742871 +INFO:root:Epoch[11] Batch [6500] Speed: 668.98 samples/sec acc=0.744434 +INFO:root:Epoch[11] Batch [6520] Speed: 643.74 samples/sec acc=0.745703 +INFO:root:Epoch[11] Batch [6540] Speed: 651.54 samples/sec acc=0.740234 +INFO:root:Epoch[11] Batch [6560] Speed: 662.72 samples/sec acc=0.745703 +INFO:root:Epoch[11] Batch [6580] Speed: 639.35 samples/sec acc=0.748145 +INFO:root:Epoch[11] Batch [6600] Speed: 652.21 samples/sec acc=0.751270 +INFO:root:Epoch[11] Batch [6620] Speed: 663.17 samples/sec acc=0.747949 +INFO:root:Epoch[11] Batch [6640] Speed: 650.31 samples/sec acc=0.746973 +INFO:root:Epoch[11] Batch [6660] Speed: 661.88 samples/sec acc=0.743164 +INFO:root:Epoch[11] Batch [6680] Speed: 662.26 samples/sec acc=0.740625 +INFO:root:Epoch[11] Batch [6700] Speed: 662.83 samples/sec acc=0.739941 +INFO:root:Epoch[11] Batch [6720] Speed: 661.80 samples/sec acc=0.748828 +INFO:root:Epoch[11] Batch [6740] Speed: 661.98 samples/sec acc=0.746191 +INFO:root:Epoch[11] Batch [6760] Speed: 662.37 samples/sec acc=0.747168 +INFO:root:Epoch[11] Batch [6780] Speed: 661.21 samples/sec acc=0.747754 +INFO:root:Epoch[11] Batch [6800] Speed: 659.13 samples/sec acc=0.740918 +INFO:root:Epoch[11] Batch [6820] Speed: 662.92 samples/sec acc=0.744434 +INFO:root:Epoch[11] Batch [6840] Speed: 661.45 samples/sec acc=0.746289 +INFO:root:Epoch[11] Batch [6860] Speed: 661.22 samples/sec acc=0.745313 +INFO:root:Epoch[11] Batch [6880] Speed: 659.62 samples/sec acc=0.742188 +INFO:root:Epoch[11] Batch [6900] Speed: 638.48 samples/sec acc=0.749512 +INFO:root:Epoch[11] Batch [6920] Speed: 662.37 samples/sec acc=0.751367 +INFO:root:Epoch[11] Batch [6940] Speed: 662.12 samples/sec acc=0.745801 +INFO:root:Epoch[11] Batch [6960] Speed: 661.83 samples/sec acc=0.749316 +INFO:root:Epoch[11] Batch [6980] Speed: 661.66 samples/sec acc=0.746777 +INFO:root:Epoch[11] Batch [7000] Speed: 662.44 samples/sec acc=0.752051 +INFO:root:Epoch[11] Batch [7020] Speed: 628.74 samples/sec acc=0.749805 +INFO:root:Epoch[11] Batch [7040] Speed: 645.77 samples/sec acc=0.741797 +INFO:root:Epoch[11] Batch [7060] Speed: 662.21 samples/sec acc=0.742480 +INFO:root:Epoch[11] Batch [7080] Speed: 661.97 samples/sec acc=0.746387 +INFO:root:Epoch[11] Batch [7100] Speed: 661.92 samples/sec acc=0.747461 +INFO:root:Epoch[11] Batch [7120] Speed: 662.78 samples/sec acc=0.746973 +INFO:root:Epoch[11] Batch [7140] Speed: 661.17 samples/sec acc=0.747363 +INFO:root:Epoch[11] Batch [7160] Speed: 661.81 samples/sec acc=0.746289 +INFO:root:Epoch[11] Batch [7180] Speed: 663.23 samples/sec acc=0.742578 +INFO:root:Epoch[11] Batch [7200] Speed: 661.44 samples/sec acc=0.749512 +INFO:root:Epoch[11] Batch [7220] Speed: 662.07 samples/sec acc=0.749609 +INFO:root:Epoch[11] Batch [7240] Speed: 661.97 samples/sec acc=0.740723 +INFO:root:Epoch[11] Batch [7260] Speed: 662.48 samples/sec acc=0.742480 +INFO:root:Epoch[11] Batch [7280] Speed: 658.09 samples/sec acc=0.742578 +[90000][MARGIN]0.785767,0.397132 +lr-batch-epoch: 0.001 7290 11 +testing verification.. +(14000, 512) +infer time 23.314756 +[cfp_ff][90000]XNorm: 21.591677 +[cfp_ff][90000]Accuracy-Flip: 0.99757+-0.00222 +testing verification.. +(14000, 512) +infer time 22.06703 +[cfp_fp][90000]XNorm: 19.494454 +[cfp_fp][90000]Accuracy-Flip: 0.92300+-0.01378 +testing verification.. +(12000, 512) +infer time 19.160242 +[agedb_30][90000]XNorm: 22.471320 +[agedb_30][90000]Accuracy-Flip: 0.97750+-0.00712 +testing verification.. +(12000, 512) +infer time 18.699288 +[lfw][90000]XNorm: 22.201853 +[lfw][90000]Accuracy-Flip: 0.99733+-0.00300 +[90000]Accuracy-Highest: 0.99783 +INFO:root:Epoch[11] Batch [7300] Speed: 86.67 samples/sec acc=0.744141 +INFO:root:Epoch[11] Batch [7320] Speed: 661.82 samples/sec acc=0.750977 +INFO:root:Epoch[11] Batch [7340] Speed: 662.09 samples/sec acc=0.750586 +INFO:root:Epoch[11] Batch [7360] Speed: 662.30 samples/sec acc=0.754004 +INFO:root:Epoch[11] Batch [7380] Speed: 661.01 samples/sec acc=0.746875 +INFO:root:Epoch[11] Batch [7400] Speed: 661.81 samples/sec acc=0.744727 +INFO:root:Epoch[11] Batch [7420] Speed: 661.42 samples/sec acc=0.746289 +INFO:root:Epoch[11] Batch [7440] Speed: 656.75 samples/sec acc=0.745020 +INFO:root:Epoch[11] Batch [7460] Speed: 662.21 samples/sec acc=0.747461 +INFO:root:Epoch[11] Batch [7480] Speed: 662.00 samples/sec acc=0.741992 +INFO:root:Epoch[11] Batch [7500] Speed: 661.58 samples/sec acc=0.747656 +INFO:root:Epoch[11] Train-acc=0.744900 +INFO:root:Epoch[11] Time cost=6281.392 +call reset() +INFO:root:Epoch[12] Batch [20] Speed: 656.28 samples/sec acc=0.787481 +INFO:root:Epoch[12] Batch [40] Speed: 652.75 samples/sec acc=0.782422 +INFO:root:Epoch[12] Batch [60] Speed: 662.63 samples/sec acc=0.787012 +INFO:root:Epoch[12] Batch [80] Speed: 661.64 samples/sec acc=0.779492 +INFO:root:Epoch[12] Batch [100] Speed: 662.41 samples/sec acc=0.781055 +INFO:root:Epoch[12] Batch [120] Speed: 662.89 samples/sec acc=0.781250 +INFO:root:Epoch[12] Batch [140] Speed: 661.10 samples/sec acc=0.781250 +INFO:root:Epoch[12] Batch [160] Speed: 661.91 samples/sec acc=0.783008 +INFO:root:Epoch[12] Batch [180] Speed: 662.65 samples/sec acc=0.789844 +INFO:root:Epoch[12] Batch [200] Speed: 661.56 samples/sec acc=0.790820 +INFO:root:Epoch[12] Batch [220] Speed: 662.81 samples/sec acc=0.777734 +INFO:root:Epoch[12] Batch [240] Speed: 662.03 samples/sec acc=0.786328 +INFO:root:Epoch[12] Batch [260] Speed: 656.98 samples/sec acc=0.781641 +INFO:root:Epoch[12] Batch [280] Speed: 659.39 samples/sec acc=0.780859 +INFO:root:Epoch[12] Batch [300] Speed: 658.15 samples/sec acc=0.778516 +INFO:root:Epoch[12] Batch [320] Speed: 661.79 samples/sec acc=0.787109 +INFO:root:Epoch[12] Batch [340] Speed: 645.82 samples/sec acc=0.779395 +INFO:root:Epoch[12] Batch [360] Speed: 662.76 samples/sec acc=0.778320 +INFO:root:Epoch[12] Batch [380] Speed: 663.40 samples/sec acc=0.780176 +INFO:root:Epoch[12] Batch [400] Speed: 662.21 samples/sec acc=0.780762 +INFO:root:Epoch[12] Batch [420] Speed: 663.27 samples/sec acc=0.779883 +INFO:root:Epoch[12] Batch [440] Speed: 661.48 samples/sec acc=0.780859 +INFO:root:Epoch[12] Batch [460] Speed: 661.48 samples/sec acc=0.784668 +INFO:root:Epoch[12] Batch [480] Speed: 661.49 samples/sec acc=0.781738 +INFO:root:Epoch[12] Batch [500] Speed: 662.38 samples/sec acc=0.783301 +INFO:root:Epoch[12] Batch [520] Speed: 661.89 samples/sec acc=0.778418 +INFO:root:Epoch[12] Batch [540] Speed: 662.09 samples/sec acc=0.783301 +INFO:root:Epoch[12] Batch [560] Speed: 661.86 samples/sec acc=0.776660 +INFO:root:Epoch[12] Batch [580] Speed: 661.52 samples/sec acc=0.782617 +INFO:root:Epoch[12] Batch [600] Speed: 662.45 samples/sec acc=0.781641 +INFO:root:Epoch[12] Batch [620] Speed: 660.82 samples/sec acc=0.781445 +INFO:root:Epoch[12] Batch [640] Speed: 661.85 samples/sec acc=0.776758 +INFO:root:Epoch[12] Batch [660] Speed: 662.73 samples/sec acc=0.771777 +INFO:root:Epoch[12] Batch [680] Speed: 661.07 samples/sec acc=0.782031 +INFO:root:Epoch[12] Batch [700] Speed: 662.62 samples/sec acc=0.776855 +INFO:root:Epoch[12] Batch [720] Speed: 645.14 samples/sec acc=0.773438 +INFO:root:Epoch[12] Batch [740] Speed: 662.01 samples/sec acc=0.775391 +INFO:root:Epoch[12] Batch [760] Speed: 648.75 samples/sec acc=0.782129 +lr-batch-epoch: 0.001 771 12 +INFO:root:Epoch[12] Batch [780] Speed: 659.18 samples/sec acc=0.782813 +INFO:root:Epoch[12] Batch [800] Speed: 645.84 samples/sec acc=0.784473 +INFO:root:Epoch[12] Batch [820] Speed: 655.17 samples/sec acc=0.777148 +INFO:root:Epoch[12] Batch [840] Speed: 663.15 samples/sec acc=0.779590 +INFO:root:Epoch[12] Batch [860] Speed: 650.39 samples/sec acc=0.780176 +INFO:root:Epoch[12] Batch [880] Speed: 630.79 samples/sec acc=0.775781 +INFO:root:Epoch[12] Batch [900] Speed: 644.85 samples/sec acc=0.781250 +INFO:root:Epoch[12] Batch [920] Speed: 660.13 samples/sec acc=0.783008 +INFO:root:Epoch[12] Batch [940] Speed: 662.39 samples/sec acc=0.781836 +INFO:root:Epoch[12] Batch [960] Speed: 647.10 samples/sec acc=0.781641 +INFO:root:Epoch[12] Batch [980] Speed: 661.82 samples/sec acc=0.780566 +INFO:root:Epoch[12] Batch [1000] Speed: 661.99 samples/sec acc=0.773828 +INFO:root:Epoch[12] Batch [1020] Speed: 652.59 samples/sec acc=0.781250 +INFO:root:Epoch[12] Batch [1040] Speed: 661.01 samples/sec acc=0.776367 +INFO:root:Epoch[12] Batch [1060] Speed: 644.73 samples/sec acc=0.781543 +INFO:root:Epoch[12] Batch [1080] Speed: 639.26 samples/sec acc=0.779687 +INFO:root:Epoch[12] Batch [1100] Speed: 661.39 samples/sec acc=0.777148 +INFO:root:Epoch[12] Batch [1120] Speed: 661.63 samples/sec acc=0.780762 +INFO:root:Epoch[12] Batch [1140] Speed: 662.30 samples/sec acc=0.777051 +INFO:root:Epoch[12] Batch [1160] Speed: 661.74 samples/sec acc=0.777148 +INFO:root:Epoch[12] Batch [1180] Speed: 647.47 samples/sec acc=0.782617 +INFO:root:Epoch[12] Batch [1200] Speed: 659.21 samples/sec acc=0.775391 +INFO:root:Epoch[12] Batch [1220] Speed: 661.16 samples/sec acc=0.784863 +INFO:root:Epoch[12] Batch [1240] Speed: 651.28 samples/sec acc=0.770312 +INFO:root:Epoch[12] Batch [1260] Speed: 632.52 samples/sec acc=0.784473 +INFO:root:Epoch[12] Batch [1280] Speed: 629.13 samples/sec acc=0.779492 +INFO:root:Epoch[12] Batch [1300] Speed: 661.82 samples/sec acc=0.780078 +INFO:root:Epoch[12] Batch [1320] Speed: 662.76 samples/sec acc=0.777148 +INFO:root:Epoch[12] Batch [1340] Speed: 652.58 samples/sec acc=0.781152 +INFO:root:Epoch[12] Batch [1360] Speed: 661.81 samples/sec acc=0.781738 +INFO:root:Epoch[12] Batch [1380] Speed: 662.53 samples/sec acc=0.778125 +INFO:root:Epoch[12] Batch [1400] Speed: 659.76 samples/sec acc=0.783398 +INFO:root:Epoch[12] Batch [1420] Speed: 660.74 samples/sec acc=0.778516 +INFO:root:Epoch[12] Batch [1440] Speed: 662.26 samples/sec acc=0.775879 +INFO:root:Epoch[12] Batch [1460] Speed: 662.09 samples/sec acc=0.775293 +INFO:root:Epoch[12] Batch [1480] Speed: 642.34 samples/sec acc=0.779297 +INFO:root:Epoch[12] Batch [1500] Speed: 659.46 samples/sec acc=0.780859 +INFO:root:Epoch[12] Batch [1520] Speed: 661.78 samples/sec acc=0.778809 +INFO:root:Epoch[12] Batch [1540] Speed: 646.70 samples/sec acc=0.779102 +INFO:root:Epoch[12] Batch [1560] Speed: 662.90 samples/sec acc=0.780371 +INFO:root:Epoch[12] Batch [1580] Speed: 655.27 samples/sec acc=0.776074 +INFO:root:Epoch[12] Batch [1600] Speed: 661.74 samples/sec acc=0.780762 +INFO:root:Epoch[12] Batch [1620] Speed: 650.86 samples/sec acc=0.779883 +INFO:root:Epoch[12] Batch [1640] Speed: 660.06 samples/sec acc=0.786719 +INFO:root:Epoch[12] Batch [1660] Speed: 659.83 samples/sec acc=0.771875 +INFO:root:Epoch[12] Batch [1680] Speed: 661.99 samples/sec acc=0.784668 +INFO:root:Epoch[12] Batch [1700] Speed: 660.39 samples/sec acc=0.779492 +INFO:root:Epoch[12] Batch [1720] Speed: 662.18 samples/sec acc=0.780859 +INFO:root:Epoch[12] Batch [1740] Speed: 663.02 samples/sec acc=0.778125 +INFO:root:Epoch[12] Batch [1760] Speed: 661.68 samples/sec acc=0.775684 +[92000][MARGIN]0.788903,0.402588 +lr-batch-epoch: 0.001 1771 12 +testing verification.. +(14000, 512) +infer time 24.775264 +[cfp_ff][92000]XNorm: 21.401436 +[cfp_ff][92000]Accuracy-Flip: 0.99786+-0.00214 +testing verification.. +(14000, 512) +infer time 20.701599 +[cfp_fp][92000]XNorm: 19.430333 +[cfp_fp][92000]Accuracy-Flip: 0.92543+-0.01364 +testing verification.. +(12000, 512) +infer time 18.498203 +[agedb_30][92000]XNorm: 22.487997 +[agedb_30][92000]Accuracy-Flip: 0.97717+-0.00715 +testing verification.. +(12000, 512) +infer time 20.977791 +[lfw][92000]XNorm: 22.113033 +[lfw][92000]Accuracy-Flip: 0.99717+-0.00289 +[92000]Accuracy-Highest: 0.99783 +INFO:root:Epoch[12] Batch [1780] Speed: 85.09 samples/sec acc=0.780762 +INFO:root:Epoch[12] Batch [1800] Speed: 662.94 samples/sec acc=0.773242 +INFO:root:Epoch[12] Batch [1820] Speed: 661.95 samples/sec acc=0.779102 +INFO:root:Epoch[12] Batch [1840] Speed: 662.45 samples/sec acc=0.780176 +INFO:root:Epoch[12] Batch [1860] Speed: 663.29 samples/sec acc=0.772949 +INFO:root:Epoch[12] Batch [1880] Speed: 661.86 samples/sec acc=0.778223 +INFO:root:Epoch[12] Batch [1900] Speed: 663.03 samples/sec acc=0.783789 +INFO:root:Epoch[12] Batch [1920] Speed: 662.86 samples/sec acc=0.783887 +INFO:root:Epoch[12] Batch [1940] Speed: 659.11 samples/sec acc=0.779785 +INFO:root:Epoch[12] Batch [1960] Speed: 674.93 samples/sec acc=0.769238 +INFO:root:Epoch[12] Batch [1980] Speed: 662.86 samples/sec acc=0.772168 +INFO:root:Epoch[12] Batch [2000] Speed: 662.10 samples/sec acc=0.775879 +INFO:root:Epoch[12] Batch [2020] Speed: 659.88 samples/sec acc=0.778516 +INFO:root:Epoch[12] Batch [2040] Speed: 621.67 samples/sec acc=0.778125 +INFO:root:Epoch[12] Batch [2060] Speed: 659.80 samples/sec acc=0.784180 +INFO:root:Epoch[12] Batch [2080] Speed: 654.13 samples/sec acc=0.769434 +INFO:root:Epoch[12] Batch [2100] Speed: 662.70 samples/sec acc=0.777051 +INFO:root:Epoch[12] Batch [2120] Speed: 662.13 samples/sec acc=0.779883 +INFO:root:Epoch[12] Batch [2140] Speed: 662.66 samples/sec acc=0.787012 +INFO:root:Epoch[12] Batch [2160] Speed: 662.65 samples/sec acc=0.777930 +INFO:root:Epoch[12] Batch [2180] Speed: 652.25 samples/sec acc=0.784473 +INFO:root:Epoch[12] Batch [2200] Speed: 662.19 samples/sec acc=0.769531 +INFO:root:Epoch[12] Batch [2220] Speed: 662.74 samples/sec acc=0.779492 +INFO:root:Epoch[12] Batch [2240] Speed: 660.35 samples/sec acc=0.768164 +INFO:root:Epoch[12] Batch [2260] Speed: 662.89 samples/sec acc=0.772852 +INFO:root:Epoch[12] Batch [2280] Speed: 672.79 samples/sec acc=0.776758 +INFO:root:Epoch[12] Batch [2300] Speed: 644.20 samples/sec acc=0.783105 +INFO:root:Epoch[12] Batch [2320] Speed: 666.39 samples/sec acc=0.774707 +INFO:root:Epoch[12] Batch [2340] Speed: 656.59 samples/sec acc=0.781543 +INFO:root:Epoch[12] Batch [2360] Speed: 661.80 samples/sec acc=0.777539 +INFO:root:Epoch[12] Batch [2380] Speed: 661.74 samples/sec acc=0.783203 +INFO:root:Epoch[12] Batch [2400] Speed: 661.78 samples/sec acc=0.782520 +INFO:root:Epoch[12] Batch [2420] Speed: 661.93 samples/sec acc=0.779395 +INFO:root:Epoch[12] Batch [2440] Speed: 662.61 samples/sec acc=0.780176 +INFO:root:Epoch[12] Batch [2460] Speed: 662.04 samples/sec acc=0.785645 +INFO:root:Epoch[12] Batch [2480] Speed: 646.54 samples/sec acc=0.779004 +INFO:root:Epoch[12] Batch [2500] Speed: 673.72 samples/sec acc=0.781445 +INFO:root:Epoch[12] Batch [2520] Speed: 657.87 samples/sec acc=0.782324 +INFO:root:Epoch[12] Batch [2540] Speed: 662.78 samples/sec acc=0.779980 +INFO:root:Epoch[12] Batch [2560] Speed: 650.40 samples/sec acc=0.779883 +INFO:root:Epoch[12] Batch [2580] Speed: 659.89 samples/sec acc=0.775293 +INFO:root:Epoch[12] Batch [2600] Speed: 653.85 samples/sec acc=0.776270 +INFO:root:Epoch[12] Batch [2620] Speed: 662.54 samples/sec acc=0.774316 +INFO:root:Epoch[12] Batch [2640] Speed: 612.76 samples/sec acc=0.778711 +INFO:root:Epoch[12] Batch [2660] Speed: 661.81 samples/sec acc=0.777539 +INFO:root:Epoch[12] Batch [2680] Speed: 661.96 samples/sec acc=0.770117 +INFO:root:Epoch[12] Batch [2700] Speed: 662.30 samples/sec acc=0.778125 +INFO:root:Epoch[12] Batch [2720] Speed: 661.04 samples/sec acc=0.771387 +INFO:root:Epoch[12] Batch [2740] Speed: 662.37 samples/sec acc=0.778320 +INFO:root:Epoch[12] Batch [2760] Speed: 666.35 samples/sec acc=0.773633 +lr-batch-epoch: 0.001 2771 12 +INFO:root:Epoch[12] Batch [2780] Speed: 643.76 samples/sec acc=0.784180 +INFO:root:Epoch[12] Batch [2800] Speed: 661.62 samples/sec acc=0.770605 +INFO:root:Epoch[12] Batch [2820] Speed: 661.83 samples/sec acc=0.778418 +INFO:root:Epoch[12] Batch [2840] Speed: 661.17 samples/sec acc=0.779980 +INFO:root:Epoch[12] Batch [2860] Speed: 652.31 samples/sec acc=0.777930 +INFO:root:Epoch[12] Batch [2880] Speed: 662.03 samples/sec acc=0.777832 +INFO:root:Epoch[12] Batch [2900] Speed: 661.25 samples/sec acc=0.774902 +INFO:root:Epoch[12] Batch [2920] Speed: 640.87 samples/sec acc=0.789160 +INFO:root:Epoch[12] Batch [2940] Speed: 659.20 samples/sec acc=0.771387 +INFO:root:Epoch[12] Batch [2960] Speed: 660.91 samples/sec acc=0.781836 +INFO:root:Epoch[12] Batch [2980] Speed: 667.32 samples/sec acc=0.784570 +INFO:root:Epoch[12] Batch [3000] Speed: 636.51 samples/sec acc=0.774121 +INFO:root:Epoch[12] Batch [3020] Speed: 645.93 samples/sec acc=0.772754 +INFO:root:Epoch[12] Batch [3040] Speed: 647.84 samples/sec acc=0.778418 +INFO:root:Epoch[12] Batch [3060] Speed: 656.51 samples/sec acc=0.783887 +INFO:root:Epoch[12] Batch [3080] Speed: 664.42 samples/sec acc=0.775293 +INFO:root:Epoch[12] Batch [3100] Speed: 644.90 samples/sec acc=0.780859 +INFO:root:Epoch[12] Batch [3120] Speed: 662.45 samples/sec acc=0.777148 +INFO:root:Epoch[12] Batch [3140] Speed: 661.36 samples/sec acc=0.772852 +INFO:root:Epoch[12] Batch [3160] Speed: 651.11 samples/sec acc=0.784863 +INFO:root:Epoch[12] Batch [3180] Speed: 664.75 samples/sec acc=0.777539 +INFO:root:Epoch[12] Batch [3200] Speed: 661.79 samples/sec acc=0.772949 +INFO:root:Epoch[12] Batch [3220] Speed: 661.97 samples/sec acc=0.781152 +INFO:root:Epoch[12] Batch [3240] Speed: 662.29 samples/sec acc=0.773438 +INFO:root:Epoch[12] Batch [3260] Speed: 661.67 samples/sec acc=0.773535 +INFO:root:Epoch[12] Batch [3280] Speed: 661.95 samples/sec acc=0.774316 +INFO:root:Epoch[12] Batch [3300] Speed: 662.59 samples/sec acc=0.777930 +INFO:root:Epoch[12] Batch [3320] Speed: 652.38 samples/sec acc=0.767773 +INFO:root:Epoch[12] Batch [3340] Speed: 661.92 samples/sec acc=0.771680 +INFO:root:Epoch[12] Batch [3360] Speed: 662.55 samples/sec acc=0.776172 +INFO:root:Epoch[12] Batch [3380] Speed: 662.40 samples/sec acc=0.772949 +INFO:root:Epoch[12] Batch [3400] Speed: 646.09 samples/sec acc=0.774512 +INFO:root:Epoch[12] Batch [3420] Speed: 662.72 samples/sec acc=0.779590 +INFO:root:Epoch[12] Batch [3440] Speed: 661.37 samples/sec acc=0.781152 +INFO:root:Epoch[12] Batch [3460] Speed: 661.75 samples/sec acc=0.774609 +INFO:root:Epoch[12] Batch [3480] Speed: 640.27 samples/sec acc=0.771191 +INFO:root:Epoch[12] Batch [3500] Speed: 661.63 samples/sec acc=0.770020 +INFO:root:Epoch[12] Batch [3520] Speed: 655.62 samples/sec acc=0.780566 +INFO:root:Epoch[12] Batch [3540] Speed: 677.17 samples/sec acc=0.768750 +INFO:root:Epoch[12] Batch [3560] Speed: 669.49 samples/sec acc=0.776465 +INFO:root:Epoch[12] Batch [3580] Speed: 666.62 samples/sec acc=0.776367 +INFO:root:Epoch[12] Batch [3600] Speed: 662.96 samples/sec acc=0.777734 +INFO:root:Epoch[12] Batch [3620] Speed: 661.11 samples/sec acc=0.778125 +INFO:root:Epoch[12] Batch [3640] Speed: 662.16 samples/sec acc=0.779590 +INFO:root:Epoch[12] Batch [3660] Speed: 662.54 samples/sec acc=0.775781 +INFO:root:Epoch[12] Batch [3680] Speed: 661.90 samples/sec acc=0.773633 +INFO:root:Epoch[12] Batch [3700] Speed: 661.63 samples/sec acc=0.773535 +INFO:root:Epoch[12] Batch [3720] Speed: 662.21 samples/sec acc=0.780469 +INFO:root:Epoch[12] Batch [3740] Speed: 652.69 samples/sec acc=0.774414 +INFO:root:Epoch[12] Batch [3760] Speed: 655.94 samples/sec acc=0.779883 +[94000][MARGIN]0.792813,0.407446 +lr-batch-epoch: 0.001 3771 12 +testing verification.. +(14000, 512) +infer time 28.883321 +[cfp_ff][94000]XNorm: 21.517234 +[cfp_ff][94000]Accuracy-Flip: 0.99771+-0.00249 +testing verification.. +(14000, 512) +infer time 27.832593 +[cfp_fp][94000]XNorm: 19.505244 +[cfp_fp][94000]Accuracy-Flip: 0.92429+-0.01311 +testing verification.. +(12000, 512) +infer time 21.234582 +[agedb_30][94000]XNorm: 22.565056 +[agedb_30][94000]Accuracy-Flip: 0.97817+-0.00664 +testing verification.. +(12000, 512) +infer time 18.56832 +[lfw][94000]XNorm: 22.137997 +[lfw][94000]Accuracy-Flip: 0.99800+-0.00277 +saving 47 +INFO:root:Saved checkpoint to "../model-r50-am-lfw/model-0047.params" +[94000]Accuracy-Highest: 0.99800 +INFO:root:Epoch[12] Batch [3780] Speed: 75.44 samples/sec acc=0.778125 +INFO:root:Epoch[12] Batch [3800] Speed: 644.26 samples/sec acc=0.779199 +INFO:root:Epoch[12] Batch [3820] Speed: 661.34 samples/sec acc=0.783301 +INFO:root:Epoch[12] Batch [3840] Speed: 659.50 samples/sec acc=0.778809 +INFO:root:Epoch[12] Batch [3860] Speed: 662.36 samples/sec acc=0.773145 +INFO:root:Epoch[12] Batch [3880] Speed: 661.73 samples/sec acc=0.781445 +INFO:root:Epoch[12] Batch [3900] Speed: 662.28 samples/sec acc=0.781250 +INFO:root:Epoch[12] Batch [3920] Speed: 664.27 samples/sec acc=0.768945 +INFO:root:Epoch[12] Batch [3940] Speed: 673.07 samples/sec acc=0.774121 +INFO:root:Epoch[12] Batch [3960] Speed: 663.49 samples/sec acc=0.778320 +INFO:root:Epoch[12] Batch [3980] Speed: 647.27 samples/sec acc=0.777832 +INFO:root:Epoch[12] Batch [4000] Speed: 662.56 samples/sec acc=0.775879 +INFO:root:Epoch[12] Batch [4020] Speed: 660.87 samples/sec acc=0.776367 +INFO:root:Epoch[12] Batch [4040] Speed: 661.68 samples/sec acc=0.777051 +INFO:root:Epoch[12] Batch [4060] Speed: 661.56 samples/sec acc=0.775195 +INFO:root:Epoch[12] Batch [4080] Speed: 662.28 samples/sec acc=0.775684 +INFO:root:Epoch[12] Batch [4100] Speed: 662.05 samples/sec acc=0.778613 +INFO:root:Epoch[12] Batch [4120] Speed: 658.03 samples/sec acc=0.775098 +INFO:root:Epoch[12] Batch [4140] Speed: 662.43 samples/sec acc=0.777734 +INFO:root:Epoch[12] Batch [4160] Speed: 661.57 samples/sec acc=0.781738 +INFO:root:Epoch[12] Batch [4180] Speed: 662.03 samples/sec acc=0.777832 +INFO:root:Epoch[12] Batch [4200] Speed: 652.55 samples/sec acc=0.775488 +INFO:root:Epoch[12] Batch [4220] Speed: 662.04 samples/sec acc=0.766113 +INFO:root:Epoch[12] Batch [4240] Speed: 656.44 samples/sec acc=0.782031 +INFO:root:Epoch[12] Batch [4260] Speed: 656.34 samples/sec acc=0.781152 +INFO:root:Epoch[12] Batch [4280] Speed: 662.20 samples/sec acc=0.771875 +INFO:root:Epoch[12] Batch [4300] Speed: 641.37 samples/sec acc=0.774609 +INFO:root:Epoch[12] Batch [4320] Speed: 621.41 samples/sec acc=0.778125 +INFO:root:Epoch[12] Batch [4340] Speed: 653.16 samples/sec acc=0.774609 +INFO:root:Epoch[12] Batch [4360] Speed: 648.57 samples/sec acc=0.774414 +INFO:root:Epoch[12] Batch [4380] Speed: 662.01 samples/sec acc=0.783594 +INFO:root:Epoch[12] Batch [4400] Speed: 661.49 samples/sec acc=0.779395 +INFO:root:Epoch[12] Batch [4420] Speed: 662.02 samples/sec acc=0.773340 +INFO:root:Epoch[12] Batch [4440] Speed: 624.40 samples/sec acc=0.780957 +INFO:root:Epoch[12] Batch [4460] Speed: 629.29 samples/sec acc=0.779492 +INFO:root:Epoch[12] Batch [4480] Speed: 642.27 samples/sec acc=0.774902 +INFO:root:Epoch[12] Batch [4500] Speed: 650.69 samples/sec acc=0.770605 +INFO:root:Epoch[12] Batch [4520] Speed: 660.87 samples/sec acc=0.779785 +INFO:root:Epoch[12] Batch [4540] Speed: 661.89 samples/sec acc=0.779395 +INFO:root:Epoch[12] Batch [4560] Speed: 661.48 samples/sec acc=0.775195 +INFO:root:Epoch[12] Batch [4580] Speed: 649.11 samples/sec acc=0.774121 +INFO:root:Epoch[12] Batch [4600] Speed: 660.74 samples/sec acc=0.774512 +INFO:root:Epoch[12] Batch [4620] Speed: 662.44 samples/sec acc=0.777441 +INFO:root:Epoch[12] Batch [4640] Speed: 657.31 samples/sec acc=0.776172 +INFO:root:Epoch[12] Batch [4660] Speed: 662.24 samples/sec acc=0.782324 +INFO:root:Epoch[12] Batch [4680] Speed: 660.89 samples/sec acc=0.775000 +INFO:root:Epoch[12] Batch [4700] Speed: 661.71 samples/sec acc=0.776953 +INFO:root:Epoch[12] Batch [4720] Speed: 658.59 samples/sec acc=0.770898 +INFO:root:Epoch[12] Batch [4740] Speed: 662.85 samples/sec acc=0.771191 +INFO:root:Epoch[12] Batch [4760] Speed: 661.33 samples/sec acc=0.773535 +lr-batch-epoch: 0.001 4771 12 +INFO:root:Epoch[12] Batch [4780] Speed: 653.32 samples/sec acc=0.775488 +INFO:root:Epoch[12] Batch [4800] Speed: 661.56 samples/sec acc=0.777441 +INFO:root:Epoch[12] Batch [4820] Speed: 624.38 samples/sec acc=0.782324 +INFO:root:Epoch[12] Batch [4840] Speed: 666.73 samples/sec acc=0.776563 +INFO:root:Epoch[12] Batch [4860] Speed: 661.66 samples/sec acc=0.771973 +INFO:root:Epoch[12] Batch [4880] Speed: 660.56 samples/sec acc=0.774316 +INFO:root:Epoch[12] Batch [4900] Speed: 661.43 samples/sec acc=0.779004 +INFO:root:Epoch[12] Batch [4920] Speed: 658.25 samples/sec acc=0.775293 +INFO:root:Epoch[12] Batch [4940] Speed: 660.82 samples/sec acc=0.776367 +INFO:root:Epoch[12] Batch [4960] Speed: 645.62 samples/sec acc=0.776074 +INFO:root:Epoch[12] Batch [4980] Speed: 657.53 samples/sec acc=0.771582 +INFO:root:Epoch[12] Batch [5000] Speed: 676.22 samples/sec acc=0.775098 +INFO:root:Epoch[12] Batch [5020] Speed: 675.92 samples/sec acc=0.778027 +INFO:root:Epoch[12] Batch [5040] Speed: 648.27 samples/sec acc=0.773145 +INFO:root:Epoch[12] Batch [5060] Speed: 653.57 samples/sec acc=0.775488 +INFO:root:Epoch[12] Batch [5080] Speed: 618.77 samples/sec acc=0.774023 +INFO:root:Epoch[12] Batch [5100] Speed: 659.73 samples/sec acc=0.772168 +INFO:root:Epoch[12] Batch [5120] Speed: 660.35 samples/sec acc=0.775391 +INFO:root:Epoch[12] Batch [5140] Speed: 633.74 samples/sec acc=0.783887 +INFO:root:Epoch[12] Batch [5160] Speed: 657.46 samples/sec acc=0.775293 +INFO:root:Epoch[12] Batch [5180] Speed: 661.13 samples/sec acc=0.775000 +INFO:root:Epoch[12] Batch [5200] Speed: 661.92 samples/sec acc=0.775879 +INFO:root:Epoch[12] Batch [5220] Speed: 652.96 samples/sec acc=0.771289 +INFO:root:Epoch[12] Batch [5240] Speed: 661.11 samples/sec acc=0.771387 +INFO:root:Epoch[12] Batch [5260] Speed: 661.25 samples/sec acc=0.776660 +INFO:root:Epoch[12] Batch [5280] Speed: 662.51 samples/sec acc=0.779980 +INFO:root:Epoch[12] Batch [5300] Speed: 646.93 samples/sec acc=0.780469 +INFO:root:Epoch[12] Batch [5320] Speed: 661.73 samples/sec acc=0.772754 +INFO:root:Epoch[12] Batch [5340] Speed: 641.38 samples/sec acc=0.774121 +INFO:root:Epoch[12] Batch [5360] Speed: 646.74 samples/sec acc=0.769629 +INFO:root:Epoch[12] Batch [5380] Speed: 655.19 samples/sec acc=0.768750 +INFO:root:Epoch[12] Batch [5400] Speed: 663.17 samples/sec acc=0.778906 +INFO:root:Epoch[12] Batch [5420] Speed: 661.31 samples/sec acc=0.779004 +INFO:root:Epoch[12] Batch [5440] Speed: 661.64 samples/sec acc=0.782129 +INFO:root:Epoch[12] Batch [5460] Speed: 656.27 samples/sec acc=0.775195 +INFO:root:Epoch[12] Batch [5480] Speed: 659.40 samples/sec acc=0.778711 +INFO:root:Epoch[12] Batch [5500] Speed: 661.60 samples/sec acc=0.775977 +INFO:root:Epoch[12] Batch [5520] Speed: 661.79 samples/sec acc=0.776953 +INFO:root:Epoch[12] Batch [5540] Speed: 642.72 samples/sec acc=0.780273 +INFO:root:Epoch[12] Batch [5560] Speed: 661.11 samples/sec acc=0.776367 +INFO:root:Epoch[12] Batch [5580] Speed: 662.06 samples/sec acc=0.782129 +INFO:root:Epoch[12] Batch [5600] Speed: 661.63 samples/sec acc=0.781543 +INFO:root:Epoch[12] Batch [5620] Speed: 661.15 samples/sec acc=0.773438 +INFO:root:Epoch[12] Batch [5640] Speed: 650.24 samples/sec acc=0.781250 +INFO:root:Epoch[12] Batch [5660] Speed: 641.97 samples/sec acc=0.773633 +INFO:root:Epoch[12] Batch [5680] Speed: 661.34 samples/sec acc=0.773047 +INFO:root:Epoch[12] Batch [5700] Speed: 661.42 samples/sec acc=0.775586 +INFO:root:Epoch[12] Batch [5720] Speed: 661.68 samples/sec acc=0.774805 +INFO:root:Epoch[12] Batch [5740] Speed: 629.66 samples/sec acc=0.775977 +INFO:root:Epoch[12] Batch [5760] Speed: 661.47 samples/sec acc=0.783105 +[96000][MARGIN]0.794114,0.408994 +lr-batch-epoch: 0.001 5771 12 +testing verification.. +(14000, 512) +infer time 24.707595 +[cfp_ff][96000]XNorm: 21.380046 +[cfp_ff][96000]Accuracy-Flip: 0.99771+-0.00232 +testing verification.. +(14000, 512) +infer time 26.146211 +[cfp_fp][96000]XNorm: 19.539928 +[cfp_fp][96000]Accuracy-Flip: 0.92600+-0.01454 +testing verification.. +(12000, 512) +infer time 19.633509 +[agedb_30][96000]XNorm: 22.444902 +[agedb_30][96000]Accuracy-Flip: 0.97750+-0.00647 +testing verification.. +(12000, 512) +infer time 17.610915 +[lfw][96000]XNorm: 22.062007 +[lfw][96000]Accuracy-Flip: 0.99767+-0.00281 +[96000]Accuracy-Highest: 0.99800 +INFO:root:Epoch[12] Batch [5780] Speed: 83.37 samples/sec acc=0.778906 +INFO:root:Epoch[12] Batch [5800] Speed: 641.45 samples/sec acc=0.776660 +INFO:root:Epoch[12] Batch [5820] Speed: 662.19 samples/sec acc=0.778809 +INFO:root:Epoch[12] Batch [5840] Speed: 661.06 samples/sec acc=0.777637 +INFO:root:Epoch[12] Batch [5860] Speed: 662.07 samples/sec acc=0.784473 +INFO:root:Epoch[12] Batch [5880] Speed: 662.67 samples/sec acc=0.779980 +INFO:root:Epoch[12] Batch [5900] Speed: 661.73 samples/sec acc=0.778320 +INFO:root:Epoch[12] Batch [5920] Speed: 655.19 samples/sec acc=0.777344 +INFO:root:Epoch[12] Batch [5940] Speed: 665.23 samples/sec acc=0.779004 +INFO:root:Epoch[12] Batch [5960] Speed: 657.28 samples/sec acc=0.776563 +INFO:root:Epoch[12] Batch [5980] Speed: 663.39 samples/sec acc=0.771973 +INFO:root:Epoch[12] Batch [6000] Speed: 663.21 samples/sec acc=0.778027 +INFO:root:Epoch[12] Batch [6020] Speed: 661.27 samples/sec acc=0.776074 +INFO:root:Epoch[12] Batch [6040] Speed: 650.88 samples/sec acc=0.778320 +INFO:root:Epoch[12] Batch [6060] Speed: 656.87 samples/sec acc=0.775000 +INFO:root:Epoch[12] Batch [6080] Speed: 655.13 samples/sec acc=0.774512 +INFO:root:Epoch[12] Batch [6100] Speed: 634.44 samples/sec acc=0.769922 +INFO:root:Epoch[12] Batch [6120] Speed: 661.66 samples/sec acc=0.776074 +INFO:root:Epoch[12] Batch [6140] Speed: 662.12 samples/sec acc=0.781055 +INFO:root:Epoch[12] Batch [6160] Speed: 662.01 samples/sec acc=0.778223 +INFO:root:Epoch[12] Batch [6180] Speed: 661.86 samples/sec acc=0.779004 +INFO:root:Epoch[12] Batch [6200] Speed: 652.68 samples/sec acc=0.772559 +INFO:root:Epoch[12] Batch [6220] Speed: 662.21 samples/sec acc=0.784766 +INFO:root:Epoch[12] Batch [6240] Speed: 662.43 samples/sec acc=0.778809 +INFO:root:Epoch[12] Batch [6260] Speed: 660.87 samples/sec acc=0.774609 +INFO:root:Epoch[12] Batch [6280] Speed: 662.16 samples/sec acc=0.777539 +INFO:root:Epoch[12] Batch [6300] Speed: 661.79 samples/sec acc=0.782129 +INFO:root:Epoch[12] Batch [6320] Speed: 660.72 samples/sec acc=0.774316 +INFO:root:Epoch[12] Batch [6340] Speed: 661.87 samples/sec acc=0.778223 +INFO:root:Epoch[12] Batch [6360] Speed: 662.24 samples/sec acc=0.782422 +INFO:root:Epoch[12] Batch [6380] Speed: 661.32 samples/sec acc=0.774219 +INFO:root:Epoch[12] Batch [6400] Speed: 658.23 samples/sec acc=0.778906 +INFO:root:Epoch[12] Batch [6420] Speed: 662.95 samples/sec acc=0.774609 +INFO:root:Epoch[12] Batch [6440] Speed: 659.14 samples/sec acc=0.772559 +INFO:root:Epoch[12] Batch [6460] Speed: 663.70 samples/sec acc=0.777734 +INFO:root:Epoch[12] Batch [6480] Speed: 661.93 samples/sec acc=0.778613 +INFO:root:Epoch[12] Batch [6500] Speed: 661.21 samples/sec acc=0.773438 +INFO:root:Epoch[12] Batch [6520] Speed: 652.94 samples/sec acc=0.767480 +INFO:root:Epoch[12] Batch [6540] Speed: 661.89 samples/sec acc=0.776465 +INFO:root:Epoch[12] Batch [6560] Speed: 661.01 samples/sec acc=0.777734 +INFO:root:Epoch[12] Batch [6580] Speed: 656.54 samples/sec acc=0.774121 +INFO:root:Epoch[12] Batch [6600] Speed: 662.62 samples/sec acc=0.779785 +INFO:root:Epoch[12] Batch [6620] Speed: 642.29 samples/sec acc=0.779199 +INFO:root:Epoch[12] Batch [6640] Speed: 661.45 samples/sec acc=0.771582 +INFO:root:Epoch[12] Batch [6660] Speed: 660.96 samples/sec acc=0.779785 +INFO:root:Epoch[12] Batch [6680] Speed: 661.46 samples/sec acc=0.783398 +INFO:root:Epoch[12] Batch [6700] Speed: 661.71 samples/sec acc=0.770020 +INFO:root:Epoch[12] Batch [6720] Speed: 660.89 samples/sec acc=0.771680 +INFO:root:Epoch[12] Batch [6740] Speed: 661.08 samples/sec acc=0.770703 +INFO:root:Epoch[12] Batch [6760] Speed: 653.36 samples/sec acc=0.781641 +lr-batch-epoch: 0.001 6771 12 +INFO:root:Epoch[12] Batch [6780] Speed: 662.72 samples/sec acc=0.777051 +INFO:root:Epoch[12] Batch [6800] Speed: 661.14 samples/sec acc=0.776758 +INFO:root:Epoch[12] Batch [6820] Speed: 662.25 samples/sec acc=0.772949 +INFO:root:Epoch[12] Batch [6840] Speed: 662.17 samples/sec acc=0.780078 +INFO:root:Epoch[12] Batch [6860] Speed: 661.31 samples/sec acc=0.776563 +INFO:root:Epoch[12] Batch [6880] Speed: 661.97 samples/sec acc=0.768750 +INFO:root:Epoch[12] Batch [6900] Speed: 661.87 samples/sec acc=0.775000 +INFO:root:Epoch[12] Batch [6920] Speed: 658.81 samples/sec acc=0.776953 +INFO:root:Epoch[12] Batch [6940] Speed: 655.35 samples/sec acc=0.767285 +INFO:root:Epoch[12] Batch [6960] Speed: 671.44 samples/sec acc=0.775879 +INFO:root:Epoch[12] Batch [6980] Speed: 661.03 samples/sec acc=0.782031 +INFO:root:Epoch[12] Batch [7000] Speed: 661.84 samples/sec acc=0.773535 +INFO:root:Epoch[12] Batch [7020] Speed: 662.24 samples/sec acc=0.776172 +INFO:root:Epoch[12] Batch [7040] Speed: 661.42 samples/sec acc=0.775195 +INFO:root:Epoch[12] Batch [7060] Speed: 641.51 samples/sec acc=0.774609 +INFO:root:Epoch[12] Batch [7080] Speed: 662.07 samples/sec acc=0.773438 +INFO:root:Epoch[12] Batch [7100] Speed: 661.32 samples/sec acc=0.772070 +INFO:root:Epoch[12] Batch [7120] Speed: 661.41 samples/sec acc=0.780176 +INFO:root:Epoch[12] Batch [7140] Speed: 662.43 samples/sec acc=0.772559 +INFO:root:Epoch[12] Batch [7160] Speed: 661.00 samples/sec acc=0.781250 +INFO:root:Epoch[12] Batch [7180] Speed: 661.25 samples/sec acc=0.771484 +INFO:root:Epoch[12] Batch [7200] Speed: 662.13 samples/sec acc=0.770117 +INFO:root:Epoch[12] Batch [7220] Speed: 660.99 samples/sec acc=0.773926 +INFO:root:Epoch[12] Batch [7240] Speed: 661.72 samples/sec acc=0.774512 +INFO:root:Epoch[12] Batch [7260] Speed: 649.74 samples/sec acc=0.779297 +INFO:root:Epoch[12] Batch [7280] Speed: 660.24 samples/sec acc=0.777051 +INFO:root:Epoch[12] Batch [7300] Speed: 656.93 samples/sec acc=0.773926 +INFO:root:Epoch[12] Batch [7320] Speed: 664.92 samples/sec acc=0.777539 +INFO:root:Epoch[12] Batch [7340] Speed: 656.65 samples/sec acc=0.773242 +INFO:root:Epoch[12] Batch [7360] Speed: 661.06 samples/sec acc=0.780566 +INFO:root:Epoch[12] Batch [7380] Speed: 662.24 samples/sec acc=0.771582 +INFO:root:Epoch[12] Batch [7400] Speed: 646.32 samples/sec acc=0.777539 +INFO:root:Epoch[12] Batch [7420] Speed: 657.46 samples/sec acc=0.778418 +INFO:root:Epoch[12] Batch [7440] Speed: 662.12 samples/sec acc=0.769922 +INFO:root:Epoch[12] Batch [7460] Speed: 661.02 samples/sec acc=0.775391 +INFO:root:Epoch[12] Batch [7480] Speed: 649.36 samples/sec acc=0.775488 +INFO:root:Epoch[12] Batch [7500] Speed: 668.19 samples/sec acc=0.771191 +INFO:root:Epoch[12] Train-acc=0.773438 +INFO:root:Epoch[12] Time cost=6184.963 +call reset() +INFO:root:Epoch[13] Batch [20] Speed: 662.14 samples/sec acc=0.810082 +INFO:root:Epoch[13] Batch [40] Speed: 662.24 samples/sec acc=0.816602 +INFO:root:Epoch[13] Batch [60] Speed: 635.54 samples/sec acc=0.804883 +INFO:root:Epoch[13] Batch [80] Speed: 661.82 samples/sec acc=0.818750 +INFO:root:Epoch[13] Batch [100] Speed: 661.94 samples/sec acc=0.813477 +INFO:root:Epoch[13] Batch [120] Speed: 647.14 samples/sec acc=0.812891 +INFO:root:Epoch[13] Batch [140] Speed: 660.42 samples/sec acc=0.814941 +INFO:root:Epoch[13] Batch [160] Speed: 662.15 samples/sec acc=0.810937 +INFO:root:Epoch[13] Batch [180] Speed: 656.79 samples/sec acc=0.816797 +INFO:root:Epoch[13] Batch [200] Speed: 662.13 samples/sec acc=0.803418 +INFO:root:Epoch[13] Batch [220] Speed: 662.49 samples/sec acc=0.806152 +INFO:root:Epoch[13] Batch [240] Speed: 662.39 samples/sec acc=0.816602 +[98000][MARGIN]0.809840,0.431885 +lr-batch-epoch: 0.001 252 13 +testing verification.. +(14000, 512) +infer time 23.044673 +[cfp_ff][98000]XNorm: 21.540596 +[cfp_ff][98000]Accuracy-Flip: 0.99814+-0.00231 +testing verification.. +(14000, 512) +infer time 24.11354 +[cfp_fp][98000]XNorm: 19.770752 +[cfp_fp][98000]Accuracy-Flip: 0.92786+-0.01449 +testing verification.. +(12000, 512) +infer time 19.230186 +[agedb_30][98000]XNorm: 22.672518 +[agedb_30][98000]Accuracy-Flip: 0.97750+-0.00634 +testing verification.. +(12000, 512) +infer time 20.331927 +[lfw][98000]XNorm: 22.276239 +[lfw][98000]Accuracy-Flip: 0.99767+-0.00271 +[98000]Accuracy-Highest: 0.99800 +INFO:root:Epoch[13] Batch [260] Speed: 84.10 samples/sec acc=0.817090 +INFO:root:Epoch[13] Batch [280] Speed: 657.84 samples/sec acc=0.806055 +INFO:root:Epoch[13] Batch [300] Speed: 641.27 samples/sec acc=0.814160 +INFO:root:Epoch[13] Batch [320] Speed: 654.98 samples/sec acc=0.810937 +INFO:root:Epoch[13] Batch [340] Speed: 661.53 samples/sec acc=0.808887 +INFO:root:Epoch[13] Batch [360] Speed: 659.82 samples/sec acc=0.814746 +INFO:root:Epoch[13] Batch [380] Speed: 653.69 samples/sec acc=0.803809 +INFO:root:Epoch[13] Batch [400] Speed: 661.59 samples/sec acc=0.815723 +INFO:root:Epoch[13] Batch [420] Speed: 656.61 samples/sec acc=0.804297 +INFO:root:Epoch[13] Batch [440] Speed: 661.62 samples/sec acc=0.811230 +INFO:root:Epoch[13] Batch [460] Speed: 662.25 samples/sec acc=0.811133 +INFO:root:Epoch[13] Batch [480] Speed: 661.17 samples/sec acc=0.809473 +INFO:root:Epoch[13] Batch [500] Speed: 661.27 samples/sec acc=0.806836 +INFO:root:Epoch[13] Batch [520] Speed: 661.87 samples/sec acc=0.805566 +INFO:root:Epoch[13] Batch [540] Speed: 660.33 samples/sec acc=0.802539 +INFO:root:Epoch[13] Batch [560] Speed: 662.10 samples/sec acc=0.814648 +INFO:root:Epoch[13] Batch [580] Speed: 662.06 samples/sec acc=0.813086 +INFO:root:Epoch[13] Batch [600] Speed: 661.21 samples/sec acc=0.809668 +INFO:root:Epoch[13] Batch [620] Speed: 660.65 samples/sec acc=0.808789 +INFO:root:Epoch[13] Batch [640] Speed: 661.62 samples/sec acc=0.802539 +INFO:root:Epoch[13] Batch [660] Speed: 656.41 samples/sec acc=0.811133 +INFO:root:Epoch[13] Batch [680] Speed: 661.28 samples/sec acc=0.806445 +INFO:root:Epoch[13] Batch [700] Speed: 656.79 samples/sec acc=0.803418 +INFO:root:Epoch[13] Batch [720] Speed: 677.83 samples/sec acc=0.808789 +INFO:root:Epoch[13] Batch [740] Speed: 661.04 samples/sec acc=0.803125 +INFO:root:Epoch[13] Batch [760] Speed: 652.94 samples/sec acc=0.804492 +INFO:root:Epoch[13] Batch [780] Speed: 661.46 samples/sec acc=0.801367 +INFO:root:Epoch[13] Batch [800] Speed: 660.82 samples/sec acc=0.800879 +INFO:root:Epoch[13] Batch [820] Speed: 662.05 samples/sec acc=0.809570 +INFO:root:Epoch[13] Batch [840] Speed: 662.04 samples/sec acc=0.802148 +INFO:root:Epoch[13] Batch [860] Speed: 657.54 samples/sec acc=0.804980 +INFO:root:Epoch[13] Batch [880] Speed: 661.35 samples/sec acc=0.802734 +INFO:root:Epoch[13] Batch [900] Speed: 661.49 samples/sec acc=0.798535 +INFO:root:Epoch[13] Batch [920] Speed: 661.99 samples/sec acc=0.809570 +INFO:root:Epoch[13] Batch [940] Speed: 661.10 samples/sec acc=0.804688 +INFO:root:Epoch[13] Batch [960] Speed: 661.08 samples/sec acc=0.805371 +INFO:root:Epoch[13] Batch [980] Speed: 661.60 samples/sec acc=0.804980 +INFO:root:Epoch[13] Batch [1000] Speed: 647.51 samples/sec acc=0.802637 +INFO:root:Epoch[13] Batch [1020] Speed: 661.53 samples/sec acc=0.803711 +INFO:root:Epoch[13] Batch [1040] Speed: 661.68 samples/sec acc=0.808105 +INFO:root:Epoch[13] Batch [1060] Speed: 662.06 samples/sec acc=0.806445 +INFO:root:Epoch[13] Batch [1080] Speed: 655.45 samples/sec acc=0.804785 +INFO:root:Epoch[13] Batch [1100] Speed: 663.04 samples/sec acc=0.811426 +INFO:root:Epoch[13] Batch [1120] Speed: 661.30 samples/sec acc=0.807129 +INFO:root:Epoch[13] Batch [1140] Speed: 660.88 samples/sec acc=0.808594 +INFO:root:Epoch[13] Batch [1160] Speed: 662.09 samples/sec acc=0.805371 +INFO:root:Epoch[13] Batch [1180] Speed: 661.30 samples/sec acc=0.808008 +INFO:root:Epoch[13] Batch [1200] Speed: 661.11 samples/sec acc=0.806543 +INFO:root:Epoch[13] Batch [1220] Speed: 649.81 samples/sec acc=0.794434 +INFO:root:Epoch[13] Batch [1240] Speed: 660.49 samples/sec acc=0.804199 +lr-batch-epoch: 0.001 1252 13 +INFO:root:Epoch[13] Batch [1260] Speed: 672.85 samples/sec acc=0.802539 +INFO:root:Epoch[13] Batch [1280] Speed: 661.69 samples/sec acc=0.806348 +INFO:root:Epoch[13] Batch [1300] Speed: 668.28 samples/sec acc=0.812500 +INFO:root:Epoch[13] Batch [1320] Speed: 678.44 samples/sec acc=0.800879 +INFO:root:Epoch[13] Batch [1340] Speed: 661.02 samples/sec acc=0.804102 +INFO:root:Epoch[13] Batch [1360] Speed: 661.22 samples/sec acc=0.802930 +INFO:root:Epoch[13] Batch [1380] Speed: 659.16 samples/sec acc=0.802148 +INFO:root:Epoch[13] Batch [1400] Speed: 656.04 samples/sec acc=0.805176 +INFO:root:Epoch[13] Batch [1420] Speed: 662.75 samples/sec acc=0.803613 +INFO:root:Epoch[13] Batch [1440] Speed: 660.68 samples/sec acc=0.800195 +INFO:root:Epoch[13] Batch [1460] Speed: 662.18 samples/sec acc=0.796875 +INFO:root:Epoch[13] Batch [1480] Speed: 653.52 samples/sec acc=0.800000 +INFO:root:Epoch[13] Batch [1500] Speed: 661.59 samples/sec acc=0.806055 +INFO:root:Epoch[13] Batch [1520] Speed: 646.26 samples/sec acc=0.806934 +INFO:root:Epoch[13] Batch [1540] Speed: 649.35 samples/sec acc=0.811230 +INFO:root:Epoch[13] Batch [1560] Speed: 630.93 samples/sec acc=0.802930 +INFO:root:Epoch[13] Batch [1580] Speed: 662.41 samples/sec acc=0.810840 +INFO:root:Epoch[13] Batch [1600] Speed: 656.82 samples/sec acc=0.806250 +INFO:root:Epoch[13] Batch [1620] Speed: 661.21 samples/sec acc=0.799805 +INFO:root:Epoch[13] Batch [1640] Speed: 650.01 samples/sec acc=0.804590 +INFO:root:Epoch[13] Batch [1660] Speed: 662.20 samples/sec acc=0.800586 +INFO:root:Epoch[13] Batch [1680] Speed: 661.80 samples/sec acc=0.810449 +INFO:root:Epoch[13] Batch [1700] Speed: 662.23 samples/sec acc=0.798926 +INFO:root:Epoch[13] Batch [1720] Speed: 661.84 samples/sec acc=0.807520 +INFO:root:Epoch[13] Batch [1740] Speed: 661.87 samples/sec acc=0.801758 +INFO:root:Epoch[13] Batch [1760] Speed: 638.93 samples/sec acc=0.810352 +INFO:root:Epoch[13] Batch [1780] Speed: 655.01 samples/sec acc=0.806055 +INFO:root:Epoch[13] Batch [1800] Speed: 661.74 samples/sec acc=0.805859 +INFO:root:Epoch[13] Batch [1820] Speed: 662.06 samples/sec acc=0.804395 +INFO:root:Epoch[13] Batch [1840] Speed: 662.54 samples/sec acc=0.805469 +INFO:root:Epoch[13] Batch [1860] Speed: 661.99 samples/sec acc=0.810352 +INFO:root:Epoch[13] Batch [1880] Speed: 662.21 samples/sec acc=0.803320 +INFO:root:Epoch[13] Batch [1900] Speed: 661.57 samples/sec acc=0.800977 +INFO:root:Epoch[13] Batch [1920] Speed: 641.69 samples/sec acc=0.803223 +INFO:root:Epoch[13] Batch [1940] Speed: 659.53 samples/sec acc=0.805176 +INFO:root:Epoch[13] Batch [1960] Speed: 648.42 samples/sec acc=0.808984 +INFO:root:Epoch[13] Batch [1980] Speed: 655.89 samples/sec acc=0.802246 +INFO:root:Epoch[13] Batch [2000] Speed: 664.19 samples/sec acc=0.806641 +INFO:root:Epoch[13] Batch [2020] Speed: 638.49 samples/sec acc=0.810254 +INFO:root:Epoch[13] Batch [2040] Speed: 601.14 samples/sec acc=0.805762 +INFO:root:Epoch[13] Batch [2060] Speed: 652.61 samples/sec acc=0.808887 +INFO:root:Epoch[13] Batch [2080] Speed: 644.37 samples/sec acc=0.801660 +INFO:root:Epoch[13] Batch [2100] Speed: 661.35 samples/sec acc=0.797949 +INFO:root:Epoch[13] Batch [2120] Speed: 667.73 samples/sec acc=0.799414 +INFO:root:Epoch[13] Batch [2140] Speed: 675.87 samples/sec acc=0.797656 +INFO:root:Epoch[13] Batch [2160] Speed: 645.34 samples/sec acc=0.801855 +INFO:root:Epoch[13] Batch [2180] Speed: 661.10 samples/sec acc=0.800098 +INFO:root:Epoch[13] Batch [2200] Speed: 662.14 samples/sec acc=0.804004 +INFO:root:Epoch[13] Batch [2220] Speed: 661.34 samples/sec acc=0.801172 +INFO:root:Epoch[13] Batch [2240] Speed: 640.26 samples/sec acc=0.804199 +[100000][MARGIN]0.801697,0.419335 +lr change to 0.0001 +lr-batch-epoch: 0.0001 2252 13 +testing verification.. +(14000, 512) +infer time 26.93032 +[cfp_ff][100000]XNorm: 21.206661 +[cfp_ff][100000]Accuracy-Flip: 0.99829+-0.00229 +testing verification.. +(14000, 512) +infer time 24.364064 +[cfp_fp][100000]XNorm: 19.494624 +[cfp_fp][100000]Accuracy-Flip: 0.92743+-0.01295 +testing verification.. +(12000, 512) +infer time 22.174277 +[agedb_30][100000]XNorm: 22.312334 +[agedb_30][100000]Accuracy-Flip: 0.97767+-0.00700 +testing verification.. +(12000, 512) +infer time 25.665378 +[lfw][100000]XNorm: 21.961490 +[lfw][100000]Accuracy-Flip: 0.99817+-0.00229 +saving 50 +INFO:root:Saved checkpoint to "../model-r50-am-lfw/model-0050.params" +[100000]Accuracy-Highest: 0.99817 +INFO:root:Epoch[13] Batch [2260] Speed: 72.44 samples/sec acc=0.806543 +INFO:root:Epoch[13] Batch [2280] Speed: 668.04 samples/sec acc=0.801367 +INFO:root:Epoch[13] Batch [2300] Speed: 652.38 samples/sec acc=0.808496 +INFO:root:Epoch[13] Batch [2320] Speed: 674.38 samples/sec acc=0.800098 +INFO:root:Epoch[13] Batch [2340] Speed: 663.41 samples/sec acc=0.804590 +INFO:root:Epoch[13] Batch [2360] Speed: 662.05 samples/sec acc=0.812207 +INFO:root:Epoch[13] Batch [2380] Speed: 661.66 samples/sec acc=0.808301 +INFO:root:Epoch[13] Batch [2400] Speed: 661.21 samples/sec acc=0.803809 +INFO:root:Epoch[13] Batch [2420] Speed: 665.95 samples/sec acc=0.797949 +INFO:root:Epoch[13] Batch [2440] Speed: 662.26 samples/sec acc=0.805859 +INFO:root:Epoch[13] Batch [2460] Speed: 661.76 samples/sec acc=0.806152 +INFO:root:Epoch[13] Batch [2480] Speed: 661.95 samples/sec acc=0.804688 +INFO:root:Epoch[13] Batch [2500] Speed: 662.82 samples/sec acc=0.802246 +INFO:root:Epoch[13] Batch [2520] Speed: 622.50 samples/sec acc=0.800977 +INFO:root:Epoch[13] Batch [2540] Speed: 627.07 samples/sec acc=0.811719 +INFO:root:Epoch[13] Batch [2560] Speed: 654.91 samples/sec acc=0.810840 +INFO:root:Epoch[13] Batch [2580] Speed: 652.78 samples/sec acc=0.803418 +INFO:root:Epoch[13] Batch [2600] Speed: 604.71 samples/sec acc=0.804785 +INFO:root:Epoch[13] Batch [2620] Speed: 644.27 samples/sec acc=0.810352 +INFO:root:Epoch[13] Batch [2640] Speed: 661.71 samples/sec acc=0.805566 +INFO:root:Epoch[13] Batch [2660] Speed: 637.08 samples/sec acc=0.805566 +INFO:root:Epoch[13] Batch [2680] Speed: 662.65 samples/sec acc=0.806250 +INFO:root:Epoch[13] Batch [2700] Speed: 622.05 samples/sec acc=0.808594 +INFO:root:Epoch[13] Batch [2720] Speed: 662.91 samples/sec acc=0.805957 +INFO:root:Epoch[13] Batch [2740] Speed: 661.81 samples/sec acc=0.811328 +INFO:root:Epoch[13] Batch [2760] Speed: 661.41 samples/sec acc=0.807227 +INFO:root:Epoch[13] Batch [2780] Speed: 658.69 samples/sec acc=0.807129 +INFO:root:Epoch[13] Batch [2800] Speed: 632.60 samples/sec acc=0.804297 +INFO:root:Epoch[13] Batch [2820] Speed: 651.17 samples/sec acc=0.799414 +INFO:root:Epoch[13] Batch [2840] Speed: 661.97 samples/sec acc=0.804199 +INFO:root:Epoch[13] Batch [2860] Speed: 662.45 samples/sec acc=0.818555 +INFO:root:Epoch[13] Batch [2880] Speed: 661.55 samples/sec acc=0.818066 +INFO:root:Epoch[13] Batch [2900] Speed: 661.82 samples/sec acc=0.806738 +INFO:root:Epoch[13] Batch [2920] Speed: 662.44 samples/sec acc=0.808203 +INFO:root:Epoch[13] Batch [2940] Speed: 648.67 samples/sec acc=0.806152 +INFO:root:Epoch[13] Batch [2960] Speed: 665.08 samples/sec acc=0.807031 +INFO:root:Epoch[13] Batch [2980] Speed: 660.09 samples/sec acc=0.812109 +INFO:root:Epoch[13] Batch [3000] Speed: 666.33 samples/sec acc=0.809961 +INFO:root:Epoch[13] Batch [3020] Speed: 640.95 samples/sec acc=0.805176 +INFO:root:Epoch[13] Batch [3040] Speed: 641.19 samples/sec acc=0.803516 +INFO:root:Epoch[13] Batch [3060] Speed: 659.65 samples/sec acc=0.806250 +INFO:root:Epoch[13] Batch [3080] Speed: 661.10 samples/sec acc=0.804199 +INFO:root:Epoch[13] Batch [3100] Speed: 657.21 samples/sec acc=0.808008 +INFO:root:Epoch[13] Batch [3120] Speed: 634.70 samples/sec acc=0.812305 +INFO:root:Epoch[13] Batch [3140] Speed: 674.40 samples/sec acc=0.800781 +INFO:root:Epoch[13] Batch [3160] Speed: 662.37 samples/sec acc=0.812012 +INFO:root:Epoch[13] Batch [3180] Speed: 661.53 samples/sec acc=0.813281 +INFO:root:Epoch[13] Batch [3200] Speed: 651.72 samples/sec acc=0.806934 +INFO:root:Epoch[13] Batch [3220] Speed: 641.70 samples/sec acc=0.797461 +INFO:root:Epoch[13] Batch [3240] Speed: 662.12 samples/sec acc=0.805957 +lr-batch-epoch: 0.0001 3252 13 +INFO:root:Epoch[13] Batch [3260] Speed: 615.46 samples/sec acc=0.807910 +INFO:root:Epoch[13] Batch [3280] Speed: 662.65 samples/sec acc=0.811328 +INFO:root:Epoch[13] Batch [3300] Speed: 661.85 samples/sec acc=0.807031 +INFO:root:Epoch[13] Batch [3320] Speed: 652.86 samples/sec acc=0.802930 +INFO:root:Epoch[13] Batch [3340] Speed: 629.09 samples/sec acc=0.809473 +INFO:root:Epoch[13] Batch [3360] Speed: 661.49 samples/sec acc=0.804492 +INFO:root:Epoch[13] Batch [3380] Speed: 654.63 samples/sec acc=0.818945 +INFO:root:Epoch[13] Batch [3400] Speed: 661.71 samples/sec acc=0.805566 +INFO:root:Epoch[13] Batch [3420] Speed: 661.22 samples/sec acc=0.810840 +INFO:root:Epoch[13] Batch [3440] Speed: 661.92 samples/sec acc=0.806738 +INFO:root:Epoch[13] Batch [3460] Speed: 653.05 samples/sec acc=0.809082 +INFO:root:Epoch[13] Batch [3480] Speed: 655.29 samples/sec acc=0.804297 +INFO:root:Epoch[13] Batch [3500] Speed: 657.45 samples/sec acc=0.811328 +INFO:root:Epoch[13] Batch [3520] Speed: 646.95 samples/sec acc=0.810352 +INFO:root:Epoch[13] Batch [3540] Speed: 661.73 samples/sec acc=0.812891 +INFO:root:Epoch[13] Batch [3560] Speed: 661.58 samples/sec acc=0.805566 +INFO:root:Epoch[13] Batch [3580] Speed: 662.72 samples/sec acc=0.809863 +INFO:root:Epoch[13] Batch [3600] Speed: 661.43 samples/sec acc=0.800684 +INFO:root:Epoch[13] Batch [3620] Speed: 662.03 samples/sec acc=0.803613 +INFO:root:Epoch[13] Batch [3640] Speed: 662.38 samples/sec acc=0.812793 +INFO:root:Epoch[13] Batch [3660] Speed: 643.43 samples/sec acc=0.805957 +INFO:root:Epoch[13] Batch [3680] Speed: 649.53 samples/sec acc=0.808301 +INFO:root:Epoch[13] Batch [3700] Speed: 656.30 samples/sec acc=0.807422 +INFO:root:Epoch[13] Batch [3720] Speed: 623.31 samples/sec acc=0.807715 +INFO:root:Epoch[13] Batch [3740] Speed: 638.47 samples/sec acc=0.806934 +INFO:root:Epoch[13] Batch [3760] Speed: 647.90 samples/sec acc=0.806152 +INFO:root:Epoch[13] Batch [3780] Speed: 661.29 samples/sec acc=0.819336 +INFO:root:Epoch[13] Batch [3800] Speed: 662.24 samples/sec acc=0.806250 +INFO:root:Epoch[13] Batch [3820] Speed: 670.34 samples/sec acc=0.814160 +INFO:root:Epoch[13] Batch [3840] Speed: 632.94 samples/sec acc=0.809766 +INFO:root:Epoch[13] Batch [3860] Speed: 662.68 samples/sec acc=0.808691 +INFO:root:Epoch[13] Batch [3880] Speed: 662.14 samples/sec acc=0.809082 +INFO:root:Epoch[13] Batch [3900] Speed: 641.89 samples/sec acc=0.807715 +INFO:root:Epoch[13] Batch [3920] Speed: 653.52 samples/sec acc=0.807617 +INFO:root:Epoch[13] Batch [3940] Speed: 636.86 samples/sec acc=0.801855 +INFO:root:Epoch[13] Batch [3960] Speed: 661.01 samples/sec acc=0.810254 +INFO:root:Epoch[13] Batch [3980] Speed: 637.00 samples/sec acc=0.811133 +INFO:root:Epoch[13] Batch [4000] Speed: 658.71 samples/sec acc=0.807324 +INFO:root:Epoch[13] Batch [4020] Speed: 661.31 samples/sec acc=0.807813 +INFO:root:Epoch[13] Batch [4040] Speed: 642.92 samples/sec acc=0.805762 +INFO:root:Epoch[13] Batch [4060] Speed: 662.15 samples/sec acc=0.811914 +INFO:root:Epoch[13] Batch [4080] Speed: 661.90 samples/sec acc=0.810352 +INFO:root:Epoch[13] Batch [4100] Speed: 662.47 samples/sec acc=0.808789 +INFO:root:Epoch[13] Batch [4120] Speed: 660.62 samples/sec acc=0.813379 +INFO:root:Epoch[13] Batch [4140] Speed: 638.23 samples/sec acc=0.806641 +INFO:root:Epoch[13] Batch [4160] Speed: 661.64 samples/sec acc=0.806250 +INFO:root:Epoch[13] Batch [4180] Speed: 662.08 samples/sec acc=0.812598 +INFO:root:Epoch[13] Batch [4200] Speed: 661.08 samples/sec acc=0.802832 +INFO:root:Epoch[13] Batch [4220] Speed: 635.06 samples/sec acc=0.809961 +INFO:root:Epoch[13] Batch [4240] Speed: 662.19 samples/sec acc=0.812207 +[102000][MARGIN]0.802079,0.420633 +lr-batch-epoch: 0.0001 4252 13 +testing verification.. +(14000, 512) +infer time 17.704362 +[cfp_ff][102000]XNorm: 21.493158 +[cfp_ff][102000]Accuracy-Flip: 0.99814+-0.00231 +testing verification.. +(14000, 512) +infer time 18.302814 +[cfp_fp][102000]XNorm: 19.743070 +[cfp_fp][102000]Accuracy-Flip: 0.92757+-0.01447 +testing verification.. +(12000, 512) +infer time 14.929935 +[agedb_30][102000]XNorm: 22.679150 +[agedb_30][102000]Accuracy-Flip: 0.97767+-0.00696 +testing verification.. +(12000, 512) +infer time 14.35169 +[lfw][102000]XNorm: 22.254405 +[lfw][102000]Accuracy-Flip: 0.99800+-0.00267 +[102000]Accuracy-Highest: 0.99817 +INFO:root:Epoch[13] Batch [4260] Speed: 102.97 samples/sec acc=0.809570 +INFO:root:Epoch[13] Batch [4280] Speed: 661.60 samples/sec acc=0.812891 +INFO:root:Epoch[13] Batch [4300] Speed: 662.28 samples/sec acc=0.808691 +INFO:root:Epoch[13] Batch [4320] Speed: 660.82 samples/sec acc=0.810742 +INFO:root:Epoch[13] Batch [4340] Speed: 662.71 samples/sec acc=0.808691 +INFO:root:Epoch[13] Batch [4360] Speed: 659.93 samples/sec acc=0.817187 +INFO:root:Epoch[13] Batch [4380] Speed: 636.39 samples/sec acc=0.809766 +INFO:root:Epoch[13] Batch [4400] Speed: 661.86 samples/sec acc=0.810742 +INFO:root:Epoch[13] Batch [4420] Speed: 642.09 samples/sec acc=0.809766 +INFO:root:Epoch[13] Batch [4440] Speed: 650.43 samples/sec acc=0.806543 +INFO:root:Epoch[13] Batch [4460] Speed: 644.42 samples/sec acc=0.810937 +INFO:root:Epoch[13] Batch [4480] Speed: 660.88 samples/sec acc=0.800391 +INFO:root:Epoch[13] Batch [4500] Speed: 638.75 samples/sec acc=0.807031 +INFO:root:Epoch[13] Batch [4520] Speed: 662.58 samples/sec acc=0.804297 +INFO:root:Epoch[13] Batch [4540] Speed: 662.54 samples/sec acc=0.809961 +INFO:root:Epoch[13] Batch [4560] Speed: 662.31 samples/sec acc=0.808984 +INFO:root:Epoch[13] Batch [4580] Speed: 662.20 samples/sec acc=0.809180 +INFO:root:Epoch[13] Batch [4600] Speed: 662.52 samples/sec acc=0.796387 +INFO:root:Epoch[13] Batch [4620] Speed: 657.23 samples/sec acc=0.811621 +INFO:root:Epoch[13] Batch [4640] Speed: 675.32 samples/sec acc=0.804688 +INFO:root:Epoch[13] Batch [4660] Speed: 642.32 samples/sec acc=0.813379 +INFO:root:Epoch[13] Batch [4680] Speed: 651.51 samples/sec acc=0.809961 +INFO:root:Epoch[13] Batch [4700] Speed: 612.78 samples/sec acc=0.812207 +INFO:root:Epoch[13] Batch [4720] Speed: 667.86 samples/sec acc=0.814941 +INFO:root:Epoch[13] Batch [4740] Speed: 659.61 samples/sec acc=0.808301 +INFO:root:Epoch[13] Batch [4760] Speed: 661.19 samples/sec acc=0.812891 +INFO:root:Epoch[13] Batch [4780] Speed: 662.02 samples/sec acc=0.803125 +INFO:root:Epoch[13] Batch [4800] Speed: 660.58 samples/sec acc=0.806934 +INFO:root:Epoch[13] Batch [4820] Speed: 661.61 samples/sec acc=0.800488 +INFO:root:Epoch[13] Batch [4840] Speed: 659.21 samples/sec acc=0.808008 +INFO:root:Epoch[13] Batch [4860] Speed: 657.96 samples/sec acc=0.809668 +INFO:root:Epoch[13] Batch [4880] Speed: 661.24 samples/sec acc=0.816016 +INFO:root:Epoch[13] Batch [4900] Speed: 662.58 samples/sec acc=0.811035 +INFO:root:Epoch[13] Batch [4920] Speed: 660.93 samples/sec acc=0.805469 +INFO:root:Epoch[13] Batch [4940] Speed: 662.40 samples/sec acc=0.805176 +INFO:root:Epoch[13] Batch [4960] Speed: 663.33 samples/sec acc=0.817187 +INFO:root:Epoch[13] Batch [4980] Speed: 640.34 samples/sec acc=0.813867 +INFO:root:Epoch[13] Batch [5000] Speed: 634.15 samples/sec acc=0.812109 +INFO:root:Epoch[13] Batch [5020] Speed: 662.98 samples/sec acc=0.812598 +INFO:root:Epoch[13] Batch [5040] Speed: 644.74 samples/sec acc=0.812988 +INFO:root:Epoch[13] Batch [5060] Speed: 653.28 samples/sec acc=0.813477 +INFO:root:Epoch[13] Batch [5080] Speed: 662.01 samples/sec acc=0.803809 +INFO:root:Epoch[13] Batch [5100] Speed: 661.96 samples/sec acc=0.810156 +INFO:root:Epoch[13] Batch [5120] Speed: 662.17 samples/sec acc=0.808789 +INFO:root:Epoch[13] Batch [5140] Speed: 642.05 samples/sec acc=0.809082 +INFO:root:Epoch[13] Batch [5160] Speed: 623.37 samples/sec acc=0.808008 +INFO:root:Epoch[13] Batch [5180] Speed: 665.08 samples/sec acc=0.804199 +INFO:root:Epoch[13] Batch [5200] Speed: 662.74 samples/sec acc=0.814941 +INFO:root:Epoch[13] Batch [5220] Speed: 632.47 samples/sec acc=0.813770 +INFO:root:Epoch[13] Batch [5240] Speed: 662.52 samples/sec acc=0.812012 +lr-batch-epoch: 0.0001 5252 13 +INFO:root:Epoch[13] Batch [5260] Speed: 659.63 samples/sec acc=0.809570 +INFO:root:Epoch[13] Batch [5280] Speed: 668.54 samples/sec acc=0.811035 +INFO:root:Epoch[13] Batch [5300] Speed: 633.15 samples/sec acc=0.813477 +INFO:root:Epoch[13] Batch [5320] Speed: 684.29 samples/sec acc=0.801953 +INFO:root:Epoch[13] Batch [5340] Speed: 661.54 samples/sec acc=0.804199 +INFO:root:Epoch[13] Batch [5360] Speed: 644.50 samples/sec acc=0.804883 +INFO:root:Epoch[13] Batch [5380] Speed: 662.20 samples/sec acc=0.812305 +INFO:root:Epoch[13] Batch [5400] Speed: 650.40 samples/sec acc=0.813379 +INFO:root:Epoch[13] Batch [5420] Speed: 662.35 samples/sec acc=0.804199 +INFO:root:Epoch[13] Batch [5440] Speed: 663.33 samples/sec acc=0.807129 +INFO:root:Epoch[13] Batch [5460] Speed: 662.57 samples/sec acc=0.808496 +INFO:root:Epoch[13] Batch [5480] Speed: 652.91 samples/sec acc=0.806738 +INFO:root:Epoch[13] Batch [5500] Speed: 667.66 samples/sec acc=0.808789 +INFO:root:Epoch[13] Batch [5520] Speed: 646.28 samples/sec acc=0.807715 +INFO:root:Epoch[13] Batch [5540] Speed: 663.58 samples/sec acc=0.813867 +INFO:root:Epoch[13] Batch [5560] Speed: 660.25 samples/sec acc=0.810449 +INFO:root:Epoch[13] Batch [5580] Speed: 647.36 samples/sec acc=0.809766 +INFO:root:Epoch[13] Batch [5600] Speed: 662.71 samples/sec acc=0.809570 +INFO:root:Epoch[13] Batch [5620] Speed: 655.96 samples/sec acc=0.810059 +INFO:root:Epoch[13] Batch [5640] Speed: 616.69 samples/sec acc=0.811230 +INFO:root:Epoch[13] Batch [5660] Speed: 661.15 samples/sec acc=0.816797 +INFO:root:Epoch[13] Batch [5680] Speed: 663.27 samples/sec acc=0.811426 +INFO:root:Epoch[13] Batch [5700] Speed: 661.79 samples/sec acc=0.809668 +INFO:root:Epoch[13] Batch [5720] Speed: 662.59 samples/sec acc=0.808691 +INFO:root:Epoch[13] Batch [5740] Speed: 662.07 samples/sec acc=0.812207 +INFO:root:Epoch[13] Batch [5760] Speed: 662.00 samples/sec acc=0.811523 +INFO:root:Epoch[13] Batch [5780] Speed: 662.14 samples/sec acc=0.810449 +INFO:root:Epoch[13] Batch [5800] Speed: 662.64 samples/sec acc=0.811621 +INFO:root:Epoch[13] Batch [5820] Speed: 661.78 samples/sec acc=0.804395 +INFO:root:Epoch[13] Batch [5840] Speed: 661.25 samples/sec acc=0.814355 +INFO:root:Epoch[13] Batch [5860] Speed: 676.80 samples/sec acc=0.811035 +INFO:root:Epoch[13] Batch [5880] Speed: 660.45 samples/sec acc=0.810449 +INFO:root:Epoch[13] Batch [5900] Speed: 655.29 samples/sec acc=0.814160 +INFO:root:Epoch[13] Batch [5920] Speed: 662.73 samples/sec acc=0.817676 +INFO:root:Epoch[13] Batch [5940] Speed: 661.03 samples/sec acc=0.810254 +INFO:root:Epoch[13] Batch [5960] Speed: 661.98 samples/sec acc=0.813379 +INFO:root:Epoch[13] Batch [5980] Speed: 659.42 samples/sec acc=0.809473 +INFO:root:Epoch[13] Batch [6000] Speed: 661.89 samples/sec acc=0.808887 +INFO:root:Epoch[13] Batch [6020] Speed: 661.24 samples/sec acc=0.813574 +INFO:root:Epoch[13] Batch [6040] Speed: 659.76 samples/sec acc=0.805859 +INFO:root:Epoch[13] Batch [6060] Speed: 671.72 samples/sec acc=0.808105 +INFO:root:Epoch[13] Batch [6080] Speed: 650.30 samples/sec acc=0.808789 +INFO:root:Epoch[13] Batch [6100] Speed: 653.91 samples/sec acc=0.809277 +INFO:root:Epoch[13] Batch [6120] Speed: 661.21 samples/sec acc=0.814160 +INFO:root:Epoch[13] Batch [6140] Speed: 661.81 samples/sec acc=0.805273 +INFO:root:Epoch[13] Batch [6160] Speed: 662.63 samples/sec acc=0.807813 +INFO:root:Epoch[13] Batch [6180] Speed: 662.43 samples/sec acc=0.805078 +INFO:root:Epoch[13] Batch [6200] Speed: 661.82 samples/sec acc=0.819238 +INFO:root:Epoch[13] Batch [6220] Speed: 655.09 samples/sec acc=0.807715 +INFO:root:Epoch[13] Batch [6240] Speed: 653.35 samples/sec acc=0.813086 +[104000][MARGIN]0.799129,0.416642 +lr-batch-epoch: 0.0001 6252 13 +testing verification.. +(14000, 512) +infer time 23.345104 +[cfp_ff][104000]XNorm: 21.440349 +[cfp_ff][104000]Accuracy-Flip: 0.99829+-0.00229 +testing verification.. +(14000, 512) +infer time 26.054203 +[cfp_fp][104000]XNorm: 19.720415 +[cfp_fp][104000]Accuracy-Flip: 0.92700+-0.01354 +testing verification.. +(12000, 512) +infer time 22.68381 +[agedb_30][104000]XNorm: 22.635694 +[agedb_30][104000]Accuracy-Flip: 0.97633+-0.00609 +testing verification.. +(12000, 512) +infer time 21.415218 +[lfw][104000]XNorm: 22.193441 +[lfw][104000]Accuracy-Flip: 0.99733+-0.00291 +[104000]Accuracy-Highest: 0.99817 +INFO:root:Epoch[13] Batch [6260] Speed: 78.84 samples/sec acc=0.811621 +INFO:root:Epoch[13] Batch [6280] Speed: 652.60 samples/sec acc=0.810352 +INFO:root:Epoch[13] Batch [6300] Speed: 661.39 samples/sec acc=0.815332 +INFO:root:Epoch[13] Batch [6320] Speed: 633.41 samples/sec acc=0.810840 +INFO:root:Epoch[13] Batch [6340] Speed: 662.06 samples/sec acc=0.811035 +INFO:root:Epoch[13] Batch [6360] Speed: 661.78 samples/sec acc=0.811133 +INFO:root:Epoch[13] Batch [6380] Speed: 661.74 samples/sec acc=0.808496 +INFO:root:Epoch[13] Batch [6400] Speed: 662.72 samples/sec acc=0.804688 +INFO:root:Epoch[13] Batch [6420] Speed: 661.83 samples/sec acc=0.810352 +INFO:root:Epoch[13] Batch [6440] Speed: 653.24 samples/sec acc=0.808984 +INFO:root:Epoch[13] Batch [6460] Speed: 662.01 samples/sec acc=0.807031 +INFO:root:Epoch[13] Batch [6480] Speed: 661.86 samples/sec acc=0.807129 +INFO:root:Epoch[13] Batch [6500] Speed: 661.57 samples/sec acc=0.806348 +INFO:root:Epoch[13] Batch [6520] Speed: 662.16 samples/sec acc=0.811133 +INFO:root:Epoch[13] Batch [6540] Speed: 661.37 samples/sec acc=0.809961 +INFO:root:Epoch[13] Batch [6560] Speed: 660.95 samples/sec acc=0.805469 +INFO:root:Epoch[13] Batch [6580] Speed: 662.45 samples/sec acc=0.813672 +INFO:root:Epoch[13] Batch [6600] Speed: 661.49 samples/sec acc=0.810840 +INFO:root:Epoch[13] Batch [6620] Speed: 661.70 samples/sec acc=0.811426 +INFO:root:Epoch[13] Batch [6640] Speed: 662.29 samples/sec acc=0.805469 +INFO:root:Epoch[13] Batch [6660] Speed: 661.36 samples/sec acc=0.810449 +INFO:root:Epoch[13] Batch [6680] Speed: 661.87 samples/sec acc=0.812012 +INFO:root:Epoch[13] Batch [6700] Speed: 662.44 samples/sec acc=0.809277 +INFO:root:Epoch[13] Batch [6720] Speed: 661.95 samples/sec acc=0.805664 +INFO:root:Epoch[13] Batch [6740] Speed: 662.32 samples/sec acc=0.807715 +INFO:root:Epoch[13] Batch [6760] Speed: 662.83 samples/sec acc=0.807617 +INFO:root:Epoch[13] Batch [6780] Speed: 667.13 samples/sec acc=0.806934 +INFO:root:Epoch[13] Batch [6800] Speed: 661.54 samples/sec acc=0.806348 +INFO:root:Epoch[13] Batch [6820] Speed: 644.86 samples/sec acc=0.807910 +INFO:root:Epoch[13] Batch [6840] Speed: 653.33 samples/sec acc=0.807910 +INFO:root:Epoch[13] Batch [6860] Speed: 654.18 samples/sec acc=0.811035 +INFO:root:Epoch[13] Batch [6880] Speed: 646.49 samples/sec acc=0.811914 +INFO:root:Epoch[13] Batch [6900] Speed: 650.03 samples/sec acc=0.806641 +INFO:root:Epoch[13] Batch [6920] Speed: 661.85 samples/sec acc=0.811035 +INFO:root:Epoch[13] Batch [6940] Speed: 646.81 samples/sec acc=0.807520 +INFO:root:Epoch[13] Batch [6960] Speed: 661.08 samples/sec acc=0.812109 +INFO:root:Epoch[13] Batch [6980] Speed: 661.77 samples/sec acc=0.804297 +INFO:root:Epoch[13] Batch [7000] Speed: 662.08 samples/sec acc=0.809766 +INFO:root:Epoch[13] Batch [7020] Speed: 662.30 samples/sec acc=0.816113 +INFO:root:Epoch[13] Batch [7040] Speed: 662.26 samples/sec acc=0.809473 +INFO:root:Epoch[13] Batch [7060] Speed: 662.05 samples/sec acc=0.814258 +INFO:root:Epoch[13] Batch [7080] Speed: 661.05 samples/sec acc=0.812598 +INFO:root:Epoch[13] Batch [7100] Speed: 662.43 samples/sec acc=0.814258 +INFO:root:Epoch[13] Batch [7120] Speed: 648.44 samples/sec acc=0.812598 +INFO:root:Epoch[13] Batch [7140] Speed: 637.28 samples/sec acc=0.812695 +INFO:root:Epoch[13] Batch [7160] Speed: 663.33 samples/sec acc=0.805957 +INFO:root:Epoch[13] Batch [7180] Speed: 660.09 samples/sec acc=0.810840 +INFO:root:Epoch[13] Batch [7200] Speed: 655.69 samples/sec acc=0.811230 +INFO:root:Epoch[13] Batch [7220] Speed: 662.98 samples/sec acc=0.803809 +INFO:root:Epoch[13] Batch [7240] Speed: 662.36 samples/sec acc=0.814355 +lr-batch-epoch: 0.0001 7252 13 +INFO:root:Epoch[13] Batch [7260] Speed: 661.05 samples/sec acc=0.813086 +INFO:root:Epoch[13] Batch [7280] Speed: 662.32 samples/sec acc=0.811816 +INFO:root:Epoch[13] Batch [7300] Speed: 661.94 samples/sec acc=0.818652 +INFO:root:Epoch[13] Batch [7320] Speed: 650.28 samples/sec acc=0.804492 +INFO:root:Epoch[13] Batch [7340] Speed: 663.79 samples/sec acc=0.811621 +INFO:root:Epoch[13] Batch [7360] Speed: 662.90 samples/sec acc=0.812305 +INFO:root:Epoch[13] Batch [7380] Speed: 660.87 samples/sec acc=0.810059 +INFO:root:Epoch[13] Batch [7400] Speed: 657.30 samples/sec acc=0.812500 +INFO:root:Epoch[13] Batch [7420] Speed: 642.06 samples/sec acc=0.809961 +INFO:root:Epoch[13] Batch [7440] Speed: 659.70 samples/sec acc=0.811914 +INFO:root:Epoch[13] Batch [7460] Speed: 642.02 samples/sec acc=0.815918 +INFO:root:Epoch[13] Batch [7480] Speed: 662.81 samples/sec acc=0.810645 +INFO:root:Epoch[13] Batch [7500] Speed: 661.44 samples/sec acc=0.815039 +INFO:root:Epoch[13] Train-acc=0.818576 +INFO:root:Epoch[13] Time cost=6294.678 +call reset() +INFO:root:Epoch[14] Batch [20] Speed: 660.12 samples/sec acc=0.821987 +INFO:root:Epoch[14] Batch [40] Speed: 662.86 samples/sec acc=0.828125 +INFO:root:Epoch[14] Batch [60] Speed: 660.25 samples/sec acc=0.825098 +INFO:root:Epoch[14] Batch [80] Speed: 656.02 samples/sec acc=0.825000 +INFO:root:Epoch[14] Batch [100] Speed: 663.50 samples/sec acc=0.825586 +INFO:root:Epoch[14] Batch [120] Speed: 661.59 samples/sec acc=0.832227 +INFO:root:Epoch[14] Batch [140] Speed: 659.53 samples/sec acc=0.823242 +INFO:root:Epoch[14] Batch [160] Speed: 639.93 samples/sec acc=0.825293 +INFO:root:Epoch[14] Batch [180] Speed: 662.50 samples/sec acc=0.822559 +INFO:root:Epoch[14] Batch [200] Speed: 661.43 samples/sec acc=0.830078 +INFO:root:Epoch[14] Batch [220] Speed: 662.20 samples/sec acc=0.830566 +INFO:root:Epoch[14] Batch [240] Speed: 662.20 samples/sec acc=0.824414 +INFO:root:Epoch[14] Batch [260] Speed: 647.92 samples/sec acc=0.823047 +INFO:root:Epoch[14] Batch [280] Speed: 651.16 samples/sec acc=0.826953 +INFO:root:Epoch[14] Batch [300] Speed: 661.93 samples/sec acc=0.819824 +INFO:root:Epoch[14] Batch [320] Speed: 660.79 samples/sec acc=0.832129 +INFO:root:Epoch[14] Batch [340] Speed: 661.94 samples/sec acc=0.833594 +INFO:root:Epoch[14] Batch [360] Speed: 662.32 samples/sec acc=0.829688 +INFO:root:Epoch[14] Batch [380] Speed: 661.29 samples/sec acc=0.826465 +INFO:root:Epoch[14] Batch [400] Speed: 645.40 samples/sec acc=0.826758 +INFO:root:Epoch[14] Batch [420] Speed: 662.83 samples/sec acc=0.832617 +INFO:root:Epoch[14] Batch [440] Speed: 661.14 samples/sec acc=0.829395 +INFO:root:Epoch[14] Batch [460] Speed: 661.97 samples/sec acc=0.830273 +INFO:root:Epoch[14] Batch [480] Speed: 661.30 samples/sec acc=0.830469 +INFO:root:Epoch[14] Batch [500] Speed: 661.24 samples/sec acc=0.824414 +INFO:root:Epoch[14] Batch [520] Speed: 661.30 samples/sec acc=0.828516 +INFO:root:Epoch[14] Batch [540] Speed: 670.07 samples/sec acc=0.826562 +INFO:root:Epoch[14] Batch [560] Speed: 673.61 samples/sec acc=0.824316 +INFO:root:Epoch[14] Batch [580] Speed: 677.93 samples/sec acc=0.824121 +INFO:root:Epoch[14] Batch [600] Speed: 662.14 samples/sec acc=0.821094 +INFO:root:Epoch[14] Batch [620] Speed: 661.74 samples/sec acc=0.829590 +INFO:root:Epoch[14] Batch [640] Speed: 643.90 samples/sec acc=0.829785 +INFO:root:Epoch[14] Batch [660] Speed: 671.88 samples/sec acc=0.837012 +INFO:root:Epoch[14] Batch [680] Speed: 644.04 samples/sec acc=0.825000 +INFO:root:Epoch[14] Batch [700] Speed: 661.87 samples/sec acc=0.820703 +INFO:root:Epoch[14] Batch [720] Speed: 662.50 samples/sec acc=0.826660 +[106000][MARGIN]0.802184,0.420316 +lr-batch-epoch: 0.0001 733 14 +testing verification.. +(14000, 512) +infer time 21.774034 +[cfp_ff][106000]XNorm: 21.429996 +[cfp_ff][106000]Accuracy-Flip: 0.99814+-0.00231 +testing verification.. +(14000, 512) +infer time 22.95958 +[cfp_fp][106000]XNorm: 19.773630 +[cfp_fp][106000]Accuracy-Flip: 0.92686+-0.01443 +testing verification.. +(12000, 512) +infer time 19.419289 +[agedb_30][106000]XNorm: 22.650390 +[agedb_30][106000]Accuracy-Flip: 0.97817+-0.00677 +testing verification.. +(12000, 512) +infer time 19.988042 +[lfw][106000]XNorm: 22.188714 +[lfw][106000]Accuracy-Flip: 0.99800+-0.00267 +[106000]Accuracy-Highest: 0.99817 +INFO:root:Epoch[14] Batch [740] Speed: 85.99 samples/sec acc=0.830664 +INFO:root:Epoch[14] Batch [760] Speed: 662.19 samples/sec acc=0.822949 +INFO:root:Epoch[14] Batch [780] Speed: 662.82 samples/sec acc=0.821973 +INFO:root:Epoch[14] Batch [800] Speed: 642.73 samples/sec acc=0.821484 +INFO:root:Epoch[14] Batch [820] Speed: 663.08 samples/sec acc=0.824609 +INFO:root:Epoch[14] Batch [840] Speed: 677.05 samples/sec acc=0.825000 +INFO:root:Epoch[14] Batch [860] Speed: 661.38 samples/sec acc=0.827246 +INFO:root:Epoch[14] Batch [880] Speed: 662.02 samples/sec acc=0.827246 +INFO:root:Epoch[14] Batch [900] Speed: 646.12 samples/sec acc=0.826855 +INFO:root:Epoch[14] Batch [920] Speed: 636.14 samples/sec acc=0.821289 +INFO:root:Epoch[14] Batch [940] Speed: 653.08 samples/sec acc=0.826953 +INFO:root:Epoch[14] Batch [960] Speed: 661.49 samples/sec acc=0.821973 +INFO:root:Epoch[14] Batch [980] Speed: 661.10 samples/sec acc=0.823926 +INFO:root:Epoch[14] Batch [1000] Speed: 660.94 samples/sec acc=0.828516 +INFO:root:Epoch[14] Batch [1020] Speed: 661.42 samples/sec acc=0.825391 +INFO:root:Epoch[14] Batch [1040] Speed: 649.06 samples/sec acc=0.825781 +INFO:root:Epoch[14] Batch [1060] Speed: 661.82 samples/sec acc=0.831055 +INFO:root:Epoch[14] Batch [1080] Speed: 661.00 samples/sec acc=0.828320 +INFO:root:Epoch[14] Batch [1100] Speed: 661.29 samples/sec acc=0.830176 +INFO:root:Epoch[14] Batch [1120] Speed: 662.42 samples/sec acc=0.825098 +INFO:root:Epoch[14] Batch [1140] Speed: 662.24 samples/sec acc=0.821973 +INFO:root:Epoch[14] Batch [1160] Speed: 653.30 samples/sec acc=0.822266 +INFO:root:Epoch[14] Batch [1180] Speed: 661.64 samples/sec acc=0.833105 +INFO:root:Epoch[14] Batch [1200] Speed: 661.79 samples/sec acc=0.825000 +INFO:root:Epoch[14] Batch [1220] Speed: 639.05 samples/sec acc=0.827734 +INFO:root:Epoch[14] Batch [1240] Speed: 660.96 samples/sec acc=0.824609 +INFO:root:Epoch[14] Batch [1260] Speed: 662.59 samples/sec acc=0.816113 +INFO:root:Epoch[14] Batch [1280] Speed: 660.22 samples/sec acc=0.824609 +INFO:root:Epoch[14] Batch [1300] Speed: 662.29 samples/sec acc=0.822852 +INFO:root:Epoch[14] Batch [1320] Speed: 662.85 samples/sec acc=0.830859 +INFO:root:Epoch[14] Batch [1340] Speed: 661.75 samples/sec acc=0.824414 +INFO:root:Epoch[14] Batch [1360] Speed: 662.31 samples/sec acc=0.825488 +INFO:root:Epoch[14] Batch [1380] Speed: 662.77 samples/sec acc=0.824707 +INFO:root:Epoch[14] Batch [1400] Speed: 660.20 samples/sec acc=0.826270 +INFO:root:Epoch[14] Batch [1420] Speed: 661.79 samples/sec acc=0.824707 +INFO:root:Epoch[14] Batch [1440] Speed: 661.72 samples/sec acc=0.825977 +INFO:root:Epoch[14] Batch [1460] Speed: 661.22 samples/sec acc=0.826758 +INFO:root:Epoch[14] Batch [1480] Speed: 661.20 samples/sec acc=0.829785 +INFO:root:Epoch[14] Batch [1500] Speed: 661.27 samples/sec acc=0.835156 +INFO:root:Epoch[14] Batch [1520] Speed: 661.80 samples/sec acc=0.823145 +INFO:root:Epoch[14] Batch [1540] Speed: 661.56 samples/sec acc=0.820215 +INFO:root:Epoch[14] Batch [1560] Speed: 661.70 samples/sec acc=0.827832 +INFO:root:Epoch[14] Batch [1580] Speed: 660.74 samples/sec acc=0.824121 +INFO:root:Epoch[14] Batch [1600] Speed: 661.24 samples/sec acc=0.824414 +INFO:root:Epoch[14] Batch [1620] Speed: 662.76 samples/sec acc=0.828418 +INFO:root:Epoch[14] Batch [1640] Speed: 660.93 samples/sec acc=0.825879 +INFO:root:Epoch[14] Batch [1660] Speed: 658.56 samples/sec acc=0.821582 +INFO:root:Epoch[14] Batch [1680] Speed: 662.03 samples/sec acc=0.833594 +INFO:root:Epoch[14] Batch [1700] Speed: 660.66 samples/sec acc=0.831836 +INFO:root:Epoch[14] Batch [1720] Speed: 662.66 samples/sec acc=0.819922 +lr-batch-epoch: 0.0001 1733 14 +INFO:root:Epoch[14] Batch [1740] Speed: 662.22 samples/sec acc=0.830176 +INFO:root:Epoch[14] Batch [1760] Speed: 657.78 samples/sec acc=0.823438 +INFO:root:Epoch[14] Batch [1780] Speed: 665.25 samples/sec acc=0.824902 +INFO:root:Epoch[14] Batch [1800] Speed: 661.40 samples/sec acc=0.826855 +INFO:root:Epoch[14] Batch [1820] Speed: 661.17 samples/sec acc=0.820410 +INFO:root:Epoch[14] Batch [1840] Speed: 662.40 samples/sec acc=0.829980 +INFO:root:Epoch[14] Batch [1860] Speed: 650.31 samples/sec acc=0.828418 +INFO:root:Epoch[14] Batch [1880] Speed: 658.06 samples/sec acc=0.822754 +INFO:root:Epoch[14] Batch [1900] Speed: 661.98 samples/sec acc=0.828125 +INFO:root:Epoch[14] Batch [1920] Speed: 649.79 samples/sec acc=0.826758 +INFO:root:Epoch[14] Batch [1940] Speed: 671.72 samples/sec acc=0.825195 +INFO:root:Epoch[14] Batch [1960] Speed: 661.99 samples/sec acc=0.827246 +INFO:root:Epoch[14] Batch [1980] Speed: 662.11 samples/sec acc=0.821094 +INFO:root:Epoch[14] Batch [2000] Speed: 661.49 samples/sec acc=0.825098 +INFO:root:Epoch[14] Batch [2020] Speed: 661.18 samples/sec acc=0.821484 +INFO:root:Epoch[14] Batch [2040] Speed: 658.83 samples/sec acc=0.822559 +INFO:root:Epoch[14] Batch [2060] Speed: 660.67 samples/sec acc=0.823633 +INFO:root:Epoch[14] Batch [2080] Speed: 662.51 samples/sec acc=0.821191 +INFO:root:Epoch[14] Batch [2100] Speed: 662.02 samples/sec acc=0.835840 +INFO:root:Epoch[14] Batch [2120] Speed: 661.42 samples/sec acc=0.827246 +INFO:root:Epoch[14] Batch [2140] Speed: 661.52 samples/sec acc=0.826562 +INFO:root:Epoch[14] Batch [2160] Speed: 661.76 samples/sec acc=0.824805 +INFO:root:Epoch[14] Batch [2180] Speed: 661.83 samples/sec acc=0.822363 +INFO:root:Epoch[14] Batch [2200] Speed: 661.76 samples/sec acc=0.825293 +INFO:root:Epoch[14] Batch [2220] Speed: 661.52 samples/sec acc=0.829395 +INFO:root:Epoch[14] Batch [2240] Speed: 654.39 samples/sec acc=0.828223 +INFO:root:Epoch[14] Batch [2260] Speed: 662.36 samples/sec acc=0.828027 +INFO:root:Epoch[14] Batch [2280] Speed: 661.45 samples/sec acc=0.822070 +INFO:root:Epoch[14] Batch [2300] Speed: 660.74 samples/sec acc=0.826660 +INFO:root:Epoch[14] Batch [2320] Speed: 661.76 samples/sec acc=0.823730 +INFO:root:Epoch[14] Batch [2340] Speed: 662.79 samples/sec acc=0.827148 +INFO:root:Epoch[14] Batch [2360] Speed: 659.67 samples/sec acc=0.822656 +INFO:root:Epoch[14] Batch [2380] Speed: 665.46 samples/sec acc=0.832324 +INFO:root:Epoch[14] Batch [2400] Speed: 656.47 samples/sec acc=0.821191 +INFO:root:Epoch[14] Batch [2420] Speed: 661.48 samples/sec acc=0.824316 +INFO:root:Epoch[14] Batch [2440] Speed: 657.61 samples/sec acc=0.821680 +INFO:root:Epoch[14] Batch [2460] Speed: 662.31 samples/sec acc=0.831055 +INFO:root:Epoch[14] Batch [2480] Speed: 661.65 samples/sec acc=0.815820 +INFO:root:Epoch[14] Batch [2500] Speed: 660.07 samples/sec acc=0.825391 +INFO:root:Epoch[14] Batch [2520] Speed: 662.18 samples/sec acc=0.822070 +INFO:root:Epoch[14] Batch [2540] Speed: 661.96 samples/sec acc=0.826270 +INFO:root:Epoch[14] Batch [2560] Speed: 661.68 samples/sec acc=0.826074 +INFO:root:Epoch[14] Batch [2580] Speed: 661.56 samples/sec acc=0.832910 +INFO:root:Epoch[14] Batch [2600] Speed: 660.74 samples/sec acc=0.829395 +INFO:root:Epoch[14] Batch [2620] Speed: 662.02 samples/sec acc=0.827344 +INFO:root:Epoch[14] Batch [2640] Speed: 662.85 samples/sec acc=0.826367 +INFO:root:Epoch[14] Batch [2660] Speed: 662.04 samples/sec acc=0.827051 +INFO:root:Epoch[14] Batch [2680] Speed: 661.47 samples/sec acc=0.825781 +INFO:root:Epoch[14] Batch [2700] Speed: 662.31 samples/sec acc=0.830957 +INFO:root:Epoch[14] Batch [2720] Speed: 661.83 samples/sec acc=0.830566 +[108000][MARGIN]0.801206,0.419432 +lr-batch-epoch: 0.0001 2733 14 +testing verification.. +(14000, 512) +infer time 23.730797 +[cfp_ff][108000]XNorm: 21.432662 +[cfp_ff][108000]Accuracy-Flip: 0.99814+-0.00222 +testing verification.. +(14000, 512) +infer time 23.797014 +[cfp_fp][108000]XNorm: 19.782774 +[cfp_fp][108000]Accuracy-Flip: 0.92800+-0.01416 +testing verification.. +(12000, 512) +infer time 21.415407 +[agedb_30][108000]XNorm: 22.670755 +[agedb_30][108000]Accuracy-Flip: 0.97733+-0.00684 +testing verification.. +(12000, 512) +infer time 18.815919 +[lfw][108000]XNorm: 22.223260 +[lfw][108000]Accuracy-Flip: 0.99767+-0.00281 +[108000]Accuracy-Highest: 0.99817 +INFO:root:Epoch[14] Batch [2740] Speed: 82.77 samples/sec acc=0.829395 +INFO:root:Epoch[14] Batch [2760] Speed: 662.12 samples/sec acc=0.826172 +INFO:root:Epoch[14] Batch [2780] Speed: 661.64 samples/sec acc=0.824512 +INFO:root:Epoch[14] Batch [2800] Speed: 661.87 samples/sec acc=0.823633 +INFO:root:Epoch[14] Batch [2820] Speed: 662.40 samples/sec acc=0.825293 +INFO:root:Epoch[14] Batch [2840] Speed: 662.03 samples/sec acc=0.825684 +INFO:root:Epoch[14] Batch [2860] Speed: 661.77 samples/sec acc=0.829785 +INFO:root:Epoch[14] Batch [2880] Speed: 662.46 samples/sec acc=0.822656 +INFO:root:Epoch[14] Batch [2900] Speed: 661.64 samples/sec acc=0.830273 +INFO:root:Epoch[14] Batch [2920] Speed: 662.56 samples/sec acc=0.822754 +INFO:root:Epoch[14] Batch [2940] Speed: 662.49 samples/sec acc=0.822266 +INFO:root:Epoch[14] Batch [2960] Speed: 661.77 samples/sec acc=0.827246 +INFO:root:Epoch[14] Batch [2980] Speed: 661.46 samples/sec acc=0.818164 +INFO:root:Epoch[14] Batch [3000] Speed: 662.43 samples/sec acc=0.829102 +INFO:root:Epoch[14] Batch [3020] Speed: 662.06 samples/sec acc=0.824121 +INFO:root:Epoch[14] Batch [3040] Speed: 662.07 samples/sec acc=0.834082 +INFO:root:Epoch[14] Batch [3060] Speed: 656.21 samples/sec acc=0.827246 +INFO:root:Epoch[14] Batch [3080] Speed: 665.62 samples/sec acc=0.826562 +INFO:root:Epoch[14] Batch [3100] Speed: 669.57 samples/sec acc=0.820801 +INFO:root:Epoch[14] Batch [3120] Speed: 662.90 samples/sec acc=0.829395 +INFO:root:Epoch[14] Batch [3140] Speed: 661.12 samples/sec acc=0.832520 +INFO:root:Epoch[14] Batch [3160] Speed: 661.70 samples/sec acc=0.829883 +INFO:root:Epoch[14] Batch [3180] Speed: 658.36 samples/sec acc=0.820801 +INFO:root:Epoch[14] Batch [3200] Speed: 661.11 samples/sec acc=0.832422 +INFO:root:Epoch[14] Batch [3220] Speed: 662.54 samples/sec acc=0.825000 +INFO:root:Epoch[14] Batch [3240] Speed: 661.36 samples/sec acc=0.830469 +INFO:root:Epoch[14] Batch [3260] Speed: 662.41 samples/sec acc=0.825000 +INFO:root:Epoch[14] Batch [3280] Speed: 662.02 samples/sec acc=0.831152 +INFO:root:Epoch[14] Batch [3300] Speed: 661.66 samples/sec acc=0.819824 +INFO:root:Epoch[14] Batch [3320] Speed: 639.28 samples/sec acc=0.821875 +INFO:root:Epoch[14] Batch [3340] Speed: 661.48 samples/sec acc=0.821777 +INFO:root:Epoch[14] Batch [3360] Speed: 653.23 samples/sec acc=0.826074 +INFO:root:Epoch[14] Batch [3380] Speed: 662.14 samples/sec acc=0.824902 +INFO:root:Epoch[14] Batch [3400] Speed: 660.75 samples/sec acc=0.829883 +INFO:root:Epoch[14] Batch [3420] Speed: 661.99 samples/sec acc=0.828125 +INFO:root:Epoch[14] Batch [3440] Speed: 661.46 samples/sec acc=0.827441 +INFO:root:Epoch[14] Batch [3460] Speed: 661.62 samples/sec acc=0.828223 +INFO:root:Epoch[14] Batch [3480] Speed: 662.35 samples/sec acc=0.830273 +INFO:root:Epoch[14] Batch [3500] Speed: 661.64 samples/sec acc=0.827539 +INFO:root:Epoch[14] Batch [3520] Speed: 658.45 samples/sec acc=0.819531 +INFO:root:Epoch[14] Batch [3540] Speed: 662.64 samples/sec acc=0.819629 +INFO:root:Epoch[14] Batch [3560] Speed: 661.48 samples/sec acc=0.829688 +INFO:root:Epoch[14] Batch [3580] Speed: 658.42 samples/sec acc=0.825879 +INFO:root:Epoch[14] Batch [3600] Speed: 662.84 samples/sec acc=0.822852 +INFO:root:Epoch[14] Batch [3620] Speed: 661.61 samples/sec acc=0.822266 +INFO:root:Epoch[14] Batch [3640] Speed: 662.68 samples/sec acc=0.821191 +INFO:root:Epoch[14] Batch [3660] Speed: 662.34 samples/sec acc=0.824805 +INFO:root:Epoch[14] Batch [3680] Speed: 660.37 samples/sec acc=0.822168 +INFO:root:Epoch[14] Batch [3700] Speed: 661.91 samples/sec acc=0.824707 +INFO:root:Epoch[14] Batch [3720] Speed: 662.31 samples/sec acc=0.828613 +lr-batch-epoch: 0.0001 3733 14 +INFO:root:Epoch[14] Batch [3740] Speed: 661.37 samples/sec acc=0.825195 +INFO:root:Epoch[14] Batch [3760] Speed: 662.44 samples/sec acc=0.822656 +INFO:root:Epoch[14] Batch [3780] Speed: 662.46 samples/sec acc=0.830371 +INFO:root:Epoch[14] Batch [3800] Speed: 661.51 samples/sec acc=0.830664 +INFO:root:Epoch[14] Batch [3820] Speed: 648.82 samples/sec acc=0.826172 +INFO:root:Epoch[14] Batch [3840] Speed: 661.87 samples/sec acc=0.824316 +INFO:root:Epoch[14] Batch [3860] Speed: 662.37 samples/sec acc=0.828711 +INFO:root:Epoch[14] Batch [3880] Speed: 662.14 samples/sec acc=0.813281 +INFO:root:Epoch[14] Batch [3900] Speed: 663.17 samples/sec acc=0.822754 +INFO:root:Epoch[14] Batch [3920] Speed: 659.26 samples/sec acc=0.823340 +INFO:root:Epoch[14] Batch [3940] Speed: 674.53 samples/sec acc=0.824121 +INFO:root:Epoch[14] Batch [3960] Speed: 662.77 samples/sec acc=0.827051 +INFO:root:Epoch[14] Batch [3980] Speed: 656.89 samples/sec acc=0.827832 +INFO:root:Epoch[14] Batch [4000] Speed: 661.75 samples/sec acc=0.823242 +INFO:root:Epoch[14] Batch [4020] Speed: 662.66 samples/sec acc=0.828125 +INFO:root:Epoch[14] Batch [4040] Speed: 661.36 samples/sec acc=0.820605 +INFO:root:Epoch[14] Batch [4060] Speed: 662.78 samples/sec acc=0.822363 +INFO:root:Epoch[14] Batch [4080] Speed: 662.15 samples/sec acc=0.830566 +INFO:root:Epoch[14] Batch [4100] Speed: 654.88 samples/sec acc=0.825391 +INFO:root:Epoch[14] Batch [4120] Speed: 658.99 samples/sec acc=0.827637 +INFO:root:Epoch[14] Batch [4140] Speed: 662.43 samples/sec acc=0.828613 +INFO:root:Epoch[14] Batch [4160] Speed: 660.42 samples/sec acc=0.826855 +INFO:root:Epoch[14] Batch [4180] Speed: 661.61 samples/sec acc=0.820996 +INFO:root:Epoch[14] Batch [4200] Speed: 662.48 samples/sec acc=0.831152 +INFO:root:Epoch[14] Batch [4220] Speed: 652.26 samples/sec acc=0.817773 +INFO:root:Epoch[14] Batch [4240] Speed: 662.03 samples/sec acc=0.822656 +INFO:root:Epoch[14] Batch [4260] Speed: 662.47 samples/sec acc=0.825293 +INFO:root:Epoch[14] Batch [4280] Speed: 660.87 samples/sec acc=0.826562 +INFO:root:Epoch[14] Batch [4300] Speed: 656.11 samples/sec acc=0.828418 +INFO:root:Epoch[14] Batch [4320] Speed: 660.25 samples/sec acc=0.827148 +INFO:root:Epoch[14] Batch [4340] Speed: 657.03 samples/sec acc=0.828125 +INFO:root:Epoch[14] Batch [4360] Speed: 661.99 samples/sec acc=0.828125 +INFO:root:Epoch[14] Batch [4380] Speed: 662.87 samples/sec acc=0.828320 +INFO:root:Epoch[14] Batch [4400] Speed: 661.96 samples/sec acc=0.832227 +INFO:root:Epoch[14] Batch [4420] Speed: 661.72 samples/sec acc=0.824512 +INFO:root:Epoch[14] Batch [4440] Speed: 662.68 samples/sec acc=0.830762 +INFO:root:Epoch[14] Batch [4460] Speed: 661.46 samples/sec acc=0.833203 +INFO:root:Epoch[14] Batch [4480] Speed: 661.01 samples/sec acc=0.827148 +INFO:root:Epoch[14] Batch [4500] Speed: 661.29 samples/sec acc=0.830566 +INFO:root:Epoch[14] Batch [4520] Speed: 660.56 samples/sec acc=0.826367 +INFO:root:Epoch[14] Batch [4540] Speed: 662.60 samples/sec acc=0.826660 +INFO:root:Epoch[14] Batch [4560] Speed: 661.86 samples/sec acc=0.821973 +INFO:root:Epoch[14] Batch [4580] Speed: 661.89 samples/sec acc=0.827051 +INFO:root:Epoch[14] Batch [4600] Speed: 660.37 samples/sec acc=0.824707 +INFO:root:Epoch[14] Batch [4620] Speed: 635.72 samples/sec acc=0.825586 +INFO:root:Epoch[14] Batch [4640] Speed: 659.14 samples/sec acc=0.825293 +INFO:root:Epoch[14] Batch [4660] Speed: 662.39 samples/sec acc=0.833008 +INFO:root:Epoch[14] Batch [4680] Speed: 662.01 samples/sec acc=0.819141 +INFO:root:Epoch[14] Batch [4700] Speed: 660.20 samples/sec acc=0.827637 +INFO:root:Epoch[14] Batch [4720] Speed: 662.65 samples/sec acc=0.827441 +[110000][MARGIN]0.798437,0.416107 +lr-batch-epoch: 0.0001 4733 14 +testing verification.. +(14000, 512) +infer time 24.934157 +[cfp_ff][110000]XNorm: 21.432704 +[cfp_ff][110000]Accuracy-Flip: 0.99814+-0.00222 +testing verification.. +(14000, 512) +infer time 27.715869 +[cfp_fp][110000]XNorm: 19.793554 +[cfp_fp][110000]Accuracy-Flip: 0.92643+-0.01393 +testing verification.. +(12000, 512) +infer time 20.559592 +[agedb_30][110000]XNorm: 22.695860 +[agedb_30][110000]Accuracy-Flip: 0.97817+-0.00660 +testing verification.. +(12000, 512) +infer time 20.800936 +[lfw][110000]XNorm: 22.211984 +[lfw][110000]Accuracy-Flip: 0.99800+-0.00267 +[110000]Accuracy-Highest: 0.99817 +INFO:root:Epoch[14] Batch [4740] Speed: 79.01 samples/sec acc=0.826953 +INFO:root:Epoch[14] Batch [4760] Speed: 677.98 samples/sec acc=0.823145 +INFO:root:Epoch[14] Batch [4780] Speed: 662.13 samples/sec acc=0.829590 +INFO:root:Epoch[14] Batch [4800] Speed: 658.48 samples/sec acc=0.828711 +INFO:root:Epoch[14] Batch [4820] Speed: 662.27 samples/sec acc=0.831152 +INFO:root:Epoch[14] Batch [4840] Speed: 662.42 samples/sec acc=0.819238 +INFO:root:Epoch[14] Batch [4860] Speed: 662.90 samples/sec acc=0.826074 +INFO:root:Epoch[14] Batch [4880] Speed: 661.51 samples/sec acc=0.822852 +INFO:root:Epoch[14] Batch [4900] Speed: 662.17 samples/sec acc=0.818555 +INFO:root:Epoch[14] Batch [4920] Speed: 662.37 samples/sec acc=0.829297 +INFO:root:Epoch[14] Batch [4940] Speed: 666.07 samples/sec acc=0.825781 +INFO:root:Epoch[14] Batch [4960] Speed: 658.13 samples/sec acc=0.821680 +INFO:root:Epoch[14] Batch [4980] Speed: 662.73 samples/sec acc=0.831836 +INFO:root:Epoch[14] Batch [5000] Speed: 661.86 samples/sec acc=0.823340 +INFO:root:Epoch[14] Batch [5020] Speed: 661.95 samples/sec acc=0.831836 +INFO:root:Epoch[14] Batch [5040] Speed: 662.04 samples/sec acc=0.827832 +INFO:root:Epoch[14] Batch [5060] Speed: 661.67 samples/sec acc=0.825879 +INFO:root:Epoch[14] Batch [5080] Speed: 662.13 samples/sec acc=0.826074 +INFO:root:Epoch[14] Batch [5100] Speed: 662.56 samples/sec acc=0.824023 +INFO:root:Epoch[14] Batch [5120] Speed: 661.20 samples/sec acc=0.833008 +INFO:root:Epoch[14] Batch [5140] Speed: 662.29 samples/sec acc=0.825098 +INFO:root:Epoch[14] Batch [5160] Speed: 662.65 samples/sec acc=0.828711 +INFO:root:Epoch[14] Batch [5180] Speed: 662.05 samples/sec acc=0.829395 +INFO:root:Epoch[14] Batch [5200] Speed: 661.62 samples/sec acc=0.823438 +INFO:root:Epoch[14] Batch [5220] Speed: 653.48 samples/sec acc=0.833496 +INFO:root:Epoch[14] Batch [5240] Speed: 661.86 samples/sec acc=0.826465 +INFO:root:Epoch[14] Batch [5260] Speed: 662.07 samples/sec acc=0.825098 +INFO:root:Epoch[14] Batch [5280] Speed: 661.21 samples/sec acc=0.832129 +INFO:root:Epoch[14] Batch [5300] Speed: 655.14 samples/sec acc=0.822266 +INFO:root:Epoch[14] Batch [5320] Speed: 662.01 samples/sec acc=0.827051 +INFO:root:Epoch[14] Batch [5340] Speed: 662.20 samples/sec acc=0.831445 +INFO:root:Epoch[14] Batch [5360] Speed: 660.98 samples/sec acc=0.829297 +INFO:root:Epoch[14] Batch [5380] Speed: 662.53 samples/sec acc=0.822754 +INFO:root:Epoch[14] Batch [5400] Speed: 662.88 samples/sec acc=0.828613 +INFO:root:Epoch[14] Batch [5420] Speed: 661.42 samples/sec acc=0.831738 +INFO:root:Epoch[14] Batch [5440] Speed: 662.12 samples/sec acc=0.824902 +INFO:root:Epoch[14] Batch [5460] Speed: 663.33 samples/sec acc=0.824023 +INFO:root:Epoch[14] Batch [5480] Speed: 661.12 samples/sec acc=0.826660 +INFO:root:Epoch[14] Batch [5500] Speed: 662.12 samples/sec acc=0.825977 +INFO:root:Epoch[14] Batch [5520] Speed: 661.94 samples/sec acc=0.824512 +INFO:root:Epoch[14] Batch [5540] Speed: 661.93 samples/sec acc=0.825879 +INFO:root:Epoch[14] Batch [5560] Speed: 658.71 samples/sec acc=0.822168 +INFO:root:Epoch[14] Batch [5580] Speed: 666.17 samples/sec acc=0.829199 +INFO:root:Epoch[14] Batch [5600] Speed: 661.33 samples/sec acc=0.826367 +INFO:root:Epoch[14] Batch [5620] Speed: 661.48 samples/sec acc=0.827246 +INFO:root:Epoch[14] Batch [5640] Speed: 662.55 samples/sec acc=0.822559 +INFO:root:Epoch[14] Batch [5660] Speed: 656.27 samples/sec acc=0.821680 +INFO:root:Epoch[14] Batch [5680] Speed: 665.94 samples/sec acc=0.822754 +INFO:root:Epoch[14] Batch [5700] Speed: 661.87 samples/sec acc=0.832422 +INFO:root:Epoch[14] Batch [5720] Speed: 666.73 samples/sec acc=0.827930 +lr-batch-epoch: 0.0001 5733 14 +INFO:root:Epoch[14] Batch [5740] Speed: 661.00 samples/sec acc=0.826660 +INFO:root:Epoch[14] Batch [5760] Speed: 661.96 samples/sec acc=0.825098 +INFO:root:Epoch[14] Batch [5780] Speed: 661.59 samples/sec acc=0.818555 +INFO:root:Epoch[14] Batch [5800] Speed: 661.89 samples/sec acc=0.819434 +INFO:root:Epoch[14] Batch [5820] Speed: 662.83 samples/sec acc=0.816113 +INFO:root:Epoch[14] Batch [5840] Speed: 661.75 samples/sec acc=0.821191 +INFO:root:Epoch[14] Batch [5860] Speed: 662.32 samples/sec acc=0.829102 +INFO:root:Epoch[14] Batch [5880] Speed: 663.81 samples/sec acc=0.829883 +INFO:root:Epoch[14] Batch [5900] Speed: 671.15 samples/sec acc=0.825391 +INFO:root:Epoch[14] Batch [5920] Speed: 662.40 samples/sec acc=0.825586 +INFO:root:Epoch[14] Batch [5940] Speed: 661.38 samples/sec acc=0.831152 +INFO:root:Epoch[14] Batch [5960] Speed: 654.04 samples/sec acc=0.826660 +INFO:root:Epoch[14] Batch [5980] Speed: 654.60 samples/sec acc=0.827637 +INFO:root:Epoch[14] Batch [6000] Speed: 662.83 samples/sec acc=0.828223 +INFO:root:Epoch[14] Batch [6020] Speed: 661.70 samples/sec acc=0.827930 +INFO:root:Epoch[14] Batch [6040] Speed: 662.05 samples/sec acc=0.822070 +INFO:root:Epoch[14] Batch [6060] Speed: 655.41 samples/sec acc=0.828320 +INFO:root:Epoch[14] Batch [6080] Speed: 661.75 samples/sec acc=0.823633 +INFO:root:Epoch[14] Batch [6100] Speed: 661.93 samples/sec acc=0.821582 +INFO:root:Epoch[14] Batch [6120] Speed: 661.66 samples/sec acc=0.827051 +INFO:root:Epoch[14] Batch [6140] Speed: 662.04 samples/sec acc=0.826270 +INFO:root:Epoch[14] Batch [6160] Speed: 661.70 samples/sec acc=0.825586 +INFO:root:Epoch[14] Batch [6180] Speed: 660.46 samples/sec acc=0.829688 +INFO:root:Epoch[14] Batch [6200] Speed: 661.75 samples/sec acc=0.829492 +INFO:root:Epoch[14] Batch [6220] Speed: 661.62 samples/sec acc=0.817383 +INFO:root:Epoch[14] Batch [6240] Speed: 662.25 samples/sec acc=0.821484 +INFO:root:Epoch[14] Batch [6260] Speed: 661.50 samples/sec acc=0.820605 +INFO:root:Epoch[14] Batch [6280] Speed: 661.93 samples/sec acc=0.833398 +INFO:root:Epoch[14] Batch [6300] Speed: 662.60 samples/sec acc=0.828320 +INFO:root:Epoch[14] Batch [6320] Speed: 661.61 samples/sec acc=0.820312 +INFO:root:Epoch[14] Batch [6340] Speed: 659.62 samples/sec acc=0.825098 +INFO:root:Epoch[14] Batch [6360] Speed: 661.72 samples/sec acc=0.832520 +INFO:root:Epoch[14] Batch [6380] Speed: 660.62 samples/sec acc=0.821094 +INFO:root:Epoch[14] Batch [6400] Speed: 655.83 samples/sec acc=0.823828 +INFO:root:Epoch[14] Batch [6420] Speed: 663.71 samples/sec acc=0.826270 +INFO:root:Epoch[14] Batch [6440] Speed: 662.10 samples/sec acc=0.820996 +INFO:root:Epoch[14] Batch [6460] Speed: 668.68 samples/sec acc=0.823633 +INFO:root:Epoch[14] Batch [6480] Speed: 662.27 samples/sec acc=0.828711 +INFO:root:Epoch[14] Batch [6500] Speed: 665.57 samples/sec acc=0.822070 +INFO:root:Epoch[14] Batch [6520] Speed: 669.04 samples/sec acc=0.823047 +INFO:root:Epoch[14] Batch [6540] Speed: 662.86 samples/sec acc=0.824609 +INFO:root:Epoch[14] Batch [6560] Speed: 661.04 samples/sec acc=0.818457 +INFO:root:Epoch[14] Batch [6580] Speed: 662.56 samples/sec acc=0.829004 +INFO:root:Epoch[14] Batch [6600] Speed: 662.78 samples/sec acc=0.824902 +INFO:root:Epoch[14] Batch [6620] Speed: 662.58 samples/sec acc=0.826172 +INFO:root:Epoch[14] Batch [6640] Speed: 662.55 samples/sec acc=0.832715 +INFO:root:Epoch[14] Batch [6660] Speed: 662.67 samples/sec acc=0.835742 +INFO:root:Epoch[14] Batch [6680] Speed: 666.32 samples/sec acc=0.828125 +INFO:root:Epoch[14] Batch [6700] Speed: 663.35 samples/sec acc=0.825293 +INFO:root:Epoch[14] Batch [6720] Speed: 658.66 samples/sec acc=0.826855 +[112000][MARGIN]0.805804,0.425627 +lr-batch-epoch: 0.0001 6733 14 +testing verification.. +(14000, 512) +infer time 17.271577 +[cfp_ff][112000]XNorm: 21.469734 +[cfp_ff][112000]Accuracy-Flip: 0.99829+-0.00229 +testing verification.. +(14000, 512) +infer time 18.281102 +[cfp_fp][112000]XNorm: 19.813611 +[cfp_fp][112000]Accuracy-Flip: 0.92657+-0.01354 +testing verification.. +(12000, 512) +infer time 16.304625 +[agedb_30][112000]XNorm: 22.723814 +[agedb_30][112000]Accuracy-Flip: 0.97817+-0.00598 +testing verification.. +(12000, 512) +infer time 19.865969 +[lfw][112000]XNorm: 22.262860 +[lfw][112000]Accuracy-Flip: 0.99767+-0.00271 +[112000]Accuracy-Highest: 0.99817 +INFO:root:Epoch[14] Batch [6740] Speed: 96.46 samples/sec acc=0.823535 +INFO:root:Epoch[14] Batch [6760] Speed: 669.92 samples/sec acc=0.822363 +INFO:root:Epoch[14] Batch [6780] Speed: 662.33 samples/sec acc=0.829004 +INFO:root:Epoch[14] Batch [6800] Speed: 661.67 samples/sec acc=0.832129 +INFO:root:Epoch[14] Batch [6820] Speed: 661.24 samples/sec acc=0.826660 +INFO:root:Epoch[14] Batch [6840] Speed: 662.76 samples/sec acc=0.820508 +INFO:root:Epoch[14] Batch [6860] Speed: 661.49 samples/sec acc=0.823730 +INFO:root:Epoch[14] Batch [6880] Speed: 661.79 samples/sec acc=0.827441 diff --git a/model/model-0000.params b/model/model-0000.params new file mode 100644 index 0000000..35118ad Binary files /dev/null and b/model/model-0000.params differ diff --git a/model/model-symbol.json b/model/model-symbol.json new file mode 100644 index 0000000..cea9abc --- /dev/null +++ b/model/model-symbol.json @@ -0,0 +1,2399 @@ +{ + "nodes": [ + { + "op": "null", + "name": "data", + "inputs": [] + }, + { + "op": "_minus_scalar", + "name": "_minusscalar0", + "attrs": {"scalar": "127.5"}, + "inputs": [[0, 0, 0]] + }, + { + "op": "_mul_scalar", + "name": "_mulscalar0", + "attrs": {"scalar": "0.0078125"}, + "inputs": [[1, 0, 0]] + }, + { + "op": "null", + "name": "conv_1_conv2d_weight", + "attrs": { + "kernel": "(3, 3)", + "no_bias": "True", + "num_filter": "8", + "num_group": "1", + "pad": "(1, 1)", + "stride": "(1, 1)" + }, + "inputs": [] + }, + { + "op": "Convolution", + "name": "conv_1_conv2d", + "attrs": { + "kernel": "(3, 3)", + "no_bias": "True", + "num_filter": "8", + "num_group": "1", + "pad": "(1, 1)", + "stride": "(1, 1)" + }, + "inputs": [[2, 0, 0], [3, 0, 0]] + }, + { + "op": "null", + "name": "conv_1_batchnorm_gamma", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_1_batchnorm_beta", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_1_batchnorm_moving_mean", + "attrs": { + "__init__": "[\"zero\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "null", + "name": "conv_1_batchnorm_moving_var", + "attrs": { + "__init__": "[\"one\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "BatchNorm", + "name": "conv_1_batchnorm", + "attrs": {"fix_gamma": "True"}, + "inputs": [[4, 0, 0], [5, 0, 0], [6, 0, 0], [7, 0, 1], [8, 0, 1]] + }, + { + "op": "Activation", + "name": "conv_1_relu", + "attrs": {"act_type": "relu"}, + "inputs": [[9, 0, 0]] + }, + { + "op": "null", + "name": "conv_2_dw_conv2d_weight", + "attrs": { + "kernel": "(3, 3)", + "no_bias": "True", + "num_filter": "8", + "num_group": "8", + "pad": "(1, 1)", + "stride": "(1, 1)" + }, + "inputs": [] + }, + { + "op": "Convolution", + "name": "conv_2_dw_conv2d", + "attrs": { + "kernel": "(3, 3)", + "no_bias": "True", + "num_filter": "8", + "num_group": "8", + "pad": "(1, 1)", + "stride": "(1, 1)" + }, + "inputs": [[10, 0, 0], [11, 0, 0]] + }, + { + "op": "null", + "name": "conv_2_dw_batchnorm_gamma", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_2_dw_batchnorm_beta", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_2_dw_batchnorm_moving_mean", + "attrs": { + "__init__": "[\"zero\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "null", + "name": "conv_2_dw_batchnorm_moving_var", + "attrs": { + "__init__": "[\"one\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "BatchNorm", + "name": "conv_2_dw_batchnorm", + "attrs": {"fix_gamma": "True"}, + "inputs": [[12, 0, 0], [13, 0, 0], [14, 0, 0], [15, 0, 1], [16, 0, 1]] + }, + { + "op": "Activation", + "name": "conv_2_dw_relu", + "attrs": {"act_type": "relu"}, + "inputs": [[17, 0, 0]] + }, + { + "op": "null", + "name": "conv_2_conv2d_weight", + "attrs": { + "kernel": "(1, 1)", + "no_bias": "True", + "num_filter": "16", + "num_group": "1", + "pad": "(0, 0)", + "stride": "(1, 1)" + }, + "inputs": [] + }, + { + "op": "Convolution", + "name": "conv_2_conv2d", + "attrs": { + "kernel": "(1, 1)", + "no_bias": "True", + "num_filter": "16", + "num_group": "1", + "pad": "(0, 0)", + "stride": "(1, 1)" + }, + "inputs": [[18, 0, 0], [19, 0, 0]] + }, + { + "op": "null", + "name": "conv_2_batchnorm_gamma", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_2_batchnorm_beta", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_2_batchnorm_moving_mean", + "attrs": { + "__init__": "[\"zero\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "null", + "name": "conv_2_batchnorm_moving_var", + "attrs": { + "__init__": "[\"one\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "BatchNorm", + "name": "conv_2_batchnorm", + "attrs": {"fix_gamma": "True"}, + "inputs": [[20, 0, 0], [21, 0, 0], [22, 0, 0], [23, 0, 1], [24, 0, 1]] + }, + { + "op": "Activation", + "name": "conv_2_relu", + "attrs": {"act_type": "relu"}, + "inputs": [[25, 0, 0]] + }, + { + "op": "null", + "name": "conv_3_dw_conv2d_weight", + "attrs": { + "kernel": "(3, 3)", + "no_bias": "True", + "num_filter": "16", + "num_group": "16", + "pad": "(1, 1)", + "stride": "(2, 2)" + }, + "inputs": [] + }, + { + "op": "Convolution", + "name": "conv_3_dw_conv2d", + "attrs": { + "kernel": "(3, 3)", + "no_bias": "True", + "num_filter": "16", + "num_group": "16", + "pad": "(1, 1)", + "stride": "(2, 2)" + }, + "inputs": [[26, 0, 0], [27, 0, 0]] + }, + { + "op": "null", + "name": "conv_3_dw_batchnorm_gamma", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_3_dw_batchnorm_beta", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_3_dw_batchnorm_moving_mean", + "attrs": { + "__init__": "[\"zero\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "null", + "name": "conv_3_dw_batchnorm_moving_var", + "attrs": { + "__init__": "[\"one\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "BatchNorm", + "name": "conv_3_dw_batchnorm", + "attrs": {"fix_gamma": "True"}, + "inputs": [[28, 0, 0], [29, 0, 0], [30, 0, 0], [31, 0, 1], [32, 0, 1]] + }, + { + "op": "Activation", + "name": "conv_3_dw_relu", + "attrs": {"act_type": "relu"}, + "inputs": [[33, 0, 0]] + }, + { + "op": "null", + "name": "conv_3_conv2d_weight", + "attrs": { + "kernel": "(1, 1)", + "no_bias": "True", + "num_filter": "32", + "num_group": "1", + "pad": "(0, 0)", + "stride": "(1, 1)" + }, + "inputs": [] + }, + { + "op": "Convolution", + "name": "conv_3_conv2d", + "attrs": { + "kernel": "(1, 1)", + "no_bias": "True", + "num_filter": "32", + "num_group": "1", + "pad": "(0, 0)", + "stride": "(1, 1)" + }, + "inputs": [[34, 0, 0], [35, 0, 0]] + }, + { + "op": "null", + "name": "conv_3_batchnorm_gamma", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_3_batchnorm_beta", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_3_batchnorm_moving_mean", + "attrs": { + "__init__": "[\"zero\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "null", + "name": "conv_3_batchnorm_moving_var", + "attrs": { + "__init__": "[\"one\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "BatchNorm", + "name": "conv_3_batchnorm", + "attrs": {"fix_gamma": "True"}, + "inputs": [[36, 0, 0], [37, 0, 0], [38, 0, 0], [39, 0, 1], [40, 0, 1]] + }, + { + "op": "Activation", + "name": "conv_3_relu", + "attrs": {"act_type": "relu"}, + "inputs": [[41, 0, 0]] + }, + { + "op": "null", + "name": "conv_4_dw_conv2d_weight", + "attrs": { + "kernel": "(3, 3)", + "no_bias": "True", + "num_filter": "32", + "num_group": "32", + "pad": "(1, 1)", + "stride": "(1, 1)" + }, + "inputs": [] + }, + { + "op": "Convolution", + "name": "conv_4_dw_conv2d", + "attrs": { + "kernel": "(3, 3)", + "no_bias": "True", + "num_filter": "32", + "num_group": "32", + "pad": "(1, 1)", + "stride": "(1, 1)" + }, + "inputs": [[42, 0, 0], [43, 0, 0]] + }, + { + "op": "null", + "name": "conv_4_dw_batchnorm_gamma", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_4_dw_batchnorm_beta", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_4_dw_batchnorm_moving_mean", + "attrs": { + "__init__": "[\"zero\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "null", + "name": "conv_4_dw_batchnorm_moving_var", + "attrs": { + "__init__": "[\"one\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "BatchNorm", + "name": "conv_4_dw_batchnorm", + "attrs": {"fix_gamma": "True"}, + "inputs": [[44, 0, 0], [45, 0, 0], [46, 0, 0], [47, 0, 1], [48, 0, 1]] + }, + { + "op": "Activation", + "name": "conv_4_dw_relu", + "attrs": {"act_type": "relu"}, + "inputs": [[49, 0, 0]] + }, + { + "op": "null", + "name": "conv_4_conv2d_weight", + "attrs": { + "kernel": "(1, 1)", + "no_bias": "True", + "num_filter": "32", + "num_group": "1", + "pad": "(0, 0)", + "stride": "(1, 1)" + }, + "inputs": [] + }, + { + "op": "Convolution", + "name": "conv_4_conv2d", + "attrs": { + "kernel": "(1, 1)", + "no_bias": "True", + "num_filter": "32", + "num_group": "1", + "pad": "(0, 0)", + "stride": "(1, 1)" + }, + "inputs": [[50, 0, 0], [51, 0, 0]] + }, + { + "op": "null", + "name": "conv_4_batchnorm_gamma", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_4_batchnorm_beta", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_4_batchnorm_moving_mean", + "attrs": { + "__init__": "[\"zero\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "null", + "name": "conv_4_batchnorm_moving_var", + "attrs": { + "__init__": "[\"one\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "BatchNorm", + "name": "conv_4_batchnorm", + "attrs": {"fix_gamma": "True"}, + "inputs": [[52, 0, 0], [53, 0, 0], [54, 0, 0], [55, 0, 1], [56, 0, 1]] + }, + { + "op": "Activation", + "name": "conv_4_relu", + "attrs": {"act_type": "relu"}, + "inputs": [[57, 0, 0]] + }, + { + "op": "null", + "name": "conv_5_dw_conv2d_weight", + "attrs": { + "kernel": "(3, 3)", + "no_bias": "True", + "num_filter": "32", + "num_group": "32", + "pad": "(1, 1)", + "stride": "(2, 2)" + }, + "inputs": [] + }, + { + "op": "Convolution", + "name": "conv_5_dw_conv2d", + "attrs": { + "kernel": "(3, 3)", + "no_bias": "True", + "num_filter": "32", + "num_group": "32", + "pad": "(1, 1)", + "stride": "(2, 2)" + }, + "inputs": [[58, 0, 0], [59, 0, 0]] + }, + { + "op": "null", + "name": "conv_5_dw_batchnorm_gamma", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_5_dw_batchnorm_beta", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_5_dw_batchnorm_moving_mean", + "attrs": { + "__init__": "[\"zero\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "null", + "name": "conv_5_dw_batchnorm_moving_var", + "attrs": { + "__init__": "[\"one\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "BatchNorm", + "name": "conv_5_dw_batchnorm", + "attrs": {"fix_gamma": "True"}, + "inputs": [[60, 0, 0], [61, 0, 0], [62, 0, 0], [63, 0, 1], [64, 0, 1]] + }, + { + "op": "Activation", + "name": "conv_5_dw_relu", + "attrs": {"act_type": "relu"}, + "inputs": [[65, 0, 0]] + }, + { + "op": "null", + "name": "conv_5_conv2d_weight", + "attrs": { + "kernel": "(1, 1)", + "no_bias": "True", + "num_filter": "64", + "num_group": "1", + "pad": "(0, 0)", + "stride": "(1, 1)" + }, + "inputs": [] + }, + { + "op": "Convolution", + "name": "conv_5_conv2d", + "attrs": { + "kernel": "(1, 1)", + "no_bias": "True", + "num_filter": "64", + "num_group": "1", + "pad": "(0, 0)", + "stride": "(1, 1)" + }, + "inputs": [[66, 0, 0], [67, 0, 0]] + }, + { + "op": "null", + "name": "conv_5_batchnorm_gamma", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_5_batchnorm_beta", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_5_batchnorm_moving_mean", + "attrs": { + "__init__": "[\"zero\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "null", + "name": "conv_5_batchnorm_moving_var", + "attrs": { + "__init__": "[\"one\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "BatchNorm", + "name": "conv_5_batchnorm", + "attrs": {"fix_gamma": "True"}, + "inputs": [[68, 0, 0], [69, 0, 0], [70, 0, 0], [71, 0, 1], [72, 0, 1]] + }, + { + "op": "Activation", + "name": "conv_5_relu", + "attrs": {"act_type": "relu"}, + "inputs": [[73, 0, 0]] + }, + { + "op": "null", + "name": "conv_6_dw_conv2d_weight", + "attrs": { + "kernel": "(3, 3)", + "no_bias": "True", + "num_filter": "64", + "num_group": "64", + "pad": "(1, 1)", + "stride": "(1, 1)" + }, + "inputs": [] + }, + { + "op": "Convolution", + "name": "conv_6_dw_conv2d", + "attrs": { + "kernel": "(3, 3)", + "no_bias": "True", + "num_filter": "64", + "num_group": "64", + "pad": "(1, 1)", + "stride": "(1, 1)" + }, + "inputs": [[74, 0, 0], [75, 0, 0]] + }, + { + "op": "null", + "name": "conv_6_dw_batchnorm_gamma", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_6_dw_batchnorm_beta", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_6_dw_batchnorm_moving_mean", + "attrs": { + "__init__": "[\"zero\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "null", + "name": "conv_6_dw_batchnorm_moving_var", + "attrs": { + "__init__": "[\"one\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "BatchNorm", + "name": "conv_6_dw_batchnorm", + "attrs": {"fix_gamma": "True"}, + "inputs": [[76, 0, 0], [77, 0, 0], [78, 0, 0], [79, 0, 1], [80, 0, 1]] + }, + { + "op": "Activation", + "name": "conv_6_dw_relu", + "attrs": {"act_type": "relu"}, + "inputs": [[81, 0, 0]] + }, + { + "op": "null", + "name": "conv_6_conv2d_weight", + "attrs": { + "kernel": "(1, 1)", + "no_bias": "True", + "num_filter": "64", + "num_group": "1", + "pad": "(0, 0)", + "stride": "(1, 1)" + }, + "inputs": [] + }, + { + "op": "Convolution", + "name": "conv_6_conv2d", + "attrs": { + "kernel": "(1, 1)", + "no_bias": "True", + "num_filter": "64", + "num_group": "1", + "pad": "(0, 0)", + "stride": "(1, 1)" + }, + "inputs": [[82, 0, 0], [83, 0, 0]] + }, + { + "op": "null", + "name": "conv_6_batchnorm_gamma", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_6_batchnorm_beta", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_6_batchnorm_moving_mean", + "attrs": { + "__init__": "[\"zero\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "null", + "name": "conv_6_batchnorm_moving_var", + "attrs": { + "__init__": "[\"one\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "BatchNorm", + "name": "conv_6_batchnorm", + "attrs": {"fix_gamma": "True"}, + "inputs": [[84, 0, 0], [85, 0, 0], [86, 0, 0], [87, 0, 1], [88, 0, 1]] + }, + { + "op": "Activation", + "name": "conv_6_relu", + "attrs": {"act_type": "relu"}, + "inputs": [[89, 0, 0]] + }, + { + "op": "null", + "name": "conv_7_dw_conv2d_weight", + "attrs": { + "kernel": "(3, 3)", + "no_bias": "True", + "num_filter": "64", + "num_group": "64", + "pad": "(1, 1)", + "stride": "(2, 2)" + }, + "inputs": [] + }, + { + "op": "Convolution", + "name": "conv_7_dw_conv2d", + "attrs": { + "kernel": "(3, 3)", + "no_bias": "True", + "num_filter": "64", + "num_group": "64", + "pad": "(1, 1)", + "stride": "(2, 2)" + }, + "inputs": [[90, 0, 0], [91, 0, 0]] + }, + { + "op": "null", + "name": "conv_7_dw_batchnorm_gamma", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_7_dw_batchnorm_beta", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_7_dw_batchnorm_moving_mean", + "attrs": { + "__init__": "[\"zero\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "null", + "name": "conv_7_dw_batchnorm_moving_var", + "attrs": { + "__init__": "[\"one\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "BatchNorm", + "name": "conv_7_dw_batchnorm", + "attrs": {"fix_gamma": "True"}, + "inputs": [[92, 0, 0], [93, 0, 0], [94, 0, 0], [95, 0, 1], [96, 0, 1]] + }, + { + "op": "Activation", + "name": "conv_7_dw_relu", + "attrs": {"act_type": "relu"}, + "inputs": [[97, 0, 0]] + }, + { + "op": "null", + "name": "conv_7_conv2d_weight", + "attrs": { + "kernel": "(1, 1)", + "no_bias": "True", + "num_filter": "128", + "num_group": "1", + "pad": "(0, 0)", + "stride": "(1, 1)" + }, + "inputs": [] + }, + { + "op": "Convolution", + "name": "conv_7_conv2d", + "attrs": { + "kernel": "(1, 1)", + "no_bias": "True", + "num_filter": "128", + "num_group": "1", + "pad": "(0, 0)", + "stride": "(1, 1)" + }, + "inputs": [[98, 0, 0], [99, 0, 0]] + }, + { + "op": "null", + "name": "conv_7_batchnorm_gamma", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_7_batchnorm_beta", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_7_batchnorm_moving_mean", + "attrs": { + "__init__": "[\"zero\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "null", + "name": "conv_7_batchnorm_moving_var", + "attrs": { + "__init__": "[\"one\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "BatchNorm", + "name": "conv_7_batchnorm", + "attrs": {"fix_gamma": "True"}, + "inputs": [[100, 0, 0], [101, 0, 0], [102, 0, 0], [103, 0, 1], [104, 0, 1]] + }, + { + "op": "Activation", + "name": "conv_7_relu", + "attrs": {"act_type": "relu"}, + "inputs": [[105, 0, 0]] + }, + { + "op": "null", + "name": "conv_8_dw_conv2d_weight", + "attrs": { + "kernel": "(3, 3)", + "no_bias": "True", + "num_filter": "128", + "num_group": "128", + "pad": "(1, 1)", + "stride": "(1, 1)" + }, + "inputs": [] + }, + { + "op": "Convolution", + "name": "conv_8_dw_conv2d", + "attrs": { + "kernel": "(3, 3)", + "no_bias": "True", + "num_filter": "128", + "num_group": "128", + "pad": "(1, 1)", + "stride": "(1, 1)" + }, + "inputs": [[106, 0, 0], [107, 0, 0]] + }, + { + "op": "null", + "name": "conv_8_dw_batchnorm_gamma", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_8_dw_batchnorm_beta", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_8_dw_batchnorm_moving_mean", + "attrs": { + "__init__": "[\"zero\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "null", + "name": "conv_8_dw_batchnorm_moving_var", + "attrs": { + "__init__": "[\"one\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "BatchNorm", + "name": "conv_8_dw_batchnorm", + "attrs": {"fix_gamma": "True"}, + "inputs": [[108, 0, 0], [109, 0, 0], [110, 0, 0], [111, 0, 1], [112, 0, 1]] + }, + { + "op": "Activation", + "name": "conv_8_dw_relu", + "attrs": {"act_type": "relu"}, + "inputs": [[113, 0, 0]] + }, + { + "op": "null", + "name": "conv_8_conv2d_weight", + "attrs": { + "kernel": "(1, 1)", + "no_bias": "True", + "num_filter": "128", + "num_group": "1", + "pad": "(0, 0)", + "stride": "(1, 1)" + }, + "inputs": [] + }, + { + "op": "Convolution", + "name": "conv_8_conv2d", + "attrs": { + "kernel": "(1, 1)", + "no_bias": "True", + "num_filter": "128", + "num_group": "1", + "pad": "(0, 0)", + "stride": "(1, 1)" + }, + "inputs": [[114, 0, 0], [115, 0, 0]] + }, + { + "op": "null", + "name": "conv_8_batchnorm_gamma", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_8_batchnorm_beta", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_8_batchnorm_moving_mean", + "attrs": { + "__init__": "[\"zero\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "null", + "name": "conv_8_batchnorm_moving_var", + "attrs": { + "__init__": "[\"one\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "BatchNorm", + "name": "conv_8_batchnorm", + "attrs": {"fix_gamma": "True"}, + "inputs": [[116, 0, 0], [117, 0, 0], [118, 0, 0], [119, 0, 1], [120, 0, 1]] + }, + { + "op": "Activation", + "name": "conv_8_relu", + "attrs": {"act_type": "relu"}, + "inputs": [[121, 0, 0]] + }, + { + "op": "null", + "name": "conv_9_dw_conv2d_weight", + "attrs": { + "kernel": "(3, 3)", + "no_bias": "True", + "num_filter": "128", + "num_group": "128", + "pad": "(1, 1)", + "stride": "(1, 1)" + }, + "inputs": [] + }, + { + "op": "Convolution", + "name": "conv_9_dw_conv2d", + "attrs": { + "kernel": "(3, 3)", + "no_bias": "True", + "num_filter": "128", + "num_group": "128", + "pad": "(1, 1)", + "stride": "(1, 1)" + }, + "inputs": [[122, 0, 0], [123, 0, 0]] + }, + { + "op": "null", + "name": "conv_9_dw_batchnorm_gamma", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_9_dw_batchnorm_beta", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_9_dw_batchnorm_moving_mean", + "attrs": { + "__init__": "[\"zero\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "null", + "name": "conv_9_dw_batchnorm_moving_var", + "attrs": { + "__init__": "[\"one\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "BatchNorm", + "name": "conv_9_dw_batchnorm", + "attrs": {"fix_gamma": "True"}, + "inputs": [[124, 0, 0], [125, 0, 0], [126, 0, 0], [127, 0, 1], [128, 0, 1]] + }, + { + "op": "Activation", + "name": "conv_9_dw_relu", + "attrs": {"act_type": "relu"}, + "inputs": [[129, 0, 0]] + }, + { + "op": "null", + "name": "conv_9_conv2d_weight", + "attrs": { + "kernel": "(1, 1)", + "no_bias": "True", + "num_filter": "128", + "num_group": "1", + "pad": "(0, 0)", + "stride": "(1, 1)" + }, + "inputs": [] + }, + { + "op": "Convolution", + "name": "conv_9_conv2d", + "attrs": { + "kernel": "(1, 1)", + "no_bias": "True", + "num_filter": "128", + "num_group": "1", + "pad": "(0, 0)", + "stride": "(1, 1)" + }, + "inputs": [[130, 0, 0], [131, 0, 0]] + }, + { + "op": "null", + "name": "conv_9_batchnorm_gamma", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_9_batchnorm_beta", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_9_batchnorm_moving_mean", + "attrs": { + "__init__": "[\"zero\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "null", + "name": "conv_9_batchnorm_moving_var", + "attrs": { + "__init__": "[\"one\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "BatchNorm", + "name": "conv_9_batchnorm", + "attrs": {"fix_gamma": "True"}, + "inputs": [[132, 0, 0], [133, 0, 0], [134, 0, 0], [135, 0, 1], [136, 0, 1]] + }, + { + "op": "Activation", + "name": "conv_9_relu", + "attrs": {"act_type": "relu"}, + "inputs": [[137, 0, 0]] + }, + { + "op": "null", + "name": "conv_10_dw_conv2d_weight", + "attrs": { + "kernel": "(3, 3)", + "no_bias": "True", + "num_filter": "128", + "num_group": "128", + "pad": "(1, 1)", + "stride": "(1, 1)" + }, + "inputs": [] + }, + { + "op": "Convolution", + "name": "conv_10_dw_conv2d", + "attrs": { + "kernel": "(3, 3)", + "no_bias": "True", + "num_filter": "128", + "num_group": "128", + "pad": "(1, 1)", + "stride": "(1, 1)" + }, + "inputs": [[138, 0, 0], [139, 0, 0]] + }, + { + "op": "null", + "name": "conv_10_dw_batchnorm_gamma", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_10_dw_batchnorm_beta", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_10_dw_batchnorm_moving_mean", + "attrs": { + "__init__": "[\"zero\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "null", + "name": "conv_10_dw_batchnorm_moving_var", + "attrs": { + "__init__": "[\"one\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "BatchNorm", + "name": "conv_10_dw_batchnorm", + "attrs": {"fix_gamma": "True"}, + "inputs": [[140, 0, 0], [141, 0, 0], [142, 0, 0], [143, 0, 1], [144, 0, 1]] + }, + { + "op": "Activation", + "name": "conv_10_dw_relu", + "attrs": {"act_type": "relu"}, + "inputs": [[145, 0, 0]] + }, + { + "op": "null", + "name": "conv_10_conv2d_weight", + "attrs": { + "kernel": "(1, 1)", + "no_bias": "True", + "num_filter": "128", + "num_group": "1", + "pad": "(0, 0)", + "stride": "(1, 1)" + }, + "inputs": [] + }, + { + "op": "Convolution", + "name": "conv_10_conv2d", + "attrs": { + "kernel": "(1, 1)", + "no_bias": "True", + "num_filter": "128", + "num_group": "1", + "pad": "(0, 0)", + "stride": "(1, 1)" + }, + "inputs": [[146, 0, 0], [147, 0, 0]] + }, + { + "op": "null", + "name": "conv_10_batchnorm_gamma", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_10_batchnorm_beta", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_10_batchnorm_moving_mean", + "attrs": { + "__init__": "[\"zero\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "null", + "name": "conv_10_batchnorm_moving_var", + "attrs": { + "__init__": "[\"one\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "BatchNorm", + "name": "conv_10_batchnorm", + "attrs": {"fix_gamma": "True"}, + "inputs": [[148, 0, 0], [149, 0, 0], [150, 0, 0], [151, 0, 1], [152, 0, 1]] + }, + { + "op": "Activation", + "name": "conv_10_relu", + "attrs": {"act_type": "relu"}, + "inputs": [[153, 0, 0]] + }, + { + "op": "null", + "name": "conv_11_dw_conv2d_weight", + "attrs": { + "kernel": "(3, 3)", + "no_bias": "True", + "num_filter": "128", + "num_group": "128", + "pad": "(1, 1)", + "stride": "(1, 1)" + }, + "inputs": [] + }, + { + "op": "Convolution", + "name": "conv_11_dw_conv2d", + "attrs": { + "kernel": "(3, 3)", + "no_bias": "True", + "num_filter": "128", + "num_group": "128", + "pad": "(1, 1)", + "stride": "(1, 1)" + }, + "inputs": [[154, 0, 0], [155, 0, 0]] + }, + { + "op": "null", + "name": "conv_11_dw_batchnorm_gamma", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_11_dw_batchnorm_beta", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_11_dw_batchnorm_moving_mean", + "attrs": { + "__init__": "[\"zero\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "null", + "name": "conv_11_dw_batchnorm_moving_var", + "attrs": { + "__init__": "[\"one\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "BatchNorm", + "name": "conv_11_dw_batchnorm", + "attrs": {"fix_gamma": "True"}, + "inputs": [[156, 0, 0], [157, 0, 0], [158, 0, 0], [159, 0, 1], [160, 0, 1]] + }, + { + "op": "Activation", + "name": "conv_11_dw_relu", + "attrs": {"act_type": "relu"}, + "inputs": [[161, 0, 0]] + }, + { + "op": "null", + "name": "conv_11_conv2d_weight", + "attrs": { + "kernel": "(1, 1)", + "no_bias": "True", + "num_filter": "128", + "num_group": "1", + "pad": "(0, 0)", + "stride": "(1, 1)" + }, + "inputs": [] + }, + { + "op": "Convolution", + "name": "conv_11_conv2d", + "attrs": { + "kernel": "(1, 1)", + "no_bias": "True", + "num_filter": "128", + "num_group": "1", + "pad": "(0, 0)", + "stride": "(1, 1)" + }, + "inputs": [[162, 0, 0], [163, 0, 0]] + }, + { + "op": "null", + "name": "conv_11_batchnorm_gamma", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_11_batchnorm_beta", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_11_batchnorm_moving_mean", + "attrs": { + "__init__": "[\"zero\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "null", + "name": "conv_11_batchnorm_moving_var", + "attrs": { + "__init__": "[\"one\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "BatchNorm", + "name": "conv_11_batchnorm", + "attrs": {"fix_gamma": "True"}, + "inputs": [[164, 0, 0], [165, 0, 0], [166, 0, 0], [167, 0, 1], [168, 0, 1]] + }, + { + "op": "Activation", + "name": "conv_11_relu", + "attrs": {"act_type": "relu"}, + "inputs": [[169, 0, 0]] + }, + { + "op": "null", + "name": "conv_12_dw_conv2d_weight", + "attrs": { + "kernel": "(3, 3)", + "no_bias": "True", + "num_filter": "128", + "num_group": "128", + "pad": "(1, 1)", + "stride": "(1, 1)" + }, + "inputs": [] + }, + { + "op": "Convolution", + "name": "conv_12_dw_conv2d", + "attrs": { + "kernel": "(3, 3)", + "no_bias": "True", + "num_filter": "128", + "num_group": "128", + "pad": "(1, 1)", + "stride": "(1, 1)" + }, + "inputs": [[170, 0, 0], [171, 0, 0]] + }, + { + "op": "null", + "name": "conv_12_dw_batchnorm_gamma", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_12_dw_batchnorm_beta", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_12_dw_batchnorm_moving_mean", + "attrs": { + "__init__": "[\"zero\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "null", + "name": "conv_12_dw_batchnorm_moving_var", + "attrs": { + "__init__": "[\"one\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "BatchNorm", + "name": "conv_12_dw_batchnorm", + "attrs": {"fix_gamma": "True"}, + "inputs": [[172, 0, 0], [173, 0, 0], [174, 0, 0], [175, 0, 1], [176, 0, 1]] + }, + { + "op": "Activation", + "name": "conv_12_dw_relu", + "attrs": {"act_type": "relu"}, + "inputs": [[177, 0, 0]] + }, + { + "op": "null", + "name": "conv_12_conv2d_weight", + "attrs": { + "kernel": "(1, 1)", + "no_bias": "True", + "num_filter": "128", + "num_group": "1", + "pad": "(0, 0)", + "stride": "(1, 1)" + }, + "inputs": [] + }, + { + "op": "Convolution", + "name": "conv_12_conv2d", + "attrs": { + "kernel": "(1, 1)", + "no_bias": "True", + "num_filter": "128", + "num_group": "1", + "pad": "(0, 0)", + "stride": "(1, 1)" + }, + "inputs": [[178, 0, 0], [179, 0, 0]] + }, + { + "op": "null", + "name": "conv_12_batchnorm_gamma", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_12_batchnorm_beta", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_12_batchnorm_moving_mean", + "attrs": { + "__init__": "[\"zero\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "null", + "name": "conv_12_batchnorm_moving_var", + "attrs": { + "__init__": "[\"one\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "BatchNorm", + "name": "conv_12_batchnorm", + "attrs": {"fix_gamma": "True"}, + "inputs": [[180, 0, 0], [181, 0, 0], [182, 0, 0], [183, 0, 1], [184, 0, 1]] + }, + { + "op": "Activation", + "name": "conv_12_relu", + "attrs": {"act_type": "relu"}, + "inputs": [[185, 0, 0]] + }, + { + "op": "null", + "name": "conv_13_dw_conv2d_weight", + "attrs": { + "kernel": "(3, 3)", + "no_bias": "True", + "num_filter": "128", + "num_group": "128", + "pad": "(1, 1)", + "stride": "(2, 2)" + }, + "inputs": [] + }, + { + "op": "Convolution", + "name": "conv_13_dw_conv2d", + "attrs": { + "kernel": "(3, 3)", + "no_bias": "True", + "num_filter": "128", + "num_group": "128", + "pad": "(1, 1)", + "stride": "(2, 2)" + }, + "inputs": [[186, 0, 0], [187, 0, 0]] + }, + { + "op": "null", + "name": "conv_13_dw_batchnorm_gamma", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_13_dw_batchnorm_beta", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_13_dw_batchnorm_moving_mean", + "attrs": { + "__init__": "[\"zero\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "null", + "name": "conv_13_dw_batchnorm_moving_var", + "attrs": { + "__init__": "[\"one\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "BatchNorm", + "name": "conv_13_dw_batchnorm", + "attrs": {"fix_gamma": "True"}, + "inputs": [[188, 0, 0], [189, 0, 0], [190, 0, 0], [191, 0, 1], [192, 0, 1]] + }, + { + "op": "Activation", + "name": "conv_13_dw_relu", + "attrs": {"act_type": "relu"}, + "inputs": [[193, 0, 0]] + }, + { + "op": "null", + "name": "conv_13_conv2d_weight", + "attrs": { + "kernel": "(1, 1)", + "no_bias": "True", + "num_filter": "256", + "num_group": "1", + "pad": "(0, 0)", + "stride": "(1, 1)" + }, + "inputs": [] + }, + { + "op": "Convolution", + "name": "conv_13_conv2d", + "attrs": { + "kernel": "(1, 1)", + "no_bias": "True", + "num_filter": "256", + "num_group": "1", + "pad": "(0, 0)", + "stride": "(1, 1)" + }, + "inputs": [[194, 0, 0], [195, 0, 0]] + }, + { + "op": "null", + "name": "conv_13_batchnorm_gamma", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_13_batchnorm_beta", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_13_batchnorm_moving_mean", + "attrs": { + "__init__": "[\"zero\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "null", + "name": "conv_13_batchnorm_moving_var", + "attrs": { + "__init__": "[\"one\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "BatchNorm", + "name": "conv_13_batchnorm", + "attrs": {"fix_gamma": "True"}, + "inputs": [[196, 0, 0], [197, 0, 0], [198, 0, 0], [199, 0, 1], [200, 0, 1]] + }, + { + "op": "Activation", + "name": "conv_13_relu", + "attrs": {"act_type": "relu"}, + "inputs": [[201, 0, 0]] + }, + { + "op": "null", + "name": "conv_14_dw_conv2d_weight", + "attrs": { + "kernel": "(3, 3)", + "no_bias": "True", + "num_filter": "256", + "num_group": "256", + "pad": "(1, 1)", + "stride": "(1, 1)" + }, + "inputs": [] + }, + { + "op": "Convolution", + "name": "conv_14_dw_conv2d", + "attrs": { + "kernel": "(3, 3)", + "no_bias": "True", + "num_filter": "256", + "num_group": "256", + "pad": "(1, 1)", + "stride": "(1, 1)" + }, + "inputs": [[202, 0, 0], [203, 0, 0]] + }, + { + "op": "null", + "name": "conv_14_dw_batchnorm_gamma", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_14_dw_batchnorm_beta", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_14_dw_batchnorm_moving_mean", + "attrs": { + "__init__": "[\"zero\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "null", + "name": "conv_14_dw_batchnorm_moving_var", + "attrs": { + "__init__": "[\"one\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "BatchNorm", + "name": "conv_14_dw_batchnorm", + "attrs": {"fix_gamma": "True"}, + "inputs": [[204, 0, 0], [205, 0, 0], [206, 0, 0], [207, 0, 1], [208, 0, 1]] + }, + { + "op": "Activation", + "name": "conv_14_dw_relu", + "attrs": {"act_type": "relu"}, + "inputs": [[209, 0, 0]] + }, + { + "op": "null", + "name": "conv_14_conv2d_weight", + "attrs": { + "kernel": "(1, 1)", + "no_bias": "True", + "num_filter": "256", + "num_group": "1", + "pad": "(0, 0)", + "stride": "(1, 1)" + }, + "inputs": [] + }, + { + "op": "Convolution", + "name": "conv_14_conv2d", + "attrs": { + "kernel": "(1, 1)", + "no_bias": "True", + "num_filter": "256", + "num_group": "1", + "pad": "(0, 0)", + "stride": "(1, 1)" + }, + "inputs": [[210, 0, 0], [211, 0, 0]] + }, + { + "op": "null", + "name": "conv_14_batchnorm_gamma", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_14_batchnorm_beta", + "attrs": {"fix_gamma": "True"}, + "inputs": [] + }, + { + "op": "null", + "name": "conv_14_batchnorm_moving_mean", + "attrs": { + "__init__": "[\"zero\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "null", + "name": "conv_14_batchnorm_moving_var", + "attrs": { + "__init__": "[\"one\", {}]", + "fix_gamma": "True" + }, + "inputs": [] + }, + { + "op": "BatchNorm", + "name": "conv_14_batchnorm", + "attrs": {"fix_gamma": "True"}, + "inputs": [[212, 0, 0], [213, 0, 0], [214, 0, 0], [215, 0, 1], [216, 0, 1]] + }, + { + "op": "Activation", + "name": "conv_14_relu", + "attrs": {"act_type": "relu"}, + "inputs": [[217, 0, 0]] + }, + { + "op": "null", + "name": "bn1_gamma", + "attrs": { + "eps": "2e-05", + "fix_gamma": "False", + "momentum": "0.9" + }, + "inputs": [] + }, + { + "op": "null", + "name": "bn1_beta", + "attrs": { + "eps": "2e-05", + "fix_gamma": "False", + "momentum": "0.9" + }, + "inputs": [] + }, + { + "op": "null", + "name": "bn1_moving_mean", + "attrs": { + "__init__": "[\"zero\", {}]", + "eps": "2e-05", + "fix_gamma": "False", + "momentum": "0.9" + }, + "inputs": [] + }, + { + "op": "null", + "name": "bn1_moving_var", + "attrs": { + "__init__": "[\"one\", {}]", + "eps": "2e-05", + "fix_gamma": "False", + "momentum": "0.9" + }, + "inputs": [] + }, + { + "op": "BatchNorm", + "name": "bn1", + "attrs": { + "eps": "2e-05", + "fix_gamma": "False", + "momentum": "0.9" + }, + "inputs": [[218, 0, 0], [219, 0, 0], [220, 0, 0], [221, 0, 1], [222, 0, 1]] + }, + { + "op": "null", + "name": "relu1_gamma", + "attrs": { + "__init__": "[\"Constant\", {\"value\": 0.25}]", + "act_type": "prelu" + }, + "inputs": [] + }, + { + "op": "LeakyReLU", + "name": "relu1", + "attrs": {"act_type": "prelu"}, + "inputs": [[223, 0, 0], [224, 0, 0]] + }, + { + "op": "Pooling", + "name": "pool1", + "attrs": { + "global_pool": "True", + "kernel": "(7, 7)", + "pool_type": "avg" + }, + "inputs": [[225, 0, 0]] + }, + { + "op": "Flatten", + "name": "flatten0", + "inputs": [[226, 0, 0]] + }, + { + "op": "null", + "name": "pre_fc1_weight", + "attrs": {"num_hidden": "202"}, + "inputs": [] + }, + { + "op": "null", + "name": "pre_fc1_bias", + "attrs": {"num_hidden": "202"}, + "inputs": [] + }, + { + "op": "FullyConnected", + "name": "pre_fc1", + "attrs": {"num_hidden": "202"}, + "inputs": [[227, 0, 0], [228, 0, 0], [229, 0, 0]] + }, + { + "op": "null", + "name": "fc1_gamma", + "attrs": { + "eps": "2e-05", + "fix_gamma": "True", + "momentum": "0.9" + }, + "inputs": [] + }, + { + "op": "null", + "name": "fc1_beta", + "attrs": { + "eps": "2e-05", + "fix_gamma": "True", + "momentum": "0.9" + }, + "inputs": [] + }, + { + "op": "null", + "name": "fc1_moving_mean", + "attrs": { + "__init__": "[\"zero\", {}]", + "eps": "2e-05", + "fix_gamma": "True", + "momentum": "0.9" + }, + "inputs": [] + }, + { + "op": "null", + "name": "fc1_moving_var", + "attrs": { + "__init__": "[\"one\", {}]", + "eps": "2e-05", + "fix_gamma": "True", + "momentum": "0.9" + }, + "inputs": [] + }, + { + "op": "BatchNorm", + "name": "fc1", + "attrs": { + "eps": "2e-05", + "fix_gamma": "True", + "momentum": "0.9" + }, + "inputs": [[230, 0, 0], [231, 0, 0], [232, 0, 0], [233, 0, 1], [234, 0, 1]] + } + ], + "arg_nodes": [ + 0, + 3, + 5, + 6, + 7, + 8, + 11, + 13, + 14, + 15, + 16, + 19, + 21, + 22, + 23, + 24, + 27, + 29, + 30, + 31, + 32, + 35, + 37, + 38, + 39, + 40, + 43, + 45, + 46, + 47, + 48, + 51, + 53, + 54, + 55, + 56, + 59, + 61, + 62, + 63, + 64, + 67, + 69, + 70, + 71, + 72, + 75, + 77, + 78, + 79, + 80, + 83, + 85, + 86, + 87, + 88, + 91, + 93, + 94, + 95, + 96, + 99, + 101, + 102, + 103, + 104, + 107, + 109, + 110, + 111, + 112, + 115, + 117, + 118, + 119, + 120, + 123, + 125, + 126, + 127, + 128, + 131, + 133, + 134, + 135, + 136, + 139, + 141, + 142, + 143, + 144, + 147, + 149, + 150, + 151, + 152, + 155, + 157, + 158, + 159, + 160, + 163, + 165, + 166, + 167, + 168, + 171, + 173, + 174, + 175, + 176, + 179, + 181, + 182, + 183, + 184, + 187, + 189, + 190, + 191, + 192, + 195, + 197, + 198, + 199, + 200, + 203, + 205, + 206, + 207, + 208, + 211, + 213, + 214, + 215, + 216, + 219, + 220, + 221, + 222, + 224, + 228, + 229, + 231, + 232, + 233, + 234 + ], + "node_row_ptr": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 272, + 273, + 274, + 275, + 276, + 277, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 294 + ], + "heads": [[235, 0, 0]], + "attrs": {"mxnet_version": ["int", 10300]} +} \ No newline at end of file diff --git a/model/onnx/centerface.onnx b/model/onnx/centerface.onnx new file mode 100644 index 0000000..1487d5f Binary files /dev/null and b/model/onnx/centerface.onnx differ diff --git a/model/onnx/centerface_bnmerged.onnx b/model/onnx/centerface_bnmerged.onnx new file mode 100644 index 0000000..e334bcc Binary files /dev/null and b/model/onnx/centerface_bnmerged.onnx differ diff --git a/models/__init__.py b/models/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/models/__pycache__/__init__.cpython-38.pyc b/models/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000..c7188aa Binary files /dev/null and b/models/__pycache__/__init__.cpython-38.pyc differ diff --git a/models/__pycache__/net.cpython-38.pyc b/models/__pycache__/net.cpython-38.pyc new file mode 100644 index 0000000..42cbfbf Binary files /dev/null and b/models/__pycache__/net.cpython-38.pyc differ diff --git a/models/__pycache__/retinaface.cpython-38.pyc b/models/__pycache__/retinaface.cpython-38.pyc new file mode 100644 index 0000000..2fcb8a3 Binary files /dev/null and b/models/__pycache__/retinaface.cpython-38.pyc differ diff --git a/models/net.py b/models/net.py new file mode 100644 index 0000000..beb6040 --- /dev/null +++ b/models/net.py @@ -0,0 +1,137 @@ +import time +import torch +import torch.nn as nn +import torchvision.models._utils as _utils +import torchvision.models as models +import torch.nn.functional as F +from torch.autograd import Variable + +def conv_bn(inp, oup, stride = 1, leaky = 0): + return nn.Sequential( + nn.Conv2d(inp, oup, 3, stride, 1, bias=False), + nn.BatchNorm2d(oup), + nn.LeakyReLU(negative_slope=leaky, inplace=True) + ) + +def conv_bn_no_relu(inp, oup, stride): + return nn.Sequential( + nn.Conv2d(inp, oup, 3, stride, 1, bias=False), + nn.BatchNorm2d(oup), + ) + +def conv_bn1X1(inp, oup, stride, leaky=0): + return nn.Sequential( + nn.Conv2d(inp, oup, 1, stride, padding=0, bias=False), + nn.BatchNorm2d(oup), + nn.LeakyReLU(negative_slope=leaky, inplace=True) + ) + +def conv_dw(inp, oup, stride, leaky=0.1): + return nn.Sequential( + nn.Conv2d(inp, inp, 3, stride, 1, groups=inp, bias=False), + nn.BatchNorm2d(inp), + nn.LeakyReLU(negative_slope= leaky,inplace=True), + + nn.Conv2d(inp, oup, 1, 1, 0, bias=False), + nn.BatchNorm2d(oup), + nn.LeakyReLU(negative_slope= leaky,inplace=True), + ) + +class SSH(nn.Module): + def __init__(self, in_channel, out_channel): + super(SSH, self).__init__() + assert out_channel % 4 == 0 + leaky = 0 + if (out_channel <= 64): + leaky = 0.1 + self.conv3X3 = conv_bn_no_relu(in_channel, out_channel//2, stride=1) + + self.conv5X5_1 = conv_bn(in_channel, out_channel//4, stride=1, leaky = leaky) + self.conv5X5_2 = conv_bn_no_relu(out_channel//4, out_channel//4, stride=1) + + self.conv7X7_2 = conv_bn(out_channel//4, out_channel//4, stride=1, leaky = leaky) + self.conv7x7_3 = conv_bn_no_relu(out_channel//4, out_channel//4, stride=1) + + def forward(self, input): + conv3X3 = self.conv3X3(input) + + conv5X5_1 = self.conv5X5_1(input) + conv5X5 = self.conv5X5_2(conv5X5_1) + + conv7X7_2 = self.conv7X7_2(conv5X5_1) + conv7X7 = self.conv7x7_3(conv7X7_2) + + out = torch.cat([conv3X3, conv5X5, conv7X7], dim=1) + out = F.relu(out) + return out + +class FPN(nn.Module): + def __init__(self,in_channels_list,out_channels): + super(FPN,self).__init__() + leaky = 0 + if (out_channels <= 64): + leaky = 0.1 + self.output1 = conv_bn1X1(in_channels_list[0], out_channels, stride = 1, leaky = leaky) + self.output2 = conv_bn1X1(in_channels_list[1], out_channels, stride = 1, leaky = leaky) + self.output3 = conv_bn1X1(in_channels_list[2], out_channels, stride = 1, leaky = leaky) + + self.merge1 = conv_bn(out_channels, out_channels, leaky = leaky) + self.merge2 = conv_bn(out_channels, out_channels, leaky = leaky) + + def forward(self, input): + # names = list(input.keys()) + input = list(input.values()) + + output1 = self.output1(input[0]) + output2 = self.output2(input[1]) + output3 = self.output3(input[2]) + + up3 = F.interpolate(output3, size=[output2.size(2), output2.size(3)], mode="nearest") + output2 = output2 + up3 + output2 = self.merge2(output2) + + up2 = F.interpolate(output2, size=[output1.size(2), output1.size(3)], mode="nearest") + output1 = output1 + up2 + output1 = self.merge1(output1) + + out = [output1, output2, output3] + return out + + + +class MobileNetV1(nn.Module): + def __init__(self): + super(MobileNetV1, self).__init__() + self.stage1 = nn.Sequential( + conv_bn(3, 8, 2, leaky = 0.1), # 3 + conv_dw(8, 16, 1), # 7 + conv_dw(16, 32, 2), # 11 + conv_dw(32, 32, 1), # 19 + conv_dw(32, 64, 2), # 27 + conv_dw(64, 64, 1), # 43 + ) + self.stage2 = nn.Sequential( + conv_dw(64, 128, 2), # 43 + 16 = 59 + conv_dw(128, 128, 1), # 59 + 32 = 91 + conv_dw(128, 128, 1), # 91 + 32 = 123 + conv_dw(128, 128, 1), # 123 + 32 = 155 + conv_dw(128, 128, 1), # 155 + 32 = 187 + conv_dw(128, 128, 1), # 187 + 32 = 219 + ) + self.stage3 = nn.Sequential( + conv_dw(128, 256, 2), # 219 +3 2 = 241 + conv_dw(256, 256, 1), # 241 + 64 = 301 + ) + self.avg = nn.AdaptiveAvgPool2d((1,1)) + self.fc = nn.Linear(256, 1000) + + def forward(self, x): + x = self.stage1(x) + x = self.stage2(x) + x = self.stage3(x) + x = self.avg(x) + # x = self.model(x) + x = x.view(-1, 256) + x = self.fc(x) + return x + diff --git a/models/retinaface.py b/models/retinaface.py new file mode 100644 index 0000000..d530bd8 --- /dev/null +++ b/models/retinaface.py @@ -0,0 +1,127 @@ +import torch +import torch.nn as nn +import torchvision.models.detection.backbone_utils as backbone_utils +import torchvision.models._utils as _utils +import torch.nn.functional as F +from collections import OrderedDict + +from models.net import MobileNetV1 as MobileNetV1 +from models.net import FPN as FPN +from models.net import SSH as SSH + + + +class ClassHead(nn.Module): + def __init__(self,inchannels=512,num_anchors=3): + super(ClassHead,self).__init__() + self.num_anchors = num_anchors + self.conv1x1 = nn.Conv2d(inchannels,self.num_anchors*2,kernel_size=(1,1),stride=1,padding=0) + + def forward(self,x): + out = self.conv1x1(x) + out = out.permute(0,2,3,1).contiguous() + + return out.view(out.shape[0], -1, 2) + +class BboxHead(nn.Module): + def __init__(self,inchannels=512,num_anchors=3): + super(BboxHead,self).__init__() + self.conv1x1 = nn.Conv2d(inchannels,num_anchors*4,kernel_size=(1,1),stride=1,padding=0) + + def forward(self,x): + out = self.conv1x1(x) + out = out.permute(0,2,3,1).contiguous() + + return out.view(out.shape[0], -1, 4) + +class LandmarkHead(nn.Module): + def __init__(self,inchannels=512,num_anchors=3): + super(LandmarkHead,self).__init__() + self.conv1x1 = nn.Conv2d(inchannels,num_anchors*10,kernel_size=(1,1),stride=1,padding=0) + + def forward(self,x): + out = self.conv1x1(x) + out = out.permute(0,2,3,1).contiguous() + + return out.view(out.shape[0], -1, 10) + +class RetinaFace(nn.Module): + def __init__(self, cfg = None, phase = 'train'): + """ + :param cfg: Network related settings. + :param phase: train or test. + """ + super(RetinaFace,self).__init__() + self.phase = phase + backbone = None + if cfg['name'] == 'mobilenet0.25': + backbone = MobileNetV1() + if cfg['pretrain']: + checkpoint = torch.load("./weights/mobilenetV1X0.25_pretrain.tar", map_location=torch.device('cpu')) + from collections import OrderedDict + new_state_dict = OrderedDict() + for k, v in checkpoint['state_dict'].items(): + name = k[7:] # remove module. + new_state_dict[name] = v + # load params + backbone.load_state_dict(new_state_dict) + elif cfg['name'] == 'Resnet50': + import torchvision.models as models + backbone = models.resnet50(pretrained=cfg['pretrain']) + + self.body = _utils.IntermediateLayerGetter(backbone, cfg['return_layers']) + in_channels_stage2 = cfg['in_channel'] + in_channels_list = [ + in_channels_stage2 * 2, + in_channels_stage2 * 4, + in_channels_stage2 * 8, + ] + out_channels = cfg['out_channel'] + self.fpn = FPN(in_channels_list,out_channels) + self.ssh1 = SSH(out_channels, out_channels) + self.ssh2 = SSH(out_channels, out_channels) + self.ssh3 = SSH(out_channels, out_channels) + + self.ClassHead = self._make_class_head(fpn_num=3, inchannels=cfg['out_channel']) + self.BboxHead = self._make_bbox_head(fpn_num=3, inchannels=cfg['out_channel']) + self.LandmarkHead = self._make_landmark_head(fpn_num=3, inchannels=cfg['out_channel']) + + def _make_class_head(self,fpn_num=3,inchannels=64,anchor_num=2): + classhead = nn.ModuleList() + for i in range(fpn_num): + classhead.append(ClassHead(inchannels,anchor_num)) + return classhead + + def _make_bbox_head(self,fpn_num=3,inchannels=64,anchor_num=2): + bboxhead = nn.ModuleList() + for i in range(fpn_num): + bboxhead.append(BboxHead(inchannels,anchor_num)) + return bboxhead + + def _make_landmark_head(self,fpn_num=3,inchannels=64,anchor_num=2): + landmarkhead = nn.ModuleList() + for i in range(fpn_num): + landmarkhead.append(LandmarkHead(inchannels,anchor_num)) + return landmarkhead + + def forward(self,inputs): + out = self.body(inputs) + + # FPN + fpn = self.fpn(out) + + # SSH + feature1 = self.ssh1(fpn[0]) + feature2 = self.ssh2(fpn[1]) + feature3 = self.ssh3(fpn[2]) + features = [feature1, feature2, feature3] + + bbox_regressions = torch.cat([self.BboxHead[i](feature) for i, feature in enumerate(features)], dim=1) + classifications = torch.cat([self.ClassHead[i](feature) for i, feature in enumerate(features)],dim=1) + ldm_regressions = torch.cat([self.LandmarkHead[i](feature) for i, feature in enumerate(features)], dim=1) + + if self.phase == 'train': + output = (bbox_regressions, classifications, ldm_regressions) + else: + output = (bbox_regressions, F.softmax(classifications, dim=-1), ldm_regressions) + return output \ No newline at end of file diff --git a/partial_fc.py b/partial_fc.py new file mode 100644 index 0000000..9325b19 --- /dev/null +++ b/partial_fc.py @@ -0,0 +1,161 @@ +import logging +import os + +import torch +import torch.distributed as dist +from torch.nn import Module +from torch.nn.functional import normalize, linear +from torch.nn.parameter import Parameter + + +class PartialFC(Module): + """ + Author: {Xiang An, Yang Xiao, XuHan Zhu} in DeepGlint, + Partial FC: Training 10 Million Identities on a Single Machine + See the original paper: + https://arxiv.org/abs/2010.05222 + """ + + @torch.no_grad() + def __init__(self, rank, local_rank, world_size, batch_size, resume, + margin_softmax, num_classes, sample_rate=1.0, embedding_size=512, prefix="./"): + super(PartialFC, self).__init__() + # + self.num_classes: int = num_classes + self.rank: int = rank + self.local_rank: int = local_rank + self.device: torch.device = torch.device("cuda:{}".format(self.local_rank)) + self.world_size: int = world_size + self.batch_size: int = batch_size + self.margin_softmax: callable = margin_softmax + self.sample_rate: float = sample_rate + self.embedding_size: int = embedding_size + self.prefix: str = prefix + self.num_local: int = num_classes // world_size + int(rank < num_classes % world_size) + self.class_start: int = num_classes // world_size * rank + min(rank, num_classes % world_size) + self.num_sample: int = int(self.sample_rate * self.num_local) + + self.weight_name = os.path.join(self.prefix, "rank:{}_softmax_weight.pt".format(self.rank)) + self.weight_mom_name = os.path.join(self.prefix, "rank:{}_softmax_weight_mom.pt".format(self.rank)) + + if resume: + try: + self.weight: torch.Tensor = torch.load(self.weight_name) + logging.info("softmax weight resume successfully!") + except (FileNotFoundError, KeyError, IndexError): + self.weight = torch.normal(0, 0.01, (self.num_local, self.embedding_size), device=self.device) + logging.info("softmax weight resume fail!") + + try: + self.weight_mom: torch.Tensor = torch.load(self.weight_mom_name) + logging.info("softmax weight mom resume successfully!") + except (FileNotFoundError, KeyError, IndexError): + self.weight_mom: torch.Tensor = torch.zeros_like(self.weight) + logging.info("softmax weight mom resume fail!") + else: + self.weight = torch.normal(0, 0.01, (self.num_local, self.embedding_size), device=self.device) + self.weight_mom: torch.Tensor = torch.zeros_like(self.weight) + logging.info("softmax weight init successfully!") + logging.info("softmax weight mom init successfully!") + self.stream: torch.cuda.Stream = torch.cuda.Stream(local_rank) + + self.index = None + if int(self.sample_rate) == 1: + self.update = lambda: 0 + self.sub_weight = Parameter(self.weight) + self.sub_weight_mom = self.weight_mom + else: + self.sub_weight = Parameter(torch.empty((0, 0)).cuda(local_rank)) + + def save_params(self): + torch.save(self.weight.data, self.weight_name) + torch.save(self.weight_mom, self.weight_mom_name) + + @torch.no_grad() + def sample(self, total_label): + index_positive = (self.class_start <= total_label) & (total_label < self.class_start + self.num_local) + total_label[~index_positive] = -1 + total_label[index_positive] -= self.class_start + if int(self.sample_rate) != 1: + positive = torch.unique(total_label[index_positive], sorted=True) + if self.num_sample - positive.size(0) >= 0: + perm = torch.rand(size=[self.num_local], device=self.device) + perm[positive] = 2.0 + index = torch.topk(perm, k=self.num_sample)[1] + index = index.sort()[0] + else: + index = positive + self.index = index + total_label[index_positive] = torch.searchsorted(index, total_label[index_positive]) + self.sub_weight = Parameter(self.weight[index]) + self.sub_weight_mom = self.weight_mom[index] + + def forward(self, total_features, norm_weight): + torch.cuda.current_stream().wait_stream(self.stream) + logits = linear(total_features, norm_weight) + return logits + + @torch.no_grad() + def update(self): + self.weight_mom[self.index] = self.sub_weight_mom + self.weight[self.index] = self.sub_weight + + def prepare(self, label, optimizer): + with torch.cuda.stream(self.stream): + total_label = torch.zeros( + size=[self.batch_size * self.world_size], device=self.device, dtype=torch.long) + dist.all_gather(list(total_label.chunk(self.world_size, dim=0)), label) + self.sample(total_label) + optimizer.state.pop(optimizer.param_groups[-1]['params'][0], None) + optimizer.param_groups[-1]['params'][0] = self.sub_weight + optimizer.state[self.sub_weight]['momentum_buffer'] = self.sub_weight_mom + norm_weight = normalize(self.sub_weight) + return total_label, norm_weight + + def forward_backward(self, label, features, optimizer): + total_label, norm_weight = self.prepare(label, optimizer) + total_features = torch.zeros( + size=[self.batch_size * self.world_size, self.embedding_size], device=self.device) + dist.all_gather(list(total_features.chunk(self.world_size, dim=0)), features.data) + total_features.requires_grad = True + + logits = self.forward(total_features, norm_weight) + logits = self.margin_softmax(logits, total_label) + + with torch.no_grad(): + max_fc = torch.max(logits, dim=1, keepdim=True)[0] + dist.all_reduce(max_fc, dist.ReduceOp.MAX) + + # calculate exp(logits) and all-reduce + logits_exp = torch.exp(logits - max_fc) + logits_sum_exp = logits_exp.sum(dim=1, keepdims=True) + dist.all_reduce(logits_sum_exp, dist.ReduceOp.SUM) + + # calculate prob + logits_exp.div_(logits_sum_exp) + + # get one-hot + grad = logits_exp + index = torch.where(total_label != -1)[0] + one_hot = torch.zeros(size=[index.size()[0], grad.size()[1]], device=grad.device) + one_hot.scatter_(1, total_label[index, None], 1) + + # calculate loss + loss = torch.zeros(grad.size()[0], 1, device=grad.device) + loss[index] = grad[index].gather(1, total_label[index, None]) + dist.all_reduce(loss, dist.ReduceOp.SUM) + loss_v = loss.clamp_min_(1e-30).log_().mean() * (-1) + + # calculate grad + grad[index] -= one_hot + grad.div_(self.batch_size * self.world_size) + + logits.backward(grad) + if total_features.grad is not None: + total_features.grad.detach_() + x_grad: torch.Tensor = torch.zeros_like(features, requires_grad=True) + # feature gradient all-reduce + dist.reduce_scatter(x_grad, list(total_features.grad.chunk(self.world_size, dim=0))) + x_grad = x_grad * self.world_size + # backward backbone + return x_grad, loss_v diff --git a/play.py b/play.py new file mode 100644 index 0000000..f8e3d51 --- /dev/null +++ b/play.py @@ -0,0 +1,14 @@ +import cv2 +cap = cv2.VideoCapture("rtsp://admin:2020@uestc@192.168.30.83:554/h264") +ret, frame = cap.read() +h, w = frame.shape[:2] +print("hight:"+str(h)+"with:"+str(w)) +fps = cap.get(cv2.CAP_PROP_FPS) +print(fps) +# while ret: +# cv2.imshow('out', frame) +# if cv2.waitKey(1) & 0xFF == ord('q'): +# break +# ret, frame = cap.read() +cap.release() +cv2.destroyAllWindows() \ No newline at end of file diff --git a/realtime_detect.py b/realtime_detect.py new file mode 100644 index 0000000..b830415 --- /dev/null +++ b/realtime_detect.py @@ -0,0 +1,282 @@ +import argparse +import subprocess +import time +import cv2 +import torch +import numpy as np +from skimage import transform as trans +from PIL import Image, ImageDraw, ImageFont +from data import cfg_mnet, cfg_re50 +from face_api import load_arcface_model, load_npy +from layers.functions.prior_box import PriorBox +from retinaface_detect import set_retinaface_conf, load_retinaface_model, findAll +from utils.nms.py_cpu_nms import py_cpu_nms +from utils.box_utils import decode, decode_landm +import faiss + +ppi = 1280 +ppi2 = 1100 +step = 3 + +def detect_rtsp(rtsp, out_rtsp, net, arcface_model, index ,database_name_list, k_v, args): + tic_total = time.time() + cfg = None + if args.network == "mobile0.25": + cfg = cfg_mnet + elif args.network == "resnet50": + cfg = cfg_re50 + device = torch.device("cpu" if args.cpu else "cuda") + resize = 1 + + # testing begin + cap = cv2.VideoCapture(rtsp) + ret, frame = cap.read() + h, w = frame.shape[:2] + + factor = 0 + if (w > ppi): + factor = h / w + frame = cv2.resize(frame, (ppi, int(ppi * factor))) + h, w = frame.shape[:2] + arf = 1 + detect_h, detect_w = frame.shape[:2] + frame_detect = frame + factor2 = 0 + if (w > ppi2): + factor2 = h / w + frame_detect = cv2.resize(frame, (ppi2, int(ppi2 * factor2))) + detect_h, detect_w = frame_detect.shape[:2] + arf = w/detect_w + print(w,h) + print(detect_w,detect_h) + + fps = cap.get(cv2.CAP_PROP_FPS) + #print(fps) + size = (w, h) + sizeStr = str(size[0]) + 'x' + str(size[1]) + if(out_rtsp.startswith("rtsp")): + command = ['ffmpeg', + '-y', '-an', + '-f', 'rawvideo', + '-vcodec', 'rawvideo', + '-pix_fmt', 'bgr24', + '-s', sizeStr, + '-r', "25", + '-i', '-', + '-c:v', 'libx265', + '-b:v', '3000k', + '-pix_fmt', 'yuv420p', + '-preset', 'ultrafast', + '-f', 'rtsp', + out_rtsp] + pipe = subprocess.Popen(command, shell=False, stdin=subprocess.PIPE) + #out = cv2.VideoWriter("output.avi", cv2.VideoWriter_fourcc(*'XVID'), fps, size) + number = step + dets = [] + name_list = [] + font = ImageFont.truetype("font.ttf", 22) + priorbox = PriorBox(cfg, image_size=(detect_h, detect_w)) + priors = priorbox.forward() + priors = priors.to(device) + prior_data = priors.data + + scale = torch.Tensor([detect_w, detect_h, detect_w, detect_h]) + scale = scale.to(device) + scale1 = torch.Tensor([detect_w, detect_h, detect_w, detect_h, + detect_w, detect_h, detect_w, detect_h, + detect_w, detect_h]) + scale1 = scale1.to(device) + + src1 = np.array([ + [38.3814, 51.6963], + [73.6186, 51.5014], + [56.1120, 71.7366], + [41.6361, 92.3655], + [70.8167, 92.2041]], dtype=np.float32) + tform = trans.SimilarityTransform() + + while ret: + tic_all = time.time() + if number == step: + tic = time.time() + img = np.float32(frame_detect) + img -= (104, 117, 123) + img = img.transpose(2, 0, 1) + img = torch.from_numpy(img).unsqueeze(0) + img = img.to(device) + + loc, conf, landms = net(img) # forward pass + + boxes = decode(loc.data.squeeze(0), prior_data, cfg['variance']) + boxes = boxes * scale / resize + boxes = boxes.cpu().numpy() + scores = conf.squeeze(0).data.cpu().numpy()[:, 1] + landms = decode_landm(landms.data.squeeze(0), prior_data, cfg['variance']) + + landms = landms * scale1 / resize + landms = landms.cpu().numpy() + + # ignore low scores + inds = np.where(scores > args.confidence_threshold)[0] + boxes = boxes[inds] + landms = landms[inds] + scores = scores[inds] + + # keep top-K before NMS + order = scores.argsort()[::-1][:args.top_k] + boxes = boxes[order] + landms = landms[order] + scores = scores[order] + + # do NMS + dets = np.hstack((boxes, scores[:, np.newaxis])).astype(np.float32, copy=False) + keep = py_cpu_nms(dets, args.nms_threshold) + # keep = nms(dets, args.nms_threshold,force_cpu=args.cpu) + dets = dets[keep, :] + landms = landms[keep] + + # keep top-K faster NMS + dets = dets[:args.keep_top_k, :] + landms = landms[:args.keep_top_k, :] + + dets = np.concatenate((dets, landms), axis=1) + face_list = [] + name_list = [] + print('net forward time: {:.4f}'.format(time.time() - tic)) + start_time_findall = time.time() + for i, det in enumerate(dets[:4]): + if det[4] < args.vis_thres: + continue + #boxes, score = det[:4], det[4] + dst = np.reshape(landms[i], (5, 2)) + dst = dst * arf + + tform.estimate(dst, src1) + M = tform.params[0:2, :] + frame2 = cv2.warpAffine(frame, M, (w, h), borderValue=0.0) + img112 = frame2[0:112, 0:112, :] + face_list.append(img112) + + if len(face_list) != 0: + face_list = np.array(face_list) + face_list = face_list.transpose((0, 3, 1, 2)) + face_list = np.array(face_list, dtype=np.float32) + face_list -= 127.5 + face_list /= 127.5 + print(face_list.shape) + print("warpALL time: " + str(time.time() - start_time_findall )) + #start_time = time.time() + name_list = findAll(face_list, arcface_model, index ,database_name_list, k_v, "cpu" if args.cpu else "cuda") + #print(name_list) + + #print("findOneframe time: " + str(time.time() - start_time_findall)) + # start_time = time.time() + # if (len(dets) != 0): + # for i, det in enumerate(dets[:]): + # if det[4] < args.vis_thres: + # continue + # boxes, score = det[:4], det[4] + # boxes = boxes * arf + # name = name_list[i] + # cv2.rectangle(frame, (int(boxes[0]), int(boxes[1])), (int(boxes[2]), int(boxes[3])), (255, 0, 0), 2) + # cv2.putText(frame, name, (int(boxes[0]), int(boxes[1])), cv2.FONT_HERSHEY_COMPLEX, 0.4,(0, 225, 255), 1) + start_time = time.time() + if(len(dets) != 0): + img_PIL = Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)) + draw = ImageDraw.Draw(img_PIL) + for i, det in enumerate(dets[:4]): + if det[4] < args.vis_thres: + continue + boxes, score = det[:4], det[4] + boxes = boxes * arf + name = name_list[i] + if not isinstance(name, np.unicode): + name = name.decode('utf8') + draw.text((int(boxes[0]), int(boxes[1])), name, fill=(255, 0, 0), font=font) + draw.rectangle((int(boxes[0]), int(boxes[1]), int(boxes[2]), int(boxes[3])), outline="green", width=3) + frame = cv2.cvtColor(np.asarray(img_PIL), cv2.COLOR_RGB2BGR) + pipe.stdin.write(frame.tostring()) + #out.write(frame) + print("drawOneframe time: " + str(time.time() - start_time)) + start_time = time.time() + ret, frame = cap.read() + frame_detect = frame + number = 0 + if (ret != 0 and factor != 0): + frame = cv2.resize(frame, (ppi, int(ppi * factor))) + if (ret != 0 and factor2 != 0): + frame_detect = cv2.resize(frame, (ppi2, int(ppi2 * factor2))) + print("readframe time: " + str(time.time() - start_time)) + else: + number += 1 + # if (len(dets) != 0): + # for i, det in enumerate(dets[:4]): + # if det[4] < args.vis_thres: + # continue + # boxes, score = det[:4], det[4] + # cv2.rectangle(frame, (int(boxes[0]), int(boxes[1])), (int(boxes[2]), int(boxes[3])), (2, 255, 0), 1) + if (len(dets) != 0): + img_PIL = Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)) + draw = ImageDraw.Draw(img_PIL) + for i, det in enumerate(dets[:4]): + if det[4] < args.vis_thres: + continue + boxes, score = det[:4], det[4] + boxes = boxes * arf + name = name_list[i] + if not isinstance(name, np.unicode): + name = name.decode('utf8') + draw.text((int(boxes[0]), int(boxes[1])), name, fill=(255, 0, 0), font=font) + draw.rectangle((int(boxes[0]), int(boxes[1]), int(boxes[2]), int(boxes[3])), outline="green", + width=3) + frame = cv2.cvtColor(np.asarray(img_PIL), cv2.COLOR_RGB2BGR) + start_time = time.time() + pipe.stdin.write(frame.tostring()) + #out.write(frame) + print("writeframe time: " + str(time.time() - start_time)) + start_time = time.time() + ret, frame = cap.read() + frame_detect = frame + if (ret != 0 and factor != 0): + frame = cv2.resize(frame, (ppi, int(ppi * factor))) + if (ret != 0 and factor2 != 0): + frame_detect = cv2.resize(frame, (ppi2, int(ppi2 * factor2))) + print("readframe time: " + str(time.time() - start_time)) + print('all time: {:.4f}'.format(time.time() - tic_all)) + cap.release() + #out.release() + pipe.terminate() + print('total time: {:.4f}'.format(time.time() - tic_total)) + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument( + "--rtsp", + type=str, + default="", + dest="rtsp_path" + ) + args = parser.parse_args() + cpu_or_cuda = "cuda" if torch.cuda.is_available() else "cpu" + # 加载人脸识别模型 + arcface_model = load_arcface_model("./model/backbone100.pth", cpu_or_cuda="cuda") + # 加载人脸检测模型 + retinaface_args = set_retinaface_conf(cpu_or_cuda=cpu_or_cuda) + retinaface_model = load_retinaface_model(retinaface_args) + k_v = load_npy("./Database/student.npy") + #print(list(k_v.keys())) + database_name_list = list(k_v.keys()) + vector_list = np.array(list(k_v.values())) + print(vector_list.shape) + nlist = 10 + quantizer = faiss.IndexFlatL2(512) # the other index + index = faiss.IndexIVFFlat(quantizer, 512, nlist, faiss.METRIC_L2) + index.train(vector_list) + #index = faiss.IndexFlatL2(512) + index.add(vector_list) + index.nprobe=10 + + detect_rtsp(args.rtsp_path, 'rtsp://localhost:5001/test2', retinaface_model, arcface_model, index ,database_name_list, k_v, retinaface_args) + + #detect_rtsp("rtsp://admin:2020@uestc@192.168.14.32:8557/h264", 'rtsp://localhost:5001/test2', retinaface_model, arcface_model, index ,database_name_list, k_v, retinaface_args) + #detect_rtsp("cut.mp4", 'rtsp://localhost:5001/test2', retinaface_model, arcface_model, k_v, retinaface_args) diff --git a/recognition_video.py b/recognition_video.py new file mode 100644 index 0000000..cc45a75 --- /dev/null +++ b/recognition_video.py @@ -0,0 +1,283 @@ +import time +from centerface import CenterFace +from skimage import transform as trans +import numpy as np +import torch +import cv2 +from backbones import iresnet100, iresnet18 +from create_database import findOne, load_npy,findAll +from PIL import Image, ImageDraw,ImageFont + +def show(): + cap = cv2.VideoCapture("test.mp4") + ret, frame = cap.read() + h, w = frame.shape[:2] + centerface = CenterFace() + size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), + int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))) + out = cv2.VideoWriter('ccvt6.mp4', cv2.VideoWriter_fourcc('m', 'p', '4', 'v'), 30, size) + while ret: + start_time = time.time() + dets, lms = centerface(frame, h, w, threshold=0.35) + end_time = time.time() + print("findOne time: " + str(end_time - start_time)) + for det in dets: + boxes, score = det[:4], det[4] + cv2.rectangle(frame, (int(boxes[0]), int(boxes[1])), (int(boxes[2]), int(boxes[3])), (2, 255, 0), 1) + for lm in lms: + for i in range(0, 5): + cv2.circle(frame, (int(lm[i * 2]), int(lm[i * 2 + 1])), 2, (0, 0, 255), -1) + cv2.imshow('out', frame) + out.write(frame) + # Press Q on keyboard to stop recording + if cv2.waitKey(1) & 0xFF == ord('q'): + break + ret, frame = cap.read() + cap.release() + out.release() + cv2.destroyAllWindows() + +def video(): + model = iresnet100() + model.load_state_dict(torch.load("./model/backbone100.pth", map_location="cpu")) + model.eval() + k_v = load_npy("student.npy") + count = 0 + #cap = cv2.VideoCapture("http://ivi.bupt.edu.cn/hls/cctv6hd.m3u8") + cap = cv2.VideoCapture("software.mp4") + ret, frame = cap.read() + h, w = frame.shape[:2] + size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), + int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))) + fps = cap.get(cv2.CAP_PROP_FPS) + out = cv2.VideoWriter('ttt.mp4', cv2.VideoWriter_fourcc('m', 'p', '4', 'v'), fps, size) + centerface = CenterFace() + while ret: + start_time = time.time() + dets, lms = centerface(frame, h, w, threshold=0.35) + end_time = time.time() + print("detectOneframe time: " + str(end_time - start_time)) + face_list = [] + name_list = [] + for i,det in enumerate(dets): + boxes, score = det[:4], det[4] + img_w = int(boxes[2] - boxes[0]) + img_h = int(boxes[3] - boxes[1]) + distace = int(abs(img_w - img_h) / 2) + img_w1 = int(boxes[0]) - distace + img_w2 = int(boxes[2]) + distace + # print(img_w,img_h,distace,max_hw) + if img_w <= img_h and img_w1 >= 0 and img_w2 <= frame.shape[1]: + img112 = frame[int(boxes[1]):int(boxes[3]), img_w1:img_w2, :] + img112 = cv2.resize(img112, (112, 112)) + # cv2.imwrite("./img/man"+str(count)+".jpg", img112) + # count += 1 + face_list.append(img112) + else: + img112 = frame[int(boxes[1]):int(boxes[3]), int(boxes[0]):int(boxes[2]), :] + img112 = cv2.resize(img112, (112, 112)) + face_list.append(img112) + if len(face_list) != 0: + face_list = np.array(face_list) + face_list = face_list.transpose((0,3,1,2)) + face_list = np.array(face_list, dtype=np.float32) + face_list -= 127.5 + face_list /= 127.5 + print(face_list.shape) + face_list = torch.from_numpy(face_list) + start_time = time.time() + + for face in face_list: + face = face[np.newaxis, :, :, :] + + name_list.append(findOne(face,model,k_v)) + end_time = time.time() + print("findOneframe time: "+str(end_time-start_time)) + img_PIL = Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)) + draw = ImageDraw.Draw(img_PIL) + font = ImageFont.truetype("font.ttf",12) + for i,det in enumerate(dets): + boxes, score = det[:4], det[4] + # cv2.rectangle(frame, (int(boxes[0]), int(boxes[1])), (int(boxes[2]), int(boxes[3])), (2, 255, 0), 1) + # cv2.putText(frame, name_list[i], (int(boxes[0]), int(boxes[1])), cv2.FONT_HERSHEY_COMPLEX, 0.4, + # (0, 225, 255), 1) + name = name_list[i][:3] + if not isinstance(name, np.unicode): + name = name.decode('utf8') + draw.text((int(boxes[0]), int(boxes[1])),name,fill=(0, 225, 255),font=font) + draw.rectangle((int(boxes[0]), int(boxes[1]),int(boxes[2]), int(boxes[3])),outline="green",width=1) + frame = cv2.cvtColor(np.asarray(img_PIL),cv2.COLOR_RGB2BGR) + cv2.imshow('out', frame) + out.write(frame) + # Press Q on keyboard to stop recording + if cv2.waitKey(1) & 0xFF == ord('q'): + break + ret, frame = cap.read() + cap.release() + out.release() + cv2.destroyAllWindows() +def video_GPU(): + model = iresnet100() + model.load_state_dict(torch.load("./model/backbone100.pth", map_location="cpu")) + model.eval() + k_v = load_npy("student.npy") + count = 0 + #cap = cv2.VideoCapture("http://ivi.bupt.edu.cn/hls/cctv6hd.m3u8") + cap = cv2.VideoCapture("software.mp4") + ret, frame = cap.read() + h, w = frame.shape[:2] + size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), + int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))) + fps = cap.get(cv2.CAP_PROP_FPS) + out = cv2.VideoWriter('ttt.mp4', cv2.VideoWriter_fourcc('m', 'p', '4', 'v'), fps, size) + centerface = CenterFace() + while ret: + start_time = time.time() + dets, lms = centerface(frame, h, w, threshold=0.35) + end_time = time.time() + print("detectOneframe time: " + str(end_time - start_time)) + face_list = [] + name_list = [] + for i,det in enumerate(dets): + boxes, score = det[:4], det[4] + img_w = int(boxes[2] - boxes[0]) + img_h = int(boxes[3] - boxes[1]) + distace = int(abs(img_w - img_h) / 2) + img_w1 = int(boxes[0]) - distace + img_w2 = int(boxes[2]) + distace + # print(img_w,img_h,distace,max_hw) + if img_w <= img_h and img_w1 >= 0 and img_w2 <= frame.shape[1]: + img112 = frame[int(boxes[1]):int(boxes[3]), img_w1:img_w2, :] + img112 = cv2.resize(img112, (112, 112)) + # cv2.imwrite("./img/man"+str(count)+".jpg", img112) + # count += 1 + face_list.append(img112) + else: + img112 = frame[int(boxes[1]):int(boxes[3]), int(boxes[0]):int(boxes[2]), :] + img112 = cv2.resize(img112, (112, 112)) + face_list.append(img112) + if len(face_list) != 0: + face_list = np.array(face_list) + face_list = face_list.transpose((0,3,1,2)) + face_list = np.array(face_list, dtype=np.float32) + face_list -= 127.5 + face_list /= 127.5 + print(face_list.shape) + face_list = torch.from_numpy(face_list) + start_time = time.time() + name_list = findAll(face_list, model, k_v) + # for face in face_list: + # face = face[np.newaxis, :, :, :] + # + # name_list.append(findOne(face,model,k_v)) + end_time = time.time() + print("findOneframe time: "+str(end_time-start_time)) + img_PIL = Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)) + draw = ImageDraw.Draw(img_PIL) + font = ImageFont.truetype("font.ttf",18) + for i,det in enumerate(dets): + boxes, score = det[:4], det[4] + # cv2.rectangle(frame, (int(boxes[0]), int(boxes[1])), (int(boxes[2]), int(boxes[3])), (2, 255, 0), 1) + # cv2.putText(frame, name_list[i], (int(boxes[0]), int(boxes[1])), cv2.FONT_HERSHEY_COMPLEX, 0.4, + # (0, 225, 255), 1) + name = name_list[i][:3] + if not isinstance(name, np.unicode): + name = name.decode('utf8') + draw.text((int(boxes[0]), int(boxes[1])),name,fill=(255, 0, 0),font=font) + draw.rectangle((int(boxes[0]), int(boxes[1]),int(boxes[2]), int(boxes[3])),outline="green",width=2) + frame = cv2.cvtColor(np.asarray(img_PIL),cv2.COLOR_RGB2BGR) + cv2.imshow('out', frame) + out.write(frame) + # Press Q on keyboard to stop recording + if cv2.waitKey(1) & 0xFF == ord('q'): + break + ret, frame = cap.read() + cap.release() + out.release() + cv2.destroyAllWindows() + +def video_GPU_retinaface(): + model = iresnet100() + model.load_state_dict(torch.load("./model/backbone100.pth", map_location="cpu")) + model.eval() + k_v = load_npy("student.npy") + count = 0 + #cap = cv2.VideoCapture("http://ivi.bupt.edu.cn/hls/cctv6hd.m3u8") + cap = cv2.VideoCapture("software.mp4") + ret, frame = cap.read() + h, w = frame.shape[:2] + size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), + int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))) + fps = cap.get(cv2.CAP_PROP_FPS) + out = cv2.VideoWriter('ttt.mp4', cv2.VideoWriter_fourcc('m', 'p', '4', 'v'), fps, size) + centerface = CenterFace() + while ret: + start_time = time.time() + dets, lms = centerface(frame, h, w, threshold=0.35) + end_time = time.time() + print("detectOneframe time: " + str(end_time - start_time)) + face_list = [] + name_list = [] + print(dets.shape) + for i,det in enumerate(dets): + boxes, score = det[:4], det[4] + img_w = int(boxes[2] - boxes[0]) + img_h = int(boxes[3] - boxes[1]) + distace = int(abs(img_w - img_h) / 2) + img_w1 = int(boxes[0]) - distace + img_w2 = int(boxes[2]) + distace + # print(img_w,img_h,distace,max_hw) + if img_w <= img_h and img_w1 >= 0 and img_w2 <= frame.shape[1]: + img112 = frame[int(boxes[1]):int(boxes[3]), img_w1:img_w2, :] + img112 = cv2.resize(img112, (112, 112)) + # cv2.imwrite("./img/man"+str(count)+".jpg", img112) + # count += 1 + face_list.append(img112) + else: + img112 = frame[int(boxes[1]):int(boxes[3]), int(boxes[0]):int(boxes[2]), :] + img112 = cv2.resize(img112, (112, 112)) + face_list.append(img112) + if len(face_list) != 0: + face_list = np.array(face_list) + face_list = face_list.transpose((0,3,1,2)) + face_list = np.array(face_list, dtype=np.float32) + face_list -= 127.5 + face_list /= 127.5 + print(face_list.shape) + face_list = torch.from_numpy(face_list) + start_time = time.time() + name_list = findAll(face_list, model, k_v) + # for face in face_list: + # face = face[np.newaxis, :, :, :] + # + # name_list.append(findOne(face,model,k_v)) + end_time = time.time() + print("findOneframe time: "+str(end_time-start_time)) + img_PIL = Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)) + draw = ImageDraw.Draw(img_PIL) + font = ImageFont.truetype("font.ttf",18) + for i,det in enumerate(dets): + boxes, score = det[:4], det[4] + # cv2.rectangle(frame, (int(boxes[0]), int(boxes[1])), (int(boxes[2]), int(boxes[3])), (2, 255, 0), 1) + # cv2.putText(frame, name_list[i], (int(boxes[0]), int(boxes[1])), cv2.FONT_HERSHEY_COMPLEX, 0.4, + # (0, 225, 255), 1) + name = name_list[i][:3] + if not isinstance(name, np.unicode): + name = name.decode('utf8') + draw.text((int(boxes[0]), int(boxes[1])),name,fill=(255, 0, 0),font=font) + draw.rectangle((int(boxes[0]), int(boxes[1]),int(boxes[2]), int(boxes[3])),outline="green",width=2) + frame = cv2.cvtColor(np.asarray(img_PIL),cv2.COLOR_RGB2BGR) + cv2.imshow('out', frame) + out.write(frame) + # Press Q on keyboard to stop recording + if cv2.waitKey(1) & 0xFF == ord('q'): + break + ret, frame = cap.read() + cap.release() + out.release() + cv2.destroyAllWindows() + + +video_GPU_retinaface() +#video_GPU() +#show() diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..fbb1f29 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,111 @@ +Package Version +---------------------- ----------- +appdirs 1.4.4 +attrs 21.2.0 +backcall 0.2.0 +beautifulsoup4 4.9.3 +certifi 2021.5.30 +cffi 1.14.0 +chardet 4.0.0 +click 8.0.1 +conda 4.9.1 +conda-build 3.20.5 +conda-package-handling 1.7.0 +cryptography 2.9.2 +cycler 0.10.0 +dataclasses 0.6 +decorator 4.4.2 +dnspython 2.0.0 +faiss-cpu 1.7.1 +filelock 3.0.12 +fire 0.4.0 +Flask 1.1.2 +future 0.18.2 +glob2 0.7 +graphsurgeon 0.4.5 +graphviz 0.8.4 +h5py 3.3.0 +idna 2.10 +imageio 2.9.0 +iniconfig 1.1.1 +ipython 7.18.1 +ipython-genutils 0.2.0 +itsdangerous 2.0.1 +jedi 0.17.2 +Jinja2 3.0.1 +joblib 1.0.1 +kiwisolver 1.3.1 +libarchive-c 2.9 +Mako 1.1.4 +MarkupSafe 2.0.1 +matplotlib 3.4.1 +mkl-fft 1.2.0 +mkl-random 1.1.1 +mkl-service 2.3.0 +mxnet 1.8.0.post0 +networkx 2.5.1 +nltk 3.6 +numpy 1.20.3 +olefile 0.46 +opencv-python 4.5.1.48 +packaging 21.0 +pandas 1.2.4 +parso 0.7.0 +pexpect 4.8.0 +pickleshare 0.7.5 +Pillow 8.0.0 +pip 20.0.2 +pkginfo 1.6.0 +pluggy 1.0.0 +prefetch-generator 1.0.1 +prompt-toolkit 3.0.8 +protobuf 3.15.8 +psutil 5.7.2 +ptyprocess 0.6.0 +py 1.9.0 +pycosat 0.6.3 +pycparser 2.20 +pycuda 2021.1 +Pygments 2.7.1 +pyOpenSSL 19.1.0 +pyparsing 2.4.7 +PySocks 1.7.1 +pytest 6.2.5 +python-dateutil 2.8.1 +python-etcd 0.4.5 +pytools 2021.2.6 +pytz 2020.1 +PyWavelets 1.1.1 +PyYAML 5.3.1 +pyzmq 22.1.0 +regex 2021.8.3 +requests 2.25.1 +ruamel-yaml 0.15.87 +scikit-image 0.18.1 +scipy 1.6.3 +seaborn 0.11.1 +setuptools 57.1.0 +six 1.14.0 +soupsieve 2.0.1 +tensorboard-logger 0.1.0 +tensorrt 7.2.3.4 +termcolor 1.1.0 +tifffile 2021.4.8 +toml 0.10.2 +torch 1.7.1 +torch2trt 0.2.0 +torchelastic 0.2.1 +torchfile 0.1.0 +torchtext 0.8.0 +torchvision 0.8.2 +tornado 6.1 +tqdm 4.46.0 +traitlets 5.0.5 +typing-extensions 3.7.4.3 +uff 0.6.9 +urllib3 1.26.5 +visdom 0.1.8 +wcwidth 0.2.5 +websocket-client 1.1.0 +Werkzeug 2.0.1 +wheel 0.34.2 diff --git a/retinaface_arcface.py b/retinaface_arcface.py new file mode 100644 index 0000000..2660192 --- /dev/null +++ b/retinaface_arcface.py @@ -0,0 +1,762 @@ +from __future__ import print_function +import os +import argparse +import re + +import faiss +import torch +import torch.backends.cudnn as cudnn +import numpy as np +from data import cfg_mnet, cfg_re50 +from face_api import create_database_from_img, load_arcface_model, findAll +from layers.functions.prior_box import PriorBox +from utils.nms.py_cpu_nms import py_cpu_nms +import cv2 +from models.retinaface import RetinaFace +from utils.box_utils import decode, decode_landm +import time +from face_api import load_arcface_model, load_npy +from skimage import transform as trans +from backbones import iresnet100, iresnet18 +#from create_database import findOne, load_npy,findAll +from PIL import Image, ImageDraw,ImageFont + +parser = argparse.ArgumentParser(description='Retinaface') + +parser.add_argument('-m', '--trained_model', default='./weights/mobilenet0.25_Final.pth', + type=str, help='Trained state_dict file path to open') +parser.add_argument('--network', default='mobile0.25', help='Backbone network mobile0.25 or resnet50') +parser.add_argument('--cpu', action="store_true", default=False if torch.cuda.is_available() else True, help='Use cpu inference') +parser.add_argument('--confidence_threshold', default=0.02, type=float, help='confidence_threshold') +parser.add_argument('--top_k', default=5000, type=int, help='top_k') +parser.add_argument('--nms_threshold', default=0.4, type=float, help='nms_threshold') +parser.add_argument('--keep_top_k', default=750, type=int, help='keep_top_k') +parser.add_argument('-s', '--save_image', action="store_true", default=True, help='show detection results') +parser.add_argument('--vis_thres', default=0.6, type=float, help='visualization_threshold') +args = parser.parse_args() + + +def check_keys(model, pretrained_state_dict): + ckpt_keys = set(pretrained_state_dict.keys()) + model_keys = set(model.state_dict().keys()) + used_pretrained_keys = model_keys & ckpt_keys + unused_pretrained_keys = ckpt_keys - model_keys + missing_keys = model_keys - ckpt_keys + print('Missing keys:{}'.format(len(missing_keys))) + print('Unused checkpoint keys:{}'.format(len(unused_pretrained_keys))) + print('Used keys:{}'.format(len(used_pretrained_keys))) + assert len(used_pretrained_keys) > 0, 'load NONE from pretrained checkpoint' + return True + + +def remove_prefix(state_dict, prefix): + ''' Old style model is stored with all names of parameters sharing common prefix 'module.' ''' + print('remove prefix \'{}\''.format(prefix)) + f = lambda x: x.split(prefix, 1)[-1] if x.startswith(prefix) else x + return {f(key): value for key, value in state_dict.items()} + + +def load_model(model, pretrained_path, load_to_cpu): + print('Loading pretrained model from {}'.format(pretrained_path)) + if load_to_cpu: + pretrained_dict = torch.load(pretrained_path, map_location=lambda storage, loc: storage) + else: + device = torch.cuda.current_device() + pretrained_dict = torch.load(pretrained_path, map_location=lambda storage, loc: storage.cuda(device)) + if "state_dict" in pretrained_dict.keys(): + pretrained_dict = remove_prefix(pretrained_dict['state_dict'], 'module.') + else: + pretrained_dict = remove_prefix(pretrained_dict, 'module.') + check_keys(model, pretrained_dict) + model.load_state_dict(pretrained_dict, strict=False) + return model + +def image_to112x112_retinaface(): + torch.set_grad_enabled(False) + cfg = None + if args.network == "mobile0.25": + cfg = cfg_mnet + elif args.network == "resnet50": + cfg = cfg_re50 + # net and model + net = RetinaFace(cfg=cfg, phase = 'test') + net = load_model(net, args.trained_model, args.cpu) + net.eval() + print('Finished loading model!') + #print(net) + cudnn.benchmark = True + device = torch.device("cpu" if args.cpu else "cuda") + net = net.to(device) + + resize = 1 + input_path = r"D:\Download\out\cfp" + output_path = "D:\Download\out\cfp_align" + folder1 = os.listdir(input_path) + count = 0 + count2 =0 + for f in folder1: + output_name_path = os.path.join(output_path, f) + if os.path.exists(output_name_path) == 0: + os.makedirs(output_name_path) + img_name_path = os.path.join(input_path, f) + img_list = os.listdir(img_name_path) + + for img in img_list: + count2 +=1 + print(count2) + path = os.path.join(img_name_path, img) + align_img_path = os.path.join(output_name_path, img) + # print(path) + frame = cv2.imread(path) + h, w = frame.shape[:2] + img = np.float32(frame) + im_height, im_width, _ = img.shape + scale = torch.Tensor([img.shape[1], img.shape[0], img.shape[1], img.shape[0]]) + img -= (104, 117, 123) + img = img.transpose(2, 0, 1) + img = torch.from_numpy(img).unsqueeze(0) + img = img.to(device) + scale = scale.to(device) + + tic = time.time() + loc, conf, landms = net(img) # forward pass + print('net forward time: {:.4f}'.format(time.time() - tic)) + + priorbox = PriorBox(cfg, image_size=(im_height, im_width)) + priors = priorbox.forward() + priors = priors.to(device) + prior_data = priors.data + boxes = decode(loc.data.squeeze(0), prior_data, cfg['variance']) + boxes = boxes * scale / resize + boxes = boxes.cpu().numpy() + scores = conf.squeeze(0).data.cpu().numpy()[:, 1] + landms = decode_landm(landms.data.squeeze(0), prior_data, cfg['variance']) + scale1 = torch.Tensor([img.shape[3], img.shape[2], img.shape[3], img.shape[2], + img.shape[3], img.shape[2], img.shape[3], img.shape[2], + img.shape[3], img.shape[2]]) + scale1 = scale1.to(device) + landms = landms * scale1 / resize + landms = landms.cpu().numpy() + + # ignore low scores + inds = np.where(scores > args.confidence_threshold)[0] + boxes = boxes[inds] + landms = landms[inds] + scores = scores[inds] + + # keep top-K before NMS + order = scores.argsort()[::-1][:args.top_k] + boxes = boxes[order] + landms = landms[order] + scores = scores[order] + + # do NMS + dets = np.hstack((boxes, scores[:, np.newaxis])).astype(np.float32, copy=False) + keep = py_cpu_nms(dets, args.nms_threshold) + # keep = nms(dets, args.nms_threshold,force_cpu=args.cpu) + dets = dets[keep, :] + landms = landms[keep] + + # keep top-K faster NMS + dets = dets[:args.keep_top_k, :] + landms = landms[:args.keep_top_k, :] + + dets = np.concatenate((dets, landms), axis=1) + score = 500 + # show image + if args.save_image: + dst = [] + for i, det in enumerate(dets): + if det[4] < args.vis_thres: + continue + center_x = (det[2] + det[0]) / 2 + center_y = (det[3] + det[1]) / 2 + if abs(center_x - 125) + abs(center_y - 125) < score: + score = abs(center_x - 125) + abs(center_y - 125) + dst = np.reshape(landms[i], (5, 2)) + if len(dst) > 0: + src1 = np.array([ + [38.3814, 51.6963], + [73.6186, 51.5014], + [56.1120, 71.7366], + [41.6361, 92.3655], + [70.8167, 92.2041]], dtype=np.float32) + tform = trans.SimilarityTransform() + tform.estimate(dst, src1) + M = tform.params[0:2, :] + + if w < 112 or h < 112: + count += 1 + #print(align_img_path) + continue + frame = cv2.warpAffine(frame, M, (w, h), borderValue=0.0) + img112 = frame[0:112, 0:112, :] + cv2.imwrite(align_img_path, img112) + print(">112 number"+str(count)) + +def sfz_to112x112_retinaface(arcface_model,cpu_or_cuda): + torch.set_grad_enabled(False) + cfg = None + if args.network == "mobile0.25": + cfg = cfg_mnet + elif args.network == "resnet50": + cfg = cfg_re50 + # net and model + net = RetinaFace(cfg=cfg, phase = 'test') + net = load_model(net, args.trained_model, args.cpu) + net.eval() + print('Finished loading model!') + #print(net) + cudnn.benchmark = True + device = torch.device("cpu" if args.cpu else "cuda") + net = net.to(device) + + resize = 1 + input_path = r"D:\Download\out\alig_students_all" + output_path = r"D:\Download\out\alig_students_all" + folder1 = os.listdir(input_path) + count = 0 + count2 =0 + print(len(folder1)) + # print(folder1[0][:-4]) + # return 0 + order_img = [] + order_name = [] + tic = time.time() + for img_name in folder1[:2500]: + # output_name_path = os.path.join(output_path, img_name) + # if os.path.exists(output_name_path) == 0: + # os.makedirs(output_name_path) + img_name_path = os.path.join(input_path, img_name) + #img_list = os.listdir(img_name_path) + count2 += 1 + if (count2 % 1000 == 0): + print('net forward time: {:.4f}'.format(time.time() - tic)) + print(count2) + if len(order_img) > 0: + order_img = np.array(order_img) + order_img = order_img.transpose((0, 3, 1, 2)) + order_img = np.array(order_img, dtype=np.float32) + order_img -= 127.5 + order_img /= 127.5 + # order_img = np.array(order_img) + # print(order_img.shape) + # print(len(order_name)) + create_database_from_img(order_name, order_img, arcface_model, "./Database/sfz_test.npy", cpu_or_cuda) + order_img = [] + order_name = [] + tic = time.time() + + # if img_name[19] != "1": + # continue + + #path = os.path.join(img_name_path, img) + align_img_path = os.path.join(output_path, img_name) + # print(path) + #frame = cv2.imdecode(np.fromfile(img_name_path, dtype=np.uint8), cv2.IMREAD_COLOR) + try: + frame = cv2.imdecode(np.fromfile(img_name_path, dtype=np.uint8), cv2.IMREAD_COLOR) + h, w, d = frame.shape + except AttributeError: + print(img_name) + continue + if d == 1: + continue + factor = h / w + if (w > 1000): + frame = cv2.resize(frame, (600, int(600 * factor))) + h, w = frame.shape[:2] + img = np.float32(frame) + im_height, im_width, _ = img.shape + scale = torch.Tensor([img.shape[1], img.shape[0], img.shape[1], img.shape[0]]) + img -= (104, 117, 123) + img = img.transpose(2, 0, 1) + img = torch.from_numpy(img).unsqueeze(0) + img = img.to(device) + scale = scale.to(device) + + #tic = time.time() + loc, conf, landms = net(img) # forward pass + #print('net forward time: {:.4f}'.format(time.time() - tic)) + + priorbox = PriorBox(cfg, image_size=(im_height, im_width)) + priors = priorbox.forward() + priors = priors.to(device) + prior_data = priors.data + boxes = decode(loc.data.squeeze(0), prior_data, cfg['variance']) + boxes = boxes * scale / resize + boxes = boxes.cpu().numpy() + scores = conf.squeeze(0).data.cpu().numpy()[:, 1] + landms = decode_landm(landms.data.squeeze(0), prior_data, cfg['variance']) + scale1 = torch.Tensor([img.shape[3], img.shape[2], img.shape[3], img.shape[2], + img.shape[3], img.shape[2], img.shape[3], img.shape[2], + img.shape[3], img.shape[2]]) + scale1 = scale1.to(device) + landms = landms * scale1 / resize + landms = landms.cpu().numpy() + + # ignore low scores + inds = np.where(scores > args.confidence_threshold)[0] + boxes = boxes[inds] + landms = landms[inds] + scores = scores[inds] + + # keep top-K before NMS + order = scores.argsort()[::-1][:args.top_k] + boxes = boxes[order] + landms = landms[order] + scores = scores[order] + + # do NMS + dets = np.hstack((boxes, scores[:, np.newaxis])).astype(np.float32, copy=False) + keep = py_cpu_nms(dets, args.nms_threshold) + # keep = nms(dets, args.nms_threshold,force_cpu=args.cpu) + dets = dets[keep, :] + landms = landms[keep] + + # keep top-K faster NMS + dets = dets[:args.keep_top_k, :] + landms = landms[:args.keep_top_k, :] + + dets = np.concatenate((dets, landms), axis=1) + score = 500 + # show image + if args.save_image: + dst = [] + for i, det in enumerate(dets): + if det[4] < args.vis_thres: + continue + # center_x = (det[2] + det[0]) / 2 + # center_y = (det[3] + det[1]) / 2 + # if abs(center_x - 125) + abs(center_y - 125) < score: + # score = abs(center_x - 125) + abs(center_y - 125) + dst = np.reshape(landms[i], (5, 2)) + if len(dst) > 0: + src1 = np.array([ + [38.3814, 51.6963], + [73.6186, 51.5014], + [56.1120, 71.7366], + [41.6361, 92.3655], + [70.8167, 92.2041]], dtype=np.float32) + tform = trans.SimilarityTransform() + tform.estimate(dst, src1) + M = tform.params[0:2, :] + + if w < 112 or h < 112: + count += 1 + print(img_name_path) + continue + frame = cv2.warpAffine(frame, M, (w, h), borderValue=0.0) + img112 = frame[0:112, 0:112, :] + order_img.append(img112) + order_name.append(img_name[:-6]) + #cv2.imencode('.jpg', img112)[1].tofile(align_img_path) + #cv2.imwrite(align_img_path, img112) + + print(">112 number"+str(count)) + if len(order_img) > 0: + order_img = np.array(order_img) + order_img = order_img.transpose((0, 3, 1, 2)) + order_img = np.array(order_img, dtype=np.float32) + order_img -= 127.5 + order_img /= 127.5 + #order_img = np.array(order_img) + # print(order_img.shape) + # print(len(order_name)) + create_database_from_img(order_name, order_img, arcface_model, "./Database/sfz_test.npy", cpu_or_cuda) + +def count_accuracy(arcface_model,cpu_or_cuda,index ,database_name_list): + torch.set_grad_enabled(False) + cfg = None + if args.network == "mobile0.25": + cfg = cfg_mnet + elif args.network == "resnet50": + cfg = cfg_re50 + # net and model + net = RetinaFace(cfg=cfg, phase = 'test') + net = load_model(net, args.trained_model, args.cpu) + net.eval() + print('Finished loading model!') + #print(net) + cudnn.benchmark = True + device = torch.device("cpu" if args.cpu else "cuda") + net = net.to(device) + + resize = 1 + input_path = r"../face/czrkzp2" + folder1 = os.listdir(input_path) + count = 0 + count2 =0 + print(len(folder1)) + # print(folder1[0][:-4]) + # return 0 + order_img = [] + order_name = [] + tic = time.time() + for img_name in folder1[:15000]: + # output_name_path = os.path.join(output_path, img_name) + # if os.path.exists(output_name_path) == 0: + # os.makedirs(output_name_path) + img_name_path = os.path.join(input_path, img_name) + #img_list = os.listdir(img_name_path) + count2 += 1 + if (count2 % 5000 == 0): + print('net forward time: {:.4f}'.format(time.time() - tic)) + print(count2) + # if len(order_img) > 0: + # order_img = np.array(order_img) + # order_img = order_img.transpose((0, 3, 1, 2)) + # order_img = np.array(order_img, dtype=np.float32) + # order_img -= 127.5 + # order_img /= 127.5 + # # order_img = np.array(order_img) + # # print(order_img.shape) + # # print(len(order_name)) + # create_database_from_img(order_name, order_img, arcface_model, "./Database/sfz_test.npy", cpu_or_cuda) + # order_img = [] + # order_name = [] + # tic = time.time() + + if img_name[19] == "1": + continue + + #path = os.path.join(img_name_path, img) + #align_img_path = os.path.join(output_path, img_name) + # print(path) + #frame = cv2.imdecode(np.fromfile(img_name_path, dtype=np.uint8), cv2.IMREAD_COLOR) + try: + frame = cv2.imread(img_name_path) + h, w, d = frame.shape + except AttributeError: + print(img_name) + continue + if d == 1: + continue + factor = h / w + if (w > 1000): + frame = cv2.resize(frame, (600, int(600 * factor))) + h, w = frame.shape[:2] + img = np.float32(frame) + im_height, im_width, _ = img.shape + scale = torch.Tensor([img.shape[1], img.shape[0], img.shape[1], img.shape[0]]) + img -= (104, 117, 123) + img = img.transpose(2, 0, 1) + img = torch.from_numpy(img).unsqueeze(0) + img = img.to(device) + scale = scale.to(device) + + #tic = time.time() + loc, conf, landms = net(img) # forward pass + #print('net forward time: {:.4f}'.format(time.time() - tic)) + + priorbox = PriorBox(cfg, image_size=(im_height, im_width)) + priors = priorbox.forward() + priors = priors.to(device) + prior_data = priors.data + boxes = decode(loc.data.squeeze(0), prior_data, cfg['variance']) + boxes = boxes * scale / resize + boxes = boxes.cpu().numpy() + scores = conf.squeeze(0).data.cpu().numpy()[:, 1] + landms = decode_landm(landms.data.squeeze(0), prior_data, cfg['variance']) + scale1 = torch.Tensor([img.shape[3], img.shape[2], img.shape[3], img.shape[2], + img.shape[3], img.shape[2], img.shape[3], img.shape[2], + img.shape[3], img.shape[2]]) + scale1 = scale1.to(device) + landms = landms * scale1 / resize + landms = landms.cpu().numpy() + + # ignore low scores + inds = np.where(scores > args.confidence_threshold)[0] + boxes = boxes[inds] + landms = landms[inds] + scores = scores[inds] + + # keep top-K before NMS + order = scores.argsort()[::-1][:args.top_k] + boxes = boxes[order] + landms = landms[order] + scores = scores[order] + + # do NMS + dets = np.hstack((boxes, scores[:, np.newaxis])).astype(np.float32, copy=False) + keep = py_cpu_nms(dets, args.nms_threshold) + # keep = nms(dets, args.nms_threshold,force_cpu=args.cpu) + dets = dets[keep, :] + landms = landms[keep] + + # keep top-K faster NMS + dets = dets[:args.keep_top_k, :] + landms = landms[:args.keep_top_k, :] + + dets = np.concatenate((dets, landms), axis=1) + score = 500 + # show image + if args.save_image: + dst = [] + for i, det in enumerate(dets): + if det[4] < args.vis_thres: + continue + # center_x = (det[2] + det[0]) / 2 + # center_y = (det[3] + det[1]) / 2 + # if abs(center_x - 125) + abs(center_y - 125) < score: + # score = abs(center_x - 125) + abs(center_y - 125) + dst = np.reshape(landms[i], (5, 2)) + if len(dst) > 0: + src1 = np.array([ + [38.3814, 51.6963], + [73.6186, 51.5014], + [56.1120, 71.7366], + [41.6361, 92.3655], + [70.8167, 92.2041]], dtype=np.float32) + tform = trans.SimilarityTransform() + tform.estimate(dst, src1) + M = tform.params[0:2, :] + + if w < 112 or h < 112: + count += 1 + print(img_name_path) + continue + frame = cv2.warpAffine(frame, M, (w, h), borderValue=0.0) + img112 = frame[0:112, 0:112, :] + order_img.append(img112) + order_name.append(img_name) + #cv2.imencode('.jpg', img112)[1].tofile(align_img_path) + #cv2.imwrite(align_img_path, img112) + + print(">112 number"+str(count)) + if len(order_img) > 0: + order_img = np.array(order_img) + order_img = order_img.transpose((0, 3, 1, 2)) + order_img = np.array(order_img, dtype=np.float32) + order_img -= 127.5 + order_img /= 127.5 + #order_img = np.array(order_img) + # print(order_img.shape) + # print(len(order_name)) + count_acc(order_name,order_img,arcface_model,index ,database_name_list,cpu_or_cuda) + +def count_acc(order_name,order_img,model,index ,database_name_list,cpu_or_cuda): + pred_name = [] + unknown = [] + print(order_img.shape) + + start_time = time.time() + # order_img = torch.from_numpy(order_img) + # order_img = order_img.to(torch.device("cuda" if cpu_or_cuda == "cuda" else "cpu")) + batch = 256 + now = 0 + number = len(order_img) + # number = 1400 + for i in range(number): + unknown.append("unknown") + + while now < number: + if now + batch < number: + name = findAll(order_img[now:now + batch], model, index ,database_name_list, cpu_or_cuda) + else: + name = findAll(order_img[now:number], model, index ,database_name_list, cpu_or_cuda) + now = now + batch + for na in name: + pred_name.append(na) + print("batch" + str(now)) + end_time = time.time() + print("findAll time: " + str(end_time - start_time)) + # print(len(pred_name)) + right = 0 + for i, name in enumerate(pred_name): + if pred_name[i] == order_name[i][:-6]: + right += 1 + filed = 0 + for i, name in enumerate(pred_name): + if pred_name[i] == unknown[i]: + filed += 1 + #print(order_name[i]) + error = 0 + print("----------------") + for i, name in enumerate(pred_name): + if pred_name[i] != order_name[i][:-6]: + error += 1 + #print(order_name[i] + " " + pred_name[i] + " ") + #print(order_name) + #print(pred_name) + print("total:" + str(number)) + print("right:" + str(right+filed) + " rate:" + str((filed+right) / number)) + #print("filed:" + str(filed) + " rate:" + str(filed / number)) + print("error:" + str(error - filed) + " rate:" + str((error - filed) / number)) +# if __name__ == '__main__': +# torch.set_grad_enabled(False) +# cfg = None +# if args.network == "mobile0.25": +# cfg = cfg_mnet +# elif args.network == "resnet50": +# cfg = cfg_re50 +# # net and model +# net = RetinaFace(cfg=cfg, phase = 'test') +# net = load_model(net, args.trained_model, args.cpu) +# net.eval() +# print('Finished loading model!') +# #print(net) +# cudnn.benchmark = True +# device = torch.device("cpu" if args.cpu else "cuda") +# net = net.to(device) +# +# resize = 1 +# +# # testing begin +# cap = cv2.VideoCapture("rtsp://47.108.74.82:8557/h264") +# ret, frame = cap.read() +# h, w = frame.shape[:2] +# fps = cap.get(cv2.CAP_PROP_FPS) +# size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), +# int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))) +# #out = cv2.VideoWriter('out.mp4', cv2.VideoWriter_fourcc('m', 'p', '4', 'v'), fps, size) +# out = cv2.VideoWriter('ttttttt.avi', cv2.VideoWriter_fourcc(*'XVID'), fps, size) +# number = 0 +# +# model = iresnet100() +# model.load_state_dict(torch.load("./model/backbone100.pth", map_location="cpu")) +# model.eval() +# k_v = load_npy("./Database/student.npy") +# +# while ret: +# tic = time.time() +# img = np.float32(frame) +# im_height, im_width, _ = img.shape +# scale = torch.Tensor([img.shape[1], img.shape[0], img.shape[1], img.shape[0]]) +# img -= (104, 117, 123) +# img = img.transpose(2, 0, 1) +# img = torch.from_numpy(img).unsqueeze(0) +# img = img.to(device) +# scale = scale.to(device) +# +# loc, conf, landms = net(img) # forward pass +# +# +# priorbox = PriorBox(cfg, image_size=(im_height, im_width)) +# priors = priorbox.forward() +# priors = priors.to(device) +# prior_data = priors.data +# boxes = decode(loc.data.squeeze(0), prior_data, cfg['variance']) +# boxes = boxes * scale / resize +# boxes = boxes.cpu().numpy() +# scores = conf.squeeze(0).data.cpu().numpy()[:, 1] +# landms = decode_landm(landms.data.squeeze(0), prior_data, cfg['variance']) +# scale1 = torch.Tensor([img.shape[3], img.shape[2], img.shape[3], img.shape[2], +# img.shape[3], img.shape[2], img.shape[3], img.shape[2], +# img.shape[3], img.shape[2]]) +# scale1 = scale1.to(device) +# landms = landms * scale1 / resize +# landms = landms.cpu().numpy() +# +# # ignore low scores +# inds = np.where(scores > args.confidence_threshold)[0] +# boxes = boxes[inds] +# landms = landms[inds] +# scores = scores[inds] +# +# # keep top-K before NMS +# order = scores.argsort()[::-1][:args.top_k] +# boxes = boxes[order] +# landms = landms[order] +# scores = scores[order] +# +# # do NMS +# dets = np.hstack((boxes, scores[:, np.newaxis])).astype(np.float32, copy=False) +# keep = py_cpu_nms(dets, args.nms_threshold) +# # keep = nms(dets, args.nms_threshold,force_cpu=args.cpu) +# dets = dets[keep, :] +# landms = landms[keep] +# +# # keep top-K faster NMS +# dets = dets[:args.keep_top_k, :] +# landms = landms[:args.keep_top_k, :] +# +# dets = np.concatenate((dets, landms), axis=1) +# face_list = [] +# name_list = [] +# #print(dets[:4]) +# print('net forward time: {:.4f}'.format(time.time() - tic)) +# start_time = time.time() +# for i, det in enumerate(dets): +# if det[4] < args.vis_thres: +# continue +# boxes, score = det[:4], det[4] +# dst = np.reshape(landms[i],(5,2)) +# #print(dst.shape) +# src1 = np.array([ +# [38.3814, 51.6963], +# [73.6186, 51.5014], +# [56.1120, 71.7366], +# [41.6361, 92.3655], +# [70.8167, 92.2041]], dtype=np.float32) +# #print(src1.shape) +# tform = trans.SimilarityTransform() +# tform.estimate(dst, src1) +# M = tform.params[0:2, :] +# frame2 = cv2.warpAffine(frame, M, (w, h), borderValue=0.0) +# img112 = frame2[0:112, 0:112, :] +# # cv2.imwrite("./img/man"+str(count)+".jpg", img112) +# # count += 1 +# face_list.append(img112) +# +# if len(face_list) != 0: +# face_list = np.array(face_list) +# face_list = face_list.transpose((0, 3, 1, 2)) +# face_list = np.array(face_list, dtype=np.float32) +# face_list -= 127.5 +# face_list /= 127.5 +# print(face_list.shape) +# face_list = torch.from_numpy(face_list) +# +# name_list = findAll(face_list, model, k_v) +# end_time = time.time() +# print("findOneframe time: " + str(end_time - start_time)) +# start_time = time.time() +# img_PIL = Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)) +# draw = ImageDraw.Draw(img_PIL) +# font = ImageFont.truetype("font.ttf", 22) +# for i, det in enumerate(dets): +# if det[4] < args.vis_thres: +# continue +# boxes, score = det[:4], det[4] +# #print(name_list) +# name = name_list[i] +# mo = r'[\u4e00-\u9fa5]*' +# name = re.match(mo, name).group(0) +# if not isinstance(name, np.unicode): +# name = name.decode('utf8') +# draw.text((int(boxes[0]), int(boxes[1])), name, fill=(255, 0, 0), font=font) +# draw.rectangle((int(boxes[0]), int(boxes[1]), int(boxes[2]), int(boxes[3])), outline="green", width=3) +# frame = cv2.cvtColor(np.asarray(img_PIL), cv2.COLOR_RGB2BGR) +# cv2.imshow('out', frame) +# out.write(frame) +# end_time = time.time() +# print("drawOneframe time: " + str(end_time - start_time)) +# # Press Q on keyboard to stop recording +# if cv2.waitKey(1) & 0xFF == ord('q'): +# break +# ret, frame = cap.read() +# cap.release() +# out.release() +# cv2.destroyAllWindows() +if __name__ == '__main__': + cpu_or_cuda = "cuda" if torch.cuda.is_available() else "cpu" + arcface_model = load_arcface_model("./model/backbone100.pth", cpu_or_cuda=cpu_or_cuda) + + k_v = load_npy("./Database/sfz_test.npy") + database_name_list = list(k_v.keys()) + vector_list = np.array(list(k_v.values())) + print(vector_list.shape) + # print(database_name_list) + nlist = 500 + quantizer = faiss.IndexFlatL2(512) # the other index + index = faiss.IndexIVFFlat(quantizer, 512, nlist, faiss.METRIC_L2) + index.train(vector_list) + # index = faiss.IndexFlatL2(512) + index.add(vector_list) + index.nprobe = 50 + + count_accuracy(arcface_model, cpu_or_cuda, index, database_name_list) + # sfz_to112x112_retinaface(arcface_model,cpu_or_cuda) + + diff --git a/retinaface_detect.py b/retinaface_detect.py new file mode 100644 index 0000000..cc41137 --- /dev/null +++ b/retinaface_detect.py @@ -0,0 +1,483 @@ +from __future__ import print_function +import re +import time +import cv2 +import torch +import torch.backends.cudnn as cudnn +import numpy as np +from skimage import transform as trans +from PIL import Image, ImageDraw, ImageFont +from data import cfg_mnet, cfg_re50 +from layers.functions.prior_box import PriorBox +from utils.nms.py_cpu_nms import py_cpu_nms +from models.retinaface import RetinaFace +from utils.box_utils import decode, decode_landm + +threshold = 1.05 +ppi = 1280 +step = 3 + +class ConfRetinaface(object): + def __init__(self, trained_model, network, cpu, confidence_threshold, top_k, nms_threshold, keep_top_k, vis_thres): + self.trained_model = trained_model + self.network = network + self.cpu = cpu + self.confidence_threshold = confidence_threshold + self.top_k = top_k + self.nms_threshold = nms_threshold + self.keep_top_k = keep_top_k + self.vis_thres = vis_thres + + +def set_retinaface_conf(cpu_or_cuda): + args = ConfRetinaface(trained_model='./weights/mobilenet0.25_Final.pth', + network='mobile0.25', + cpu=True if cpu_or_cuda == 'cpu' else False, + confidence_threshold=0.02, + top_k=5000, + nms_threshold=0.4, + keep_top_k=750, + vis_thres=0.6) + return args + + +def check_keys(model, pretrained_state_dict): + ckpt_keys = set(pretrained_state_dict.keys()) + model_keys = set(model.state_dict().keys()) + used_pretrained_keys = model_keys & ckpt_keys + unused_pretrained_keys = ckpt_keys - model_keys + missing_keys = model_keys - ckpt_keys + print('Missing keys:{}'.format(len(missing_keys))) + print('Unused checkpoint keys:{}'.format(len(unused_pretrained_keys))) + print('Used keys:{}'.format(len(used_pretrained_keys))) + assert len(used_pretrained_keys) > 0, 'load NONE from pretrained checkpoint' + return True + + +def remove_prefix(state_dict, prefix): + ''' Old style model is stored with all names of parameters sharing common prefix 'module.' ''' + print('remove prefix \'{}\''.format(prefix)) + f = lambda x: x.split(prefix, 1)[-1] if x.startswith(prefix) else x + return {f(key): value for key, value in state_dict.items()} + + +def load_model(model, pretrained_path, load_to_cpu): + print('Loading pretrained model from {}'.format(pretrained_path)) + if load_to_cpu: + pretrained_dict = torch.load(pretrained_path, map_location=lambda storage, loc: storage) + else: + device = torch.cuda.current_device() + pretrained_dict = torch.load(pretrained_path, map_location=lambda storage, loc: storage.cuda(device)) + if "state_dict" in pretrained_dict.keys(): + pretrained_dict = remove_prefix(pretrained_dict['state_dict'], 'module.') + else: + pretrained_dict = remove_prefix(pretrained_dict, 'module.') + check_keys(model, pretrained_dict) + model.load_state_dict(pretrained_dict, strict=False) + return model + + +# 加载retinaface模型 +def load_retinaface_model(args): + torch.set_grad_enabled(False) + cfg = None + if args.network == "mobile0.25": + cfg = cfg_mnet + elif args.network == "resnet50": + cfg = cfg_re50 + # net and model + net = RetinaFace(cfg=cfg, phase='test') + net = load_model(net, args.trained_model, args.cpu) + net.eval() + cudnn.benchmark = True + device = torch.device("cpu" if args.cpu else "cuda") + net = net.to(device) + print('Finished loading model!') + return net + + +# 计算两个特征向量的欧式距离 +def findEuclideanDistance(source_representation, test_representation): + euclidean_distance = source_representation - test_representation + euclidean_distance = np.sum(np.multiply(euclidean_distance, euclidean_distance)) + euclidean_distance = np.sqrt(euclidean_distance) + return euclidean_distance + + +# 归一化欧氏距离 +def l2_normalize(x): + return x / np.sqrt(np.sum(np.multiply(x, x))) + + +# 计算此特征向量与人脸库中的哪个人脸特征向量距离最近 +def findmindistance(pred, threshold, k_v): + distance = 10 + most_like = "" + for name in k_v.keys(): + tmp = findEuclideanDistance(k_v[name], pred) + if distance > tmp: + distance = tmp + most_like = name + if distance < threshold: + return most_like + else: + return "unknown" + +# +def faiss_find_face(pred,index ,database_name_list): + #print(len(database_name_list)) + start_time = time.time() + D, I = index.search(pred, 1) + name_list = [] + end_time = time.time() + print("faiss cost %fs" % (end_time - start_time)) + print(D, I) + # if D[0][0] < threshold: + # print(database_name_list[I[0][0]]) + # return database_name_list[I[0][0]] + # else: + # return "unknown" + for i,index in enumerate(I): + if D[i][0] < threshold: + #print(database_name_list[I[0][0]]) + name_list.append(database_name_list[index[0]]) + else: + name_list.append("unknown") + return name_list + +# 从人脸库中找到传入的人脸列表中的所有人脸 +def findAll(imglist, model, index ,database_name_list, k_v, cpu_or_cuda): + start_time = time.time() + imglist = torch.from_numpy(imglist) + imglist = imglist.to(torch.device("cuda" if cpu_or_cuda == "cuda" else "cpu")) + with torch.no_grad(): + name_list = [] + pred = model(imglist) + pred = pred.cpu().numpy() + print("predOne time: " + str(time.time() - start_time)) + #print(pred.shape) + start_time = time.time() + #name_list = faiss_find_face(l2_normalize(pred), index, database_name_list) + for pr in pred: + name = findmindistance(l2_normalize(pr), threshold=threshold, k_v=k_v) + print(name) + # print(l2_normalize(pr).shape) + #pr = np.expand_dims(l2_normalize(pr), 0) + #print(pr.shape) + #name = faiss_find_face(pr,index ,database_name_list) + if name != "unknown": + mo = r'[\u4e00-\u9fa5_a-zA-Z]*' + name = re.match(mo, name) + name_list.append(name.group(0)) + else: + name_list.append("unknown") + #name_list.append(name) + print("findOne time: " + str(time.time() - start_time)) + return name_list + + +# 检测单张人脸,返回1x3x112x112的数组 +def detect_one(path, net, args): + cfg = None + if args.network == "mobile0.25": + cfg = cfg_mnet + elif args.network == "resnet50": + cfg = cfg_re50 + + device = torch.device("cpu" if args.cpu else "cuda") + resize = 1 + + # testing begin + frame = cv2.imdecode(np.fromfile(path, dtype=np.uint8), cv2.IMREAD_COLOR) + h, w = frame.shape[:2] + factor = h / w + if (w > 1000): + frame = cv2.resize(frame, (600, int(600 * factor))) + h, w = frame.shape[:2] + + tic = time.time() + img = np.float32(frame) + im_height, im_width, _ = img.shape + scale = torch.Tensor([img.shape[1], img.shape[0], img.shape[1], img.shape[0]]) + img -= (104, 117, 123) + img = img.transpose(2, 0, 1) + img = torch.from_numpy(img).unsqueeze(0) + img = img.to(device) + scale = scale.to(device) + + loc, conf, landms = net(img) # forward pass + #print(loc.shape,landms.shape,conf.shape) + priorbox = PriorBox(cfg, image_size=(im_height, im_width)) + priors = priorbox.forward() + priors = priors.to(device) + prior_data = priors.data + boxes = decode(loc.data.squeeze(0), prior_data, cfg['variance']) + boxes = boxes * scale / resize + boxes = boxes.cpu().numpy() + scores = conf.squeeze(0).data.cpu().numpy()[:, 1] + landms = decode_landm(landms.data.squeeze(0), prior_data, cfg['variance']) + scale1 = torch.Tensor([img.shape[3], img.shape[2], img.shape[3], img.shape[2], + img.shape[3], img.shape[2], img.shape[3], img.shape[2], + img.shape[3], img.shape[2]]) + scale1 = scale1.to(device) + landms = landms * scale1 / resize + landms = landms.cpu().numpy() + + # ignore low scores + inds = np.where(scores > args.confidence_threshold)[0] + boxes = boxes[inds] + landms = landms[inds] + scores = scores[inds] + + # keep top-K before NMS + order = scores.argsort()[::-1][:args.top_k] + boxes = boxes[order] + landms = landms[order] + scores = scores[order] + + # do NMS + dets = np.hstack((boxes, scores[:, np.newaxis])).astype(np.float32, copy=False) + keep = py_cpu_nms(dets, args.nms_threshold) + # keep = nms(dets, args.nms_threshold,force_cpu=args.cpu) + dets = dets[keep, :] + landms = landms[keep] + + # keep top-K faster NMS + dets = dets[:args.keep_top_k, :] + landms = landms[:args.keep_top_k, :] + + dets = np.concatenate((dets, landms), axis=1) + face_list = [] + box_and_point = [] + # print(dets[:4]) + # print('net forward time: {:.4f}'.format(time.time() - tic)) + print(len(dets)) + for i, det in enumerate(dets): + + if det[4] < args.vis_thres: + continue + box_and_point.append(det) + dst = np.reshape(landms[i], (5, 2)) + # print(dst.shape) + src1 = np.array([ + [38.3814, 51.6963], + [73.6186, 51.5014], + [56.1120, 71.7366], + [41.6361, 92.3655], + [70.8167, 92.2041]], dtype=np.float32) + # print(src1.shape) + tform = trans.SimilarityTransform() + tform.estimate(dst, src1) + M = tform.params[0:2, :] + frame2 = cv2.warpAffine(frame, M, (w, h), borderValue=0.0) + img112 = frame2[0:112, 0:112, :] + # cv2.imshow('out', img112) + # cv2.waitKey(0) + face_list.append(img112) + if len(face_list) > 0: + face_list = np.array(face_list) + face_list = face_list.transpose((0, 3, 1, 2)) + face_list = np.array(face_list, dtype=np.float32) + face_list -= 127.5 + face_list /= 127.5 + box_and_point = np.array(box_and_point) + # face_list = torch.from_numpy(face_list) + # cv2.imshow('out', img112) + # cv2.waitKey(0) + return face_list, box_and_point + + +# 检测视频中的人脸并人脸识别 +def detect_video(video_path, output_path, net, arcface_model, k_v, args): + tic_total = time.time() + cfg = None + if args.network == "mobile0.25": + cfg = cfg_mnet + elif args.network == "resnet50": + cfg = cfg_re50 + device = torch.device("cpu" if args.cpu else "cuda") + resize = 1 + + # testing begin + cap = cv2.VideoCapture(video_path) + ret, frame = cap.read() + h, w = frame.shape[:2] + factor = 0 + if (w > ppi): + factor = h / w + frame = cv2.resize(frame, (ppi, int(ppi * factor))) + h, w = frame.shape[:2] + + fps = cap.get(cv2.CAP_PROP_FPS) + size = (w, h) + # size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), + # int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))) + # out = cv2.VideoWriter('out.mp4', cv2.VideoWriter_fourcc('m', 'p', '4', 'v'), fps, size) + out = cv2.VideoWriter(output_path, cv2.VideoWriter_fourcc(*'XVID'), fps, size) + number = step + dets = [] + name_list = [] + font = ImageFont.truetype("font.ttf", 22) + priorbox = PriorBox(cfg, image_size=(h, w)) + priors = priorbox.forward() + priors = priors.to(device) + prior_data = priors.data + + scale = torch.Tensor([w, h, w, h]) + scale = scale.to(device) + scale1 = torch.Tensor([w, h, w, h, + w, h, w, h, + w, h]) + scale1 = scale1.to(device) + + src1 = np.array([ + [38.3814, 51.6963], + [73.6186, 51.5014], + [56.1120, 71.7366], + [41.6361, 92.3655], + [70.8167, 92.2041]], dtype=np.float32) + # print(src1.shape) + tform = trans.SimilarityTransform() + + while ret: + tic_all = time.time() + if number == step: + tic = time.time() + img = np.float32(frame) + img -= (104, 117, 123) + img = img.transpose(2, 0, 1) + img = torch.from_numpy(img).unsqueeze(0) + img = img.to(device) + + loc, conf, landms = net(img) # forward pass + + boxes = decode(loc.data.squeeze(0), prior_data, cfg['variance']) + boxes = boxes * scale / resize + boxes = boxes.cpu().numpy() + scores = conf.squeeze(0).data.cpu().numpy()[:, 1] + landms = decode_landm(landms.data.squeeze(0), prior_data, cfg['variance']) + + landms = landms * scale1 / resize + landms = landms.cpu().numpy() + + # ignore low scores + inds = np.where(scores > args.confidence_threshold)[0] + boxes = boxes[inds] + landms = landms[inds] + scores = scores[inds] + + # keep top-K before NMS + order = scores.argsort()[::-1][:args.top_k] + boxes = boxes[order] + landms = landms[order] + scores = scores[order] + + # do NMS + dets = np.hstack((boxes, scores[:, np.newaxis])).astype(np.float32, copy=False) + keep = py_cpu_nms(dets, args.nms_threshold) + # keep = nms(dets, args.nms_threshold,force_cpu=args.cpu) + dets = dets[keep, :] + landms = landms[keep] + + # keep top-K faster NMS + dets = dets[:args.keep_top_k, :] + landms = landms[:args.keep_top_k, :] + + dets = np.concatenate((dets, landms), axis=1) + face_list = [] + name_list = [] + # print(dets[:4]) + print('net forward time: {:.4f}'.format(time.time() - tic)) + start_time = time.time() + for i, det in enumerate(dets[:4]): + if det[4] < args.vis_thres: + continue + boxes, score = det[:4], det[4] + dst = np.reshape(landms[i], (5, 2)) + # print(dst.shape) + + tform.estimate(dst, src1) + M = tform.params[0:2, :] + frame2 = cv2.warpAffine(frame, M, (w, h), borderValue=0.0) + img112 = frame2[0:112, 0:112, :] + face_list.append(img112) + + if len(face_list) != 0: + face_list = np.array(face_list) + face_list = face_list.transpose((0, 3, 1, 2)) + face_list = np.array(face_list, dtype=np.float32) + face_list -= 127.5 + face_list /= 127.5 + print(face_list.shape) + # face_list = torch.from_numpy(face_list) + name_list = findAll(face_list, arcface_model, k_v, "cpu" if args.cpu else "cuda") + end_time = time.time() + print("findOneframe time: " + str(end_time - start_time)) + start_time = time.time() + if (len(dets) != 0): + for i, det in enumerate(dets[:4]): + if det[4] < args.vis_thres: + continue + boxes, score = det[:4], det[4] + cv2.rectangle(frame, (int(boxes[0]), int(boxes[1])), (int(boxes[2]), int(boxes[3])), (2, 255, 0), 1) + + # if (len(dets) != 0): + # img_PIL = Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)) + # draw = ImageDraw.Draw(img_PIL) + # + # for i, det in enumerate(dets[:4]): + # if det[4] < args.vis_thres: + # continue + # boxes, score = det[:4], det[4] + # # print(name_list) + # name = name_list[i] + # if not isinstance(name, np.unicode): + # name = name.decode('utf8') + # draw.text((int(boxes[0]), int(boxes[1])), name, fill=(255, 0, 0), font=font) + # draw.rectangle((int(boxes[0]), int(boxes[1]), int(boxes[2]), int(boxes[3])), outline="green", width=3) + # frame = cv2.cvtColor(np.asarray(img_PIL), cv2.COLOR_RGB2BGR) + #cv2.imshow('out', frame) + #cv2.waitKey(0) + out.write(frame) + end_time = time.time() + print("drawOneframe time: " + str(end_time - start_time)) + # Press Q on keyboard to stop recording + # if cv2.waitKey(1) & 0xFF == ord('q'): + # break + ret, frame = cap.read() + number = 0 + if (ret != 0 and factor != 0): + frame = cv2.resize(frame, (ppi, int(ppi * factor))) + else: + number += 1 + if (len(dets) != 0): + img_PIL = Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)) + draw = ImageDraw.Draw(img_PIL) + for i, det in enumerate(dets[:4]): + if det[4] < args.vis_thres: + continue + boxes, score = det[:4], det[4] + # print(name_list) + name = name_list[i] + if not isinstance(name, np.unicode): + name = name.decode('utf8') + draw.text((int(boxes[0]), int(boxes[1])), name, fill=(255, 0, 0), font=font) + draw.rectangle((int(boxes[0]), int(boxes[1]), int(boxes[2]), int(boxes[3])), outline="green", + width=3) + frame = cv2.cvtColor(np.asarray(img_PIL), cv2.COLOR_RGB2BGR) + out.write(frame) + start_time = time.time() + ret, frame = cap.read() + if (ret != 0 and factor != 0): + frame = cv2.resize(frame, (ppi, int(ppi * factor))) + print("readframe time: " + str(time.time() - start_time)) + print('all time: {:.4f}'.format(time.time() - tic_all)) + cap.release() + out.release() + print('total time: {:.4f}'.format(time.time() - tic_total)) + #cv2.destroyAllWindows() + + +if __name__ == "__main__": + args = set_retinaface_conf() + print(args.cpu) diff --git a/src/__pycache__/generate_patches.cpython-38.pyc b/src/__pycache__/generate_patches.cpython-38.pyc new file mode 100644 index 0000000..134581e Binary files /dev/null and b/src/__pycache__/generate_patches.cpython-38.pyc differ diff --git a/src/__pycache__/utility.cpython-38.pyc b/src/__pycache__/utility.cpython-38.pyc new file mode 100644 index 0000000..5dbf5db Binary files /dev/null and b/src/__pycache__/utility.cpython-38.pyc differ diff --git a/src/data_io/__pycache__/functional.cpython-38.pyc b/src/data_io/__pycache__/functional.cpython-38.pyc new file mode 100644 index 0000000..7457343 Binary files /dev/null and b/src/data_io/__pycache__/functional.cpython-38.pyc differ diff --git a/src/data_io/__pycache__/transform.cpython-38.pyc b/src/data_io/__pycache__/transform.cpython-38.pyc new file mode 100644 index 0000000..f7a288d Binary files /dev/null and b/src/data_io/__pycache__/transform.cpython-38.pyc differ diff --git a/src/data_io/dataset_folder.py b/src/data_io/dataset_folder.py new file mode 100644 index 0000000..c651f41 --- /dev/null +++ b/src/data_io/dataset_folder.py @@ -0,0 +1,65 @@ +# -*- coding: utf-8 -*- +# @Time : 20-6-4 下午4:04 +# @Author : zhuying +# @Company : Minivision +# @File : dataset_folder.py +# @Software : PyCharm + +import cv2 +import torch +from torchvision import datasets +import numpy as np + + +def opencv_loader(path): + img = cv2.imread(path) + return img + + +class DatasetFolderFT(datasets.ImageFolder): + def __init__(self, root, transform=None, target_transform=None, + ft_width=10, ft_height=10, loader=opencv_loader): + super(DatasetFolderFT, self).__init__(root, transform, target_transform, loader) + self.root = root + self.ft_width = ft_width + self.ft_height = ft_height + + def __getitem__(self, index): + path, target = self.samples[index] + sample = self.loader(path) + # generate the FT picture of the sample + ft_sample = generate_FT(sample) + if sample is None: + print('image is None --> ', path) + if ft_sample is None: + print('FT image is None -->', path) + assert sample is not None + + ft_sample = cv2.resize(ft_sample, (self.ft_width, self.ft_height)) + ft_sample = torch.from_numpy(ft_sample).float() + ft_sample = torch.unsqueeze(ft_sample, 0) + + if self.transform is not None: + try: + sample = self.transform(sample) + except Exception as err: + print('Error Occured: %s' % err, path) + if self.target_transform is not None: + target = self.target_transform(target) + return sample, ft_sample, target + + +def generate_FT(image): + image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) + f = np.fft.fft2(image) + fshift = np.fft.fftshift(f) + fimg = np.log(np.abs(fshift)+1) + maxx = -1 + minn = 100000 + for i in range(len(fimg)): + if maxx < max(fimg[i]): + maxx = max(fimg[i]) + if minn > min(fimg[i]): + minn = min(fimg[i]) + fimg = (fimg - minn+1) / (maxx - minn+1) + return fimg \ No newline at end of file diff --git a/src/data_io/dataset_loader.py b/src/data_io/dataset_loader.py new file mode 100644 index 0000000..0bfdb60 --- /dev/null +++ b/src/data_io/dataset_loader.py @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- +# @Time : 20-6-4 下午3:40 +# @Author : zhuying +# @Company : Minivision +# @File : dataset_loader.py +# @Software : PyCharm + +from torch.utils.data import DataLoader +from src.data_io.dataset_folder import DatasetFolderFT +from src.data_io import transform as trans + + +def get_train_loader(conf): + train_transform = trans.Compose([ + trans.ToPILImage(), + trans.RandomResizedCrop(size=tuple(conf.input_size), + scale=(0.9, 1.1)), + trans.ColorJitter(brightness=0.4, + contrast=0.4, saturation=0.4, hue=0.1), + trans.RandomRotation(10), + trans.RandomHorizontalFlip(), + trans.ToTensor() + ]) + root_path = '{}/{}'.format(conf.train_root_path, conf.patch_info) + trainset = DatasetFolderFT(root_path, train_transform, + None, conf.ft_width, conf.ft_height) + train_loader = DataLoader( + trainset, + batch_size=conf.batch_size, + shuffle=True, + pin_memory=True, + num_workers=16) + return train_loader diff --git a/src/data_io/functional.py b/src/data_io/functional.py new file mode 100644 index 0000000..a448bc2 --- /dev/null +++ b/src/data_io/functional.py @@ -0,0 +1,589 @@ +# -*- coding: utf-8 -*- +# @Time : 20-6-4 下午6:18 +# @Author : zhuying +# @Company : Minivision +# @File : functional.py +# @Software : PyCharm + +from __future__ import division +import torch +from PIL import Image, ImageOps, ImageEnhance +try: + import accimage +except ImportError: + accimage = None +import numpy as np +import numbers +import types +import collections +import warnings + + +def _is_pil_image(img): + if accimage is not None: + return isinstance(img, (Image.Image, accimage.Image)) + else: + return isinstance(img, Image.Image) + + +def _is_tensor_image(img): + return torch.is_tensor(img) and img.ndimension() == 3 + + +def _is_numpy_image(img): + return isinstance(img, np.ndarray) and (img.ndim in {2, 3}) + + +def to_tensor(pic): + """Convert a ``PIL Image`` or ``numpy.ndarray`` to tensor. + + See ``ToTensor`` for more details. + + Args: + pic (PIL Image or numpy.ndarray): Image to be converted to tensor. + + Returns: + Tensor: Converted image. + """ + if not(_is_pil_image(pic) or _is_numpy_image(pic)): + raise TypeError('pic should be PIL Image or ndarray. Got {}'.format(type(pic))) + + if isinstance(pic, np.ndarray): + # handle numpy array + # IR image channel=1: modify by lzc --> 20190730 + if pic.ndim == 2: + pic = pic.reshape((pic.shape[0], pic.shape[1], 1)) + + img = torch.from_numpy(pic.transpose((2, 0, 1))) + # backward compatibility + # return img.float().div(255) modify by zkx + return img.float() + if accimage is not None and isinstance(pic, accimage.Image): + nppic = np.zeros([pic.channels, pic.height, pic.width], dtype=np.float32) + pic.copyto(nppic) + return torch.from_numpy(nppic) + + # handle PIL Image + if pic.mode == 'I': + img = torch.from_numpy(np.array(pic, np.int32, copy=False)) + elif pic.mode == 'I;16': + img = torch.from_numpy(np.array(pic, np.int16, copy=False)) + else: + img = torch.ByteTensor(torch.ByteStorage.from_buffer(pic.tobytes())) + # PIL image mode: 1, L, P, I, F, RGB, YCbCr, RGBA, CMYK + if pic.mode == 'YCbCr': + nchannel = 3 + elif pic.mode == 'I;16': + nchannel = 1 + else: + nchannel = len(pic.mode) + img = img.view(pic.size[1], pic.size[0], nchannel) + # put it from HWC to CHW format + # yikes, this transpose takes 80% of the loading time/CPU + img = img.transpose(0, 1).transpose(0, 2).contiguous() + if isinstance(img, torch.ByteTensor): + # return img.float().div(255) #modified by zkx + return img.float() + else: + return img + + +def to_pil_image(pic, mode=None): + """Convert a tensor or an ndarray to PIL Image. + + See :class:`~torchvision.transforms.ToPIlImage` for more details. + + Args: + pic (Tensor or numpy.ndarray): Image to be converted to PIL Image. + mode (`PIL.Image mode`_): color space and pixel depth of input data (optional). + + .. _PIL.Image mode: http://pillow.readthedocs.io/en/3.4.x/handbook/concepts.html#modes + + Returns: + PIL Image: Image converted to PIL Image. + """ + if not(_is_numpy_image(pic) or _is_tensor_image(pic)): + raise TypeError('pic should be Tensor or ndarray. Got {}.'.format(type(pic))) + + npimg = pic + if isinstance(pic, torch.FloatTensor): + pic = pic.mul(255).byte() + if torch.is_tensor(pic): + npimg = np.transpose(pic.numpy(), (1, 2, 0)) + + if not isinstance(npimg, np.ndarray): + raise TypeError('Input pic must be a torch.Tensor or NumPy ndarray, ' + + 'not {}'.format(type(npimg))) + + if npimg.shape[2] == 1: + expected_mode = None + npimg = npimg[:, :, 0] + if npimg.dtype == np.uint8: + expected_mode = 'L' + if npimg.dtype == np.int16: + expected_mode = 'I;16' + if npimg.dtype == np.int32: + expected_mode = 'I' + elif npimg.dtype == np.float32: + expected_mode = 'F' + if mode is not None and mode != expected_mode: + raise ValueError("Incorrect mode ({}) supplied for input type {}. Should be {}" + .format(mode, np.dtype, expected_mode)) + mode = expected_mode + + elif npimg.shape[2] == 4: + permitted_4_channel_modes = ['RGBA', 'CMYK'] + if mode is not None and mode not in permitted_4_channel_modes: + raise ValueError("Only modes {} are supported for 4D inputs".format(permitted_4_channel_modes)) + + if mode is None and npimg.dtype == np.uint8: + mode = 'RGBA' + else: + permitted_3_channel_modes = ['RGB', 'YCbCr', 'HSV'] + if mode is not None and mode not in permitted_3_channel_modes: + raise ValueError("Only modes {} are supported for 3D inputs".format(permitted_3_channel_modes)) + if mode is None and npimg.dtype == np.uint8: + mode = 'RGB' + + if mode is None: + raise TypeError('Input type {} is not supported'.format(npimg.dtype)) + + return Image.fromarray(npimg, mode=mode) + + +def normalize(tensor, mean, std): + """Normalize a tensor image with mean and standard deviation. + + See ``Normalize`` for more details. + + Args: + tensor (Tensor): Tensor image of size (C, H, W) to be normalized. + mean (sequence): Sequence of means for each channel. + std (sequence): Sequence of standard deviations for each channely. + + Returns: + Tensor: Normalized Tensor image. + """ + if not _is_tensor_image(tensor): + raise TypeError('tensor is not a torch image.') + + for t, m, s in zip(tensor, mean, std): + t.sub_(m).div_(s) + return tensor + + +def resize(img, size, interpolation=Image.BILINEAR): + """Resize the input PIL Image to the given size. + + Args: + img (PIL Image): Image to be resized. + size (sequence or int): Desired output size. If size is a sequence like + (h, w), the output size will be matched to this. If size is an int, + the smaller edge of the image will be matched to this number maintaing + the aspect ratio. i.e, if height > width, then image will be rescaled to + (size * height / width, size) + interpolation (int, optional): Desired interpolation. Default is + ``PIL.Image.BILINEAR`` + + Returns: + PIL Image: Resized image. + """ + if not _is_pil_image(img): + raise TypeError('img should be PIL Image. Got {}'.format(type(img))) + if not (isinstance(size, int) or (isinstance(size, collections.Iterable) and len(size) == 2)): + raise TypeError('Got inappropriate size arg: {}'.format(size)) + + if isinstance(size, int): + w, h = img.size + if (w <= h and w == size) or (h <= w and h == size): + return img + if w < h: + ow = size + oh = int(size * h / w) + return img.resize((ow, oh), interpolation) + else: + oh = size + ow = int(size * w / h) + return img.resize((ow, oh), interpolation) + else: + return img.resize(size[::-1], interpolation) + + +def scale(*args, **kwargs): + warnings.warn("The use of the transforms.Scale transform is deprecated, " + + "please use transforms.Resize instead.") + return resize(*args, **kwargs) + + +def pad(img, padding, fill=0): + """Pad the given PIL Image on all sides with the given "pad" value. + + Args: + img (PIL Image): Image to be padded. + padding (int or tuple): Padding on each border. If a single int is provided this + is used to pad all borders. If tuple of length 2 is provided this is the padding + on left/right and top/bottom respectively. If a tuple of length 4 is provided + this is the padding for the left, top, right and bottom borders + respectively. + fill: Pixel fill value. Default is 0. If a tuple of + length 3, it is used to fill R, G, B channels respectively. + + Returns: + PIL Image: Padded image. + """ + if not _is_pil_image(img): + raise TypeError('img should be PIL Image. Got {}'.format(type(img))) + + if not isinstance(padding, (numbers.Number, tuple)): + raise TypeError('Got inappropriate padding arg') + if not isinstance(fill, (numbers.Number, str, tuple)): + raise TypeError('Got inappropriate fill arg') + + if isinstance(padding, collections.Sequence) and len(padding) not in [2, 4]: + raise ValueError("Padding must be an int or a 2, or 4 element tuple, not a " + + "{} element tuple".format(len(padding))) + + return ImageOps.expand(img, border=padding, fill=fill) + + +def crop(img, i, j, h, w): + """Crop the given PIL Image. + + Args: + img (PIL Image): Image to be cropped. + i: Upper pixel coordinate. + j: Left pixel coordinate. + h: Height of the cropped image. + w: Width of the cropped image. + + Returns: + PIL Image: Cropped image. + """ + if not _is_pil_image(img): + raise TypeError('img should be PIL Image. Got {}'.format(type(img))) + + return img.crop((j, i, j + w, i + h)) + + +def center_crop(img, output_size): + if isinstance(output_size, numbers.Number): + output_size = (int(output_size), int(output_size)) + w, h = img.size + th, tw = output_size + i = int(round((h - th) / 2.)) + j = int(round((w - tw) / 2.)) + return crop(img, i, j, th, tw) + + +def resized_crop(img, i, j, h, w, size, interpolation=Image.BILINEAR): + """Crop the given PIL Image and resize it to desired size. + + Notably used in RandomResizedCrop. + + Args: + img (PIL Image): Image to be cropped. + i: Upper pixel coordinate. + j: Left pixel coordinate. + h: Height of the cropped image. + w: Width of the cropped image. + size (sequence or int): Desired output size. Same semantics as ``scale``. + interpolation (int, optional): Desired interpolation. Default is + ``PIL.Image.BILINEAR``. + Returns: + PIL Image: Cropped image. + """ + assert _is_pil_image(img), 'img should be PIL Image' + img = crop(img, i, j, h, w) + img = resize(img, size, interpolation) + return img + + +def hflip(img): + """Horizontally flip the given PIL Image. + + Args: + img (PIL Image): Image to be flipped. + + Returns: + PIL Image: Horizontall flipped image. + """ + if not _is_pil_image(img): + raise TypeError('img should be PIL Image. Got {}'.format(type(img))) + + return img.transpose(Image.FLIP_LEFT_RIGHT) + + +def vflip(img): + """Vertically flip the given PIL Image. + + Args: + img (PIL Image): Image to be flipped. + + Returns: + PIL Image: Vertically flipped image. + """ + if not _is_pil_image(img): + raise TypeError('img should be PIL Image. Got {}'.format(type(img))) + + return img.transpose(Image.FLIP_TOP_BOTTOM) + + +def five_crop(img, size): + """Crop the given PIL Image into four corners and the central crop. + + .. Note:: + This transform returns a tuple of images and there may be a + mismatch in the number of inputs and targets your ``Dataset`` returns. + + Args: + size (sequence or int): Desired output size of the crop. If size is an + int instead of sequence like (h, w), a square crop (size, size) is + made. + Returns: + tuple: tuple (tl, tr, bl, br, center) corresponding top left, + top right, bottom left, bottom right and center crop. + """ + if isinstance(size, numbers.Number): + size = (int(size), int(size)) + else: + assert len(size) == 2, "Please provide only two dimensions (h, w) for size." + + w, h = img.size + crop_h, crop_w = size + if crop_w > w or crop_h > h: + raise ValueError("Requested crop size {} is bigger than input size {}".format(size, + (h, w))) + tl = img.crop((0, 0, crop_w, crop_h)) + tr = img.crop((w - crop_w, 0, w, crop_h)) + bl = img.crop((0, h - crop_h, crop_w, h)) + br = img.crop((w - crop_w, h - crop_h, w, h)) + center = center_crop(img, (crop_h, crop_w)) + return (tl, tr, bl, br, center) + + +def ten_crop(img, size, vertical_flip=False): + """Crop the given PIL Image into four corners and the central crop plus the + flipped version of these (horizontal flipping is used by default). + + .. Note:: + This transform returns a tuple of images and there may be a + mismatch in the number of inputs and targets your ``Dataset`` returns. + + Args: + size (sequence or int): Desired output size of the crop. If size is an + int instead of sequence like (h, w), a square crop (size, size) is + made. + vertical_flip (bool): Use vertical flipping instead of horizontal + + Returns: + tuple: tuple (tl, tr, bl, br, center, tl_flip, tr_flip, bl_flip, + br_flip, center_flip) corresponding top left, top right, + bottom left, bottom right and center crop and same for the + flipped image. + """ + if isinstance(size, numbers.Number): + size = (int(size), int(size)) + else: + assert len(size) == 2, "Please provide only two dimensions (h, w) for size." + + first_five = five_crop(img, size) + + if vertical_flip: + img = vflip(img) + else: + img = hflip(img) + + second_five = five_crop(img, size) + return first_five + second_five + + +def adjust_brightness(img, brightness_factor): + """Adjust brightness of an Image. + + Args: + img (PIL Image): PIL Image to be adjusted. + brightness_factor (float): How much to adjust the brightness. Can be + any non negative number. 0 gives a black image, 1 gives the + original image while 2 increases the brightness by a factor of 2. + + Returns: + PIL Image: Brightness adjusted image. + """ + if not _is_pil_image(img): + raise TypeError('img should be PIL Image. Got {}'.format(type(img))) + + enhancer = ImageEnhance.Brightness(img) + img = enhancer.enhance(brightness_factor) + return img + + +def adjust_contrast(img, contrast_factor): + """Adjust contrast of an Image. + + Args: + img (PIL Image): PIL Image to be adjusted. + contrast_factor (float): How much to adjust the contrast. Can be any + non negative number. 0 gives a solid gray image, 1 gives the + original image while 2 increases the contrast by a factor of 2. + + Returns: + PIL Image: Contrast adjusted image. + """ + if not _is_pil_image(img): + raise TypeError('img should be PIL Image. Got {}'.format(type(img))) + + enhancer = ImageEnhance.Contrast(img) + img = enhancer.enhance(contrast_factor) + return img + + +def adjust_saturation(img, saturation_factor): + """Adjust color saturation of an image. + + Args: + img (PIL Image): PIL Image to be adjusted. + saturation_factor (float): How much to adjust the saturation. 0 will + give a black and white image, 1 will give the original image while + 2 will enhance the saturation by a factor of 2. + + Returns: + PIL Image: Saturation adjusted image. + """ + if not _is_pil_image(img): + raise TypeError('img should be PIL Image. Got {}'.format(type(img))) + + enhancer = ImageEnhance.Color(img) + img = enhancer.enhance(saturation_factor) + return img + + +def adjust_hue(img, hue_factor): + """Adjust hue of an image. + + The image hue is adjusted by converting the image to HSV and + cyclically shifting the intensities in the hue channel (H). + The image is then converted back to original image mode. + + `hue_factor` is the amount of shift in H channel and must be in the + interval `[-0.5, 0.5]`. + + See https://en.wikipedia.org/wiki/Hue for more details on Hue. + + Args: + img (PIL Image): PIL Image to be adjusted. + hue_factor (float): How much to shift the hue channel. Should be in + [-0.5, 0.5]. 0.5 and -0.5 give complete reversal of hue channel in + HSV space in positive and negative direction respectively. + 0 means no shift. Therefore, both -0.5 and 0.5 will give an image + with complementary colors while 0 gives the original image. + + Returns: + PIL Image: Hue adjusted image. + """ + if not(-0.5 <= hue_factor <= 0.5): + raise ValueError('hue_factor is not in [-0.5, 0.5].'.format(hue_factor)) + + if not _is_pil_image(img): + raise TypeError('img should be PIL Image. Got {}'.format(type(img))) + + input_mode = img.mode + if input_mode in {'L', '1', 'I', 'F'}: + return img + + h, s, v = img.convert('HSV').split() + + np_h = np.array(h, dtype=np.uint8) + # uint8 addition take cares of rotation across boundaries + with np.errstate(over='ignore'): + np_h += np.uint8(hue_factor * 255) + h = Image.fromarray(np_h, 'L') + + img = Image.merge('HSV', (h, s, v)).convert(input_mode) + return img + + +def adjust_gamma(img, gamma, gain=1): + """Perform gamma correction on an image. + + Also known as Power Law Transform. Intensities in RGB mode are adjusted + based on the following equation: + + I_out = 255 * gain * ((I_in / 255) ** gamma) + + See https://en.wikipedia.org/wiki/Gamma_correction for more details. + + Args: + img (PIL Image): PIL Image to be adjusted. + gamma (float): Non negative real number. gamma larger than 1 make the + shadows darker, while gamma smaller than 1 make dark regions + lighter. + gain (float): The constant multiplier. + """ + if not _is_pil_image(img): + raise TypeError('img should be PIL Image. Got {}'.format(type(img))) + + if gamma < 0: + raise ValueError('Gamma should be a non-negative real number') + + input_mode = img.mode + img = img.convert('RGB') + + np_img = np.array(img, dtype=np.float32) + np_img = 255 * gain * ((np_img / 255) ** gamma) + np_img = np.uint8(np.clip(np_img, 0, 255)) + + img = Image.fromarray(np_img, 'RGB').convert(input_mode) + return img + + +def rotate(img, angle, resample=False, expand=False, center=None): + """Rotate the image by angle and then (optionally) translate it by (n_columns, n_rows) + + + Args: + img (PIL Image): PIL Image to be rotated. + angle ({float, int}): In degrees degrees counter clockwise order. + resample ({PIL.Image.NEAREST, PIL.Image.BILINEAR, PIL.Image.BICUBIC}, optional): + An optional resampling filter. + See http://pillow.readthedocs.io/en/3.4.x/handbook/concepts.html#filters + If omitted, or if the image has mode "1" or "P", it is set to PIL.Image.NEAREST. + expand (bool, optional): Optional expansion flag. + If true, expands the output image to make it large enough to hold the entire rotated image. + If false or omitted, make the output image the same size as the input image. + Note that the expand flag assumes rotation around the center and no translation. + center (2-tuple, optional): Optional center of rotation. + Origin is the upper left corner. + Default is the center of the image. + """ + + if not _is_pil_image(img): + raise TypeError('img should be PIL Image. Got {}'.format(type(img))) + + return img.rotate(angle, resample, expand, center) + + +def to_grayscale(img, num_output_channels=1): + """Convert image to grayscale version of image. + + Args: + img (PIL Image): Image to be converted to grayscale. + + Returns: + PIL Image: Grayscale version of the image. + if num_output_channels == 1 : returned image is single channel + if num_output_channels == 3 : returned image is 3 channel with r == g == b + """ + if not _is_pil_image(img): + raise TypeError('img should be PIL Image. Got {}'.format(type(img))) + + if num_output_channels == 1: + img = img.convert('L') + elif num_output_channels == 3: + img = img.convert('L') + np_img = np.array(img, dtype=np.uint8) + np_img = np.dstack([np_img, np_img, np_img]) + img = Image.fromarray(np_img, 'RGB') + else: + raise ValueError('num_output_channels should be either 1 or 3') + + return img diff --git a/src/data_io/transform.py b/src/data_io/transform.py new file mode 100644 index 0000000..5aa1654 --- /dev/null +++ b/src/data_io/transform.py @@ -0,0 +1,347 @@ +# -*- coding: utf-8 -*- +# @Time : 20-6-4 下午4:19 +# @Author : zhuying +# @Company : Minivision +# @File : transform.py +# @Software : PyCharm + +from __future__ import division +import math +import random +from PIL import Image +try: + import accimage +except ImportError: + accimage = None +import numpy as np +import numbers +import types + +from src.data_io import functional as F + +__all__ = ["Compose", "ToTensor", "ToPILImage", "Normalize", "RandomHorizontalFlip", + "Lambda", "RandomResizedCrop", "ColorJitter", "RandomRotation"] + + +class Compose(object): + """Composes several transforms together. + + Args: + transforms (list of ``Transform`` objects): list of transforms to compose. + + Example: + >>> transforms.Compose([ + >>> transforms.CenterCrop(10), + >>> transforms.ToTensor(), + >>> ]) + """ + + def __init__(self, transforms): + self.transforms = transforms + + def __call__(self, img): + for t in self.transforms: + img = t(img) + return img + + +class ToTensor(object): + + """Convert a ``PIL Image`` or ``numpy.ndarray`` to tensor. + + Converts a PIL Image or numpy.ndarray (H x W x C) in the range + [0, 255] to a torch.FloatTensor of shape (C x H x W) in the range [0.0, 1.0]. + """ + + def __call__(self, pic): + """ + Args: + pic (PIL Image or numpy.ndarray): Image to be converted to tensor. + + Returns: + Tensor: Converted image. + """ + return F.to_tensor(pic) + + +class Lambda(object): + """Apply a user-defined lambda as a transform. + + Args: + lambd (function): Lambda/function to be used for transform. + """ + + def __init__(self, lambd): + assert isinstance(lambd, types.LambdaType) + self.lambd = lambd + + def __call__(self, img): + return self.lambd(img) + + +class ToPILImage(object): + """Convert a tensor or an ndarray to PIL Image. + + Converts a torch.*Tensor of shape C x H x W or a numpy ndarray of shape + H x W x C to a PIL Image while preserving the value range. + + Args: + mode (`PIL.Image mode`_): color space and pixel depth of input data (optional). + If ``mode`` is ``None`` (default) there are some assumptions made about the input data: + 1. If the input has 3 channels, the ``mode`` is assumed to be ``RGB``. + 2. If the input has 4 channels, the ``mode`` is assumed to be ``RGBA``. + 3. If the input has 1 channel, the ``mode`` is determined by the data type (i,e, + ``int``, ``float``, ``short``). + + .. _PIL.Image mode: http://pillow.readthedocs.io/en/3.4.x/handbook/concepts.html#modes + """ + def __init__(self, mode=None): + self.mode = mode + + def __call__(self, pic): + """ + Args: + pic (Tensor or numpy.ndarray): Image to be converted to PIL Image. + + Returns: + PIL Image: Image converted to PIL Image. + + """ + return F.to_pil_image(pic, self.mode) + + +class Normalize(object): + """Normalize an tensor image with mean and standard deviation. + Given mean: ``(M1,...,Mn)`` and std: ``(S1,..,Sn)`` for ``n`` channels, this transform + will normalize each channel of the input ``torch.*Tensor`` i.e. + ``input[channel] = (input[channel] - mean[channel]) / std[channel]`` + + Args: + mean (sequence): Sequence of means for each channel. + std (sequence): Sequence of standard deviations for each channel. + """ + + def __init__(self, mean, std): + self.mean = mean + self.std = std + + def __call__(self, tensor): + """ + Args: + tensor (Tensor): Tensor image of size (C, H, W) to be normalized. + + Returns: + Tensor: Normalized Tensor image. + """ + return F.normalize(tensor, self.mean, self.std) + + +class RandomHorizontalFlip(object): + """Horizontally flip the given PIL Image randomly with a probability of 0.5.""" + + def __call__(self, img): + """ + Args: + img (PIL Image): Image to be flipped. + + Returns: + PIL Image: Randomly flipped image. + """ + if random.random() < 0.5: + return F.hflip(img) + return img + + +class RandomResizedCrop(object): + """Crop the given PIL Image to random size and aspect ratio. + + A crop of random size (default: of 0.08 to 1.0) of the original size and a random + aspect ratio (default: of 3/4 to 4/3) of the original aspect ratio is made. This crop + is finally resized to given size. + This is popularly used to train the Inception networks. + + Args: + size: expected output size of each edge + scale: range of size of the origin size cropped + ratio: range of aspect ratio of the origin aspect ratio cropped + interpolation: Default: PIL.Image.BILINEAR + """ + + def __init__(self, size, scale=(0.08, 1.0), ratio=(3. / 4., 4. / 3.), interpolation=Image.BILINEAR): + if isinstance(size, tuple): + self.size = size + else: + self.size = (size, size) + self.interpolation = interpolation + self.scale = scale + self.ratio = ratio + + @staticmethod + def get_params(img, scale, ratio): + """Get parameters for ``crop`` for a random sized crop. + + Args: + img (PIL Image): Image to be cropped. + scale (tuple): range of size of the origin size cropped + ratio (tuple): range of aspect ratio of the origin aspect ratio cropped + + Returns: + tuple: params (i, j, h, w) to be passed to ``crop`` for a random + sized crop. + """ + for attempt in range(10): + area = img.size[0] * img.size[1] + target_area = random.uniform(*scale) * area + aspect_ratio = random.uniform(*ratio) + + w = int(round(math.sqrt(target_area * aspect_ratio))) + h = int(round(math.sqrt(target_area / aspect_ratio))) + + if random.random() < 0.5: + w, h = h, w + + if w <= img.size[0] and h <= img.size[1]: + i = random.randint(0, img.size[1] - h) + j = random.randint(0, img.size[0] - w) + return i, j, h, w + + # Fallback + w = min(img.size[0], img.size[1]) + i = (img.size[1] - w) // 2 + j = (img.size[0] - w) // 2 + return i, j, w, w + + def __call__(self, img): + """ + Args: + img (PIL Image): Image to be flipped. + + Returns: + PIL Image: Randomly cropped and resize image. + """ + i, j, h, w = self.get_params(img, self.scale, self.ratio) + return F.resized_crop(img, i, j, h, w, self.size, self.interpolation) + + +class ColorJitter(object): + """Randomly change the brightness, contrast and saturation of an image. + + Args: + brightness (float): How much to jitter brightness. brightness_factor + is chosen uniformly from [max(0, 1 - brightness), 1 + brightness]. + contrast (float): How much to jitter contrast. contrast_factor + is chosen uniformly from [max(0, 1 - contrast), 1 + contrast]. + saturation (float): How much to jitter saturation. saturation_factor + is chosen uniformly from [max(0, 1 - saturation), 1 + saturation]. + hue(float): How much to jitter hue. hue_factor is chosen uniformly from + [-hue, hue]. Should be >=0 and <= 0.5. + """ + def __init__(self, brightness=0, contrast=0, saturation=0, hue=0): + self.brightness = brightness + self.contrast = contrast + self.saturation = saturation + self.hue = hue + + @staticmethod + def get_params(brightness, contrast, saturation, hue): + """Get a randomized transform to be applied on image. + + Arguments are same as that of __init__. + + Returns: + Transform which randomly adjusts brightness, contrast and + saturation in a random order. + """ + transforms = [] + if brightness > 0: + brightness_factor = np.random.uniform(max(0, 1 - brightness), 1 + brightness) + transforms.append(Lambda(lambda img: F.adjust_brightness(img, brightness_factor))) + + if contrast > 0: + contrast_factor = np.random.uniform(max(0, 1 - contrast), 1 + contrast) + transforms.append(Lambda(lambda img: F.adjust_contrast(img, contrast_factor))) + + if saturation > 0: + saturation_factor = np.random.uniform(max(0, 1 - saturation), 1 + saturation) + transforms.append(Lambda(lambda img: F.adjust_saturation(img, saturation_factor))) + + if hue > 0: + hue_factor = np.random.uniform(-hue, hue) + transforms.append(Lambda(lambda img: F.adjust_hue(img, hue_factor))) + + np.random.shuffle(transforms) + transform = Compose(transforms) + + return transform + + def __call__(self, img): + """ + Args: + img (PIL Image): Input image. + + Returns: + PIL Image: Color jittered image. + """ + transform = self.get_params(self.brightness, self.contrast, + self.saturation, self.hue) + return transform(img) + + +class RandomRotation(object): + """Rotate the image by angle. + + Args: + degrees (sequence or float or int): Range of degrees to select from. + If degrees is a number instead of sequence like (min, max), the range of degrees + will be (-degrees, +degrees). + resample ({PIL.Image.NEAREST, PIL.Image.BILINEAR, PIL.Image.BICUBIC}, optional): + An optional resampling filter. + See http://pillow.readthedocs.io/en/3.4.x/handbook/concepts.html#filters + If omitted, or if the image has mode "1" or "P", it is set to PIL.Image.NEAREST. + expand (bool, optional): Optional expansion flag. + If true, expands the output to make it large enough to hold the entire rotated image. + If false or omitted, make the output image the same size as the input image. + Note that the expand flag assumes rotation around the center and no translation. + center (2-tuple, optional): Optional center of rotation. + Origin is the upper left corner. + Default is the center of the image. + """ + + def __init__(self, degrees, resample=False, expand=False, center=None): + if isinstance(degrees, numbers.Number): + if degrees < 0: + raise ValueError("If degrees is a single number, it must be positive.") + self.degrees = (-degrees, degrees) + else: + if len(degrees) != 2: + raise ValueError("If degrees is a sequence, it must be of len 2.") + self.degrees = degrees + + self.resample = resample + self.expand = expand + self.center = center + + @staticmethod + def get_params(degrees): + """Get parameters for ``rotate`` for a random rotation. + + Returns: + sequence: params to be passed to ``rotate`` for random rotation. + """ + angle = np.random.uniform(degrees[0], degrees[1]) + + return angle + + def __call__(self, img): + """ + img (PIL Image): Image to be rotated. + + Returns: + PIL Image: Rotated image. + """ + + angle = self.get_params(self.degrees) + + return F.rotate(img, angle, self.resample, self.expand, self.center) + + diff --git a/src/default_config.py b/src/default_config.py new file mode 100644 index 0000000..d630c6e --- /dev/null +++ b/src/default_config.py @@ -0,0 +1,73 @@ +# -*- coding: utf-8 -*- +# @Time : 20-6-4 上午9:12 +# @Author : zhuying +# @Company : Minivision +# @File : default_config.py +# @Software : PyCharm +# --*-- coding: utf-8 --*-- +""" +default config for training +""" + +import torch +from datetime import datetime +from easydict import EasyDict +from src.utility import make_if_not_exist, get_width_height, get_kernel + + +def get_default_config(): + conf = EasyDict() + + # ----------------------training--------------- + conf.lr = 1e-1 + # [9, 13, 15] + conf.milestones = [10, 15, 22] # down learing rate + conf.gamma = 0.1 + conf.epochs = 25 + conf.momentum = 0.9 + conf.batch_size = 1024 + + # model + conf.num_classes = 3 + conf.input_channel = 3 + conf.embedding_size = 128 + + # dataset + conf.train_root_path = './datasets/rgb_image' + + # save file path + conf.snapshot_dir_path = './saved_logs/snapshot' + + # log path + conf.log_path = './saved_logs/jobs' + # tensorboard + conf.board_loss_every = 10 + # save model/iter + conf.save_every = 30 + + return conf + + +def update_config(args, conf): + conf.devices = args.devices + conf.patch_info = args.patch_info + w_input, h_input = get_width_height(args.patch_info) + conf.input_size = [h_input, w_input] + conf.kernel_size = get_kernel(h_input, w_input) + conf.device = "cuda:{}".format(conf.devices[0]) if torch.cuda.is_available() else "cpu" + + # resize fourier image size + conf.ft_height = 2*conf.kernel_size[0] + conf.ft_width = 2*conf.kernel_size[1] + current_time = datetime.now().strftime('%b%d_%H-%M-%S') + job_name = 'Anti_Spoofing_{}'.format(args.patch_info) + log_path = '{}/{}/{} '.format(conf.log_path, job_name, current_time) + snapshot_dir = '{}/{}'.format(conf.snapshot_dir_path, job_name) + + make_if_not_exist(snapshot_dir) + make_if_not_exist(log_path) + + conf.model_path = snapshot_dir + conf.log_path = log_path + conf.job_name = job_name + return conf diff --git a/src/generate_patches.py b/src/generate_patches.py new file mode 100644 index 0000000..0056269 --- /dev/null +++ b/src/generate_patches.py @@ -0,0 +1,65 @@ +# -*- coding: utf-8 -*- +# @Time : 20-6-9 下午3:06 +# @Author : zhuying +# @Company : Minivision +# @File : test.py +# @Software : PyCharm +""" +Create patch from original input image by using bbox coordinate +""" + +import cv2 +import numpy as np + + +class CropImage: + @staticmethod + def _get_new_box(src_w, src_h, bbox, scale): + x = bbox[0] + y = bbox[1] + box_w = bbox[2] + box_h = bbox[3] + + scale = min((src_h-1)/box_h, min((src_w-1)/box_w, scale)) + + new_width = box_w * scale + new_height = box_h * scale + center_x, center_y = box_w/2+x, box_h/2+y + + left_top_x = center_x-new_width/2 + left_top_y = center_y-new_height/2 + right_bottom_x = center_x+new_width/2 + right_bottom_y = center_y+new_height/2 + + if left_top_x < 0: + right_bottom_x -= left_top_x + left_top_x = 0 + + if left_top_y < 0: + right_bottom_y -= left_top_y + left_top_y = 0 + + if right_bottom_x > src_w-1: + left_top_x -= right_bottom_x-src_w+1 + right_bottom_x = src_w-1 + + if right_bottom_y > src_h-1: + left_top_y -= right_bottom_y-src_h+1 + right_bottom_y = src_h-1 + + return int(left_top_x), int(left_top_y),\ + int(right_bottom_x), int(right_bottom_y) + + def crop(self, org_img, bbox, scale, out_w, out_h, crop=True): + + if not crop: + dst_img = cv2.resize(org_img, (out_w, out_h)) + else: + src_h, src_w, _ = np.shape(org_img) + left_top_x, left_top_y, \ + right_bottom_x, right_bottom_y = self._get_new_box(src_w, src_h, bbox, scale) + + img = org_img[left_top_y: right_bottom_y+1, + left_top_x: right_bottom_x+1] + dst_img = cv2.resize(img, (out_w, out_h)) + return dst_img diff --git a/src/model_lib/MiniFASNet.py b/src/model_lib/MiniFASNet.py new file mode 100644 index 0000000..548f773 --- /dev/null +++ b/src/model_lib/MiniFASNet.py @@ -0,0 +1,296 @@ +# -*- coding: utf-8 -*- +# @Time : 20-6-3 下午4:45 +# @Author : zhuying +# @Company : Minivision +# @File : MiniFASNet.py +# @Software : PyCharm +import torch +import torch.nn.functional as F +from torch.nn import Linear, Conv2d, BatchNorm1d, BatchNorm2d, PReLU, ReLU, Sigmoid, \ + AdaptiveAvgPool2d, Sequential, Module + + +class L2Norm(Module): + def forward(self, input): + return F.normalize(input) + + +class Flatten(Module): + def forward(self, input): + return input.view(input.size(0), -1) + + +class Conv_block(Module): + def __init__(self, in_c, out_c, kernel=(1, 1), stride=(1, 1), padding=(0, 0), groups=1): + super(Conv_block, self).__init__() + self.conv = Conv2d(in_c, out_c, kernel_size=kernel, groups=groups, + stride=stride, padding=padding, bias=False) + self.bn = BatchNorm2d(out_c) + self.prelu = PReLU(out_c) + + def forward(self, x): + x = self.conv(x) + x = self.bn(x) + x = self.prelu(x) + return x + + +class Linear_block(Module): + def __init__(self, in_c, out_c, kernel=(1, 1), stride=(1, 1), padding=(0, 0), groups=1): + super(Linear_block, self).__init__() + self.conv = Conv2d(in_c, out_channels=out_c, kernel_size=kernel, + groups=groups, stride=stride, padding=padding, bias=False) + self.bn = BatchNorm2d(out_c) + + def forward(self, x): + x = self.conv(x) + x = self.bn(x) + return x + + +class Depth_Wise(Module): + def __init__(self, c1, c2, c3, residual=False, kernel=(3, 3), stride=(2, 2), padding=(1, 1), groups=1): + super(Depth_Wise, self).__init__() + c1_in, c1_out = c1 + c2_in, c2_out = c2 + c3_in, c3_out = c3 + self.conv = Conv_block(c1_in, out_c=c1_out, kernel=(1, 1), padding=(0, 0), stride=(1, 1)) + self.conv_dw = Conv_block(c2_in, c2_out, groups=c2_in, kernel=kernel, padding=padding, stride=stride) + self.project = Linear_block(c3_in, c3_out, kernel=(1, 1), padding=(0, 0), stride=(1, 1)) + self.residual = residual + + def forward(self, x): + if self.residual: + short_cut = x + x = self.conv(x) + x = self.conv_dw(x) + x = self.project(x) + if self.residual: + output = short_cut + x + else: + output = x + return output + + +class Residual(Module): + def __init__(self, c1, c2, c3, num_block, groups, kernel=(3, 3), stride=(1, 1), padding=(1, 1)): + super(Residual, self).__init__() + modules = [] + for i in range(num_block): + c1_tuple = c1[i] + c2_tuple = c2[i] + c3_tuple = c3[i] + modules.append(Depth_Wise(c1_tuple, c2_tuple, c3_tuple, residual=True, + kernel=kernel, padding=padding, stride=stride, groups=groups)) + self.model = Sequential(*modules) + + def forward(self, x): + return self.model(x) + + +class SEModule(Module): + def __init__(self, channels, reduction): + super(SEModule, self).__init__() + self.avg_pool = AdaptiveAvgPool2d(1) + self.fc1 = Conv2d( + channels, channels // reduction, kernel_size=1, padding=0, bias=False) + self.bn1 = BatchNorm2d(channels // reduction) + self.relu = ReLU(inplace=True) + self.fc2 = Conv2d( + channels // reduction, channels, kernel_size=1, padding=0, bias=False) + self.bn2 = BatchNorm2d(channels) + self.sigmoid = Sigmoid() + + def forward(self, x): + module_input = x + x = self.avg_pool(x) + x = self.fc1(x) + x = self.bn1(x) + x = self.relu(x) + x = self.fc2(x) + x = self.bn2(x) + x = self.sigmoid(x) + return module_input * x + + +class ResidualSE(Module): + def __init__(self, c1, c2, c3, num_block, groups, kernel=(3, 3), stride=(1, 1), padding=(1, 1), se_reduct=4): + super(ResidualSE, self).__init__() + modules = [] + for i in range(num_block): + c1_tuple = c1[i] + c2_tuple = c2[i] + c3_tuple = c3[i] + if i == num_block-1: + modules.append( + Depth_Wise_SE(c1_tuple, c2_tuple, c3_tuple, residual=True, kernel=kernel, padding=padding, stride=stride, + groups=groups, se_reduct=se_reduct)) + else: + modules.append(Depth_Wise(c1_tuple, c2_tuple, c3_tuple, residual=True, kernel=kernel, padding=padding, + stride=stride, groups=groups)) + self.model = Sequential(*modules) + + def forward(self, x): + return self.model(x) + + +class Depth_Wise_SE(Module): + def __init__(self, c1, c2, c3, residual=False, kernel=(3, 3), stride=(2, 2), padding=(1, 1), groups=1, se_reduct=8): + super(Depth_Wise_SE, self).__init__() + c1_in, c1_out = c1 + c2_in, c2_out = c2 + c3_in, c3_out = c3 + self.conv = Conv_block(c1_in, out_c=c1_out, kernel=(1, 1), padding=(0, 0), stride=(1, 1)) + self.conv_dw = Conv_block(c2_in, c2_out, groups=c2_in, kernel=kernel, padding=padding, stride=stride) + self.project = Linear_block(c3_in, c3_out, kernel=(1, 1), padding=(0, 0), stride=(1, 1)) + self.residual = residual + self.se_module = SEModule(c3_out, se_reduct) + + def forward(self, x): + if self.residual: + short_cut = x + x = self.conv(x) + x = self.conv_dw(x) + x = self.project(x) + if self.residual: + x = self.se_module(x) + output = short_cut + x + else: + output = x + return output + + +class MiniFASNet(Module): + def __init__(self, keep, embedding_size, conv6_kernel=(7, 7), + drop_p=0.0, num_classes=3, img_channel=3): + super(MiniFASNet, self).__init__() + self.embedding_size = embedding_size + + self.conv1 = Conv_block(img_channel, keep[0], kernel=(3, 3), stride=(2, 2), padding=(1, 1)) + self.conv2_dw = Conv_block(keep[0], keep[1], kernel=(3, 3), stride=(1, 1), padding=(1, 1), groups=keep[1]) + + c1 = [(keep[1], keep[2])] + c2 = [(keep[2], keep[3])] + c3 = [(keep[3], keep[4])] + + self.conv_23 = Depth_Wise(c1[0], c2[0], c3[0], kernel=(3, 3), stride=(2, 2), padding=(1, 1), groups=keep[3]) + + c1 = [(keep[4], keep[5]), (keep[7], keep[8]), (keep[10], keep[11]), (keep[13], keep[14])] + c2 = [(keep[5], keep[6]), (keep[8], keep[9]), (keep[11], keep[12]), (keep[14], keep[15])] + c3 = [(keep[6], keep[7]), (keep[9], keep[10]), (keep[12], keep[13]), (keep[15], keep[16])] + + self.conv_3 = Residual(c1, c2, c3, num_block=4, groups=keep[4], kernel=(3, 3), stride=(1, 1), padding=(1, 1)) + + c1 = [(keep[16], keep[17])] + c2 = [(keep[17], keep[18])] + c3 = [(keep[18], keep[19])] + + self.conv_34 = Depth_Wise(c1[0], c2[0], c3[0], kernel=(3, 3), stride=(2, 2), padding=(1, 1), groups=keep[19]) + + c1 = [(keep[19], keep[20]), (keep[22], keep[23]), (keep[25], keep[26]), (keep[28], keep[29]), + (keep[31], keep[32]), (keep[34], keep[35])] + c2 = [(keep[20], keep[21]), (keep[23], keep[24]), (keep[26], keep[27]), (keep[29], keep[30]), + (keep[32], keep[33]), (keep[35], keep[36])] + c3 = [(keep[21], keep[22]), (keep[24], keep[25]), (keep[27], keep[28]), (keep[30], keep[31]), + (keep[33], keep[34]), (keep[36], keep[37])] + + self.conv_4 = Residual(c1, c2, c3, num_block=6, groups=keep[19], kernel=(3, 3), stride=(1, 1), padding=(1, 1)) + + c1 = [(keep[37], keep[38])] + c2 = [(keep[38], keep[39])] + c3 = [(keep[39], keep[40])] + + self.conv_45 = Depth_Wise(c1[0], c2[0], c3[0], kernel=(3, 3), stride=(2, 2), padding=(1, 1), groups=keep[40]) + + c1 = [(keep[40], keep[41]), (keep[43], keep[44])] + c2 = [(keep[41], keep[42]), (keep[44], keep[45])] + c3 = [(keep[42], keep[43]), (keep[45], keep[46])] + + self.conv_5 = Residual(c1, c2, c3, num_block=2, groups=keep[40], kernel=(3, 3), stride=(1, 1), padding=(1, 1)) + self.conv_6_sep = Conv_block(keep[46], keep[47], kernel=(1, 1), stride=(1, 1), padding=(0, 0)) + self.conv_6_dw = Linear_block(keep[47], keep[48], groups=keep[48], kernel=conv6_kernel, stride=(1, 1), padding=(0, 0)) + self.conv_6_flatten = Flatten() + self.linear = Linear(512, embedding_size, bias=False) + self.bn = BatchNorm1d(embedding_size) + self.drop = torch.nn.Dropout(p=drop_p) + self.prob = Linear(embedding_size, num_classes, bias=False) + + def forward(self, x): + out = self.conv1(x) + out = self.conv2_dw(out) + out = self.conv_23(out) + out = self.conv_3(out) + out = self.conv_34(out) + out = self.conv_4(out) + out = self.conv_45(out) + out = self.conv_5(out) + out = self.conv_6_sep(out) + out = self.conv_6_dw(out) + out = self.conv_6_flatten(out) + if self.embedding_size != 512: + out = self.linear(out) + out = self.bn(out) + out = self.drop(out) + out = self.prob(out) + return out + + +class MiniFASNetSE(MiniFASNet): + def __init__(self, keep, embedding_size, conv6_kernel=(7, 7),drop_p=0.75, num_classes=4, img_channel=3): + super(MiniFASNetSE, self).__init__(keep=keep, embedding_size=embedding_size, conv6_kernel=conv6_kernel, + drop_p=drop_p, num_classes=num_classes, img_channel=img_channel) + + c1 = [(keep[4], keep[5]), (keep[7], keep[8]), (keep[10], keep[11]), (keep[13], keep[14])] + c2 = [(keep[5], keep[6]), (keep[8], keep[9]), (keep[11], keep[12]), (keep[14], keep[15])] + c3 = [(keep[6], keep[7]), (keep[9], keep[10]), (keep[12], keep[13]), (keep[15], keep[16])] + + self.conv_3 = ResidualSE(c1, c2, c3, num_block=4, groups=keep[4], kernel=(3, 3), stride=(1, 1), padding=(1, 1)) + + c1 = [(keep[19], keep[20]), (keep[22], keep[23]), (keep[25], keep[26]), (keep[28], keep[29]), + (keep[31], keep[32]), (keep[34], keep[35])] + c2 = [(keep[20], keep[21]), (keep[23], keep[24]), (keep[26], keep[27]), (keep[29], keep[30]), + (keep[32], keep[33]), (keep[35], keep[36])] + c3 = [(keep[21], keep[22]), (keep[24], keep[25]), (keep[27], keep[28]), (keep[30], keep[31]), + (keep[33], keep[34]), (keep[36], keep[37])] + + self.conv_4 = ResidualSE(c1, c2, c3, num_block=6, groups=keep[19], kernel=(3, 3), stride=(1, 1), padding=(1, 1)) + + c1 = [(keep[40], keep[41]), (keep[43], keep[44])] + c2 = [(keep[41], keep[42]), (keep[44], keep[45])] + c3 = [(keep[42], keep[43]), (keep[45], keep[46])] + self.conv_5 = ResidualSE(c1, c2, c3, num_block=2, groups=keep[40], kernel=(3, 3), stride=(1, 1), padding=(1, 1)) + + + +keep_dict = {'1.8M': [32, 32, 103, 103, 64, 13, 13, 64, 26, 26, + 64, 13, 13, 64, 52, 52, 64, 231, 231, 128, + 154, 154, 128, 52, 52, 128, 26, 26, 128, 52, + 52, 128, 26, 26, 128, 26, 26, 128, 308, 308, + 128, 26, 26, 128, 26, 26, 128, 512, 512], + + '1.8M_': [32, 32, 103, 103, 64, 13, 13, 64, 13, 13, 64, 13, + 13, 64, 13, 13, 64, 231, 231, 128, 231, 231, 128, 52, + 52, 128, 26, 26, 128, 77, 77, 128, 26, 26, 128, 26, 26, + 128, 308, 308, 128, 26, 26, 128, 26, 26, 128, 512, 512] + } + + +# (80x80) flops: 0.044, params: 0.41 +def MiniFASNetV1(embedding_size=128, conv6_kernel=(7, 7), + drop_p=0.2, num_classes=3, img_channel=3): + return MiniFASNet(keep_dict['1.8M'], embedding_size, conv6_kernel, drop_p, num_classes, img_channel) + + +# (80x80) flops: 0.044, params: 0.43 +def MiniFASNetV2(embedding_size=128, conv6_kernel=(7, 7), + drop_p=0.2, num_classes=3, img_channel=3): + return MiniFASNet(keep_dict['1.8M_'], embedding_size, conv6_kernel, drop_p, num_classes, img_channel) + +def MiniFASNetV1SE(embedding_size=128, conv6_kernel=(7, 7), + drop_p=0.75, num_classes=3, img_channel=3): + return MiniFASNetSE(keep_dict['1.8M'], embedding_size, conv6_kernel,drop_p, num_classes, img_channel) + +# (80x80) flops: 0.044, params: 0.43 +def MiniFASNetV2SE(embedding_size=128, conv6_kernel=(7, 7), + drop_p=0.75, num_classes=4, img_channel=3): + return MiniFASNetSE(keep_dict['1.8M_'], embedding_size, conv6_kernel,drop_p, num_classes, img_channel) diff --git a/src/model_lib/MultiFTNet.py b/src/model_lib/MultiFTNet.py new file mode 100644 index 0000000..f934df4 --- /dev/null +++ b/src/model_lib/MultiFTNet.py @@ -0,0 +1,79 @@ +# -*- coding: utf-8 -*- +# @Time : 20-6-3 下午5:14 +# @Author : zhuying +# @Company : Minivision +# @File : MultiFTNet.py +# @Software : PyCharm +from torch import nn +import torch.nn.functional as F +from src.model_lib.MiniFASNet import MiniFASNetV1,MiniFASNetV2,MiniFASNetV1SE,MiniFASNetV2SE + + +class FTGenerator(nn.Module): + def __init__(self, in_channels=48, out_channels=1): + super(FTGenerator, self).__init__() + + self.ft = nn.Sequential( + nn.Conv2d(in_channels, 128, kernel_size=(3, 3), padding=1), + nn.BatchNorm2d(128), + nn.ReLU(inplace=True), + + nn.Conv2d(128, 64, kernel_size=(3, 3), padding=1), + nn.BatchNorm2d(64), + nn.ReLU(inplace=True), + + nn.Conv2d(64, out_channels, kernel_size=(3, 3), padding=1), + nn.BatchNorm2d(out_channels), + nn.ReLU(inplace=True) + ) + + def forward(self, x): + return self.ft(x) + + +class MultiFTNet(nn.Module): + def __init__(self, img_channel=3, num_classes=3, embedding_size=128, conv6_kernel=(5, 5)): + super(MultiFTNet, self).__init__() + self.img_channel = img_channel + self.num_classes = num_classes + self.model = MiniFASNetV2SE(embedding_size=embedding_size, conv6_kernel=conv6_kernel, + num_classes=num_classes, img_channel=img_channel) + self.FTGenerator = FTGenerator(in_channels=128) + self._initialize_weights() + + def _initialize_weights(self): + for m in self.modules(): + if isinstance(m, nn.Conv2d): + nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu') + if m.bias is not None: + nn.init.constant_(m.bias, 0) + elif isinstance(m, (nn.BatchNorm2d, nn.BatchNorm1d, nn.GroupNorm)): + nn.init.constant_(m.weight, 1) + nn.init.constant_(m.bias, 0) + elif isinstance(m, nn.Linear): + nn.init.normal_(m.weight, std=0.001) + if m.bias is not None: + nn.init.constant_(m.bias, 0) + + def forward(self, x): + x = self.model.conv1(x) + x = self.model.conv2_dw(x) + x = self.model.conv_23(x) + x = self.model.conv_3(x) + x = self.model.conv_34(x) + x = self.model.conv_4(x) + x1 = self.model.conv_45(x) + x1 = self.model.conv_5(x1) + x1 = self.model.conv_6_sep(x1) + x1 = self.model.conv_6_dw(x1) + x1 = self.model.conv_6_flatten(x1) + x1 = self.model.linear(x1) + x1 = self.model.bn(x1) + x1 = self.model.drop(x1) + cls = self.model.prob(x1) + + if self.training: + ft = self.FTGenerator(x) + return cls, ft + else: + return cls diff --git a/src/model_lib/__pycache__/MiniFASNet.cpython-38.pyc b/src/model_lib/__pycache__/MiniFASNet.cpython-38.pyc new file mode 100644 index 0000000..e92fce8 Binary files /dev/null and b/src/model_lib/__pycache__/MiniFASNet.cpython-38.pyc differ diff --git a/src/train_main.py b/src/train_main.py new file mode 100644 index 0000000..7f3be7d --- /dev/null +++ b/src/train_main.py @@ -0,0 +1,146 @@ +# -*- coding: utf-8 -*- +# @Time : 20-6-4 上午9:59 +# @Author : zhuying +# @Company : Minivision +# @File : train_main.py +# @Software : PyCharm + +import torch +from torch import optim +from torch.nn import CrossEntropyLoss, MSELoss +from tqdm import tqdm +from tensorboardX import SummaryWriter + +from src.utility import get_time +from src.model_lib.MultiFTNet import MultiFTNet +from src.data_io.dataset_loader import get_train_loader + + +class TrainMain: + def __init__(self, conf): + self.conf = conf + self.board_loss_every = conf.board_loss_every + self.save_every = conf.save_every + self.step = 0 + self.start_epoch = 0 + self.train_loader = get_train_loader(self.conf) + + def train_model(self): + self._init_model_param() + self._train_stage() + + def _init_model_param(self): + self.cls_criterion = CrossEntropyLoss() + self.ft_criterion = MSELoss() + self.model = self._define_network() + self.optimizer = optim.SGD(self.model.module.parameters(), + lr=self.conf.lr, + weight_decay=5e-4, + momentum=self.conf.momentum) + + self.schedule_lr = optim.lr_scheduler.MultiStepLR( + self.optimizer, self.conf.milestones, self.conf.gamma, - 1) + + print("lr: ", self.conf.lr) + print("epochs: ", self.conf.epochs) + print("milestones: ", self.conf.milestones) + + def _train_stage(self): + self.model.train() + running_loss = 0. + running_acc = 0. + running_loss_cls = 0. + running_loss_ft = 0. + is_first = True + for e in range(self.start_epoch, self.conf.epochs): + if is_first: + self.writer = SummaryWriter(self.conf.log_path) + is_first = False + print('epoch {} started'.format(e)) + print("lr: ", self.schedule_lr.get_lr()) + + for sample, ft_sample, target in tqdm(iter(self.train_loader)): + imgs = [sample, ft_sample] + labels = target + + loss, acc, loss_cls, loss_ft = self._train_batch_data(imgs, labels) + running_loss_cls += loss_cls + running_loss_ft += loss_ft + running_loss += loss + running_acc += acc + + self.step += 1 + + if self.step % self.board_loss_every == 0 and self.step != 0: + loss_board = running_loss / self.board_loss_every + self.writer.add_scalar( + 'Training/Loss', loss_board, self.step) + acc_board = running_acc / self.board_loss_every + self.writer.add_scalar( + 'Training/Acc', acc_board, self.step) + lr = self.optimizer.param_groups[0]['lr'] + self.writer.add_scalar( + 'Training/Learning_rate', lr, self.step) + loss_cls_board = running_loss_cls / self.board_loss_every + self.writer.add_scalar( + 'Training/Loss_cls', loss_cls_board, self.step) + loss_ft_board = running_loss_ft / self.board_loss_every + self.writer.add_scalar( + 'Training/Loss_ft', loss_ft_board, self.step) + + running_loss = 0. + running_acc = 0. + running_loss_cls = 0. + running_loss_ft = 0. + if self.step % self.save_every == 0 and self.step != 0: + time_stamp = get_time() + self._save_state(time_stamp, extra=self.conf.job_name) + self.schedule_lr.step() + + time_stamp = get_time() + self._save_state(time_stamp, extra=self.conf.job_name) + self.writer.close() + + def _train_batch_data(self, imgs, labels): + self.optimizer.zero_grad() + labels = labels.to(self.conf.device) + embeddings, feature_map = self.model.forward(imgs[0].to(self.conf.device)) + + loss_cls = self.cls_criterion(embeddings, labels) + loss_fea = self.ft_criterion(feature_map, imgs[1].to(self.conf.device)) + + loss = 0.5*loss_cls + 0.5*loss_fea + acc = self._get_accuracy(embeddings, labels)[0] + loss.backward() + self.optimizer.step() + return loss.item(), acc, loss_cls.item(), loss_fea.item() + + def _define_network(self): + param = { + 'num_classes': self.conf.num_classes, + 'img_channel': self.conf.input_channel, + 'embedding_size': self.conf.embedding_size, + 'conv6_kernel': self.conf.kernel_size} + + model = MultiFTNet(**param).to(self.conf.device) + model = torch.nn.DataParallel(model, self.conf.devices) + model.to(self.conf.device) + return model + + def _get_accuracy(self, output, target, topk=(1,)): + maxk = max(topk) + batch_size = target.size(0) + _, pred = output.topk(maxk, 1, True, True) + pred = pred.t() + correct = pred.eq(target.view(1, -1).expand_as(pred)) + + ret = [] + for k in topk: + correct_k = correct[:k].view(-1).float().sum(dim=0, keepdim=True) + ret.append(correct_k.mul_(1. / batch_size)) + return ret + + def _save_state(self, time_stamp, extra=None): + save_path = self.conf.model_path + torch.save(self.model.state_dict(), save_path + '/' + + ('{}_{}_model_iter-{}.pth'.format(time_stamp, extra, self.step))) diff --git a/src/utility.py b/src/utility.py new file mode 100644 index 0000000..5615498 --- /dev/null +++ b/src/utility.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +# @Time : 20-6-4 下午2:13 +# @Author : zhuying +# @Company : Minivision +# @File : utility.py +# @Software : PyCharm + +from datetime import datetime +import os + + +def get_time(): + return (str(datetime.now())[:-10]).replace(' ', '-').replace(':', '-') + + +def get_kernel(height, width): + kernel_size = ((height + 15) // 16, (width + 15) // 16) + return kernel_size + + +def get_width_height(patch_info): + w_input = int(patch_info.split('x')[-1]) + h_input = int(patch_info.split('x')[0].split('_')[-1]) + return w_input,h_input + + +def parse_model_name(model_name): + info = model_name.split('_')[0:-1] + h_input, w_input = info[-1].split('x') + model_type = model_name.split('.pth')[0].split('_')[-1] + + if info[0] == "org": + scale = None + else: + scale = float(info[0]) + return int(h_input), int(w_input), model_type, scale + + +def make_if_not_exist(folder_path): + if not os.path.exists(folder_path): + os.makedirs(folder_path) diff --git a/stream.py b/stream.py new file mode 100644 index 0000000..0647975 --- /dev/null +++ b/stream.py @@ -0,0 +1,36 @@ +import cv2 +import subprocess + +rtsp = "rtsp://admin:2020@uestc@192.168.30.83:554/h264" +out_rtsp = 'rtsp://localhost:5001/test' + +# 读取视频并获取属性 +cap = cv2.VideoCapture(rtsp) +size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))) +sizeStr = str(size[0]) + 'x' + str(size[1]) +fps = cap.get(cv2.CAP_PROP_FPS) +command = ['ffmpeg', + '-y', '-an', + '-f', 'rawvideo', + '-vcodec', 'rawvideo', + '-pix_fmt', 'bgr24', + '-s', sizeStr, + '-r', str(fps), + '-i', '-', + '-c:v', 'libx264', + '-pix_fmt', 'yuv420p', + '-preset', 'ultrafast', + '-f', 'rtsp', + out_rtsp] + +pipe = subprocess.Popen(command, shell=False, stdin=subprocess.PIPE) + +while cap.isOpened(): + success, frame = cap.read() + if success: + if cv2.waitKey(1) & 0xFF == ord('q'): + break + pipe.stdin.write(frame.tostring()) + +cap.release() +pipe.terminate() diff --git a/test.py b/test.py new file mode 100644 index 0000000..352e5a9 --- /dev/null +++ b/test.py @@ -0,0 +1,191 @@ +import itertools +import os +import time + +import torch +import cv2 +import numpy as np +from backbones import iresnet50,iresnet18,iresnet100 + +# print(torch.cuda.is_available()) +def load_image(img_path): + img = cv2.imread(img_path) + #print(img) + #img2 = np.fliplr(img) + #print(img2.shape) + img = img.transpose((2, 0, 1)) + #img2 = img2.transpose((2, 0, 1)) + img = img[np.newaxis, :, :, :] + #img2 = img2[np.newaxis, :, :, :] + #img = np.concatenate((img,img2)) + img = np.array(img, dtype=np.float32) + img -= 127.5 + img /= 127.5 + return img + +def findEuclideanDistance(source_representation, test_representation): + euclidean_distance = source_representation - test_representation + euclidean_distance = np.sum(np.multiply(euclidean_distance, euclidean_distance)) + euclidean_distance = np.sqrt(euclidean_distance) + return euclidean_distance + +def findCosineDistance(source_representation, test_representation): + a = np.matmul(np.transpose(source_representation), test_representation) + b = np.sum(np.multiply(source_representation, source_representation)) + c = np.sum(np.multiply(test_representation, test_representation)) + return 1 - (a / (np.sqrt(b) * np.sqrt(c))) + +def l2_normalize(x): + return x / np.sqrt(np.sum(np.multiply(x, x))) + +def cosin_metric(x1, x2): + return np.dot(x1, x2) / (np.linalg.norm(x1) * np.linalg.norm(x2)) + +def get_file_list(file_name): + file1 = [] + file2 = [] + code = [] + with open(file_name,"r") as f: + file_list = f.readlines() + for i in file_list: + data = i.replace("\n","").split(" ") + file1.append(data[0]) + file2.append(data[1]) + code.append(data[2]) + return file1,file2,code + +def load_list_images(file_list): + all = np.zeros((len(file_list),3,112,112),dtype=np.float32) + count = 0 + for img_path in file_list: + img = cv2.imread(img_path) + img = img.transpose((2, 0, 1)) + img = img[np.newaxis, :, :, :] + all[count] = img + count = count + 1 + all -= 127.5 + all /= 127.5 + return all + +def threshold_acc(distance,code): + #thresholds = np.arange(24,36,0.1) + thresholds = np.arange(0.5,2, 0.1) + total = len(code) + max_acc = 0 + threshold = 0 + code_net = [] + for i in thresholds: + for ds in distance: + if ds < i: + code_net.append(1) + else: + code_net.append(0) + right = np.sum(code==code_net) + #print(threshold, max_acc) + if right/total > max_acc: + max_acc = right / total + threshold = i + code_net = [] + return threshold,max_acc + +def reject_and_error(distance,code): + total = len(code) + threshold = 1.20 + code_net = [] + reject = 0 + error = 0 + for ds in distance: + if ds < threshold: + code_net.append(1) + else: + code_net.append(0) + right = np.sum(code==code_net) + max_acc = right / total + #print(max_acc,threshold) + for i in range(total): + if code[i] == 1: + if code_net[i] == 0: + reject += 1 + else: + if code_net[i] == 1: + error += 1 + return reject,error,right +# if __name__=='__main__': +# img1 = load_image("D:\Download\out\centerface_test\Adolfo_Rodriguez_Saa\Adolfo_Rodriguez_Saa_0002.jpg") +# img1 = torch.from_numpy(img1) +# #print(img1.shape) +# #print(img1) +# img2 = load_image("D:\Download\out\centerface_database\Dario_Franchitti\Dario_Franchitti_0001.jpg") +# img2 = torch.from_numpy(img2) +# model = iresnet100() +# model.load_state_dict(torch.load("./model/backbone100.pth",map_location="cpu")) +# #print(model) +# model.eval() +# with torch.no_grad(): +# start_time = time.time() +# pred1 = model(img1) +# #print(pred1.shape) +# #print(pred1) +# pred2 = model(img2) +# pred1 = pred1.numpy() +# #print(pred1.shape) +# pred2 = pred2.numpy() +# distance = findEuclideanDistance(l2_normalize(pred1),l2_normalize(pred2)) +# end_time = time.time() +# print("EuclideanDistance is :" + str(distance)) +# if distance < 1.20: +# print("对比两张相同的人脸用时:"+str(end_time - start_time)) +# else: +# print("对比两张不同的人脸用时:" + str(end_time - start_time)) + + +if __name__=='__main__': + model = iresnet100() + model.load_state_dict(torch.load("./model/backbone100.pth", map_location="cpu")) + model.eval() + file1, file2, code = get_file_list("pairs.txt") + code = np.array(code,dtype=np.int) + img = load_list_images(file1) + print(img.shape) + img = torch.from_numpy(img) + img2 = load_list_images(file2) + img2 = torch.from_numpy(img2) + batch_size = 128 + now = 0 + number = len(code) + distance = [] + with torch.no_grad(): + start_time = time.time() + while now < number: + if now + batch_size < number: + pred1 = model(img[now:now + batch_size]) + pred2 = model(img2[now:now + batch_size]) + else: + pred1 = model(img[now:]) + pred2 = model(img2[now:]) + now = now + batch_size + pred1 = pred1.numpy() + pred2 = pred2.numpy() + print("batch"+str(now)) + for i in range(len(pred1)): + #distance.append(findEuclideanDistance(pred1[i], pred2[i])) + distance.append(findEuclideanDistance(l2_normalize(pred1[i]), l2_normalize(pred2[i]))) + end_time = time.time() + distance = np.array(distance) + print("对比两张人脸平均用时:" + str((end_time - start_time) / number)) + #print(distance) + # threshold,max_acc = threshold_acc(distance,code) + # print(threshold,max_acc) + reject, error,right = reject_and_error(distance, code) + print("正确人脸对数量:"+str(right)+" 正确率:"+str(right/number)) + print("拒识人脸对数量:" + str(reject) + " 拒识率:" + str(2*reject / number)) + print("误识人脸对数量:" + str(error) + " 误识率:" + str(2 * error / number)) + +# sublist = ['zdz','bbb','aaa'] +# for item in itertools.combinations(sublist, 2): +# for name in item: +# print(name) +# path = "D:\Download\out\output2\Alan_Trammell\Alan_Trammell_0001.jpg" +# path = path.split("\\") +# print(path) +# print(os.path.join(path[0],path[1],path[2],path[3],path[4])) diff --git a/test2.py b/test2.py new file mode 100644 index 0000000..3dab2a3 --- /dev/null +++ b/test2.py @@ -0,0 +1,52 @@ +# import numpy as np +# a = [1,2,3,4,5,6,7,8,9,10] +# print(a[0::2]) +# print(a[1::2]) +# +# src = np.array([ +# [30.2946, 51.6963], +# [65.5318, 51.5014], +# [48.0252, 71.7366], +# [33.5493, 92.3655], +# [62.7299, 92.2041]], dtype=np.float32) +# src[:, 0] += 8.0 +# #print(src[:, 1]) +# input_blob = np.zeros((2, 3, 2, 2), dtype=np.uint8) +# #print(input_blob[0]) + +import numpy as np +d = 512 # dimension +nb = 23800 # database size +nq = 1 # nb of queries +np.random.seed(1234) # make reproducible +xb = np.random.random((nb, d)).astype('float32') +#print(xb) +#print(np.arange(nb)) +#print(xb[:, 0]) + +# xb[:, 0] += np.arange(nb) / 1000. +# #print(xb) +#xq = np.random.random((nq, d)).astype('float32') +#xq[:, 0] += np.arange(nq) / 1000. +import faiss # make faiss available +nlist = 100 +#quantizer = faiss.IndexFlatL2(d) # the other index +#index = faiss.IndexIVFFlat(quantizer, d, nlist, faiss.METRIC_L2) +#index.train(xb) +index = faiss.IndexFlatL2(d) # build the index +print(index.is_trained) +#print(xq.shape) +index.add(xb) # add vectors to the index +print(index.ntotal) +#index.nprobe=30 +k = 1 # we want to see 4 nearest neighbors +import time +for i in range(10): + xq = np.random.random((nq, d)).astype('float32') + start_time = time.time() + D, I = index.search(xq, k) # actual search + end_time = time.time() + print("faiss cost %fs"%(end_time - start_time)) + print(D,I) + + diff --git a/test_CPU.py b/test_CPU.py new file mode 100644 index 0000000..a78cd7e --- /dev/null +++ b/test_CPU.py @@ -0,0 +1,140 @@ +import torch +import cv2 +import numpy as np +from backbones import iresnet50,iresnet18,iresnet100 + +# print(torch.cuda.is_available()) +def load_image(img_path): + img = cv2.imread(img_path) + #print(img) + #img2 = np.fliplr(img) + #print(img2.shape) + img = img.transpose((2, 0, 1)) + #img2 = img2.transpose((2, 0, 1)) + img = img[np.newaxis, :, :, :] + #img2 = img2[np.newaxis, :, :, :] + #img = np.concatenate((img,img2)) + img = np.array(img, dtype=np.float32) + img -= 127.5 + img /= 127.5 + return img + +def findEuclideanDistance(source_representation, test_representation): + euclidean_distance = source_representation - test_representation + euclidean_distance = np.sum(np.multiply(euclidean_distance, euclidean_distance)) + euclidean_distance = np.sqrt(euclidean_distance) + return euclidean_distance + +def findCosineDistance(source_representation, test_representation): + a = np.matmul(np.transpose(source_representation), test_representation) + b = np.sum(np.multiply(source_representation, source_representation)) + c = np.sum(np.multiply(test_representation, test_representation)) + return 1 - (a / (np.sqrt(b) * np.sqrt(c))) + +def l2_normalize(x): + return x / np.sqrt(np.sum(np.multiply(x, x))-1) + +def cosin_metric(x1, x2): + return np.dot(x1, x2) / (np.linalg.norm(x1) * np.linalg.norm(x2)) + +def get_file_list(file_name): + file1 = [] + file2 = [] + code = [] + with open(file_name,"r") as f: + file_list = f.readlines() + for i in file_list: + data = i.replace("\n","").split(" ") + file1.append(data[0]) + file2.append(data[1]) + code.append(data[2]) + return file1,file2,code + +def load_list_images(file_list): + all = np.zeros((len(file_list),3,112,112),dtype=np.float32) + count = 0 + for img_path in file_list: + img = cv2.imread(img_path) + img = img.transpose((2, 0, 1)) + img = img[np.newaxis, :, :, :] + all[count] = img + count = count + 1 + all -= 127.5 + all /= 127.5 + return all + +def threshold_acc(distance,code): + thresholds = np.arange(0.5,2,0.1) + total = len(code) + max_acc = 0 + threshold = 0 + code_net = [] + for i in thresholds: + for ds in distance: + if ds < i: + code_net.append(1) + else: + code_net.append(0) + right = np.sum(code==code_net) + #print(threshold, max_acc) + if right/total > max_acc: + max_acc = right / total + threshold = i + code_net = [] + return threshold,max_acc + +# if __name__=='__main__': +# img1 = load_image("D:\Download\out\output\Aaron_Peirsol\Aaron_Peirsol_0001.jpg") +# img1 = torch.from_numpy(img1) +# print(img1.shape) +# #print(img1) +# img2 = load_image("D:\Download\out\output\Aaron_Peirsol\Aaron_Peirsol_0002.jpg") +# img2 = torch.from_numpy(img2) +# model = iresnet100() +# model.load_state_dict(torch.load("./model/backbone100.pth",map_location="cpu")) +# #print(model) +# model.eval() +# with torch.no_grad(): +# pred1 = model(img1) +# print(pred1.shape) +# #print(pred1) +# pred2 = model(img2) +# pred1 = pred1.numpy() +# print(pred1.shape) +# pred2 = pred2.numpy() +# print("EuclideanDistance is :"+str(findEuclideanDistance(l2_normalize(pred1),l2_normalize(pred2)))) +# print(findCosineDistance(pred1[0],pred2[0])) + +if __name__=='__main__': + model = iresnet100() + model.load_state_dict(torch.load("./model/backbone100.pth", map_location="cpu")) + model.eval() + file1, file2, code = get_file_list("pairs.txt") + code = np.array(code,dtype=np.int) + img = load_list_images(file1) + print(img.shape) + img = torch.from_numpy(img) + img2 = load_list_images(file2) + img2 = torch.from_numpy(img2) + batch_size = 64 + now = 0 + number = len(code) + distance = [] + with torch.no_grad(): + while now < number: + if now + batch_size < number: + pred1 = model(img[now:now + batch_size]) + pred2 = model(img2[now:now + batch_size]) + else: + pred1 = model(img[now:]) + pred2 = model(img2[now:]) + now = now + batch_size + pred1 = pred1.numpy() + pred2 = pred2.numpy() + print(pred1.shape) + for i in range(len(pred1)): + distance.append(findEuclideanDistance(l2_normalize(pred1[i]), l2_normalize(pred2[i]))) + distance = np.array(distance) + print(distance[:100]) + threshold,max_acc = threshold_acc(distance,code) + print(threshold,max_acc) diff --git a/train.py b/train.py new file mode 100644 index 0000000..220c231 --- /dev/null +++ b/train.py @@ -0,0 +1,133 @@ +import argparse +import logging +import os +import time + +import torch +import torch.distributed as dist +import torch.nn.functional as F +import torch.utils.data.distributed +from torch.nn.utils import clip_grad_norm_ + +import backbones +import losses +from config import config as cfg +from dataset import MXFaceDataset, DataLoaderX +from partial_fc import PartialFC +from utils.utils_callbacks import CallBackVerification, CallBackLogging, CallBackModelCheckpoint +from utils.utils_logging import AverageMeter, init_logging +from utils.utils_amp import MaxClipGradScaler + +torch.backends.cudnn.benchmark = True + + +def main(args): + + world_size = int(os.environ['WORLD_SIZE']) + rank = int(os.environ['RANK']) + dist_url = "tcp://{}:{}".format(os.environ["MASTER_ADDR"], os.environ["MASTER_PORT"]) + dist.init_process_group(backend='nccl', init_method=dist_url, rank=rank, world_size=world_size) + local_rank = args.local_rank + torch.cuda.set_device(local_rank) + + if not os.path.exists(cfg.output) and rank is 0: + os.makedirs(cfg.output) + else: + time.sleep(2) + + log_root = logging.getLogger() + init_logging(log_root, rank, cfg.output) + trainset = MXFaceDataset(root_dir=cfg.rec, local_rank=local_rank) + train_sampler = torch.utils.data.distributed.DistributedSampler( + trainset, shuffle=True) + train_loader = DataLoaderX( + local_rank=local_rank, dataset=trainset, batch_size=cfg.batch_size, + sampler=train_sampler, num_workers=0, pin_memory=True, drop_last=True) + + dropout = 0.4 if cfg.dataset is "webface" else 0 + backbone = eval("backbones.{}".format(args.network))(False, dropout=dropout, fp16=cfg.fp16).to(local_rank) + + if args.resume: + try: + backbone_pth = os.path.join(cfg.output, "backbone.pth") + backbone.load_state_dict(torch.load(backbone_pth, map_location=torch.device(local_rank))) + if rank is 0: + logging.info("backbone resume successfully!") + except (FileNotFoundError, KeyError, IndexError, RuntimeError): + logging.info("resume fail, backbone init successfully!") + + for ps in backbone.parameters(): + dist.broadcast(ps, 0) + backbone = torch.nn.parallel.DistributedDataParallel( + module=backbone, broadcast_buffers=False, device_ids=[local_rank]) + backbone.train() + + margin_softmax = eval("losses.{}".format(args.loss))() + module_partial_fc = PartialFC( + rank=rank, local_rank=local_rank, world_size=world_size, resume=args.resume, + batch_size=cfg.batch_size, margin_softmax=margin_softmax, num_classes=cfg.num_classes, + sample_rate=cfg.sample_rate, embedding_size=cfg.embedding_size, prefix=cfg.output) + + opt_backbone = torch.optim.SGD( + params=[{'params': backbone.parameters()}], + lr=cfg.lr / 512 * cfg.batch_size * world_size, + momentum=0.9, weight_decay=cfg.weight_decay) + opt_pfc = torch.optim.SGD( + params=[{'params': module_partial_fc.parameters()}], + lr=cfg.lr / 512 * cfg.batch_size * world_size, + momentum=0.9, weight_decay=cfg.weight_decay) + + scheduler_backbone = torch.optim.lr_scheduler.LambdaLR( + optimizer=opt_backbone, lr_lambda=cfg.lr_func) + scheduler_pfc = torch.optim.lr_scheduler.LambdaLR( + optimizer=opt_pfc, lr_lambda=cfg.lr_func) + + start_epoch = 0 + total_step = int(len(trainset) / cfg.batch_size / world_size * cfg.num_epoch) + if rank is 0: logging.info("Total Step is: %d" % total_step) + + callback_verification = CallBackVerification(2000, rank, cfg.val_targets, cfg.rec) + callback_logging = CallBackLogging(50, rank, total_step, cfg.batch_size, world_size, None) + callback_checkpoint = CallBackModelCheckpoint(rank, cfg.output) + + loss = AverageMeter() + global_step = 0 + grad_scaler = MaxClipGradScaler(cfg.batch_size, 128 * cfg.batch_size, growth_interval=100) if cfg.fp16 else None + for epoch in range(start_epoch, cfg.num_epoch): + train_sampler.set_epoch(epoch) + for step, (img, label) in enumerate(train_loader): + global_step += 1 + features = F.normalize(backbone(img)) + x_grad, loss_v = module_partial_fc.forward_backward(label, features, opt_pfc) + if cfg.fp16: + features.backward(grad_scaler.scale(x_grad)) + grad_scaler.unscale_(opt_backbone) + clip_grad_norm_(backbone.parameters(), max_norm=5, norm_type=2) + grad_scaler.step(opt_backbone) + grad_scaler.update() + else: + features.backward(x_grad) + clip_grad_norm_(backbone.parameters(), max_norm=5, norm_type=2) + opt_backbone.step() + + opt_pfc.step() + module_partial_fc.update() + opt_backbone.zero_grad() + opt_pfc.zero_grad() + loss.update(loss_v, 1) + callback_logging(global_step, loss, epoch, cfg.fp16, grad_scaler) + callback_verification(global_step, backbone) + callback_checkpoint(global_step, backbone, module_partial_fc) + scheduler_backbone.step() + scheduler_pfc.step() + dist.destroy_process_group() + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description='PyTorch ArcFace Training') + parser.add_argument('--local_rank', type=int, default=0, help='local_rank') + parser.add_argument('--network', type=str, default='iresnet50', help='backbone network') + parser.add_argument('--loss', type=str, default='ArcFace', help='loss function') + parser.add_argument('--resume', type=int, default=0, help='model resuming') + args_ = parser.parse_args() + main(args_) diff --git a/utils/__init__.py b/utils/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/utils/__pycache__/__init__.cpython-38.pyc b/utils/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000..39c856b Binary files /dev/null and b/utils/__pycache__/__init__.cpython-38.pyc differ diff --git a/utils/__pycache__/box_utils.cpython-38.pyc b/utils/__pycache__/box_utils.cpython-38.pyc new file mode 100644 index 0000000..0331a96 Binary files /dev/null and b/utils/__pycache__/box_utils.cpython-38.pyc differ diff --git a/utils/box_utils.py b/utils/box_utils.py new file mode 100644 index 0000000..c1d12bc --- /dev/null +++ b/utils/box_utils.py @@ -0,0 +1,330 @@ +import torch +import numpy as np + + +def point_form(boxes): + """ Convert prior_boxes to (xmin, ymin, xmax, ymax) + representation for comparison to point form ground truth data. + Args: + boxes: (tensor) center-size default boxes from priorbox layers. + Return: + boxes: (tensor) Converted xmin, ymin, xmax, ymax form of boxes. + """ + return torch.cat((boxes[:, :2] - boxes[:, 2:]/2, # xmin, ymin + boxes[:, :2] + boxes[:, 2:]/2), 1) # xmax, ymax + + +def center_size(boxes): + """ Convert prior_boxes to (cx, cy, w, h) + representation for comparison to center-size form ground truth data. + Args: + boxes: (tensor) point_form boxes + Return: + boxes: (tensor) Converted xmin, ymin, xmax, ymax form of boxes. + """ + return torch.cat((boxes[:, 2:] + boxes[:, :2])/2, # cx, cy + boxes[:, 2:] - boxes[:, :2], 1) # w, h + + +def intersect(box_a, box_b): + """ We resize both tensors to [A,B,2] without new malloc: + [A,2] -> [A,1,2] -> [A,B,2] + [B,2] -> [1,B,2] -> [A,B,2] + Then we compute the area of intersect between box_a and box_b. + Args: + box_a: (tensor) bounding boxes, Shape: [A,4]. + box_b: (tensor) bounding boxes, Shape: [B,4]. + Return: + (tensor) intersection area, Shape: [A,B]. + """ + A = box_a.size(0) + B = box_b.size(0) + max_xy = torch.min(box_a[:, 2:].unsqueeze(1).expand(A, B, 2), + box_b[:, 2:].unsqueeze(0).expand(A, B, 2)) + min_xy = torch.max(box_a[:, :2].unsqueeze(1).expand(A, B, 2), + box_b[:, :2].unsqueeze(0).expand(A, B, 2)) + inter = torch.clamp((max_xy - min_xy), min=0) + return inter[:, :, 0] * inter[:, :, 1] + + +def jaccard(box_a, box_b): + """Compute the jaccard overlap of two sets of boxes. The jaccard overlap + is simply the intersection over union of two boxes. Here we operate on + ground truth boxes and default boxes. + E.g.: + A ∩ B / A ∪ B = A ∩ B / (area(A) + area(B) - A ∩ B) + Args: + box_a: (tensor) Ground truth bounding boxes, Shape: [num_objects,4] + box_b: (tensor) Prior boxes from priorbox layers, Shape: [num_priors,4] + Return: + jaccard overlap: (tensor) Shape: [box_a.size(0), box_b.size(0)] + """ + inter = intersect(box_a, box_b) + area_a = ((box_a[:, 2]-box_a[:, 0]) * + (box_a[:, 3]-box_a[:, 1])).unsqueeze(1).expand_as(inter) # [A,B] + area_b = ((box_b[:, 2]-box_b[:, 0]) * + (box_b[:, 3]-box_b[:, 1])).unsqueeze(0).expand_as(inter) # [A,B] + union = area_a + area_b - inter + return inter / union # [A,B] + + +def matrix_iou(a, b): + """ + return iou of a and b, numpy version for data augenmentation + """ + lt = np.maximum(a[:, np.newaxis, :2], b[:, :2]) + rb = np.minimum(a[:, np.newaxis, 2:], b[:, 2:]) + + area_i = np.prod(rb - lt, axis=2) * (lt < rb).all(axis=2) + area_a = np.prod(a[:, 2:] - a[:, :2], axis=1) + area_b = np.prod(b[:, 2:] - b[:, :2], axis=1) + return area_i / (area_a[:, np.newaxis] + area_b - area_i) + + +def matrix_iof(a, b): + """ + return iof of a and b, numpy version for data augenmentation + """ + lt = np.maximum(a[:, np.newaxis, :2], b[:, :2]) + rb = np.minimum(a[:, np.newaxis, 2:], b[:, 2:]) + + area_i = np.prod(rb - lt, axis=2) * (lt < rb).all(axis=2) + area_a = np.prod(a[:, 2:] - a[:, :2], axis=1) + return area_i / np.maximum(area_a[:, np.newaxis], 1) + + +def match(threshold, truths, priors, variances, labels, landms, loc_t, conf_t, landm_t, idx): + """Match each prior box with the ground truth box of the highest jaccard + overlap, encode the bounding boxes, then return the matched indices + corresponding to both confidence and location preds. + Args: + threshold: (float) The overlap threshold used when mathing boxes. + truths: (tensor) Ground truth boxes, Shape: [num_obj, 4]. + priors: (tensor) Prior boxes from priorbox layers, Shape: [n_priors,4]. + variances: (tensor) Variances corresponding to each prior coord, + Shape: [num_priors, 4]. + labels: (tensor) All the class labels for the image, Shape: [num_obj]. + landms: (tensor) Ground truth landms, Shape [num_obj, 10]. + loc_t: (tensor) Tensor to be filled w/ endcoded location targets. + conf_t: (tensor) Tensor to be filled w/ matched indices for conf preds. + landm_t: (tensor) Tensor to be filled w/ endcoded landm targets. + idx: (int) current batch index + Return: + The matched indices corresponding to 1)location 2)confidence 3)landm preds. + """ + # jaccard index + overlaps = jaccard( + truths, + point_form(priors) + ) + # (Bipartite Matching) + # [1,num_objects] best prior for each ground truth + best_prior_overlap, best_prior_idx = overlaps.max(1, keepdim=True) + + # ignore hard gt + valid_gt_idx = best_prior_overlap[:, 0] >= 0.2 + best_prior_idx_filter = best_prior_idx[valid_gt_idx, :] + if best_prior_idx_filter.shape[0] <= 0: + loc_t[idx] = 0 + conf_t[idx] = 0 + return + + # [1,num_priors] best ground truth for each prior + best_truth_overlap, best_truth_idx = overlaps.max(0, keepdim=True) + best_truth_idx.squeeze_(0) + best_truth_overlap.squeeze_(0) + best_prior_idx.squeeze_(1) + best_prior_idx_filter.squeeze_(1) + best_prior_overlap.squeeze_(1) + best_truth_overlap.index_fill_(0, best_prior_idx_filter, 2) # ensure best prior + # TODO refactor: index best_prior_idx with long tensor + # ensure every gt matches with its prior of max overlap + for j in range(best_prior_idx.size(0)): # 判别此anchor是预测哪一个boxes + best_truth_idx[best_prior_idx[j]] = j + matches = truths[best_truth_idx] # Shape: [num_priors,4] 此处为每一个anchor对应的bbox取出来 + conf = labels[best_truth_idx] # Shape: [num_priors] 此处为每一个anchor对应的label取出来 + conf[best_truth_overlap < threshold] = 0 # label as background overlap<0.35的全部作为负样本 + loc = encode(matches, priors, variances) + + matches_landm = landms[best_truth_idx] + landm = encode_landm(matches_landm, priors, variances) + loc_t[idx] = loc # [num_priors,4] encoded offsets to learn + conf_t[idx] = conf # [num_priors] top class label for each prior + landm_t[idx] = landm + + +def encode(matched, priors, variances): + """Encode the variances from the priorbox layers into the ground truth boxes + we have matched (based on jaccard overlap) with the prior boxes. + Args: + matched: (tensor) Coords of ground truth for each prior in point-form + Shape: [num_priors, 4]. + priors: (tensor) Prior boxes in center-offset form + Shape: [num_priors,4]. + variances: (list[float]) Variances of priorboxes + Return: + encoded boxes (tensor), Shape: [num_priors, 4] + """ + + # dist b/t match center and prior's center + g_cxcy = (matched[:, :2] + matched[:, 2:])/2 - priors[:, :2] + # encode variance + g_cxcy /= (variances[0] * priors[:, 2:]) + # match wh / prior wh + g_wh = (matched[:, 2:] - matched[:, :2]) / priors[:, 2:] + g_wh = torch.log(g_wh) / variances[1] + # return target for smooth_l1_loss + return torch.cat([g_cxcy, g_wh], 1) # [num_priors,4] + +def encode_landm(matched, priors, variances): + """Encode the variances from the priorbox layers into the ground truth boxes + we have matched (based on jaccard overlap) with the prior boxes. + Args: + matched: (tensor) Coords of ground truth for each prior in point-form + Shape: [num_priors, 10]. + priors: (tensor) Prior boxes in center-offset form + Shape: [num_priors,4]. + variances: (list[float]) Variances of priorboxes + Return: + encoded landm (tensor), Shape: [num_priors, 10] + """ + + # dist b/t match center and prior's center + matched = torch.reshape(matched, (matched.size(0), 5, 2)) + priors_cx = priors[:, 0].unsqueeze(1).expand(matched.size(0), 5).unsqueeze(2) + priors_cy = priors[:, 1].unsqueeze(1).expand(matched.size(0), 5).unsqueeze(2) + priors_w = priors[:, 2].unsqueeze(1).expand(matched.size(0), 5).unsqueeze(2) + priors_h = priors[:, 3].unsqueeze(1).expand(matched.size(0), 5).unsqueeze(2) + priors = torch.cat([priors_cx, priors_cy, priors_w, priors_h], dim=2) + g_cxcy = matched[:, :, :2] - priors[:, :, :2] + # encode variance + g_cxcy /= (variances[0] * priors[:, :, 2:]) + # g_cxcy /= priors[:, :, 2:] + g_cxcy = g_cxcy.reshape(g_cxcy.size(0), -1) + # return target for smooth_l1_loss + return g_cxcy + + +# Adapted from https://github.com/Hakuyume/chainer-ssd +def decode(loc, priors, variances): + """Decode locations from predictions using priors to undo + the encoding we did for offset regression at train time. + Args: + loc (tensor): location predictions for loc layers, + Shape: [num_priors,4] + priors (tensor): Prior boxes in center-offset form. + Shape: [num_priors,4]. + variances: (list[float]) Variances of priorboxes + Return: + decoded bounding box predictions + """ + + boxes = torch.cat(( + priors[:, :2] + loc[:, :2] * variances[0] * priors[:, 2:], + priors[:, 2:] * torch.exp(loc[:, 2:] * variances[1])), 1) + boxes[:, :2] -= boxes[:, 2:] / 2 + boxes[:, 2:] += boxes[:, :2] + return boxes + +def decode_landm(pre, priors, variances): + """Decode landm from predictions using priors to undo + the encoding we did for offset regression at train time. + Args: + pre (tensor): landm predictions for loc layers, + Shape: [num_priors,10] + priors (tensor): Prior boxes in center-offset form. + Shape: [num_priors,4]. + variances: (list[float]) Variances of priorboxes + Return: + decoded landm predictions + """ + landms = torch.cat((priors[:, :2] + pre[:, :2] * variances[0] * priors[:, 2:], + priors[:, :2] + pre[:, 2:4] * variances[0] * priors[:, 2:], + priors[:, :2] + pre[:, 4:6] * variances[0] * priors[:, 2:], + priors[:, :2] + pre[:, 6:8] * variances[0] * priors[:, 2:], + priors[:, :2] + pre[:, 8:10] * variances[0] * priors[:, 2:], + ), dim=1) + return landms + + +def log_sum_exp(x): + """Utility function for computing log_sum_exp while determining + This will be used to determine unaveraged confidence loss across + all examples in a batch. + Args: + x (Variable(tensor)): conf_preds from conf layers + """ + x_max = x.data.max() + return torch.log(torch.sum(torch.exp(x-x_max), 1, keepdim=True)) + x_max + + +# Original author: Francisco Massa: +# https://github.com/fmassa/object-detection.torch +# Ported to PyTorch by Max deGroot (02/01/2017) +def nms(boxes, scores, overlap=0.5, top_k=200): + """Apply non-maximum suppression at test time to avoid detecting too many + overlapping bounding boxes for a given object. + Args: + boxes: (tensor) The location preds for the img, Shape: [num_priors,4]. + scores: (tensor) The class predscores for the img, Shape:[num_priors]. + overlap: (float) The overlap thresh for suppressing unnecessary boxes. + top_k: (int) The Maximum number of box preds to consider. + Return: + The indices of the kept boxes with respect to num_priors. + """ + + keep = torch.Tensor(scores.size(0)).fill_(0).long() + if boxes.numel() == 0: + return keep + x1 = boxes[:, 0] + y1 = boxes[:, 1] + x2 = boxes[:, 2] + y2 = boxes[:, 3] + area = torch.mul(x2 - x1, y2 - y1) + v, idx = scores.sort(0) # sort in ascending order + # I = I[v >= 0.01] + idx = idx[-top_k:] # indices of the top-k largest vals + xx1 = boxes.new() + yy1 = boxes.new() + xx2 = boxes.new() + yy2 = boxes.new() + w = boxes.new() + h = boxes.new() + + # keep = torch.Tensor() + count = 0 + while idx.numel() > 0: + i = idx[-1] # index of current largest val + # keep.append(i) + keep[count] = i + count += 1 + if idx.size(0) == 1: + break + idx = idx[:-1] # remove kept element from view + # load bboxes of next highest vals + torch.index_select(x1, 0, idx, out=xx1) + torch.index_select(y1, 0, idx, out=yy1) + torch.index_select(x2, 0, idx, out=xx2) + torch.index_select(y2, 0, idx, out=yy2) + # store element-wise max with next highest score + xx1 = torch.clamp(xx1, min=x1[i]) + yy1 = torch.clamp(yy1, min=y1[i]) + xx2 = torch.clamp(xx2, max=x2[i]) + yy2 = torch.clamp(yy2, max=y2[i]) + w.resize_as_(xx2) + h.resize_as_(yy2) + w = xx2 - xx1 + h = yy2 - yy1 + # check sizes of xx1 and xx2.. after each iteration + w = torch.clamp(w, min=0.0) + h = torch.clamp(h, min=0.0) + inter = w*h + # IoU = i / (area(a) + area(b) - i) + rem_areas = torch.index_select(area, 0, idx) # load remaining areas) + union = (rem_areas - inter) + area[i] + IoU = inter/union # store result in iou + # keep only elements with an IoU <= overlap + idx = idx[IoU.le(overlap)] + return keep, count + + diff --git a/utils/nms/__init__.py b/utils/nms/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/utils/nms/__pycache__/__init__.cpython-38.pyc b/utils/nms/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000..b730b73 Binary files /dev/null and b/utils/nms/__pycache__/__init__.cpython-38.pyc differ diff --git a/utils/nms/__pycache__/py_cpu_nms.cpython-38.pyc b/utils/nms/__pycache__/py_cpu_nms.cpython-38.pyc new file mode 100644 index 0000000..1831740 Binary files /dev/null and b/utils/nms/__pycache__/py_cpu_nms.cpython-38.pyc differ diff --git a/utils/nms/py_cpu_nms.py b/utils/nms/py_cpu_nms.py new file mode 100644 index 0000000..54e7b25 --- /dev/null +++ b/utils/nms/py_cpu_nms.py @@ -0,0 +1,38 @@ +# -------------------------------------------------------- +# Fast R-CNN +# Copyright (c) 2015 Microsoft +# Licensed under The MIT License [see LICENSE for details] +# Written by Ross Girshick +# -------------------------------------------------------- + +import numpy as np + +def py_cpu_nms(dets, thresh): + """Pure Python NMS baseline.""" + x1 = dets[:, 0] + y1 = dets[:, 1] + x2 = dets[:, 2] + y2 = dets[:, 3] + scores = dets[:, 4] + + areas = (x2 - x1 + 1) * (y2 - y1 + 1) + order = scores.argsort()[::-1] + + keep = [] + while order.size > 0: + i = order[0] + keep.append(i) + xx1 = np.maximum(x1[i], x1[order[1:]]) + yy1 = np.maximum(y1[i], y1[order[1:]]) + xx2 = np.minimum(x2[i], x2[order[1:]]) + yy2 = np.minimum(y2[i], y2[order[1:]]) + + w = np.maximum(0.0, xx2 - xx1 + 1) + h = np.maximum(0.0, yy2 - yy1 + 1) + inter = w * h + ovr = inter / (areas[i] + areas[order[1:]] - inter) + + inds = np.where(ovr <= thresh)[0] + order = order[inds + 1] + + return keep diff --git a/utils/plot.py b/utils/plot.py new file mode 100644 index 0000000..ccc588e --- /dev/null +++ b/utils/plot.py @@ -0,0 +1,72 @@ +# coding: utf-8 + +import os +from pathlib import Path + +import matplotlib.pyplot as plt +import numpy as np +import pandas as pd +from menpo.visualize.viewmatplotlib import sample_colours_from_colourmap +from prettytable import PrettyTable +from sklearn.metrics import roc_curve, auc + +image_path = "/data/anxiang/IJB_release/IJBC" +files = [ + "./ms1mv3_arcface_r100/ms1mv3_arcface_r100/ijbc.npy" +] + + +def read_template_pair_list(path): + pairs = pd.read_csv(path, sep=' ', header=None).values + t1 = pairs[:, 0].astype(np.int) + t2 = pairs[:, 1].astype(np.int) + label = pairs[:, 2].astype(np.int) + return t1, t2, label + + +p1, p2, label = read_template_pair_list( + os.path.join('%s/meta' % image_path, + '%s_template_pair_label.txt' % 'ijbc')) + +methods = [] +scores = [] +for file in files: + methods.append(file.split('/')[-2]) + scores.append(np.load(file)) + +methods = np.array(methods) +scores = dict(zip(methods, scores)) +colours = dict( + zip(methods, sample_colours_from_colourmap(methods.shape[0], 'Set2'))) +x_labels = [10 ** -6, 10 ** -5, 10 ** -4, 10 ** -3, 10 ** -2, 10 ** -1] +tpr_fpr_table = PrettyTable(['Methods'] + [str(x) for x in x_labels]) +fig = plt.figure() +for method in methods: + fpr, tpr, _ = roc_curve(label, scores[method]) + roc_auc = auc(fpr, tpr) + fpr = np.flipud(fpr) + tpr = np.flipud(tpr) # select largest tpr at same fpr + plt.plot(fpr, + tpr, + color=colours[method], + lw=1, + label=('[%s (AUC = %0.4f %%)]' % + (method.split('-')[-1], roc_auc * 100))) + tpr_fpr_row = [] + tpr_fpr_row.append("%s-%s" % (method, "IJBC")) + for fpr_iter in np.arange(len(x_labels)): + _, min_index = min( + list(zip(abs(fpr - x_labels[fpr_iter]), range(len(fpr))))) + tpr_fpr_row.append('%.2f' % (tpr[min_index] * 100)) + tpr_fpr_table.add_row(tpr_fpr_row) +plt.xlim([10 ** -6, 0.1]) +plt.ylim([0.3, 1.0]) +plt.grid(linestyle='--', linewidth=1) +plt.xticks(x_labels) +plt.yticks(np.linspace(0.3, 1.0, 8, endpoint=True)) +plt.xscale('log') +plt.xlabel('False Positive Rate') +plt.ylabel('True Positive Rate') +plt.title('ROC on IJB') +plt.legend(loc="lower right") +print(tpr_fpr_table) diff --git a/utils/timer.py b/utils/timer.py new file mode 100644 index 0000000..e4b3b80 --- /dev/null +++ b/utils/timer.py @@ -0,0 +1,40 @@ +# -------------------------------------------------------- +# Fast R-CNN +# Copyright (c) 2015 Microsoft +# Licensed under The MIT License [see LICENSE for details] +# Written by Ross Girshick +# -------------------------------------------------------- + +import time + + +class Timer(object): + """A simple timer.""" + def __init__(self): + self.total_time = 0. + self.calls = 0 + self.start_time = 0. + self.diff = 0. + self.average_time = 0. + + def tic(self): + # using time.time instead of time.clock because time time.clock + # does not normalize for multithreading + self.start_time = time.time() + + def toc(self, average=True): + self.diff = time.time() - self.start_time + self.total_time += self.diff + self.calls += 1 + self.average_time = self.total_time / self.calls + if average: + return self.average_time + else: + return self.diff + + def clear(self): + self.total_time = 0. + self.calls = 0 + self.start_time = 0. + self.diff = 0. + self.average_time = 0. diff --git a/utils/utils_amp.py b/utils/utils_amp.py new file mode 100644 index 0000000..c60067e --- /dev/null +++ b/utils/utils_amp.py @@ -0,0 +1,81 @@ +from typing import Dict, List + +import torch +from torch._six import container_abcs +from torch.cuda.amp import GradScaler + + +class _MultiDeviceReplicator(object): + """ + Lazily serves copies of a tensor to requested devices. Copies are cached per-device. + """ + + def __init__(self, master_tensor: torch.Tensor) -> None: + assert master_tensor.is_cuda + self.master = master_tensor + self._per_device_tensors: Dict[torch.device, torch.Tensor] = {} + + def get(self, device) -> torch.Tensor: + retval = self._per_device_tensors.get(device, None) + if retval is None: + retval = self.master.to(device=device, non_blocking=True, copy=True) + self._per_device_tensors[device] = retval + return retval + + +class MaxClipGradScaler(GradScaler): + def __init__(self, init_scale, max_scale: float, growth_interval=100): + GradScaler.__init__(self, init_scale=init_scale, growth_interval=growth_interval) + self.max_scale = max_scale + + def scale_clip(self): + if self.get_scale() == self.max_scale: + self.set_growth_factor(1) + elif self.get_scale() < self.max_scale: + self.set_growth_factor(2) + elif self.get_scale() > self.max_scale: + self._scale.fill_(self.max_scale) + self.set_growth_factor(1) + + def scale(self, outputs): + """ + Multiplies ('scales') a tensor or list of tensors by the scale factor. + + Returns scaled outputs. If this instance of :class:`GradScaler` is not enabled, outputs are returned + unmodified. + + Arguments: + outputs (Tensor or iterable of Tensors): Outputs to scale. + """ + if not self._enabled: + return outputs + self.scale_clip() + # Short-circuit for the common case. + if isinstance(outputs, torch.Tensor): + assert outputs.is_cuda + if self._scale is None: + self._lazy_init_scale_growth_tracker(outputs.device) + assert self._scale is not None + return outputs * self._scale.to(device=outputs.device, non_blocking=True) + + # Invoke the more complex machinery only if we're treating multiple outputs. + stash: List[_MultiDeviceReplicator] = [] # holds a reference that can be overwritten by apply_scale + + def apply_scale(val): + if isinstance(val, torch.Tensor): + assert val.is_cuda + if len(stash) == 0: + if self._scale is None: + self._lazy_init_scale_growth_tracker(val.device) + assert self._scale is not None + stash.append(_MultiDeviceReplicator(self._scale)) + return val * stash[0].get(val.device) + elif isinstance(val, container_abcs.Iterable): + iterable = map(apply_scale, val) + if isinstance(val, list) or isinstance(val, tuple): + return type(val)(iterable) + else: + return iterable + else: + raise ValueError("outputs must be a Tensor or an iterable of Tensors") + return apply_scale(outputs) diff --git a/utils/utils_callbacks.py b/utils/utils_callbacks.py new file mode 100644 index 0000000..1114301 --- /dev/null +++ b/utils/utils_callbacks.py @@ -0,0 +1,106 @@ +import logging +import os +import time +from typing import List + +import torch + +from eval import verification +from utils.utils_logging import AverageMeter +from partial_fc import PartialFC + + +class CallBackVerification(object): + def __init__(self, frequent, rank, val_targets, rec_prefix, image_size=(112, 112)): + self.frequent: int = frequent + self.rank: int = rank + self.highest_acc: float = 0.0 + self.highest_acc_list: List[float] = [0.0] * len(val_targets) + self.ver_list: List[object] = [] + self.ver_name_list: List[str] = [] + if self.rank is 0: + self.init_dataset(val_targets=val_targets, data_dir=rec_prefix, image_size=image_size) + + def ver_test(self, backbone: torch.nn.Module, global_step: int): + results = [] + for i in range(len(self.ver_list)): + acc1, std1, acc2, std2, xnorm, embeddings_list = verification.test( + self.ver_list[i], backbone, 10, 10) + logging.info('[%s][%d]XNorm: %f' % (self.ver_name_list[i], global_step, xnorm)) + logging.info('[%s][%d]Accuracy-Flip: %1.5f+-%1.5f' % (self.ver_name_list[i], global_step, acc2, std2)) + if acc2 > self.highest_acc_list[i]: + self.highest_acc_list[i] = acc2 + logging.info( + '[%s][%d]Accuracy-Highest: %1.5f' % (self.ver_name_list[i], global_step, self.highest_acc_list[i])) + results.append(acc2) + + def init_dataset(self, val_targets, data_dir, image_size): + for name in val_targets: + path = os.path.join(data_dir, name + ".bin") + if os.path.exists(path): + data_set = verification.load_bin(path, image_size) + self.ver_list.append(data_set) + self.ver_name_list.append(name) + + def __call__(self, num_update, backbone: torch.nn.Module): + if self.rank is 0 and num_update > 0 and num_update % self.frequent == 0: + backbone.eval() + self.ver_test(backbone, num_update) + backbone.train() + + +class CallBackLogging(object): + def __init__(self, frequent, rank, total_step, batch_size, world_size, writer=None): + self.frequent: int = frequent + self.rank: int = rank + self.time_start = time.time() + self.total_step: int = total_step + self.batch_size: int = batch_size + self.world_size: int = world_size + self.writer = writer + + self.init = False + self.tic = 0 + + def __call__(self, global_step, loss: AverageMeter, epoch: int, fp16: bool, grad_scaler: torch.cuda.amp.GradScaler): + if self.rank is 0 and global_step > 0 and global_step % self.frequent == 0: + if self.init: + try: + speed: float = self.frequent * self.batch_size / (time.time() - self.tic) + speed_total = speed * self.world_size + except ZeroDivisionError: + speed_total = float('inf') + + time_now = (time.time() - self.time_start) / 3600 + time_total = time_now / ((global_step + 1) / self.total_step) + time_for_end = time_total - time_now + if self.writer is not None: + self.writer.add_scalar('time_for_end', time_for_end, global_step) + self.writer.add_scalar('loss', loss.avg, global_step) + if fp16: + msg = "Speed %.2f samples/sec Loss %.4f Epoch: %d Global Step: %d "\ + "Fp16 Grad Scale: %2.f Required: %1.f hours" % ( + speed_total, loss.avg, epoch, global_step, grad_scaler.get_scale(), time_for_end + ) + else: + msg = "Speed %.2f samples/sec Loss %.4f Epoch: %d Global Step: %d Required: %1.f hours" % ( + speed_total, loss.avg, epoch, global_step, time_for_end + ) + logging.info(msg) + loss.reset() + self.tic = time.time() + else: + self.init = True + self.tic = time.time() + + +class CallBackModelCheckpoint(object): + def __init__(self, rank, output="./"): + self.rank: int = rank + self.output: str = output + + def __call__(self, global_step, backbone: torch.nn.Module, partial_fc: PartialFC = None): + if global_step > 100 and self.rank is 0: + torch.save(backbone.module.state_dict(), os.path.join(self.output, "backbone.pth")) + if global_step > 100 and partial_fc is not None: + partial_fc.save_params() diff --git a/utils/utils_logging.py b/utils/utils_logging.py new file mode 100644 index 0000000..7d58012 --- /dev/null +++ b/utils/utils_logging.py @@ -0,0 +1,40 @@ +import logging +import os +import sys + + +class AverageMeter(object): + """Computes and stores the average and current value + """ + + def __init__(self): + self.val = None + self.avg = None + self.sum = None + self.count = None + self.reset() + + def reset(self): + self.val = 0 + self.avg = 0 + self.sum = 0 + self.count = 0 + + def update(self, val, n=1): + self.val = val + self.sum += val * n + self.count += n + self.avg = self.sum / self.count + + +def init_logging(log_root, rank, models_root): + if rank is 0: + log_root.setLevel(logging.INFO) + formatter = logging.Formatter("Training: %(asctime)s-%(message)s") + handler_file = logging.FileHandler(os.path.join(models_root, "training.log")) + handler_stream = logging.StreamHandler(sys.stdout) + handler_file.setFormatter(formatter) + handler_stream.setFormatter(formatter) + log_root.addHandler(handler_file) + log_root.addHandler(handler_stream) + log_root.info('rank_id: %d' % rank) diff --git a/utils/utils_os.py b/utils/utils_os.py new file mode 100644 index 0000000..e69de29 diff --git a/weights/Resnet50_Final.pth b/weights/Resnet50_Final.pth new file mode 100644 index 0000000..3ac99e7 Binary files /dev/null and b/weights/Resnet50_Final.pth differ diff --git a/weights/mobilenet0.25_Final.pth b/weights/mobilenet0.25_Final.pth new file mode 100644 index 0000000..a02809f Binary files /dev/null and b/weights/mobilenet0.25_Final.pth differ diff --git a/weights/mobilenetV1X0.25_pretrain.tar b/weights/mobilenetV1X0.25_pretrain.tar new file mode 100644 index 0000000..cb53f82 Binary files /dev/null and b/weights/mobilenetV1X0.25_pretrain.tar differ