Predict Age using Convolutional Neural Network in Python
In this tutorial program, we will learn about building Age Predictor using machine learning with the language used is Python. So here I am going to discuss what are the basic steps of this machine learning problem and how to approach it.
We will use computer vision library that is openCV and Convolutional Neural Network in Python.
We are going to add an effect to the image in order to predict age. We will use the below two steps:
- Loading of the image and Specifying the parameters.
- Detection of a face with Region Of Index(ROI).
- Age Prediction.
- Final Output with Confidence.
Python Libraries to import
The basic libraries are Numpy and Pandas. Along with them, we have OpenCV library cv2 used in computer vision libraries.
import numpy as np import pandas as pd import cv2 import os
Loading of the image
Image loading is needed as images are first detected for face to form bounding boxes.
We are going to specify different parameters for the loaded image to give desired results.
#loading image for age detection pathtxt = os.path.sep.join([args["face"]) weightsPath = os.path.sep.join([args["age"], "res10_300x300_ssd_iter_140000.caffemodel"]) ageNet = cv2.dnn.readNet(pathtxt, weightsPath) tet_img = os.path.join(paths, "test.jpg")
Detection of Face and Region Of Index(ROI)
In an image, we need to form the coordinates to use parameters like confidence.
Confidence will give the probability of the image falling in the age brackets.
We are going to divide the age into ranges as predicting exact age is difficult as depends on many features of the human face.
#using image to load other parameters with open('alb_labels.json', 'r') as f: data = json.load(d) print(data['file']) data =  with open('alb_labels.json') as f: for line in f: data.append(json.loads(line)) #passing image through blob for passing filters imag = cv2.imread(args["img"]) (h, w) = img.shape[:4] blobs = cv2.dnn.blobFromImage(image, 2.0, (600, 600), (154.0, 197.0, 83.0))
Age Prediction with neural network – Python
We are going to take the average, maximum and minimum values of the confidence values.
Take the bounding box coordinates for the face formation image with confidence values.
We are going to use this pre-trained neural network model in giving predictions.
#passing values x = preds.argmax() y = preds.argmin() z = preds.argavg() a = preds.arg() file2 = os.path.join(paths, "1.jpg") img_ppl = cv2.imread(file2, 0) print(img_ppl.shape, img_ppl.size, img_ppl.dtype) #bounding box final image formation template = img_ppl[180:130, 950:800] preds = ageNet.backward() cv2.imshow('img', template) img1 = img b, e = shape[::-1] ageConfidence = preds[i] Visual.getOutput(age) cv2.waitKey(0)
We are going to predict the age range with confidence values.
The Final Output: