如何检测特定对象 ID 的性别?
Posted
技术标签:
【中文标题】如何检测特定对象 ID 的性别?【英文标题】:How to detect gender for a specific object id? 【发布时间】:2020-11-20 09:48:25 【问题描述】:我正在使用 OpenVino python 代码进行年龄和性别检测。代码在每一帧上运行。 我有一个用于质心跟踪和分配 objectID 的 .py 文件。这用于跟踪在任何给定会话期间出现的总人数。
但是现在,我正在尝试为上述代码创建一个 GUI,它显示男性和女性的总数。当一个人来(在我的代码中注册 objectID)和去(取消注册 objectID)时,我也希望它增加适当的性别计数。
这是我的代码的 sn-p:
while has_frame:
rects=[]
frame1 = np.array(frame, dtype='uint8')
faces = faceCascade.detectMultiScale(
frame1,
scaleFactor=1.2,
minNeighbors=5,
minSize=(20, 20)
)
for (x,y,w,h) in faces:
cv.rectangle(frame,(x,y),(x+w,y+h),(255,0,0),2)
rects.append((x,y,(x+w),(y+h)))
x = int(x)
y = int(y)
w = int(w)
h = int(h)
if run_age_gender:
cropped_image = frame[y:y+h, x:x+w]
if cropped_image.size > 0:
age_inference.infer(cropped_image)
age, gender = age_inference.get_age_gender_data() #retreives the age and gender
age_gender_text = ' - '.format(age , gender)
cv.putText(frame, age_gender_text, org=((x+w), (y+10)), fontFace=cv.FONT_HERSHEY_PLAIN,
fontScale=1, color=(0, 64, 255), thickness=1, lineType=cv.LINE_AA)
objects,intervals = ct.update(rects) #ct.update references my "centroidtracking.py" file to get objectID and time interval for each objectID (time spent by a given person in front of camera)
for (objectID, centroid) in objects.items():
text = "ID ".format(objectID)
cv.putText(frame, text, (centroid[0] - 10, centroid[1] - 10),
cv.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)
cv.circle(frame, (centroid[0], centroid[1]), 4, (0, 255, 0), -1)
for (objectID, time) in intervals.items():
totaltime+=time
totalppl+=1
text = ("%0.2f" %(totaltime))
self.ui.timetextbox.setPlainText(text)
text2 = ("%d" %(totalppl))
self.ui.ppltextbox.setPlainText(text2)
if cv.waitKey(1) & 0xFF == ord('q'):
break
has_frame, frame = source.read()
frame_id += 1
这只是我的 while 循环的一个 sn-p,其中进行了年龄和性别以及对象 ID 跟踪。
到目前为止,如果我尝试计算男性/女性,它会增加每帧的计数,并且与被检测到的人无关。
如果有什么建议让我将两者结合起来,以便针对特定 ID(人)进行年龄和性别检测,而不是仅在每一帧上运行并在每一帧上检测性别?
【问题讨论】:
【参考方案1】:我建议您参考人员计数器解决方案,可在 https://software.intel.com/content/www/us/en/develop/topics/iot/reference-implementations/people-counter-system.html
有关实现计数器的信息可在 main.py 文件的第 91-110 行找到。 https://github.com/intel-iot-devkit/people-counter-python/blob/master/main.py#L91
【讨论】:
以上是关于如何检测特定对象 ID 的性别?的主要内容,如果未能解决你的问题,请参考以下文章
如何将从(对象检测)裁剪的检测到的面部保存到其特定创建的文件夹中?