summaryrefslogtreecommitdiffstats
path: root/data/face-train.py
diff options
context:
space:
mode:
authorJon Whiteaker <jbw@jon-Latitude-D630>2012-02-17 17:31:44 -0800
committerJon Whiteaker <jbw@jon-Latitude-D630>2012-02-17 17:31:44 -0800
commit0c5477cc00e1e8877066f66f371426e3c6ef55fe (patch)
treea2e1b4405d9a641cedf53e33e45b537c339fd734 /data/face-train.py
parent0f28a1000f7e3602a58389ee8a0f0f4ef0b7a1cc (diff)
downloadkinect-0c5477cc00e1e8877066f66f371426e3c6ef55fe.tar.gz
adding combined dataorigin/masterorigin/HEAD
Diffstat (limited to 'data/face-train.py')
-rwxr-xr-xdata/face-train.py106
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)
+