OpenCV 로 연령 과 성별 검 사 를 실시 하 는 예시
본 논문 에서 저 는 Python 으로 기계 학습 을 하 는 연령 과 성별 검 사 를 수행 하 는 임 무 를 수행 하 겠 습 니 다.나이 와 성별 검 사 는 컴퓨터 시각의 범주 에 속 하기 때문에 나 는 Python 에서 OpenCV 라 이브 러 리 를 사용 할 것 이다.
Python 을 사용 하여 연령 과 성별 검 측 임 무 를 시작 하기 전에 저 는 먼저 이 개념의 의미 와 연령 과 성별 검 측 문 제 를 어떻게 처리 하 는 지 알 아 보 겠 습 니 다.앞으로 python 뿐만 아니 라 모든 프로 그래 밍 언어 로 연령 과 성별 검 측 임 무 를 쉽게 수행 할 수 있 도록 이 개념 을 이해 하 는 것 이 중요 합 니 다.
연령 및 성별 검사 안내
나이 와 성별 을 측정 하 는 임 무 는 많은 다른 컴퓨터 시각 임무 보다 더 어 려 운 고유 한 난제 이다.이런 어려움 을 초래 한 주요 원인 은 이런 유형의 시스템 을 훈련 시 키 는 데 필요 한 데이터 때문이다.
일반적인 대상 검사 임 무 는 보통 수천 만,심지어 수백 만 장의 이미 지 를 방문 하여 훈련 할 수 있 지만 나이 나 성별 라벨 이 있 는 데이터 세트 는 훨씬 작다.보통 수천 개,혹은 몇 만 개 에 불과 하 다.
이 그림 에 탭 을 추가 하려 면 그림 의 테마 에 대한 개인 정 보 를 방문 해 야 하기 때 문 입 니 다.즉,우 리 는 그들의 생년월일 과 성별,특히 생년월일 은 얻 기 어 려 운 정보 가 필요 하 다 는 것 이다.
따라서 이 문제 의 본질 을 해결 해 야 한다.우 리 는 네트워크 체계 구조 와 알고리즘 에 적응 하 는 방법 으로 이러한 한 계 를 해결 하고 있다.
Python 으로 나이 와 성별 검 사 를 진행 합 니 다.
연령 과 성별 로 분류 되 는 분 야 는 수 십 년 째 연구 되 고 있다.여러 해 동안 이미 각종 방법 을 채택 하여 이 문 제 를 해결 하 였 으 며,또한 어느 정도 의 성공 을 거 두 었 다.이제 우 리 는 나이 와 성별 을 측정 하기 위해 파 이 썬 을 사용 하기 시작 했다.
나 는 성별 검사 문 제 를 분류 문제 로 삼 아 나이 검사 문 제 를 회귀 문제 로 삼 을 것 이다.하지만 컴백 으로 나 이 를 정확히 가늠 하 는 것 은 어렵다.심지어 인간 도 한 사람 을 바라 보 며 나 이 를 정확하게 예측 할 수 없다.하지만 이들 이 30 대인 지 40 대인 지 는 확실히 알 고 있다.이것 도 내 가 Python 을 사용 하여 진행 할 조작 이다.
이제 파 이 썬 언어 로 나이 와 성별 검 사 를 시작 합 니 다.우선,나 는 얼굴 을 검사 하 는 코드 를 작성 하기 시작 할 것 이다.왜냐하면 얼굴 검사 가 없 으 면 우 리 는 나이 와 성별 예측 임 무 를 계속 진행 할 수 없 기 때문이다.
나이 와 성별 검사 작업 에 필요 한 OpenCV 예비 훈련 모델 을 다운로드 할 수 있 습 니 다.현재 python 파일 에서 OpenCV 모듈 을 가 져 오 면 다음 코드 를 사용 할 수 있 습 니 다.
얼굴 검사 에 사용 할 Python 코드:
def getFaceBox(net, frame, conf_threshold=0.7):
frameOpencvDnn = frame.copy()
frameHeight = frameOpencvDnn.shape[0]
frameWidth = frameOpencvDnn.shape[1]
blob = cv.dnn.blobFromImage(frameOpencvDnn, 1.0, (300, 300), [104, 117, 123], True, False)
net.setInput(blob)
detections = net.forward()
bboxes = []
for i in range(detections.shape[2]):
confidence = detections[0, 0, i, 2]
if confidence > conf_threshold:
x1 = int(detections[0, 0, i, 3] * frameWidth)
y1 = int(detections[0, 0, i, 4] * frameHeight)
x2 = int(detections[0, 0, i, 5] * frameWidth)
y2 = int(detections[0, 0, i, 6] * frameHeight)
bboxes.append([x1, y1, x2, y2])
cv.rectangle(frameOpencvDnn, (x1, y1), (x2, y2), (0, 255, 0), int(round(frameHeight/150)), 8)
return frameOpencvDnn, bboxes
이제 다음 단 계 는 그림 속 사람의 성별 을 예측 하 는 것 이다.여기 서 나 는 성별 네트워크 를 메모리 에 불 러 오고 네트워크 를 통 해 검 측 된 얼굴 을 성별 검사 임무 에 보 낼 것 이다.성별 검사 Python 코드:
genderProto = "gender_deploy.prototxt"
genderModel = "gender_net.caffemodel"
ageNet = cv.dnn.readNet(ageModel, ageProto)
genderList = ['Male', 'Female']
blob = cv.dnn.blobFromImage(face, 1, (227, 227), MODEL_MEAN_VALUES, swapRB=False)
genderNet.setInput(blob)
genderPreds = genderNet.forward()
gender = genderList[genderPreds[0].argmax()]
print("Gender Output : {}".format(genderPreds))
print("Gender : {}".format(gender))
현재 의 다음 임 무 는 그림 속 사람의 나 이 를 예측 하 는 것 이다.여기 서 출력 을 얻 기 위해 전방 향 전달 을 사용 할 것 입 니 다.네트워크 구조 가 성별 네트워크 와 유사 하기 때문에 우 리 는 모든 수출 을 충분히 이용 하여 기대 하 는 연령 대 를 얻 고 임 무 를 완성 하여 나 이 를 측정 할 수 있다.나이 검사 에 사용 할 Python 코드:
ageProto = "age_deploy.prototxt"
ageModel = "age_net.caffemodel"
ageNet = cv.dnn.readNet(ageModel, ageProto)
ageList = ['(0 - 2)', '(4 - 6)', '(8 - 12)', '(15 - 20)', '(25 - 32)', '(38 - 43)', '(48 - 53)', '(60 - 100)']
ageNet.setInput(blob)
agePreds = ageNet.forward()
age = ageList[agePreds[0].argmax()]
print("Gender Output : {}".format(agePreds))
print("Gender : {}".format(age))
우리 가 작성 해 야 할 마지막 코드 는 출력 을 표시 하 는 것 입 니 다:
label = "{}, {}".format(gender, age)
cv.putText(frameFace, label, (bbox[0], bbox[1]-20), cv.FONT_HERSHEY_SIMPLEX, 0.8, (255, 0, 0), 3, cv.LINE_AA)
cv.imshow("Age Gender Demo", frameFace)
따라서 수출 에서 볼 수 있 듯 이 우 리 는 성별 과 나 이 를 고도 로 정확하게 예측 할 수 있다.OpenCV 로 나이 와 성별 검 사 를 실시 하 는 예시 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 OpenCV 연령 과 성별 검 측 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Visual Studio 2017에서 OpenCV 템플릿 프로젝트 만들기・Windows 7 Professional 64bit ・Visual Studio 2017 Version 15.9.14 · OpenCV 3.4.1 OpenCV의 도입 방법 등은 아래를 참조하십시오. Visual Stu...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.