diff --git a/README.md b/README.md index 51dab59..f686210 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,8 @@ ### Recent Update + **`2018.02.16`**: We put the MegaFace noise list in this repo. Please refer to [https://github.com/deepinsight/insightface/blob/master/src/megaface] for detail. + **`2018.02.13`**: We achieved state-of-the-art performance on [MegaFace-Challenge-1](http://megaface.cs.washington.edu/results/facescrub.html), at `98.06%`. Also note that the training set we used has NO identities overlap with facescrub, please check our paper for detail. **`2018.02.07`**: We evaluate LFW,CFP,AgeDB-30 again after removing training set overlaps, the results almost stay the same. See [Results](#results) for detail. diff --git a/src/eval/ytf.py b/src/eval/ytf.py new file mode 100644 index 0000000..793dab3 --- /dev/null +++ b/src/eval/ytf.py @@ -0,0 +1,302 @@ +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import os +import cv2 +import argparse +import sys +import numpy as np +from scipy import misc +from sklearn.model_selection import KFold +from scipy import interpolate +import sklearn +from sklearn.metrics.pairwise import euclidean_distances +import datetime +import pickle +from sklearn.decomposition import PCA +import mxnet as mx +from mxnet import ndarray as nd +from verification import evaluate +from verification import calculate_accuracy +sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'common')) +import face_image + + +model = None +feature_cache = {} +image_size = [112,112] + +def get_feature(name, vid, args): + global feature_cache + key = (name,vid) + if key in feature_cache: + return feature_cache[key] + + input_dir = os.path.join(args.image_dir, name, str(vid)) + data = nd.zeros( (1 ,3, image_size[0], image_size[1]) ) + F = [] + for img in os.listdir(input_dir): + img = os.path.join(input_dir, img) + img = cv2.imread(img) + img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) + img = np.transpose(img, (2,0,1)) + data[0][:] = img + db = mx.io.DataBatch(data=(data,)) + model.forward(db, is_train=False) + net_out = model.get_outputs()[0].asnumpy().flatten() + F.append(net_out) + F = np.array(F) + F = sklearn.preprocessing.normalize(F) + feature = np.mean(F, axis=0, keepdims=True) + feature = sklearn.preprocessing.normalize(feature).flatten() + + feature_cache[key] = feature + return feature + +def get_feature_set(name, vid, args): + global feature_cache + key = (name,vid) + if key in feature_cache: + return feature_cache[key] + + input_dir = os.path.join(args.image_dir, name, str(vid)) + data = nd.zeros( (1 ,3, image_size[0], image_size[1]) ) + F = [] + for img in os.listdir(input_dir): + img = os.path.join(input_dir, img) + img = cv2.imread(img) + img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) + img = np.transpose(img, (2,0,1)) + data[0][:] = img + db = mx.io.DataBatch(data=(data,)) + model.forward(db, is_train=False) + net_out = model.get_outputs()[0].asnumpy().flatten() + F.append(net_out) + F = np.array(F) + F = sklearn.preprocessing.normalize(F) + + feature_cache[key] = F + return F + +def main(args): + global model + ctx = mx.gpu(args.gpu) + args.ctx_num = 1 + print('image_size', image_size) + vec = args.model.split(',') + 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['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]))]) + model.set_params(arg_params, aux_params) + args.image_dir = os.path.join(args.data_dir, 'images') + pairs_file = os.path.join(args.data_dir, 'splits2.txt') + embeddings = [] + issame_list = [] + data = [] + pp = 0 + for line in open(pairs_file, 'r'): + line = line.strip() + if line.startswith('split'): + continue + pp+=1 + if pp%10==0: + print('processing', pp) + vec = line.split(',') + assert len(vec)>=5 + issame_list.append(int(vec[-1])) + for i in [2,3]: + _str = vec[i].strip() + _vec = _str.split('/') + assert len(_vec)==2 + name = _vec[0] + vid = int(_vec[1]) + feature = get_feature(name, vid, args) + print('feature', feature.shape) + embeddings.append(feature) + data.append( (name, vid) ) + #if len(issame_list)==20: + # break + embeddings = np.array(embeddings) + print(embeddings.shape) + thresholds = np.arange(0, 4, 0.01) + actual_issame = np.asarray(issame_list) + nrof_folds = 10 + embeddings1 = embeddings[0::2] + embeddings2 = embeddings[1::2] + 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 = KFold(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) + + diff = np.subtract(embeddings1, embeddings2) + dist = np.sum(np.square(diff),1) + pouts = [] + nouts = [] + for fold_idx, (train_set, test_set) in enumerate(k_fold.split(indices)): + # Find the best threshold for the fold + acc_train = np.zeros((nrof_thresholds)) + #print(train_set) + #print(train_set.__class__) + for threshold_idx, threshold in enumerate(thresholds): + p2 = dist[train_set] + p3 = actual_issame[train_set] + _, _, acc_train[threshold_idx] = calculate_accuracy(threshold, p2, p3) + 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]) + best_threshold = thresholds[best_threshold_index] + for iid in test_set: + ida = iid*2 + idb = ida+1 + asame = actual_issame[iid] + _dist = dist[iid] + violate = _dist - best_threshold + if not asame: + violate *= -1.0 + if violate>0.0: + dataa = data[ida] + datab = data[idb] + #print(imga.shape, imgb.shape, violate, asame, _dist) + if asame: + pouts.append( (dataa, datab, _dist, best_threshold, ida) ) + else: + nouts.append( (dataa, datab, _dist, best_threshold, ida) ) + + + tpr = np.mean(tprs,0) + fpr = np.mean(fprs,0) + acc = np.mean(accuracy) + pouts = sorted(pouts, key = lambda x: x[2], reverse=True) + nouts = sorted(nouts, key = lambda x: x[2], reverse=False) + print(len(pouts), len(nouts)) + print('acc', acc) + if len(nouts)>0: + threshold = nouts[0][3] + else: + threshold = pouts[-1][3] + #print('threshold', threshold) + print('positive(false negative):') + for out in pouts: + print("\t%s\t%s\t(distance:%f, threshold:%f)"%(out[0], out[1], out[2], out[3])) + print('negative(false positive):') + for out in nouts: + print("\t%s\t%s\t(distance:%f, threshold:%f)"%(out[0], out[1], out[2], out[3])) + + + + + + #_, _, accuracy, val, val_std, far = evaluate(embeddings, issame_list, nrof_folds=10) + #acc2, std2 = np.mean(accuracy), np.std(accuracy) + #print('acc', acc2) + +def main2(args): + global model + ctx = mx.gpu(args.gpu) + args.ctx_num = 1 + print('image_size', image_size) + vec = args.model.split(',') + 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['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]))]) + model.set_params(arg_params, aux_params) + args.image_dir = os.path.join(args.data_dir, 'images') + pairs_file = os.path.join(args.data_dir, 'splits2.txt') + issame_list = [] + dist = [] + pp = 0 + for line in open(pairs_file, 'r'): + line = line.strip() + if line.startswith('split'): + continue + pp+=1 + if pp%10==0: + print('processing', pp) + vec = line.split(',') + assert len(vec)>=5 + issame_list.append(int(vec[-1])) + feature_sets = [] + for i in [2,3]: + _str = vec[i].strip() + _vec = _str.split('/') + assert len(_vec)==2 + name = _vec[0] + vid = int(_vec[1]) + feature = get_feature_set(name, vid, args) + print('feature', len(feature)) + feature_sets.append(feature) + X = feature_sets[0] + Y = feature_sets[1] + _dist = euclidean_distances(X, Y) + _dist = _dist*_dist + #_tmp = np.eye(_dist.shape[0], dtype=np.float32) + #_dist += _tmp + if args.mode==2: + _dist = np.amin(_dist) + elif args.mode==3: + _dist = np.mean(_dist) + else: + _dist = np.amax(_dist) + print(_dist) + dist.append(_dist) + #if len(dist)==10: + # break + + dist = np.array(dist) + nrof_folds = 10 + thresholds = np.arange(0, 4, 0.01) + actual_issame = np.array(issame_list) + nrof_pairs = len(actual_issame) + nrof_thresholds = len(thresholds) + k_fold = KFold(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) + for fold_idx, (train_set, test_set) in enumerate(k_fold.split(indices)): + + # 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]) + acc2, std2 = np.mean(accuracy), np.std(accuracy) + print('acc', acc2) + +if __name__ == '__main__': + + parser = argparse.ArgumentParser(description='do verification') + # general + parser.add_argument('--data-dir', default='/raid5data/dplearn/YTF', help='') + parser.add_argument('--model', default='../model/softmax,50', help='path to load model.') + parser.add_argument('--gpu', default=0, type=int, help='gpu id') + parser.add_argument('--batch-size', default=32, type=int, help='') + parser.add_argument('--mode', default=1, type=int, help='') + args = parser.parse_args() + if args.mode>=2: + main2(args) + else: + main(args) + diff --git a/src/eval/ytf_badcases.py b/src/eval/ytf_badcases.py new file mode 100644 index 0000000..a2525c3 --- /dev/null +++ b/src/eval/ytf_badcases.py @@ -0,0 +1,75 @@ +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import sys +import os +import numpy as np +import cv2 + +pairs_file = '/raid5data/dplearn/YTF/splits2.txt' +stat = [0,0] +for line in open(pairs_file, 'r'): + line = line.strip() + if line.startswith('split'): + continue + vec = line.split(',') + issame = int(vec[-1]) + if issame: + stat[0]+=1 + else: + stat[1]+=1 +print('stat', stat) + +image_dir = '/raid5data/dplearn/YTF/images' + +def get_img(name, vid): + input_dir = os.path.join(image_dir, name, str(vid)) + paths = [] + for img in os.listdir(input_dir): + path = os.path.join(input_dir, img) + paths.append(path) + paths = sorted(paths) + parts = 8 + assert len(paths)>=parts + gap = len(paths)//parts + img = None + for i in xrange(parts): + idx = gap*i + path = paths[idx] + _img = cv2.imread(path) + #print(_img.shape) + if img is None: + img = _img + else: + img = np.concatenate( (img, _img), axis=1) + return img + + +text_color = (153,255,51) +for input in ['ytf_false_positive', 'ytf_false_negative']: + all_img = None + pp = 0 + for line in open(input+".log", 'r'): + if line.startswith("\t"): + break + vec = line.strip().split(',') + img1 = get_img(vec[0], int(vec[1])) + img2 = get_img(vec[2], int(vec[3])) + img = np.concatenate( (img1, img2), axis=0) + if all_img is None: + all_img = img + else: + all_img = np.concatenate( (all_img, img), axis=0) + blank_img = np.zeros( (20, 112*8,3), dtype=np.uint8) + blank_img[:,:,:] = 255 + font = cv2.FONT_HERSHEY_SIMPLEX + k = "centre-distance:%.3f"%(float(vec[4])) + #print(k) + cv2.putText(blank_img,k,(350,blank_img.shape[0]-4), font, 0.6, text_color, 2) + all_img = np.concatenate( (all_img, blank_img), axis=0) + pp+=1 + + filename = os.path.join('badcases', input+".png") + cv2.imwrite(filename, all_img) + diff --git a/src/megaface/README.md b/src/megaface/README.md new file mode 100644 index 0000000..8947358 --- /dev/null +++ b/src/megaface/README.md @@ -0,0 +1,6 @@ +Please strictly follow these rules if you want to use our MegaFace noises list. + +* Please cite our paper and git repo if you want to use this list in your paper. +* Please include the information like `We used the noises list proposed by InsightFace, at https://github.com/deepinsight/insightface/tree/master/src/megaface` if you want to submit the result to MegaFace challenge. +* To be fair, if you want to submit MegaFace result, please ensure there's no training set overlaps with FaceScrub identities. You can do this by removing identities from your training set whose cosine similarity is larger than 0.4 with any FaceScrub identity by comparing their centre feature vectors. +* If you find more overlaps noise, please open an issue at InsightFace. diff --git a/src/megaface/facescrub_noises.txt b/src/megaface/facescrub_noises.txt new file mode 100644 index 0000000..da28c10 --- /dev/null +++ b/src/megaface/facescrub_noises.txt @@ -0,0 +1,606 @@ +#Please strictly follow the rules in https://github.com/deepinsight/insightface/tree/master/src/megaface/README.md if you want to use this list. +Aaron_Eckhart_136.png +Aaron_Eckhart_221.png +Adam_McKay_468.png +Adam_McKay_478.png +Adam_Sandler_558.png +Adrienne_Barbeau_4259.png +Adrienne_Frantz_27683.png +Adrienne_Frantz_27693.png +Adrienne_Frantz_27699.png +Adrienne_Frantz_27701.png +Adrienne_Frantz_27829.png +Aisha_Hinds_35768.png +Alec_Baldwin_2121.png +Alice_Krige_40717.png +Alley_Mills_52029.png +Alley_Mills_52039.png +Alley_Mills_52044.png +Allison_Janney_37357.png +Allison_Janney_37447.png +Alyson_Hannigan_32288.png +Alyssa_Milano_51641.png +America_Ferrera_25859.png +America_Ferrera_25870.png +Amy_Davidson_18553.png +Andrea_Bogart_8427.png +Andrea_Bowen_8992.png +Andrea_Bowen_9090.png +Andy_Richter_3141.png +Angell_Conwell_15508.png +Anne_Hathaway_33648.png +Anne_Hathaway_33685.png +Annie_Ilonzeh_37123.png +Anthony_Hopkins_3562.png +Anthony_Hopkins_3595.png +Anthony_Hopkins_3694.png +Antonio_Banderas_4016.png +Arnold_Vosloo_4287.png +Ashley_Benson_4144.png +Ashley_Johnson_37631.png +Ashley_Johnson_37649.png +Audra_McDonald_49657.png +Audrey_Landers_42201.png +Audrey_Landers_42246.png +Barbara_Carrera_11961.png +Ben_Affleck_4700.png +Ben_Affleck_4706.png +Ben_Affleck_4762.png +Ben_Affleck_4885.png +Ben_Kingsley_5146.png +Ben_McKenzie_5219.png +Ben_Stiller_5419.png +Ben_Stiller_5432.png +Bernard_Hill_5869.png +Bernard_Hill_5969.png +Bernie_Mac_6083.png +Billy_Bob_Thornton_7010.png +Billy_Bob_Thornton_7016.png +Billy_Bob_Thornton_7028.png +Billy_Bob_Thornton_7047.png +Billy_Bob_Thornton_7069.png +Billy_Bob_Thornton_7093.png +Billy_Bob_Thornton_7106.png +Billy_Bob_Thornton_7140.png +Billy_Bob_Thornton_7161.png +Billy_Boyd_7281.png +Billy_Boyd_7334.png +Billy_Burke_7418.png +Billy_Burke_7556.png +Billy_Burke_7558.png +Billy_Zane_7799.png +Billy_Zane_7821.png +Bobbie_Eakes_23690.png +Bobbie_Eakes_23702.png +Brad_Pitt_8285.png +Bradley_Cooper_8416.png +Brianna_Brown_10455.png +Brianna_Brown_10482.png +Brooke_Langton_42515.png +Brooke_Langton_42603.png +Brooke_Langton_42604.png +Brooke_Langton_42628.png +Brooke_Langton_42634.png +Brooke_Langton_42643.png +Bruce_Greenwood_8831.png +Candice_Bergen_6028.png +Candice_Bergen_6055.png +Candice_Bergen_6080.png +Carla_Gallo_28085.png +Carla_Gallo_28139.png +Carmen_Electra_24315.png +Caroline_Dhavernas_21720.png +Cary_Elwes_9746.png +Casey_Affleck_9925.png +Cathy_Lee_Crosby_16548.png +Cathy_Lee_Crosby_16564.png +Chase_Masterson_48256.png +Chazz_Palminteri_10758.png +Cheryl_Hines_35834.png +Chris_Evans_10942.png +Chris_Evans_10943.png +Chris_Evans_10990.png +Chris_Evans_11000.png +Chris_Evans_11039.png +Chris_Kattan_11206.png +Chris_Klein_11329.png +Chris_Klein_11346.png +Chris_Klein_11471.png +Christa_Miller_51872.png +Christian_Bale_11961.png +Christina_Applegate_2776.png +Christopher_Lloyd_12504.png +Christopher_Reeve_12692.png +Christopher_Reeve_12737.png +Chyler_Leigh_43366.png +Chyler_Leigh_43374.png +Ciara_Bravo_10094.png +Ciara_Bravo_10161.png +Ciara_Bravo_10214.png +Clint_Eastwood_12918.png +Colin_Farrell_13196.png +Colin_Farrell_13268.png +Colin_Farrell_13282.png +Colin_Firth_13455.png +Colin_Firth_13566.png +Courteney_Cox_16360.png +Crystal_Chappell_13859.png +Crystal_Chappell_13921.png +Crystal_Chappell_13932.png +Crystal_Chappell_13949.png +Crystal_Chappell_13961.png +Dan_Lauria_13992.png +Dan_Lauria_14073.png +Dana_Delany_20425.png +Dana_Delany_20561.png +Dana_Delany_20621.png +Dana_Delany_20632.png +Daniel_Day-Lewis_14356.png +Daniel_Day-Lewis_14361.png +Daniel_Day-Lewis_14397.png +Daniel_Day-Lewis_14545.png +Daniel_Radcliffe_14770.png +David_Schwimmer_15942.png +David_Wenham_16210.png +David_Wenham_16221.png +David_Wenham_16224.png +David_Wenham_16235.png +David_Wenham_16241.png +David_Wenham_16261.png +David_Wenham_16295.png +David_Wenham_16300.png +David_Wenham_16327.png +Dean_Cain_16435.png +Debra_Messing_50555.png +Debra_Messing_50597.png +Debra_Messing_50703.png +Debra_Messing_50746.png +Delta_Burke_11111.png +Delta_Burke_11176.png +Denzel_Washington_16698.png +Desmond_Harrington_17178.png +Diahann_Carroll_12351.png +Diahann_Carroll_12397.png +Dianna_Agron_269.png +Dianna_Agron_363.png +Dianna_Agron_375.png +Dianna_Agron_396.png +Dustin_Hoffman_17932.png +Elizabeth_Berkley_6214.png +Elizabeth_Berkley_6259.png +Elizabeth_Hendrickson_34413.png +Ellen_Greene_30978.png +Ellen_Greene_31003.png +Ellen_Greene_31005.png +Emily_Deschanel_20666.png +Erin_Cummings_17368.png +Erin_Cummings_17400.png +Erin_Cummings_17457.png +Ethan_Hawke_19548.png +Eva_Longoria_45027.png +Farah_Fath_25299.png +Farah_Fath_25343.png +Farah_Fath_25365.png +Farah_Fath_25401.png +Farrah_Fawcett_25594.png +Florencia_Lozano_45592.png +Florencia_Lozano_45594.png +Florencia_Lozano_45606.png +Florencia_Lozano_45632.png +Florencia_Lozano_45640.png +Fran_Drescher_22955.png +Fran_Drescher_23030.png +Gabrielle_Carteris_12657.png +Gates_McFadden_49864.png +Gates_McFadden_49868.png +Glenn_Close_14672.png +Glenn_Close_14739.png +Harrison_Ford_22656.png +Hayden_Christensen_23089.png +Heather_Locklear_44410.png +Heather_Locklear_44498.png +Heather_Locklear_44504.png +Heather_Locklear_44527.png +Holly_Marie_Combs_15225.png +Ian_Holm_24214.png +Jackee_Harry_32964.png +Jackee_Harry_33011.png +James_Brolin_26065.png +James_Frain_26352.png +James_Franco_26574.png +James_Marsden_26731.png +James_Marsden_26756.png +James_McAvoy_26932.png +Jamie_Lee_Curtis_17869.png +Jamie_Lee_Curtis_18018.png +Jamie_Lee_Curtis_18056.png +Jamie_Luner_46356.png +Jamie_Luner_46423.png +Jane_Curtin_17787.png +Jane_Curtin_17820.png +Jane_Leeves_42833.png +Jane_Lynch_46639.png +Jane_Lynch_46743.png +January_Jones_38213.png +January_Jones_38384.png +January_Jones_38414.png +Jasmine_Guy_31496.png +Jasmine_Guy_31562.png +Jasmine_Guy_31594.png +Jasmine_Guy_31618.png +Jasmine_Guy_31678.png +Jason_Biggs_28339.png +Jason_Lee_55690.png +Jason_Lee_55703.png +Jeanne_Cooper_15551.png +Jeanne_Cooper_15652.png +Jeanne_Cooper_15696.png +Jenilee_Harrison_32833.png +Jenilee_Harrison_32864.png +Jenilee_Harrison_32895.png +Jennette_McCurdy_49314.png +Jennie_Garth_28672.png +Jennie_Garth_28686.png +Jeremy_Sisto_29948.png +Jessica_Biel_7413.png +Jessica_Capshaw_11891.png +Jessica_Capshaw_11909.png +Jessica_Leccia_42714.png +Jessica_Leccia_42719.png +Jill_Eikenberry_24108.png +Jill_Eikenberry_24159.png +Jill_Eikenberry_24166.png +Jill_Eikenberry_24179.png +Jill_Eikenberry_24188.png +Jill_Hennessy_35087.png +Jim_Carrey_30976.png +Jim_Carrey_31137.png +Jim_Carrey_31150.png +Joan_Collins_14963.png +Joanna_Kerns_40119.png +Joanna_Kerns_40127.png +Joanna_Kerns_40145.png +Joanna_Kerns_40162.png +Joanna_Kerns_40170.png +Joanna_Kerns_40177.png +John_Malkovich_32908.png +John_Malkovich_32934.png +Jon_Hamm_33859.png +Jonathan_Rhys_Meyers_34545.png +Jonathan_Sadowski_55304.png +Josh_Brolin_34866.png +Josh_Duhamel_35073.png +Josie_Bissett_7155.png +Josie_Bissett_7222.png +Josie_Bissett_7243.png +Joyce_DeWitt_20190.png +Julia_Louis-Dreyfus_45687.png +Julia_Louis-Dreyfus_45785.png +Julie_Marie_Berman_6437.png +Justin_Long_35979.png +Justin_Long_35983.png +Justine_Bateman_4879.png +Kassie_DePaiva_19841.png +Katherine_Helmond_34045.png +Kathy_Baker_3934.png +Kathy_Baker_3984.png +Kathy_Griffin_31087.png +Kathy_Griffin_31113.png +Kellan_Lutz_36883.png +Kevin_Costner_37976.png +Kim_Cattrall_13087.png +Kim_Delaney_20329.png +Kim_Delaney_20363.png +Kim_Fields_26573.png +Kimberlin_Brown_10564.png +Kimberly_McCullough_49225.png +Kirstie_Alley_1565.png +Kit_Harington_38601.png +Kit_Harington_38638.png +Kristen_Alderson_615.png +Kristen_Alderson_714.png +Kristen_Johnston_37751.png +Kristin_Chenoweth_14161.png +Kristin_Chenoweth_14220.png +Kristin_Chenoweth_14242.png +Kristy_McNichol_50183.png +Kristy_McNichol_50205.png +Kristy_McNichol_50256.png +Kristy_McNichol_50272.png +Kristy_McNichol_50295.png +Kristy_McNichol_50304.png +Kristy_McNichol_50314.png +Lacey_Chabert_13239.png +Lacey_Chabert_13291.png +Laura_Innes_37302.png +Laura_Innes_37329.png +Laura_Leighton_43101.png +Laura_Leighton_43169.png +Lauralee_Bell_5169.png +Lauralee_Bell_5206.png +Lauralee_Bell_5272.png +Lauren_Holly_36179.png +Lauren_Holly_36191.png +Lauren_Holly_36211.png +Lauren_Koslow_40373.png +Lauren_Koslow_40426.png +Lauren_Koslow_40428.png +Lauren_Koslow_40434.png +Lauren_Koslow_40453.png +Laurie_Metcalf_50846.png +Laurie_Metcalf_50878.png +Laurie_Metcalf_50883.png +Laurie_Metcalf_50897.png +Laurie_Metcalf_50916.png +Laurie_Metcalf_50917.png +Laurie_Metcalf_50920.png +Laurie_Metcalf_50946.png +Laurie_Metcalf_50973.png +Laurie_Metcalf_50984.png +Laurie_Metcalf_50986.png +Laurie_Metcalf_50989.png +Laurie_Metcalf_51019.png +Lea_Michele_51327.png +Lea_Michele_51337.png +Lea_Michele_51362.png +Lea_Michele_51363.png +Lea_Michele_51427.png +Lecy_Goranson_30511.png +Lecy_Goranson_30538.png +Lecy_Goranson_30539.png +Lesley-Anne_Down_22118.png +Lesley-Anne_Down_22144.png +Lesley-Anne_Down_22249.png +Lexi_Ainsworth_126.png +Lexi_Ainsworth_129.png +Lexi_Ainsworth_150.png +Lexi_Ainsworth_28.png +Lexi_Ainsworth_47.png +Lexi_Ainsworth_54.png +Liev_Schreiber_39673.png +Linda_Evans_24646.png +Linda_Evans_24670.png +Linda_Gray_30789.png +Linda_Gray_30823.png +Linda_Gray_30895.png +Lindsay_Hartley_33089.png +Lindsay_Hartley_33091.png +Lindsay_Hartley_33182.png +Lindsay_Hartley_33188.png +Lindsay_Hartley_33192.png +Lisa_Bonet_8489.png +Lisa_Bonet_8547.png +Lisa_Kudrow_40922.png +Lisa_LoCicero_44328.png +Lisa_LoCicero_44334.png +Loni_Anderson_2152.png +Loni_Anderson_2190.png +Lorraine_Bracco_9632.png +Lorraine_Bracco_9746.png +Lourdes_Benedicto_5324.png +Lourdes_Benedicto_5360.png +Mary_Beth_Evans_24742.png +Mary_Crosby_16814.png +Mary_Crosby_16826.png +Mary_Crosby_16827.png +Mary_Crosby_16835.png +Mary_Crosby_16856.png +Mary_Crosby_16867.png +Mary_Crosby_16876.png +Matt_Czuchry_41100.png +Matt_Dillon_41441.png +Matt_Dillon_41584.png +Melina_Kanakaredes_39464.png +Melissa_Archer_3127.png +Melissa_Archer_3169.png +Melissa_Benoist_5425.png +Melissa_Benoist_5490.png +Melissa_Benoist_5507.png +Melissa_Benoist_5523.png +Melissa_Benoist_5538.png +Michael_Douglas_43514.png +Michael_Douglas_43520.png +Michael_Douglas_43593.png +Michael_Landes_43643.png +Michael_Landes_43712.png +Michael_Vartan_43752.png +Michael_Vartan_43873.png +Mila_Kunis_41190.png +Miranda_Cosgrove_15892.png +Molly_Burnett_11287.png +Molly_Burnett_11323.png +Morena_Baccarin_3662.png +Natalia_Livingston_44183.png +Natalie_Hall_31866.png +Natalie_Hall_31875.png +Natalie_Hall_31898.png +Natalie_Hall_31914.png +Natalie_Martinez_48106.png +Natalie_Martinez_48117.png +Natalie_Martinez_48191.png +Neve_Campbell_11584.png +Nicole_Eggert_23928.png +Nicole_Eggert_24088.png +Nicole_de_Boer_19422.png +Nicole_de_Boer_19448.png +Olivia_d'Abo_18077.png +Olivia_d'Abo_18126.png +Olivia_d'Abo_18133.png +Olivia_d'Abo_18166.png +Olivia_d'Abo_18188.png +Olivia_d'Abo_18202.png +Olivia_d'Abo_18224.png +Olivia_d'Abo_18228.png +Olivia_d'Abo_18229.png +Pamela_Sue_Martin_47876.png +Pamela_Sue_Martin_48018.png +Pamela_Sue_Martin_48027.png +Patricia_Arquette_3360.png +Patricia_Kalember_39346.png +Patricia_Kalember_39361.png +Patricia_Kalember_39365.png +Patricia_Kalember_39366.png +Patricia_Kalember_39367.png +Patricia_Kalember_39369.png +Peggy_Lipton_43900.png +Peggy_Lipton_43935.png +Peggy_Lipton_43962.png +Peggy_Lipton_44032.png +Peggy_Lipton_44070.png +Peggy_Lipton_44071.png +Peggy_McCay_48867.png +Peggy_McCay_48870.png +Peggy_McCay_48883.png +Peggy_McCay_48897.png +Peri_Gilpin_29456.png +Philip_Seymour_Hoffman_47737.png +Philip_Seymour_Hoffman_47778.png +Portia_Doubleday_22036.png +Portia_Doubleday_22101.png +Portia_de_Rossi_19903.png +Portia_de_Rossi_19908.png +Portia_de_Rossi_19957.png +Portia_de_Rossi_19963.png +Portia_de_Rossi_19997.png +Portia_de_Rossi_20036.png +Portia_de_Rossi_20069.png +Rachel_Dratch_22646.png +Rachel_Dratch_22751.png +Rebecca_Budig_10668.png +Rebecca_Budig_10714.png +Rebecca_Budig_10756.png +Rebecca_Budig_10785.png +Rebecca_Budig_10792.png +Rebecca_Budig_10805.png +Rebecca_Herbst_35381.png +Rebecca_Herbst_35391.png +Rebecca_Herbst_35407.png +Rebecca_Herbst_35454.png +Richard_E._Grant_48348.png +Richard_Gere_48555.png +Richard_Gere_48559.png +Richard_Madden_48806.png +Robert_Di_Niro_49242.png +Robert_Downey_Jr._49395.png +Robert_Downey_Jr._49485.png +Robert_Duvall_49683.png +Robert_Duvall_49684.png +Robert_Duvall_49744.png +Robert_Knepper_49865.png +Roma_Downey_22357.png +Roma_Downey_22378.png +Roseanne_Barr_4520.png +Roseanne_Barr_4546.png +Roseanne_Barr_4622.png +Rue_McClanahan_48968.png +Rue_McClanahan_49092.png +Rue_McClanahan_49151.png +Rupert_Friend_50825.png +Ryan_Gosling_51576.png +S._Epatha_Merkerson_50436.png +S._Epatha_Merkerson_50464.png +Sara_Gilbert_29260.png +Sara_Gilbert_29333.png +Sarah_Drew_23164.png +Sarah_Drew_23166.png +Sarah_Drew_23174.png +Sarah_Drew_23209.png +Sarah_Drew_23245.png +Sarah_Drew_23272.png +Sarah_Drew_23286.png +Sarah_Hyland_36867.png +Sean_Bean_52769.png +Selena_Gomez_30458.png +Selena_Gomez_30471.png +Seth_Rogen_52915.png +Seth_Rogen_53117.png +Seth_Rogen_53123.png +Shannen_Doherty_21826.png +Shannon_Kane_39638.png +Shannon_Kane_39729.png +Shannon_Kane_39732.png +Sharon_Case_12719.png +Sharon_Case_12779.png +Sharon_Case_12889.png +Sharon_Gless_29936.png +Sharon_Gless_29976.png +Sharon_Gless_29987.png +Sharon_Gless_29989.png +Shelley_Hack_31728.png +Shelley_Hack_31736.png +Shelley_Hack_31826.png +Sherilyn_Fenn_25694.png +Shirley_Jones_38512.png +Shirley_Jones_38556.png +Staci_Keanan_39993.png +Staci_Keanan_40018.png +Staci_Keanan_40038.png +Staci_Keanan_40068.png +Stana_Katic_39947.png +Susan_Flannery_27075.png +Susan_Flannery_27095.png +Susan_Flannery_27128.png +Swoosie_Kurtz_41518.png +Swoosie_Kurtz_41605.png +Tamala_Jones_38648.png +Tamara_Braun_9874.png +Tatyana_M._Ali_1228.png +Tatyana_M._Ali_1266.png +Tatyana_M._Ali_1290.png +Tatyana_M._Ali_1349.png +Taylor_Atelian_3507.png +Taylor_Atelian_3517.png +Taylor_Atelian_3526.png +Taylor_Atelian_3532.png +Taylor_Atelian_3533.png +Taylor_Atelian_3553.png +Taylor_Atelian_3559.png +Taylor_Atelian_3566.png +Taylor_Atelian_3581.png +Taylor_Lautner_54170.png +Taylor_Lautner_54238.png +Taylor_Lautner_54258.png +Taylor_Lautner_54279.png +Taylor_Lautner_54292.png +Taylor_Lautner_54296.png +Taylor_Lautner_54328.png +Tempestt_Bledsoe_8014.png +Tempestt_Bledsoe_8062.png +Tempestt_Bledsoe_8063.png +Teri_Hatcher_33393.png +Teri_Hatcher_33395.png +Teri_Hatcher_33401.png +Terry_Farrell_25136.png +Terry_Farrell_25203.png +Tia_Carrere_12136.png +Tia_Carrere_12240.png +Tobey_Maguire_54398.png +Tom_Hanks_54730.png +Tyne_Daly_18276.png +Tyne_Daly_18293.png +Tyne_Daly_18322.png +Tyne_Daly_18362.png +Tyne_Daly_18370.png +Tyne_Daly_18399.png +Tyne_Daly_18420.png +Valerie_Cruz_17158.png +Valerie_Harper_32638.png +Valerie_Harper_32705.png +Valerie_Harper_32771.png +Vanessa_Marcil_47131.png +Vanessa_Marcil_47158.png +Vanessa_Marcil_47182.png +Veronica_Hamel_32010.png +Veronica_Hamel_32016.png +Veronica_Hamel_32020.png +Veronica_Hamel_32030.png +Victor_Garber_54809.png +Victor_Garber_54894.png +Victoria_Justice_39219.png +Wanda_De_Jesus_19687.png +Wendie_Malick_46848.png +Yasmine_Bleeth_8219.png +Yasmine_Bleeth_8238.png +Yasmine_Bleeth_8259.png +Yasmine_Bleeth_8350.png +Zooey_Deschanel_20937.png diff --git a/src/megaface/megaface_noises.txt b/src/megaface/megaface_noises.txt new file mode 100644 index 0000000..f4bf156 --- /dev/null +++ b/src/megaface/megaface_noises.txt @@ -0,0 +1,720 @@ +#Please strictly follow the rules in https://github.com/deepinsight/insightface/tree/master/src/megaface/README.md if you want to use this list. +375/37531198@N00/4174611825_0.jpg +375/37531198@N00/4174611825_1.jpg +925/92596048@N00/3910487430_2.jpg +587/58736276@N00/3023685783_2.jpg +905/90553008@N00/824787574_0.jpg +350/35034345966@N01/3086429616_0.jpg +388/38847947@N03/4351812234_0.jpg +788/78865207@N05/8267101710_0.jpg +495/49503172960@N01/2674784671_0.jpg +481/48122140@N00/3488870947_0.jpg +770/77029195@N00/490108118_3.jpg +566/56692742@N05/8202697602_1.jpg +546/54613470@N00/6155519468_0.jpg +486/48600102544@N01/206574155_6.jpg +857/85705006@N00/2052818739_0.jpg +345/34531071@N07/3374444062_1.jpg +714/71490499@N06/6460912773_0.jpg +790/79045485@N00/8312851597_9.jpg +497/49703429@N00/487110767_5.jpg +588/58819758@N00/502852994_0.jpg +603/60370779@N07/12733436605_1.jpg +351/35197415@N06/3392955585_0.jpg +414/41464693@N02/4431128027_1.jpg +745/74536253@N07/7744893278_0.jpg +745/74536253@N07/7744893278_1.jpg +745/74536253@N07/7744893278_2.jpg +745/74536253@N07/7746445288_0.jpg +720/72093892@N00/8394540214_0.jpg +943/94306126@N05/8585087758_0.jpg +316/31635293@N06/10300923803_0.jpg +316/31635293@N06/10300923803_1.jpg +461/46151867@N00/1361048872_0.jpg +316/31658559@N04/11248071845_2.jpg +510/51035763730@N01/3487351916_0.jpg +381/38176611@N04/6845223441_1.jpg +812/8127814@N07/1169159373_0.jpg +596/59689442@N00/397368405_0.jpg +457/45702277@N04/4404748345_2.jpg +457/45702277@N04/4405512456_0.jpg +315/31557769@N04/5183029470_0.jpg +105/105042823@N05/10224905845_1.jpg +233/23302147@N08/6717536683_0.jpg +943/94324445@N02/8585299005_5.jpg +865/86525452@N06/9026905203_1.jpg +575/57593906@N00/183103326_0.jpg +575/57593906@N00/183103326_1.jpg +513/51313580@N08/6077728920_10.jpg +794/79447530@N00/2646557330_3.jpg +838/8385182@N06/8791791352_2.jpg +834/83452322@N00/1379291226_0.jpg +299/29932833@N06/4605882096_0.jpg +125/12523672@N02/1368391674_0.jpg +251/25193498@N00/4015722351_2.jpg +207/20741443@N00/5045852254_2.jpg +313/31369133@N04/5050193084_3.jpg +313/31369133@N04/5050193084_5.jpg +504/50440126@N03/8061480293_0.jpg +353/35336901@N00/4353383267_0.jpg +102/10249456@N08/839447586_7.jpg +621/62158648@N07/5765099754_0.jpg +779/77991982@N00/3351774300_0.jpg +779/77991982@N00/3351774300_2.jpg +207/20741443@N00/5045852254_0.jpg +579/57954142@N07/6082189380_0.jpg +210/21091679@N08/5811404199_1.jpg +555/55530018@N04/5481680731_1.jpg +830/8302818@N06/7180492423_4.jpg +108/108788939@N08/11207124956_0.jpg +358/35803015@N03/5571012744_5.jpg +125/12508217@N08/3458308016_3.jpg +526/52617239@N07/9550573423_3.jpg +760/7600622@N07/442516245_2.jpg +838/83855583@N00/139393859_0.jpg +357/35775623@N00/4387679624_0.jpg +508/50824803@N04/5101695889_0.jpg +813/81369265@N00/5962625787_1.jpg +849/84987970@N00/6503971169_3.jpg +366/36692718@N00/7508265904_1.jpg +101/101878765@N05/9792203325_2.jpg +149/14994959@N04/3611150762_2.jpg +257/25777683@N04/3781609919_2.jpg +206/20625597@N07/3362909564_1.jpg +768/7686538@N06/1370874019_0.jpg +286/28675521@N05/2677267827_0.jpg +958/95818633@N00/317066357_0.jpg +114/11461909@N06/3569039014_2.jpg +114/11461909@N06/3926753297_2.jpg +827/8271358@N08/4748146669_0.jpg +341/34120602@N05/5979478480_5.jpg +114/11461909@N06/8281364025_1.jpg +467/46721620@N00/3849799981_0.jpg +407/40719493@N06/4008300252_1.jpg +764/76491372@N00/540480752_1.jpg +330/33019425@N00/275100215_2.jpg +316/31677763@N00/273039584_0.jpg +213/21349468@N00/82691007_2.jpg +425/42568333@N05/4079636121_3.jpg +972/97205184@N04/10076409423_0.jpg +827/8279509@N08/2712311284_0.jpg +311/31150907@N03/4133932870_0.jpg +412/41259870@N06/5812928114_0.jpg +332/33213804@N04/7599995760_0.jpg +375/37552553@N03/8157072811_0.jpg +737/7376233@N08/8712184839_0.jpg +665/66598017@N08/9614369266_3.jpg +352/35237099299@N01/16090400_0.jpg +395/39545243@N00/1121668561_11.jpg +529/52968060@N00/4836487807_1.jpg +466/46648278@N00/68839900_0.jpg +768/76841197@N00/349452085_0.jpg +971/97193933@N00/7441014914_1.jpg +711/71164686@N00/2199159152_3.jpg +956/95633051@N00/2504698743_0.jpg +850/85094310@N00/2536647566_0.jpg +850/85094310@N00/2536647566_1.jpg +546/54673576@N00/3231373075_1.jpg +419/41942641@N02/3911619734_0.jpg +706/70654989@N00/435992217_0.jpg +665/66588862@N00/4990604401_0.jpg +665/66588862@N00/4990604401_1.jpg +175/17514301@N00/504360950_0.jpg +242/24256726@N00/2284033395_1.jpg +388/38847947@N03/4278156225_0.jpg +120/12057709@N00/4817523632_5.jpg +958/95876452@N07/8757383318_5.jpg +958/95876452@N07/9136979141_0.jpg +511/51135741@N00/1197314078_2.jpg +732/73257494@N00/254360075_0.jpg +217/21725313@N04/2735944275_4.jpg +859/85928975@N00/3054044988_0.jpg +803/8035175@N05/511570673_2.jpg +169/16922208@N08/5320713367_0.jpg +370/37016273@N02/8089047614_0.jpg +108/10807869@N03/9369308884_2.jpg +859/85928975@N00/3320166109_0.jpg +365/36521958172@N01/100498068_4.jpg +724/7243800@N05/2227611248_0.jpg +724/7243800@N05/2227611248_3.jpg +117/11738031@N00/2998834476_0.jpg +795/7959345@N03/5237906433_0.jpg +236/23634892@N07/8479172294_0.jpg +334/33484476@N00/1631862642_0.jpg +793/7934170@N07/4553285915_3.jpg +603/60370779@N07/12733436605_0.jpg +943/94366076@N00/3048525915_0.jpg +277/27721729@N07/3509070727_2.jpg +759/75933558@N00/3620382660_0.jpg +460/46041863@N08/4441052512_0.jpg +129/12989638@N00/6212397379_0.jpg +337/33757663@N00/7358306448_0.jpg +943/94306126@N05/8585087758_1.jpg +953/95388136@N08/8862410806_0.jpg +223/22320444@N08/5673545350_0.jpg +434/43411679@N00/262399750_0.jpg +635/63534101@N00/2646352652_1.jpg +225/22591084@N00/6196535614_0.jpg +635/63587775@N03/6196638593_25.jpg +353/35399223@N08/6016093673_0.jpg +410/41063459@N02/3864724318_0.jpg +822/8220615@N05/4552969733_3.jpg +549/54949957@N00/5233621265_1.jpg +701/70177760@N04/9477029774_4.jpg +105/10564470@N04/2648385175_0.jpg +199/19909714@N00/3830545099_2.jpg +758/75818171@N02/7146473317_0.jpg +233/23354880@N03/2452852823_0.jpg +399/39915396@N00/5193727577_1.jpg +575/57503924@N07/6296483205_0.jpg +430/43093552@N00/6705048843_0.jpg +417/41739894@N04/4830148462_0.jpg +417/41739894@N04/4830148462_1.jpg +101/101386609@N04/13523151125_0.jpg +381/38117284@N00/1590829110_0.jpg +827/8279509@N08/2712311284_1.jpg +379/37963250@N06/3588816064_0.jpg +510/51035607419@N01/3883605563_0.jpg +311/31150907@N03/4133932870_1.jpg +311/31150907@N03/4333226349_0.jpg +409/40989913@N03/5368897603_1.jpg +332/33213804@N04/7599995760_2.jpg +519/51973188@N06/8553574872_0.jpg +665/66598017@N08/9614369266_1.jpg +131/13117300@N05/2323998041_0.jpg +489/48949906@N00/3917465141_1.jpg +489/48949906@N00/3917465141_2.jpg +251/25117187@N03/9118076515_0.jpg +225/22547477@N05/10576991153_1.jpg +169/16926338@N06/3551147251_1.jpg +120/12057709@N00/4817523632_1.jpg +327/32721085@N04/5095989423_2.jpg +404/40406266@N08/7499062102_1.jpg +227/22766186@N07/5625438347_0.jpg +227/22766186@N07/5626032050_2.jpg +302/30237597@N00/3761331400_0.jpg +412/41259870@N06/5811920381_0.jpg +369/36934384@N07/7153191901_0.jpg +369/36934384@N07/7153191901_1.jpg +332/33213804@N04/7599995760_6.jpg +526/52604186@N03/9982748374_2.jpg +125/12508217@N08/3458308016_0.jpg +793/79383703@N08/8188874944_2.jpg +328/32820037@N04/12550334735_0.jpg +554/55456932@N08/5239999140_0.jpg +193/19323934@N05/5236281857_0.jpg +300/30035643@N03/6318064786_1.jpg +260/26071009@N04/8133430835_0.jpg +395/39545243@N00/1121668561_23.jpg +927/92723020@N00/198034899_0.jpg +732/73257494@N00/254360075_1.jpg +768/76815233@N00/318365457_0.jpg +768/76815233@N00/318365457_1.jpg +758/75818171@N02/6811401849_0.jpg +960/96009072@N00/7213113090_1.jpg +440/44042276@N00/11078882754_1.jpg +563/56379629@N00/231943094_0.jpg +984/98411817@N00/2372250142_0.jpg +984/98411817@N00/2372250142_4.jpg +758/75815807@N00/3141877049_8.jpg +779/77991982@N00/3351774300_1.jpg +956/95668756@N00/9137041215_1.jpg +664/66487272@N00/3175332074_0.jpg +714/71484472@N08/7749429212_0.jpg +622/62292236@N03/12280954993_0.jpg +716/71635685@N00/2171921996_1.jpg +703/70335407@N00/2629913923_0.jpg +375/37526864@N03/3575384689_0.jpg +441/44124482892@N01/4076872185_0.jpg +760/7600622@N07/442516245_2.jpg +923/92399379@N00/3745627039_0.jpg +236/23634892@N07/8479172294_1.jpg +620/62092813@N00/12460977104_8.jpg +486/48600102544@N01/206574155_2.jpg +486/48600102544@N01/206574155_9.jpg +120/12057709@N00/4817523632_4.jpg +421/42197860@N05/7964010316_0.jpg +790/79045485@N00/8312851597_13.jpg +943/94366076@N00/3048525915_2.jpg +904/9047144@N06/4039658431_2.jpg +222/22292214@N00/4243141797_0.jpg +736/73694732@N00/4431487460_0.jpg +527/52706816@N04/4862401074_0.jpg +696/69654695@N04/8112732403_0.jpg +147/14754516@N00/6746387961_0.jpg +497/49703429@N00/487110767_7.jpg +145/14537247@N02/3736211228_8.jpg +286/28629203@N00/3064397634_3.jpg +332/33213624@N05/3106373748_0.jpg +334/33415234@N02/3114165513_1.jpg +314/31492856@N08/3175678730_1.jpg +333/33369864@N07/3244523696_4.jpg +309/30975003@N06/3322588992_1.jpg +262/26212498@N08/3372483710_1.jpg +373/37310116@N04/3434757683_0.jpg +246/24652718@N07/3504274334_0.jpg +311/31170710@N02/3541648434_0.jpg +868/8683186@N05/3611020792_0.jpg +868/8683186@N05/3611020792_6.jpg +145/14537247@N02/3736211228_1.jpg +145/14537247@N02/3736211228_10.jpg +145/14537247@N02/3736211228_3.jpg +145/14537247@N02/3736211228_7.jpg +403/40384578@N06/4101631794_0.jpg +495/49503010002@N01/4159540475_1.jpg +868/8683186@N05/4808516991_6.jpg +412/41275121@N06/4903601396_5.jpg +529/52947003@N08/5062807160_1.jpg +529/52947003@N08/5062807160_10.jpg +529/52947003@N08/5062807160_6.jpg +556/55642376@N02/5907157097_2.jpg +556/55642376@N02/5907157097_3.jpg +294/29475291@N05/6520878321_0.jpg +788/78832981@N04/7439193650_0.jpg +861/86125876@N07/7890416460_0.jpg +495/49503124519@N01/8054014324_8.jpg +170/17040371@N08/8095753999_5.jpg +170/17040371@N08/8095788948_4.jpg +336/33672038@N05/8147806935_1.jpg +340/34085730@N06/8292774555_1.jpg +268/26881063@N08/13878266544_2.jpg +309/30932831@N00/2773069134_2.jpg +276/27674701@N00/306654282_1.jpg +402/40272616@N07/4800636882_1.jpg +980/98055082@N00/992566662_1.jpg +232/23206546@N04/8621794327_0.jpg +232/23206546@N04/8621794327_1.jpg +224/22491837@N08/3626048130_0.jpg +224/22491837@N08/3641245154_2.jpg +950/95026061@N00/2542285242_0.jpg +759/75923111@N02/8430338965_0.jpg +106/10647915@N04/6503063251_1.jpg +759/7598168@N03/5226476291_0.jpg +105/105042823@N05/10224905845_2.jpg +450/45019754@N02/7606879826_2.jpg +943/94324445@N02/8585299005_4.jpg +310/31083236@N06/2986649565_0.jpg +441/44124482892@N01/4076872185_4.jpg +292/29276771@N03/11641854816_0.jpg +363/36382552@N04/5425274524_3.jpg +767/76795962@N03/12297733704_0.jpg +121/121110687@N08/13323427194_2.jpg +229/22969849@N00/1349964647_17.jpg +371/37147296@N03/3720755210_3.jpg +366/36684003@N06/4437979063_0.jpg +533/53384351@N06/4978715463_0.jpg +125/12572929@N05/5221666460_1.jpg +641/64158255@N00/5489160164_0.jpg +299/29912007@N05/5921111759_2.jpg +388/38820321@N06/6281589012_0.jpg +266/26657772@N02/7323904516_0.jpg +812/81253095@N08/7563494124_0.jpg +812/81253095@N08/7563494124_7.jpg +131/13117300@N05/2323998041_1.jpg +239/23927487@N05/4499177940_1.jpg +624/62477948@N02/5691704999_3.jpg +458/45842803@N00/2702028061_3.jpg +213/21385420@N00/9351830159_2.jpg +111/11149280@N02/9354553803_0.jpg +297/29785808@N04/2869578452_0.jpg +581/58167807@N00/4216179051_0.jpg +309/30932831@N00/2773069134_0.jpg +113/113235388@N08/11701952496_5.jpg +431/43152922@N00/3293843245_0.jpg +270/27088911@N08/5601971419_0.jpg +291/29123483@N00/8613949068_1.jpg +619/61992454@N00/119165477_2.jpg +260/26071009@N04/8133430835_1.jpg +561/56198214@N00/11354524454_0.jpg +295/29599105@N00/5802624346_6.jpg +330/33085931@N08/9400799871_0.jpg +341/34128229@N06/3267947070_0.jpg +213/21385420@N00/9351830159_0.jpg +758/75815807@N00/3141877049_7.jpg +529/52909086@N08/4912165639_0.jpg +923/92319630@N00/2022738688_0.jpg +318/31826784@N06/3346271475_0.jpg +437/43791698@N07/4031782636_4.jpg +269/26966164@N08/2699439482_3.jpg +525/52545972@N00/7991923484_0.jpg +250/25030443@N03/2852010154_6.jpg +886/88664590@N00/702044241_0.jpg +658/65873073@N00/8667101819_1.jpg +274/27433266@N00/5972034863_0.jpg +292/29233640@N07/3691901778_5.jpg +122/12254431@N02/5261928850_0.jpg +765/76562640@N00/2561153799_0.jpg +664/66487272@N00/3175332074_3.jpg +349/34946027@N06/3899131678_3.jpg +914/91409706@N00/7296129156_3.jpg +914/91409706@N00/7296129156_5.jpg +329/32996060@N05/7496967290_1.jpg +241/24112094@N00/7545432624_0.jpg +588/58871905@N03/8212289784_0.jpg +284/28426408@N00/4985494194_0.jpg +315/31594932@N00/8242400525_1.jpg +315/31594932@N00/8243469114_0.jpg +500/50016899@N03/4605388504_0.jpg +263/26357527@N05/7223540266_2.jpg +498/49814762@N00/8014123645_0.jpg +498/49814762@N00/8014123645_1.jpg +875/87504239@N08/10670731404_4.jpg +875/87504239@N08/10852751085_3.jpg +372/37244828@N04/13173856803_10.jpg +371/37147296@N03/3720755210_1.jpg +125/12572929@N05/5221666460_2.jpg +641/64158255@N00/5489160164_2.jpg +356/35658425@N08/5726282580_0.jpg +766/76681787@N00/5957052480_2.jpg +812/81253095@N08/7563494124_10.jpg +812/81253095@N08/7563494124_6.jpg +699/69958247@N05/13388922034_0.jpg +748/74896593@N07/6764119963_0.jpg +846/84655869@N08/7775105362_0.jpg +181/18155385@N00/239228291_7.jpg +421/42103613@N08/4040845679_1.jpg +313/31369133@N04/5050193084_4.jpg +785/78573292@N00/2256084892_0.jpg +167/16759096@N00/489481531_0.jpg +957/95723376@N06/8735477642_1.jpg +863/8630870@N02/5322350325_0.jpg +863/8630870@N02/5322350325_2.jpg +863/8630870@N02/5322350325_3.jpg +863/8630870@N02/5322350325_4.jpg +863/8630870@N02/5322350325_5.jpg +735/73531427@N00/218215108_0.jpg +309/30932831@N00/2773069134_3.jpg +727/72707136@N00/33992579_1.jpg +762/76236359@N00/6234006071_5.jpg +736/73626930@N00/9428192473_0.jpg +105/105042823@N05/10224905845_4.jpg +284/28476480@N04/3975041778_0.jpg +943/94324445@N02/8585299005_1.jpg +601/60125017@N00/344049639_2.jpg +876/87619178@N03/8590731823_0.jpg +277/27712137@N04/2623505924_0.jpg +701/70154022@N00/3925362192_1.jpg +459/45975847@N07/4691684655_2.jpg +459/45975847@N07/4692316090_0.jpg +514/51460103@N07/4823559383_0.jpg +220/22072051@N03/5011260955_0.jpg +535/53533856@N08/5361207739_0.jpg +535/53533856@N08/5361207739_1.jpg +535/53533856@N08/5361207739_4.jpg +528/52858230@N08/5564688606_0.jpg +574/57438188@N07/5627487722_0.jpg +176/17694278@N04/6508529521_0.jpg +362/36204621@N08/6698329979_0.jpg +697/69794372@N08/6785690647_2.jpg +100/100739634@N06/9717775343_0.jpg +267/26728047@N05/5524462661_5.jpg +156/15699085@N05/6408711257_0.jpg +327/32721085@N04/5095989423_0.jpg +669/66964839@N00/8741217920_1.jpg +608/60842486@N00/2702417524_0.jpg +206/20625597@N07/3362909564_5.jpg +554/55456932@N08/5239999140_1.jpg +616/61628022@N02/6999143216_0.jpg +685/68558611@N06/6390155109_1.jpg +770/77029195@N00/490108118_4.jpg +258/25827417@N00/2574466319_0.jpg +878/87855339@N00/3244971644_0.jpg +878/87855339@N00/3244971644_1.jpg +654/65497908@N00/6813913952_1.jpg +868/8683186@N05/3611020792_2.jpg +868/8683186@N05/4808516991_9.jpg +294/29475291@N05/6520878321_1.jpg +716/71678139@N05/6807828131_0.jpg +716/71678139@N05/6807828131_1.jpg +716/71678139@N05/6807828131_2.jpg +716/71678139@N05/6807828131_3.jpg +716/71678139@N05/6807828131_4.jpg +716/71678139@N05/6807828131_5.jpg +716/71678139@N05/6807828131_6.jpg +170/17040371@N08/8095753999_3.jpg +170/17040371@N08/8095788948_3.jpg +336/33672038@N05/8147806935_2.jpg +441/44124395142@N01/407637002_0.jpg +795/79543373@N00/2529893768_1.jpg +575/57545119@N04/8673142329_0.jpg +359/35909637@N06/3917967715_0.jpg +407/40719493@N06/4008300252_0.jpg +764/76491372@N00/540480752_0.jpg +221/22132798@N08/8018992056_1.jpg +402/40245280@N00/1936928371_2.jpg +114/114772050@N03/12008186175_0.jpg +636/63601558@N00/199623056_0.jpg +185/18502090@N00/2524917681_47.jpg +793/79398354@N00/2622290309_0.jpg +898/8982863@N07/10257490644_5.jpg +898/8982863@N07/10257490644_8.jpg +458/45861060@N00/7900853588_1.jpg +102/102077743@N07/12190186456_0.jpg +228/22882274@N04/3632475832_2.jpg +233/23357263@N03/3953791578_5.jpg +317/31769130@N03/11011170923_0.jpg +371/37195519@N02/3424150218_0.jpg +795/79589933@N00/3352567863_0.jpg +623/62362697@N00/8577869641_3.jpg +365/36521958172@N01/100498068_1.jpg +898/8982863@N07/10257490644_10.jpg +102/102077743@N07/12190186456_2.jpg +354/35468148224@N01/12347079_0.jpg +905/90516586@N00/159075833_0.jpg +773/77364737@N00/2503183115_0.jpg +975/97584199@N00/2632241655_1.jpg +527/52772894@N00/90756428_0.jpg +527/52772894@N00/90756428_2.jpg +972/97205184@N04/10076409423_0.jpg +101/101386609@N04/13523144805_0.jpg +827/8279509@N08/2712311284_0.jpg +379/37963250@N06/3588816064_1.jpg +379/37963250@N06/3588816064_2.jpg +510/51035607419@N01/3883605563_1.jpg +311/31150907@N03/4133932870_0.jpg +409/40989913@N03/5368897603_0.jpg +412/41259870@N06/5812928114_0.jpg +332/33213804@N04/7599995760_0.jpg +332/33213804@N04/7599995760_1.jpg +375/37552553@N03/8157072811_0.jpg +665/66598017@N08/9614369266_3.jpg +241/24112094@N00/3994684107_2.jpg +388/38847947@N03/4351812234_5.jpg +510/51035620166@N01/237428859_2.jpg +450/45019754@N02/7606879826_0.jpg +664/66474562@N00/19195378_2.jpg +287/28771658@N03/3905862519_0.jpg +123/12360228@N04/7166710688_1.jpg +123/12360228@N04/7166710688_2.jpg +302/30245869@N07/2843650382_4.jpg +972/97205184@N04/10079707226_0.jpg +570/57023246@N00/4623144791_0.jpg +332/33213804@N04/7599995760_4.jpg +487/48782814@N07/13847705683_0.jpg +595/59533494@N04/5479759436_0.jpg +938/93841400@N00/8327059841_1.jpg +824/8240241@N06/4114864483_0.jpg +513/51313580@N08/6077728920_5.jpg +289/28917877@N00/6333929606_0.jpg +395/39545243@N00/1121668561_35.jpg +640/64073015@N00/2831021702_0.jpg +141/14195956@N04/3948300818_3.jpg +539/53906287@N00/5101060235_7.jpg +500/50034633@N05/4837007562_1.jpg +254/25414047@N00/145668608_3.jpg +489/48949906@N00/3917465141_0.jpg +808/80812769@N00/442495313_0.jpg +459/45964884@N08/5242276755_2.jpg +103/10394437@N03/4568233297_5.jpg +169/16989146@N06/7641494140_4.jpg +597/59751999@N00/3289666452_1.jpg +437/43709093@N07/4256796727_0.jpg +445/44521275@N00/506634574_2.jpg +716/71616417@N05/6509071195_2.jpg +716/71616417@N05/6509074321_2.jpg +524/52407821@N00/7984244356_0.jpg +366/36624962@N03/8288304168_3.jpg +697/69756126@N00/4662338037_0.jpg +631/63177605@N08/6792309851_2.jpg +616/61670399@N07/10102978284_1.jpg +105/105042823@N05/10225015423_0.jpg +273/27357514@N00/11343847725_0.jpg +463/46327697@N00/2124534031_4.jpg +984/98411817@N00/2372250142_6.jpg +257/25797798@N07/3211844955_1.jpg +111/11134149@N02/3317710642_0.jpg +388/38847947@N03/4178270889_3.jpg +822/8220615@N05/4552969733_5.jpg +611/61109191@N00/5543733500_2.jpg +806/80604586@N07/9070005912_4.jpg +241/24113869@N07/9379713988_1.jpg +748/74888386@N00/9692493485_0.jpg +695/69501650@N00/46407370_1.jpg +950/95082307@N00/8773335932_0.jpg +510/51035620166@N01/237428859_2.jpg +434/43411679@N00/262399750_3.jpg +634/63465779@N07/6362029047_0.jpg +987/98736785@N00/4499296_3.jpg +715/7155702@N03/2302080410_0.jpg +715/7155702@N03/2302080410_1.jpg +715/7155702@N03/2302080410_3.jpg +715/7155702@N03/2302080410_4.jpg +715/7155702@N03/2302080410_5.jpg +715/7155702@N03/3631806363_2.jpg +874/87472210@N00/3105959620_1.jpg +246/24638567@N00/3321513653_0.jpg +945/94545836@N00/1443145007_1.jpg +362/36298222@N08/5935447071_0.jpg +222/22284790@N06/2176524544_0.jpg +747/7478277@N04/3155354570_0.jpg +747/7478277@N04/3155354570_1.jpg +375/37531198@N00/4174611825_2.jpg +375/37531198@N00/4174611825_4.jpg +768/76841197@N00/349452085_2.jpg +768/76841197@N00/349452085_3.jpg +468/46868174@N08/6511978997_0.jpg +100/10058188@N05/8295748234_0.jpg +108/108285828@N06/10779570026_1.jpg +108/108285828@N06/10779778303_0.jpg +168/16873194@N05/1801191486_0.jpg +857/8572970@N04/2079107678_1.jpg +472/47253165@N00/360990372_0.jpg +647/64767764@N00/450008059_0.jpg +729/72971773@N00/58588039_0.jpg +911/91148289@N00/7916666268_1.jpg +416/41608212@N00/8718283094_0.jpg +911/91113759@N00/2539574881_0.jpg +293/29322132@N08/3569343093_3.jpg +876/87671668@N00/9013803280_0.jpg +381/38176611@N04/8638753913_4.jpg +976/97644214@N00/6173832483_1.jpg +232/23206546@N04/8621794327_6.jpg +563/56379629@N00/231943094_3.jpg +864/86429182@N00/330808508_1.jpg +353/35336901@N00/4353383267_1.jpg +631/63122283@N06/7978644677_2.jpg +932/93211492@N06/8487757725_206.jpg +575/57545119@N04/8673142329_3.jpg +354/35479068@N06/3306075644_0.jpg +277/27721729@N07/3509070727_0.jpg +188/18899983@N00/4100299699_2.jpg +213/21349468@N00/82691007_1.jpg +110/11021333@N02/2957267195_2.jpg +925/9259500@N03/5710775169_0.jpg +486/48600102544@N01/206574155_11.jpg +486/48600102544@N01/206574155_12.jpg +486/48600102544@N01/206574155_7.jpg +339/33959433@N05/8396364213_0.jpg +997/9975353@N03/12630170935_1.jpg +247/24733288@N07/5846541456_0.jpg +872/8729914@N05/5099947628_0.jpg +889/88976184@N05/8244475370_1.jpg +889/88976184@N05/8244475370_3.jpg +630/63095109@N00/1079079769_0.jpg +664/66422694@N00/182828985_0.jpg +645/64503524@N00/2480285692_0.jpg +864/86429182@N00/330808508_0.jpg +447/44754496@N00/4287694240_1.jpg +363/36382552@N04/5425274524_6.jpg +210/21091679@N08/5811404199_2.jpg +562/56213435@N08/9008148399_0.jpg +695/69501650@N00/46407370_0.jpg +889/88976184@N05/8244475370_0.jpg +889/88976184@N05/8244475370_2.jpg +889/88976184@N05/8244475370_4.jpg +889/88976184@N05/8244475370_5.jpg +527/52706816@N04/4862401074_1.jpg +794/79428123@N06/7349516920_1.jpg +790/79024059@N04/7351250586_0.jpg +693/69318970@N00/9266107252_1.jpg +943/94324445@N02/8585410655_1.jpg +599/59947594@N00/5684370261_0.jpg +849/84986567@N00/177640275_0.jpg +345/34514184@N03/3562741086_0.jpg +158/15803691@N00/6914149962_2.jpg +817/81708918@N03/7855914580_5.jpg +309/30975003@N06/3322588992_8.jpg +900/90054085@N00/43987316_0.jpg +136/13675730@N06/2452368334_0.jpg +386/38675455@N00/6803844225_0.jpg +717/71763791@N00/5532357066_0.jpg +606/60604521@N07/5584865343_0.jpg +395/39545243@N00/1121668561_29.jpg +391/39196943@N05/3992501716_2.jpg +207/20719052@N04/8646466859_0.jpg +207/20719052@N04/8646466859_1.jpg +758/75815807@N00/3141877049_0.jpg +471/47170787@N05/6477792561_2.jpg +317/31734244@N00/542792072_0.jpg +931/9319402@N03/3358320101_0.jpg +362/36223735@N03/3784170734_3.jpg +534/53400644@N05/5044502598_0.jpg +513/51313580@N08/6077728920_1.jpg +137/13774680@N04/12313323523_0.jpg +636/63608960@N08/13553141815_2.jpg +434/43463445@N07/5723825501_0.jpg +237/23740675@N05/6877915376_0.jpg +868/8683186@N05/3611020792_4.jpg +216/21653251@N04/5633592631_0.jpg +216/21653251@N04/5633592631_1.jpg +170/17040371@N08/8095753999_1.jpg +170/17040371@N08/8095788948_1.jpg +620/62092813@N00/12460977104_4.jpg +236/23686718@N08/10662589695_3.jpg +264/26451473@N00/1342290947_5.jpg +636/63608960@N08/13553141815_6.jpg +409/40926212@N05/13257463775_7.jpg +449/44915880@N03/4248497494_1.jpg +235/23588194@N00/4494098639_1.jpg +532/53201041@N07/4911217327_0.jpg +532/53201041@N07/4911259327_0.jpg +606/60625084@N04/6450812495_0.jpg +650/65013293@N02/7724906252_3.jpg +560/56021903@N02/8227297222_2.jpg +359/35904083@N08/4345934789_0.jpg +593/59319260@N00/8743143610_2.jpg +271/27125798@N05/2710711437_0.jpg +402/40210933@N02/6043303646_0.jpg +122/12280910@N06/6299940378_1.jpg +207/20775043@N07/3627508299_0.jpg +595/59592751@N08/9096179270_0.jpg +395/39545243@N00/1121668561_14.jpg +296/29625288@N00/12891226005_0.jpg +548/54858071@N00/205845735_1.jpg +751/75148156@N00/3485469298_1.jpg +407/40764492@N08/3797968770_0.jpg +333/33369864@N07/3244523696_0.jpg +312/31236383@N03/3259555928_1.jpg +385/38524878@N04/3563411595_0.jpg +259/25955358@N06/3921002900_2.jpg +788/78832981@N04/7447167480_1.jpg +696/69696568@N05/6872955321_1.jpg +757/75741170@N02/6829396274_0.jpg +724/72448202@N00/359801202_1.jpg +969/96934953@N00/4315376370_0.jpg +133/13361855@N00/989708629_1.jpg +664/66478195@N00/11649050243_3.jpg +122/12276055@N02/4214939371_0.jpg +463/46327697@N00/2124534031_3.jpg +534/53400644@N05/5044502598_1.jpg +669/66944684@N03/6306275408_0.jpg +710/71006820@N00/4037980088_0.jpg +766/76656964@N04/9363467181_3.jpg +112/11262617@N07/12873348265_0.jpg +409/40926212@N05/13257463775_4.jpg +409/40926212@N05/13835647984_0.jpg +528/52858230@N08/5636750038_0.jpg +528/52858230@N08/5636750038_1.jpg +203/20335591@N04/9752849313_1.jpg +350/35034345966@N01/3086429616_1.jpg +736/73694732@N00/4430689233_0.jpg +605/60517117@N00/10370054943_0.jpg +421/42173774@N03/3889203507_0.jpg +511/51135741@N00/1197314078_3.jpg +267/26753167@N04/5922076258_2.jpg +330/33062815@N00/8606375434_1.jpg +108/10807869@N03/9369308884_0.jpg +761/76151808@N00/6945480767_0.jpg +757/75741170@N02/6829396274_1.jpg +220/22057861@N07/2126995093_0.jpg +665/66572814@N00/8242014606_0.jpg +849/84986567@N00/177640275_1.jpg +444/44460493@N03/4085897885_0.jpg +330/33085931@N08/9400799871_1.jpg +533/53314395@N00/5174087013_11.jpg +864/86429182@N00/330808508_2.jpg +151/15133426@N08/3646529532_0.jpg +302/30223854@N00/6535512351_0.jpg +929/92903356@N04/8497572867_0.jpg +412/41232325@N03/9045866185_0.jpg +582/58246614@N00/2842715287_1.jpg +513/51304493@N05/4932744035_0.jpg +301/30120696@N02/3068639840_0.jpg +407/40764492@N08/3797968770_0.jpg +231/23100621@N04/3986465605_0.jpg +288/28891066@N00/4210148052_2.jpg +940/94066910@N00/448278027_1.jpg +532/53282124@N00/3858373020_0.jpg +597/59751999@N00/3289666452_2.jpg +365/36521958172@N01/100498068_4.jpg +293/29322132@N08/3569343093_3.jpg diff --git a/src/megaface/remove_noises.py b/src/megaface/remove_noises.py new file mode 100644 index 0000000..c69bcef --- /dev/null +++ b/src/megaface/remove_noises.py @@ -0,0 +1,175 @@ + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import os + +import os.path +import datetime +from easydict import EasyDict as edict +import time +import json +import shutil +import sys +import numpy as np +import importlib +import itertools +import argparse +import struct +import cv2 +sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'common')) +import face_preprocess +from sklearn.preprocessing import normalize +import mxnet as mx +from mxnet import ndarray as nd + + +feature_dim = 512 +feature_ext = 1 + +def load_bin(path, fill = 0.0): + with open(path, 'rb') as f: + bb = f.read(4*4) + #print(len(bb)) + v = struct.unpack('4i', bb) + #print(v[0]) + bb = f.read(v[0]*4) + v = struct.unpack("%df"%(v[0]), bb) + feature = np.full( (feature_dim+feature_ext,), fill, dtype=np.float32) + feature[0:feature_dim] = v + #feature = np.array( v, dtype=np.float32) + #print(feature.shape) + #print(np.linalg.norm(feature)) + return feature + +def write_bin(path, feature): + feature = list(feature) + with open(path, 'wb') as f: + f.write(struct.pack('4i', len(feature),1,4,5)) + f.write(struct.pack("%df"%len(feature), *feature)) + +def main(args): + + out_algo = args.suffix + if len(args.algo)>0: + out_algo = args.algo + + fs_noise_map = {} + for line in open(args.facescrub_noises, 'r'): + if line.startswith('#'): + continue + line = line.strip() + fname = line.split('.')[0] + p = fname.rfind('_') + fname = fname[0:p] + fs_noise_map[line] = fname + + print(len(fs_noise_map)) + + i=0 + fname2center = {} + noises = [] + for line in open(args.facescrub_lst, 'r'): + if i%1000==0: + print("reading fs",i) + i+=1 + image_path, label, bbox, landmark, aligned = face_preprocess.parse_lst_line(line) + assert aligned==True + _path = image_path.split('/') + a, b = _path[-2], _path[-1] + feature_path = os.path.join(args.facescrub_feature_dir, a, "%s_%s.bin"%(b, args.suffix)) + feature_dir_out = os.path.join(args.facescrub_feature_dir_out, a) + if not os.path.exists(feature_dir_out): + os.makedirs(feature_dir_out) + feature_path_out = os.path.join(args.facescrub_feature_dir_out, a, "%s_%s.bin"%(b, out_algo)) + #print(b) + if not b in fs_noise_map: + #shutil.copyfile(feature_path, feature_path_out) + feature = load_bin(feature_path) + write_bin(feature_path_out, feature) + if not a in fname2center: + fname2center[a] = np.zeros((feature_dim+feature_ext,), dtype=np.float32) + fname2center[a] += feature + else: + #print('n', b) + noises.append( (a,b) ) + print(len(noises)) + + for k in noises: + a,b = k + assert a in fname2center + center = fname2center[a] + g = np.zeros( (feature_dim+feature_ext,), dtype=np.float32) + g2 = np.random.uniform(-0.001, 0.001, (feature_dim,)) + g[0:feature_dim] = g2 + f = center+g + _norm=np.linalg.norm(f) + f /= _norm + feature_path_out = os.path.join(args.facescrub_feature_dir_out, a, "%s_%s.bin"%(b, out_algo)) + write_bin(feature_path_out, f) + + mf_noise_map = {} + for line in open(args.megaface_noises, 'r'): + if line.startswith('#'): + continue + line = line.strip() + _vec = line.split("\t") + if len(_vec)>1: + line = _vec[1] + mf_noise_map[line] = 1 + + print(len(mf_noise_map)) + + i=0 + nrof_noises = 0 + for line in open(args.megaface_lst, 'r'): + if i%1000==0: + print("reading mf",i) + i+=1 + image_path, label, bbox, landmark, aligned = face_preprocess.parse_lst_line(line) + assert aligned==True + _path = image_path.split('/') + a1, a2, b = _path[-3], _path[-2], _path[-1] + feature_path = os.path.join(args.megaface_feature_dir, a1, a2, "%s_%s.bin"%(b, args.suffix)) + feature_dir_out = os.path.join(args.megaface_feature_dir_out, a1, a2) + if not os.path.exists(feature_dir_out): + os.makedirs(feature_dir_out) + feature_path_out = os.path.join(args.megaface_feature_dir_out, a1, a2, "%s_%s.bin"%(b, out_algo)) + bb = '/'.join([a1, a2, b]) + #print(b) + if not bb in mf_noise_map: + feature = load_bin(feature_path) + write_bin(feature_path_out, feature) + #shutil.copyfile(feature_path, feature_path_out) + else: + feature = load_bin(feature_path, 100.0) + write_bin(feature_path_out, feature) + #g = np.random.uniform(-0.001, 0.001, (feature_dim,)) + #print('n', bb) + #write_bin(feature_path_out, g) + nrof_noises+=1 + print(nrof_noises) + + +def parse_arguments(argv): + parser = argparse.ArgumentParser() + + parser.add_argument('--facescrub-noises', type=str, help='', default='./facescrub_noises.txt') + parser.add_argument('--megaface-noises', type=str, help='', default='./megaface_noises.txt') + parser.add_argument('--suffix', type=str, help='', default='r100_cm_112x112') + parser.add_argument('--algo', type=str, help='', default='') + parser.add_argument('--megaface-lst', type=str, help='', default='/raid5data/dplearn/megaface/megaface_mtcnn_112x112/lst') + parser.add_argument('--facescrub-lst', type=str, help='', default='/raid5data/dplearn/megaface/facescrubr/small_lst') + parser.add_argument('--megaface-feature-dir', type=str, help='', default='/raid5data/dplearn/megaface/MegaFace_Features') + parser.add_argument('--facescrub-feature-dir', type=str, help='', default='/raid5data/dplearn/megaface/FaceScrub_Features') + #parser.add_argument('--megaface-feature-dir-out', type=str, help='', default='/raid5data/dplearn/megaface/MegaFace_Features_cm') + #parser.add_argument('--facescrub-feature-dir-out', type=str, help='', default='/raid5data/dplearn/megaface/FaceScrub_Features_cm') + parser.add_argument('--megaface-feature-dir-out', type=str, help='', default='/opt/jiaguo/MegaFace_Features_cm') + parser.add_argument('--facescrub-feature-dir-out', type=str, help='', default='/opt/jiaguo/FaceScrub_Features_cm') + return parser.parse_args(argv) + +if __name__ == '__main__': + main(parse_arguments(sys.argv[1:])) + + diff --git a/src/train_softmax.py b/src/train_softmax.py index 0f148e1..c42d251 100644 --- a/src/train_softmax.py +++ b/src/train_softmax.py @@ -301,6 +301,20 @@ def get_symbol(args, arg_params, aux_params): cos_t = zy/s if args.margin_verbose>0: margin_symbols.append(mx.symbol.mean(cos_t)) + if m>1.0: + t = mx.sym.arccos(cos_t) + t = t*m + body = mx.sym.cos(t) + new_zy = body*s + if args.margin_verbose>0: + new_cos_t = new_zy/s + margin_symbols.append(mx.symbol.mean(new_cos_t)) + diff = new_zy - zy + diff = mx.sym.expand_dims(diff, 1) + gt_one_hot = mx.sym.one_hot(gt_label, depth = args.num_classes, on_value = 1.0, off_value = 0.0) + body = mx.sym.broadcast_mul(gt_one_hot, diff) + fc7 = fc7+body + #threshold = math.cos(args.margin_m) #cond_v = cos_t - threshold #cond = mx.symbol.Activation(data=cond_v, act_type='relu')