diff options
| author | Jon Whiteaker <jbw@jon-Latitude-D630> | 2012-02-17 17:31:44 -0800 |
|---|---|---|
| committer | Jon Whiteaker <jbw@jon-Latitude-D630> | 2012-02-17 17:31:44 -0800 |
| commit | 0c5477cc00e1e8877066f66f371426e3c6ef55fe (patch) | |
| tree | a2e1b4405d9a641cedf53e33e45b537c339fd734 /data/face-train.py | |
| parent | 0f28a1000f7e3602a58389ee8a0f0f4ef0b7a1cc (diff) | |
| download | kinect-origin/HEAD.tar.gz | |
adding combined dataorigin/masterorigin/HEAD
Diffstat (limited to 'data/face-train.py')
| -rwxr-xr-x | data/face-train.py | 106 |
1 files changed, 71 insertions, 35 deletions
diff --git a/data/face-train.py b/data/face-train.py index 80ca4fa..8f34425 100755 --- a/data/face-train.py +++ b/data/face-train.py @@ -6,45 +6,81 @@ from face_client import FaceClient api_key = '34a84a7835bf24df2d84b4bded84e838' api_secret = '5bc9e8c5a9e3a2d916abbe3659a1b3f8' -url_base = 'http://74.95.195.225/static/img/jon/users/' client = FaceClient(api_key, api_secret) -def train(ns,dataset,dirs): - f = open('train.log', 'w') - for d in dirs: - tids = [] - count = 0 - user = d.rstrip('/').split('/')[-1] - for line in open(d+'/'+dataset+'-train', 'r'): - pic = line.split(',')[-2].split('/')[-1].split('.')[0]+'.jpeg' - if pic != "face.jpeg": - count += 1 - url = url_base+user+'/train/'+pic - try: - response = client.faces_detect(url) - sys.stderr.write(str(response['photos'][0]['tags'])+"\n") - for photo in response['photos']: - if len(photo['tags']) > 0: - tids += [photo['tags'][0]['tid']] - f.write("\t".join([user, pic, "face"])+"/n") - else: - f.write("\t".join([user, pic, "no-face"])+"/n") - except: - sys.stderr.write("Unexpexted error:"+str(sys.exc_info()[0])) - pass - saved = client.tags_save(tids = ',' . join(tids), uid = user+'@'+ns) - sys.stderr.write(str(saved)+"\n") - 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'] +def limits(response): + return response['remaining'],response['reset_time'] - print ",".join([user,str(count),str(len(saved['saved_tags'])),str(ntrain)]) +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) + 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'] -if __name__ == "__main__": - train(sys.argv[1],sys.argv[2],sys.argv[3:]) + #print ",".join([user,str(count),str(len(saved['saved_tags'])),str(ntrain)] + out) + |
