Skip to content

Instantly share code, notes, and snippets.

@ck196
Created May 3, 2017 07:01
Show Gist options
  • Save ck196/168e521e3a680114b295c9598531667e to your computer and use it in GitHub Desktop.
Save ck196/168e521e3a680114b295c9598531667e to your computer and use it in GitHub Desktop.
age gender predict.
import numpy as np
# Make sure that caffe is on the python path:
# export PYTHONPATH=${CAFFE_ROOT}/python
import caffe
import cv2
class AgenDetector:
gen_net = None
age_net = None
apparent_age_net = None
loaded = False
@staticmethod
def init(age_model_file = "imdb_wiki/age.prototxt",
age_pretrained = "imdb_wiki/dex_imdb_wiki.caffemodel",
apparent_age_model_file = "imdb_wiki/age_apparent.prototxt",
apparent_age_pretrained = "imdb_wiki/dex_chalearn_iccv2015.caffemodel",
gen_model_file = "imdb_wiki/gender.prototxt",
gen_pretrained = "imdb_wiki/gender.caffemodel",
mean_file = "imdb_wiki/ilsvrc_2012_mean.npy",
gpu_mode = True):
if not AgenDetector.loaded:
AgenDetector.clean()
#Load face detector model
if not gpu_mode:
caffe.set_mode_cpu()
else:
caffe.set_mode_gpu()
#Load age prediction network model
AgenDetector.age_net = caffe.Classifier(age_model_file, age_pretrained,
mean=np.load(mean_file).mean(1).mean(1),
channel_swap=(2,1,0),
raw_scale=256,
image_dims=(224, 224))
AgenDetector.apparent_age_net = caffe.Classifier(apparent_age_model_file, apparent_age_pretrained,
mean=np.load(mean_file).mean(1).mean(1),
channel_swap=(2,1,0),
raw_scale=256,
image_dims=(224, 224))
#Load gender prediction network model
AgenDetector.gen_net = caffe.Classifier(gen_model_file, gen_pretrained,
mean=np.load(mean_file).mean(1).mean(1),
channel_swap=(2,1,0),
raw_scale=256,
image_dims=(224, 224))
AgenDetector.loaded = True
@staticmethod
def clean():
AgenDetector.gen_net = None
AgenDetector.age_net = None
AgenDetector.age_apparent_net = None
AgenDetector.loaded = False
def predict_one_face(self, input_image):
age_prediction = AgenDetector.age_net.predict([input_image])
age_apparent_prediction = AgenDetector.apparent_age_net.predict([input_image])
gen_prediction = AgenDetector.gen_net.predict([input_image])
return age_prediction[0].argmax(), age_apparent_prediction[0].argmax(), gen_prediction[0].argmax()
def predict(self, image_path):
img = caffe.io.load_image(image_path)
return self.predict_one_face(img)
if __name__ == '__main__':
AgenDetector.init()
predictor = AgenDetector()
IMAGE_FILE = 'images/test.jpg'
print predictor.predict(IMAGE_FILE)
img = cv2.imread("images/test.jpg")
img /= 255.
img = img[:, :, (2, 1, 0)]
print predictor.predict_one_face(img)
@shirazbaig
Copy link

Where do I find all these files. I have searched on Internet, but cannot find. Can anyone provide the link.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment