Age And Gender Recognition Useing Python
এই প্রজেক্টটি আমাদের ছবি বা চেহারা দেখেই আমাদের বয়স বলে দিতে পারবে। দেখতে পাচ্ছেন আমার বয়স দেখাচ্ছে 20-25 বছর। দেখতে পাচ্ছেন ইলনের বয়স দেখাচ্ছে 50-55 বছর। বর্তমানে 2022 সালে এসে ইলনের বয়স হচ্ছে 51 বছর। আমার কাছে আরও কয়েকটি ছবি আছে। দেখতে পাচ্ছেন মার্কের বয়স দেখাচ্ছে 35-40 বছর। 2022 সালে এসে মার্কের বয়স 38 বছর। যদিও এ প্রজেক্ট তৈরি করার কোন প্ল্যান ছিল না। আমার রুমমেট সাগর আমাকে জিজ্ঞেস করতেছে আমার চেহারা দেখে বলতো আমার বয়স কত হতে পারে। তখন আমি চিন্তা করে দেখলাম এই জিনিসটা আসলে কম্পিউটার প্রোগ্রামিং এর মাধ্যমে করা যায় কিনা। গুগুলে একটু পড়াশোনা এবং কয়েক ঘণ্টার চেষ্টার পর তৈরি হয়ে গেল আমাদের Age and gender recognition systemsystem সত্যি বলতে বয়স বলে দিতে পারে এমন অ্যাপস বা সফটওয়্যার হয়ত হাজার হাজার রয়েছে । তবে নিজের চিন্তাভাবনাকে বাস্তব রূপ দেওয়ার মধ্যে অনেক আনন্দ রয়েছে। আমি চাইলে রেডিমেড কোন মোবাইল সফটওয়্যার ব্যবহার করে জিনিসটা করতে পারতাম। তবে আমি সেখান থেকে কিছু শিখতে পারতাম না তাছাড়া আমি কোনো মজা পেতাম না।
সোর্স কোড
import cv2
faceProto = 'opencv_face_detector.pbtxt'
faceModel = 'opencv_face_detector_uint8.pb'
ageProto = 'age_deploy.prototxt'
ageModel = 'age_net.caffemodel'
genderProto = 'gender_deploy.prototxt'
genderModel = 'gender_net.caffemodel'
faceNet = cv2.dnn.readNet(faceModel, faceProto)
ageNet = cv2.dnn.readNet(ageModel, ageProto)
genderNet = cv2.dnn.readNet(genderModel, genderProto)
ageList = ['(0-2)', '(4-6)', '(8-12)', '(15-20)', '(25-32)', '(38-43)', '(48-53)', '(60-100)']
genderList = ['Male', 'Female']
MODEL_MEAN_VALUES = (78.4263377603, 87.7689143744, 114.895847746)
def faceBox(faceNet, frame):
frameWidth = frame.shape[1]
frameHeight = frame.shape[0]
blob = cv2.dnn.blobFromImage(frame, 1.0, (227, 227), [104, 117, 123], swapRB = False)
faceNet.setInput(blob)
detection = faceNet.forward()
#print(detection.shape)
bboxs = []
for i in range(detection.shape[2]):
confidence = detection[0,0,i,2]
if confidence > 0.7:
x1 = int(detection[0,0,i,3] * frameWidth)
y1 = int(detection[0,0,i,4] * frameHeight)
x2 = int(detection[0,0,i,5] * frameWidth)
y2 = int(detection[0,0,i,6] * frameHeight)
bboxs.append([x1, y1, x2, y2])
cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 1)
return frame, bboxs
from cProfile import label
padding = 20
video = cv2.VideoCapture(0)
while True:
ret, frame = video.read()
frame, bboxs = faceBox(faceNet, frame)
for bbox in bboxs:
#face = frame[bbox[1]:bbox[3], bbox[0]:bbox[2]]
face = frame[max(0,bbox[1]-padding):min(bbox[3]+padding,frame.shape[0]-1),max(0,bbox[0]-padding):min(bbox[2]+padding, frame.shape[1]-1)]
blob = cv2.dnn.blobFromImage(face, 1.0, (227, 227), MODEL_MEAN_VALUES, swapRB = False)
genderNet.setInput(blob)
genderPred = genderNet.forward()
gender = genderList[genderPred[0].argmax()]
ageNet.setInput(blob)
agePred = ageNet.forward()
age = ageList[agePred[0].argmax()]
label = "{},{}".format(gender, age)
#cv2.rectangle(frame, (bbox[0], bbox[1]-30), (bbox[2], bbox[1]), (0,255, 255), -1)
cv2.putText(frame, label, (bbox[0], bbox[1]-10), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 0, 255), 2, cv2.LINE_AA)
cv2.imshow('Ang & Gender Recognition', frame)
k = cv2.waitKey(1)
if k == ord('q'):
break
video.release()
cv2.destroyAllWindows()
My Recent Projects
Contact Me
+880 1789333514 | |
ShantonuAcharjee@gmail.com | |
Shantonu_ | |
Shantonu_ | |
It's Me Shantonu | |
Shantonu Achajee | |
Shantonu-Achajee | |
Shantonu-Achajee | |
Shantonu_Achajee | |
Max Electronics BD |