딥러닝_안면 인식 출석 시스템_프로젝트 (3)

임정민·2023년 3월 24일
0

프로젝트

목록 보기
14/33
post-thumbnail

한국인 안면 이미지 데이터를 활용한 얼굴 인신 출석 시스템 프로젝트입니다.

  • 딥러닝안면 인식 시스템프로젝트 (2)에 이은 발표 PPT 및 설명 글입니다.🍑🍑🍑

발표 및 PPT

안녕하십니까.
딥러닝 프로젝트 심현우 캐리해조 발표 시작하겠습니다.

저희 조는 얼굴인식을 활용한 출석체크 라는 제목으로 준비를 해 보았습니다.

지금 저희 6개월 교육 중에 절반정도 지난 시점인데요. 저희가 6개월 과정을 듣는 동안 매니저님께서 다방면으로 잘 챙겨주셔서 쾌적한 환경에서 공부하고 있죠, 근데 한가지 불편한 점이 있다면

(출석 명부 사진)

이렇게 아침에 수업 시작전에, 또 밥먹고 나서, 출석 명부에 직접 서명해야하는 번거로움이 아닐까 생각합니다.

(문자 사진)

다들 이런 문자 한번씩 받으신 경험이 있죠
저만 받았나요?


때로 아침에 강의장 도착해서 서명하는 것을 깜빡하고 수업을 듣고 있을 때 매니저님께서 다시 한번 확인한 뒤에 서명해야하는 경우도 발생합니다. 저희 조는 이러한 경우를 방지하고 보다 편리한 출석 체크 방안을 마련하고자 자동화 출석 시스템을 기획하였습니다.

한국과학기술연구원 인공지능 연구단에 한국인 안면 이미지를 신청하여 받았는데요. 이게 일반인 사진이다 보니 데이터를 제공받을 때 유포 금지에 대한 서약을 썻습니다.이 때문에 데이터를 공개 할 수 없는 점 양해 부탁드리겠습니다.

한국인 안면 데이터셋은 다음과 같이 구성되어있습니다. 해상도, 인물별ID, 악세서리, 명도, 표정, 카메라 각도 등 총 840만개의 이미지 파일로 되어있었는데...

여기서 고화질 그리고 명도는 가장 밝은 것만 사용하여서 93600장 이미지 파일을 가지고 프로젝트를 진행하였습니다.

(아이유 사진)
구체적인 이미지는 이게 일반인들 대상으로 만들어진 데이터다 보니 직접 보여드리지는 못하는데 지금 보시는 것처럼 무악세사리_무표정 사진이나, 안경과모자를 착용했을 때 웃는 사진 등 여러가지 조합의 형태로 구축되어있습니다.

저희 작업의 플로우차트를 그려본 것인데요, 저희가 모델 두개를 합해 최종 결과가 나왔다 보니, 이해하는데 도움이 될 것이라 생각해서 넣어 보았습니다.먼저 사진에서 얼굴, 악세사리의 위치를 파악하고 박싱하기 위하여 yolo 모델을 사용했습니다

그리고 한국과학기술연구원에서 제공받은 데이터를 CNN모델을 활용해서 액세서리와 표정분류를 했습니다.이렇게 두개를 합하여 최종 결과를 도출하였습니다. 나중에 저희 데이터를 뜯어 보실 때 이 플로우차트 참고하시면 많은 도움이 되실꺼라 생각합니다

(보여준 후 넘김)

저희가 제공받은 데이터에서 6가지의 액세서리와 3개의 표정을 합쳐 18개의 클래스를 만들었습니다.핸드폰의 잠금 해제를 할 때도 악세서리들이 있으면 방해가 되듯 출석체크를 위한 안면 인식에 있어서도 악세살들이 방해가 될 것이라 판단하여 6가지의 액세서리 착용여부를 분류 할 수 있는 모델을 만들들 위해 레이블을 분류하였습니다.

우선 전처리한 데이터를 욜로 모델에 학습 시켰습니다. 저희가 받은 데이터에 사진마다 사람 얼굴의 좌표값과 악세서리와 표정을 합친 레이블을 함께 학습시켜서 결과적으로 영상이나 이미지에서 사람얼굴에 네모 박스를 치고 18개에 대한 레이블 값을 결과로 낼 수 있었습니다. 기존에 있던 욜로 모델이 아닌 저희가 93,600장을 새롭게 학습시킨 모델이라고 보시면 될 것 같습니다.

