diff --git a/README.md b/README.md index e361dba..5ae095b 100755 --- a/README.md +++ b/README.md @@ -10,7 +10,9 @@ Caffe ## Estimated Metadata -`identity_meta_with_estimated_age.csv` +You can use estimated output below + +`output/identity_meta_with_estimated_age.csv` ## Estimation Tutorial @@ -34,6 +36,19 @@ Download vggface2_test.tar.gz and vggface2_train.tar.gz and identity_meta.csv http://www.robots.ox.ac.uk/~vgg/data/vgg_face2/ +Untar downloaded dataset + +`tar zxvf vggface2_train.tar.gz` +`tar zxvf vggface2_test.tar.gz` + +This is a expected location + +`dataset/vggface2/train` +`dataset/vggface2/test` +`dataset/vggface2/identity_meta.csv` + +### Dataset format + identity_meta.csv includes these format `Class_ID, Name, Sample_Num, Flag, Gender` @@ -44,5 +59,7 @@ identity_meta.csv includes these format This script add age label to identity_meta.csv +Output file is identity_meta_with_estimated_age.csv + `Class_ID, Name, Sample_Num, Flag, Gender, Age` diff --git a/estimate_age.py b/estimate_age.py index 2f7fe65..9d6d50e 100644 --- a/estimate_age.py +++ b/estimate_age.py @@ -14,6 +14,7 @@ # ---------------------------------------------- DATASET_ROOT_PATH="/Volumes/TB4/Keras/" +DATASET_SUB_PATH="Dataset/vggface2/" # ---------------------------------------------- # Argument @@ -24,8 +25,16 @@ if len(sys.argv) >= 1: if len(sys.argv) >= 2: DATASET_ROOT_PATH=sys.argv[3] + if len(sys.argv) >= 3: + if sys.argv[4]=="gpu": + caffe.set_mode_gpu() + else: + if(sys.argv[4]=="cpu"): + None + else: + print("argv[4] must be gpu or cpu") else: - print("usage: python calculate_age.py [datasetroot(optional)]") + print("usage: python calculate_age.py [datasetroot(optional)] [gpu/cpu(optional)]") sys.exit(1) # ---------------------------------------------- @@ -61,9 +70,9 @@ def calc_age(image): # FileList # ---------------------------------------------- -lines=open(DATASET_ROOT_PATH+"Dataset/identity_meta.csv").readlines() +lines=open(DATASET_ROOT_PATH+DATASET_SUB_PATH+"identity_meta.csv").readlines() -OUTPUT_PATH="./identity_meta_with_estimated_age.csv" +OUTPUT_PATH=DATASET_ROOT_PATH+DATASET_SUB_PATH+"identity_meta_with_estimated_age.csv" if(os.path.exists(OUTPUT_PATH)): output_data=open(OUTPUT_PATH).readlines() #for continue else: @@ -76,15 +85,17 @@ def calc_age(image): age=obj[5].strip() cache[path]=age -DEBUG_MODE=1 +DEBUG_MODE=0 #If 1, Age estimate from one image with open(OUTPUT_PATH, mode='w') as f: + cnt=0 for line in lines: obj=line.split(", ") path=obj[0] trainset=obj[3] - print("target person : "+path) + print("target person : "+path+" "+str(cnt)+"/"+str(len(lines))) + cnt=cnt+1 if path in cache.keys(): #already estimated @@ -92,11 +103,11 @@ def calc_age(image): print(" use cached age "+str(cache[path])) else: #yet estimated - if trainset=="0":# or trainset=="1": + if trainset=="0" or trainset=="1": if trainset=="0": - path2=DATASET_ROOT_PATH+"Dataset/test/"+path + path2=DATASET_ROOT_PATH+DATASET_SUB_PATH+"test/"+path else: - path2=DATASET_ROOT_PATH+"Dataset/train/"+path + path2=DATASET_ROOT_PATH+DATASET_SUB_PATH+"train/"+path age_sum=0 age_cnt=0 for image_path in glob.glob(path2+"/*.jpg"):