diff options
Diffstat (limited to 'data/face-train.py')
| -rwxr-xr-x | data/face-train.py | 91 |
1 files changed, 15 insertions, 76 deletions
diff --git a/data/face-train.py b/data/face-train.py index 8f34425..f27074d 100755 --- a/data/face-train.py +++ b/data/face-train.py @@ -1,86 +1,25 @@ #!/usr/bin/python -from subprocess import Popen import os import sys -from face_client import FaceClient +from face_client import FaceClient, FaceError +from httplib import HTTPException +from urllib2 import HTTPError +from httplib import HTTPException +import time +import pickle + +users = pickle.load(open(sys.argv[1])) +exclude = ['Anmol', 'Nina', 'Scott'] +ns = sys.argv[2] api_key = '34a84a7835bf24df2d84b4bded84e838' api_secret = '5bc9e8c5a9e3a2d916abbe3659a1b3f8' client = FaceClient(api_key, api_secret) -def limits(response): - return response['remaining'],response['reset_time'] - -remaining,reset_time = limits(client.account_limits()) -sframe = 0 -try: - sframe = int(sys.argv[3]) -except: - sframe = 0 - -ns = sys.argv[1] -dataset = sys.argv[2] -pic_dir = sys.argv[3] -f = open('train.log', 'w') -for line in open(dataset): - line = line.strip().split(',') - sub_dir,user,run,frame = line[0:4] - while remaining == 0: - time.sleep(max(reset_time - time.time(),0) + 10) - remaining,reset_time = limits(client) - if frame != 'frame' and int(frame) > sframe: - img = open(pic_dir + sub_dir + '/' + frame + '.jpg') - response = None - while response == None: - try: - img = open(pic_dir + frame + '.jpg') - response = client.faces_detect(file=img) - img.close() - remaining,reset_time = limits(response['usage']) - except (HTTPException, HTTPError): - sys.stderr.write("HTTP Exception\n") - time.sleep(5) - except FaceError: - sys.stderr.write("Face Exception\n") - sys.stderr.write(str(img)) - time.sleep(5) - out = line[0:4] - tids = [] - try: - sys.stderr.write(frame) - sys.stderr.write(str(response['photos'][0]['tags'])+"\n") - photo = response['photos'][0] - out += [str(len(photo['tags']))] - for tag in photo['tags']: - out += [str(tag['recognizable']),str(tag['width']),str(tag['height']),str(tag['center']['x']),str(tag['center']['y'])] - tids += [tag['tid']] - except: - sys.stderr.write("Unexpexted error:"+str(sys.exc_info()[0])+" "+frame) - out = line[0:4] + ['0'] - #client.tags_remove(tids=','.join(tags)) - if len(tids) > 0: - saved = None - while saved == None: - try: - saved = client.tags_save(tids = tids[0], uid = user+'@'+ns) - except (HTTPException, HTTPError): - sys.stderr.write("HTTP Exception\n") - time.sleep(5) - except FaceError: - sys.stderr.write("Face Exception\n") - sys.stderr.write(str(img)) - time.sleep(5) - sys.stderr.write(str(saved)+"\n") - print ','.join(out) +for user in users: + if user not in exclude: + user = '_'.join(user.split()) + trained = client.faces_train(user+'@'+ns) + print trained time.sleep(0.3) - #trained = client.faces_train(user+'@'+ns) - #sys.stderr.write(str(trained)+"\n") - #f.write("\t".join([user, str(len(saved['saved_tags'])), str(trained)])+"/n") - #k = trained.keys() - #k.remove(u'status') - #ntrain = trained[k[0]][0][u'training_set_size'] - - #print ",".join([user,str(count),str(len(saved['saved_tags'])),str(ntrain)] + out) - - |
