#!/usr/local/bin/python from eigenlib import * import re # usage: pool.py eigs-dir learn-dir face-image... fs = FaceSpace(sys.argv[1]) learndir = sys.argv[2] pools = {} # this will be a hash of name -> list of fs vectors name_finder = re.compile('([a-z]+)[0-9]+\.') for person in sys.argv[3:]: name = name_finder.match(person).group(1) mesg(person + ': loading...') im_face = fs.image_to_vector(person) mesg(' done.\n') fs_face = fs.project_to_face_space(im_face) if not pools.has_key(name): pools[name] = [] pools[name].append(fs_face) for name in pools.keys(): mesg('averaging ' + name + '... ') fs_face = normalize(reduce(lambda a,b: a+b, pools[name])) mesg('saving...') save_name = learndir + '/' + name + '.face' fs.write_fs_face(fs_face, save_name) print ' done.'