욜로 모델에 대한 검증입니다.Epoch가 늘어나면서 mAP가 1에 가까이 가는 것을 보면 결과적으로 사람의 얼굴에 찾는데에 있어서 100퍼센트는 아니지만 100퍼센트에 가깝게 가는 것을 알 수 있습니다.

Loss가 계속 감소하는걸로 보아 학습이 잘 진행되는 것을 알 수 있었고요. mAP는 앞서 말씀드렸듯 잘 학습된 것을 알 수 있었습니다.

테스트로 아이유의 사진을 넣어 보았는데요. 선글라스 착용한것과 모자 쓴 사진 등 전부 잘 분류하는 것을 알 수 있습니다.

욜로 이외에 분류 모델도 만들어보았는데요우선 이미지 제너레이터 과정을 거쳤습니다 해상도가 높아서 학습에 있어 매우 오랜 시간이 걸려, 이를 방지하기 위해 해상도를 낮췄습니다.여러가지 해상도를 해 보았을 때 200 300이 가장 적합하여 200300으로 진행하였습니다..

그 다음 CNN , DNN을 활용 하여 이미지를 분류 하였습니다.아이유의 사진으로 레이어들을 통과하는 모습을 보실 수 있습니다.

초기 학습 모델의 test 정확도가 낮아 규제를 조금씩 적용하면서 Train 데이터의 acc곡선과 loss곡선이 비슷한 경향을 띄게하였습니다.이로써 실제 검증 시에 모델의 성능을 더욱 높일 수 있었습니다.여기까지 액세서리를 분류하는 모델이였습니다.

다음으로 특정 인물임을 인식할 수 있게 해주는 Face-Recognition입니다., OpenCV 라이브러리를 사용해서 출석체크 시스템에 중요하게 사용되는 얼굴의 특징을 인식하였습니다.왼쪽 영상이 얼굴 윤곽, 눈,코,입 등 인물의 특징을 추출하는. 과정이고, 이것을 학습시켜 모델을 구성할 수 있습니다.

(영상 재생)

다음과 같이 사람 얼굴을 인식한 뒤 표정과 악세사리 여부를 판단할 수 있고 이러한 원리로 출석 체크 시스템이 작동합니다.

이번 프로젝트에서 한계점으로는 모델의 성능입니다. 모델 정확도를 가장 떨어뜨렸던 케이스 중 하나가 머리를 모자로 인식한 경우였습니다. 해당 부분은 학습데이터들 중 어두운 조명에서의 모자를 쓰고 있는 데이터들이 상당수 포함되어 있어 발생한 문제로 예측되어 더욱 섬세한 데이터 수집/정제 과정이 필요하다는 것을 느꼈습니다.

출처와 참조입니다. 이상으로 발표를 마치겠습니다. 감사합니다.

마치며

저 스스로의 목표가 AI 데이터 구축 엔지니어인 만큼 딥러닝 프로젝트는 매우 중요하다고 생각했습니다. 🌝🌝🌝

처음 딥러닝 수업을 배울 때 CNN 모델의 레이어를 어떻게 구성해야 하는지, Image Gengerator는 어떻게 사용해야하는지 어려움이 많았지만 친절한 강사님과 훌륭한 팀원들의 조언 덕분에 전처리/학습/성능 최적화/검증까지 전반적인 딥러닝 AI의 원리를 파악할 수 있었습니다.👨‍👦‍👦👨‍👦‍👦👨‍👦‍👦 또한 딥러닝 모델이 과적합 되었을 때 L2 나 드롭아웃 규제를 적용시켜 모델을 일반화시키고 이를 통해 test 데이터들로 검증시켰을 때 더 뛰어난 모델을 만들 수 있음을 알게 되었습니다. 최초에 딥러닝 이미지 분류 모델만을 계획했었지만 이에 더 나아가 팀원들의 열정덕분에 실시간 카메라로 촬영하면서 분류하고 웹사이트에 분류 정보에 대한 로그가 남는 시스템까지 구현하며 서비스 기획/개발/구축에 전반적인 과정에 대해 다루어 실제 어플리케이션을 출시하는 것과 같은 프로젝트였습니다.


미래에 궁극적으로 제가 원하는 직무인 디지털 휴먼 음성 데이터 엔지니어가 되기 위해 다음 자연어처리 프로젝트도 알차고 재밌게 완성시켜 돌아오겠습니다.! 화이팅🌻🌻🌻

profile
https://github.com/min731

0개의 댓글