실시간 얼굴 인식을 통한 맞춤형 광고 제공 프로젝트(2)

임정민·2023년 7월 25일
4

프로젝트

목록 보기
24/33
post-thumbnail

실시간 얼굴 인식을 통한 맞춤형 광고 제공 프로젝트 입니다.

실시간 얼굴 인식을 통한 맞춤형 광고 제공 프로젝트(1)에 이은 발표 PPT 및 설명입니다.

발표 및 PPT

안녕하세요 저는 4조 김명진 여형구 임정민 김해니 중에 이번 딥러닝 팀 프로젝트 발표를 맡은 여형구 라고 합니다. 저희의 주제는 실시간 얼굴 인식을 통한 cnn기반 맞춤형 광고 송출이고 발표 시작하도록 하겠습니다.

목차는 다음과 같습니다.

혹시 ooh 광고를 아시나요 ?

OOH 광고란 Out of Home 이라는 뜻으로 우리나라 말로는 옥외 광고를 말합니다. 옥외 광고는 다음과 같이 지하철,버스 정류장, 건물 외벽 등 ooh 광고가 저희 일상 곳곳에 많이 녹아들어 있다는 것을 확인할 수 있습니다.

또한 최근 몇 달 전부터 코로나가 풀리면서 다음 내용과 같이 옥의 광고 시장이 커지고 있는데요 이에 더하여 생성형 AI를 옥외광고에 적용하려는 시도가 있다고 합니다. 특히 온라인 시장에서는 광고의 효과를 증대 시키기 위해서 ooh광고와 달리 사용자 맞춤형 광고를 하는데

그 예로서 현재 구글, 메타,네이버, 카카오 등은 저희의 검색기록이나 즐겨보는 컨텐츠 중심으로 맞춤광고가 뜨곤 합니다. 하지만 아직까지 옥외 광고 시장에서는 그 시도가 없다고 판단했고 저희의 프로젝트 주제가 상용화가 된다면 광고 분야에서 좋은 효과를 가져 올 수 있을 것이라고 생각했습니다.

다음은 저희조의 '명진'님이 어머님들의 취향에 맞게 나훈아의 광고를 옥외광고에 적용시킨 모습인데요, 이처럼 일괄 적인 광고 대신, 성별과 연령대를 고려한 맞춤형 광고를 제공하면 고객들이 보다 관심 있고 유익한 광고를 받을 수 있으며, 기업들도 타겟층에게 효과적으로 광고를 전달할 수 있으므로 이번 주제를 선정하게 되었습니다.

저희의 서비스 프로세스는 다음과 같습니다.

  1. 먼저 전광판에 설치된 실시간 카메라를 통해 특정 간격으로 사진을 찍고, 그 안에서 사람들의 얼굴 부분만 검출해 저장한 뒤

  2. 저장된 사진을 학습된 딥 러닝 모델에 적용하여 성별과, 연령대를 예측합니다.

  3. 해당 결과값을 바탕으로 연령과 성별에 적합한 광고를 일정 시간 송출 합니다.

저희가 이번 프로젝트를 진행하면서 사용한 기술은 크게 3가지로 분류할 수 있는데요 첫 번째는 우선 사람의 얼굴을 인식하기 위한 FaceRecognition 두 번째는 openCV를 활용한 Computer Vision 세 번째는 다량의 데이터를 이용하여 학습 시킨 CNN 전이학습 딥러닝 모델입니다.

먼저 저희는 이번 프로젝트를 진행하면서 카메라는 노트북 웹 캠을 이용했으며, 사진을 찍었을 때 그 사진 중에 얼굴만 Crop하여 저장하는 알고리즘을 구현했습니다 .

Face Recognition에 저희가 사용해본 모델은 MediaPipe와 FaceNet총 2가지 인데요
엘리베이터와 같이 짧은 시간 속에 타고 내리는 고객들의 상황을 고려해서 추론속도가 더 빠른 모델이 적합하다고 생각했고

1000장의 데이터를 기준 MediaPipe가 facenet에 비해 약 3배정도 빠른 속도를 보였기 때문에 MediaPipe를 최종적으로 활용하였습니다.

다음은 실제로 저희가 만든 모델을 사용해서 저희 조원들의 얼굴을 찍은 것인데요 보시는 것과 같이 4명 모두 얼굴을 인식해서 crop까지 잘 하는 것을 볼 수 있습니다.

처음에 저희가 얼굴을 crop시킬때 머리카락 형태를 제외하고 이목구비 형태만 진행하다 보니 성별을 잘 인식하지 못하는 현상이 빈번하게 일어났습니다. 때문에 저희는 정확한 성별 분류를 위해 머리스타일과 전체 얼굴형까지 보일수 있게끔 확장시켰고 실제로 성별을 분류하는 데 있어서 훨씬 나아진 성능을 확인할 수있었습니다.

다음은 CNN 전이학습 모델 제작 부분입니다. 저희는 본격적으로 성별과 연령대를 분류하는 CNN모델을 만들기 위해 AI HUB 에서 126GB 총 43000장의 '가족관계가 알려진 얼굴 이미지 데이터'를 사용했습니다.

이 데이터를 들여다봤을때 성별의 분포는 45:55로 비교적 잘 분배되 있었지만 연령분포는 10대와 40대가 다른연령대에 비해 상대적으로 많은 비율을 차지하는 모습을 보였고 이와 같은 이유로 추후에 연령 분류를 할 때 정확도가 잘 나올까 우려가 되었습니다.

총 43000장의 이미지 데이터 중에 원천데이터 안에 있는 individuals 데이터를 사용했고 이중 배경이 검은색으로 된것은 머리스타일로 인해 성별을 구분하기 힘들것이라고 판단하여 학습에서 제외시켰습니다.

최종적으로 활용한 데이터의 모습은 다음과 같습니다. 엘리베이터나 대중교통 탑승객들이 카메라 앞에서 다양한 형태로 인식될 수 있기 때문에 먼저 데이터 수집 단계에서 다양한 얼굴 각도 데이터를 수집하였고

ImageDataGenerator를 활용하여 임의의 확률로 사진을 다양한 밝기로 변환시키거나 확대,축소하여 데이터를 증강하였습니다.

데이터 전처리과정으로써는 성별과 연령, 2가지를 분류해야 하기 때문에 Multi Label classification을 이용했고 이미지의 타겟 사이즈는 224,224로 전처리 했습니다.

Multi-Label 분류 데이터를 전처리하는 format은 여러방법이 있지만 우측 사진에서 보시는 바와 같이 Dataframe으로 이미지의 파일명별 성별,연령을 0과1로 구분하는 형태로 작업하여 활용하였습니다.

프로젝트에서 총 4가지 모델을 학습시키고 성능을 비교해 보았습니다. 우선 Resnet과 VGG는 CNN전이학습에 대표적으로 사용되는 모델이기 때문에 사용했으며, 추가로 DenseNet과 Efficientnet 은 Multi-Label classification에 뛰어난 성능을 보인다는 연구결과가 있었기에 이 4가지 모델을 이용해 같은조건에서 전이학습을 시켜 성능을 비교해 보았습니다.

이후에 종합적으로 성능을 비교해 볼것이기 때문에 대략적으로 모델학습이 어떻게 진행되었는지 보도록 하겠습니다. 다음은 Resnet입니다. 정확도는 87정도 나오고 loss값은 0.31정도가 나오는것을 알수 있었으며

Vgg16은 정확도는 81정도 나오고 loss값은 2.55정도가 나오는것을 알수 있었습니다.

또한 EfficientNet같은 경우에는 정확도는 56, loss값은 0.58정도가 나왔고

마지막으로 DenseNet같은 경우에는 정확도는 94,loss값은 0.12정도가 나왔습니다.

데이터가 많다보니 이상적인 학습곡선을 도출해내기에는 시간이 부족하여 방학기간에 정민님이 기존의 densenet모델의 파라미터를 약간 수정해서 돌려본 것인데요 보시다시피 이상적인 모양의 아주 예쁜 그래프가 만들어 진 것을 확인할 수 있었습니다.

4가지 모델의 성능을 비교해본결과 정확도만 봤을때는 DenseNet Resnet Vgg Efficientnet순으로 정확도가 좋았으며 저희가 예상했던것과 달리 Efficientnet 에서 상대적으로 낮은 정확도를 보였습니다.

Loss값을 비교해 봤을 때는 DenseNet이 가장 낮았고 이와같은 결과를 바탕으로 저희는 DenseNet을 사용하기로 했습니다.

DenseNet을 기반으로 예측해본 결과는 다음과 같습니다.

보이시는 subplot에서 사진에 해당하는 실제값, 예측값을 title로 지정해둔 모습이고 파란글씨가 정답을 맞춘 케이스,빨간글씨가 틀린 케이스라고 보시면 됩니다.

성별,연령 모두 잘 맞춘케이스도 있지만 틀린 빨간 글씨들 중심으로 보자면 성별은 잘 분류하는 것에 비해 저희가 초반에 우려했던 연령 데이터 불균형 문제로 +-10살로 오분류 되는 일부 케이스를 확인할 수 있었습니다.

다음은 나이와 연령대에 맞게 광고를 표출하는 부분입니다.

먼저 저희는 한국광고방송진흥공사, 나스미디어랩 조사를 통해 각 연령대별 관심사를 파악했고 이 키워드를 바탕으로 연령/성별 카테고리당 5장 이상의 광고 이미지를수집했습니다.

저희는 이와 같이 각 카테고리 별로 폴더를 나눠서 연령대와 성별에 맞는 광고 이미지를 저장했으며 예측된 연령대와 성별을 값으로 받아 폴더 경로에 접근했습니다.

저희 서비스의 예시는 다음과 같습니다. 사진이 찍히면 성별과 연령대를 분류해 주고 만약 1명이 아닌 여러명의 사람,예를들면 40대 여성 3명 20대남성 1명이 인식될 시에는 가장 많은 40대 여성의 맞춤형 광고가 뜨게 됩니다.

(연령대를 잘못 맞출 시 기분 상할 수도 있음으로 미리 양해를 구하고)

다음은 저희 모델을 궁금해하시는분들이 아주 많을 것이라고 예상되어 지원자를 받고 시연을 해보는 시간을 갖도록 하겠습니다.

다음은 기대 효과 입니다. 이 서비스가 상용화 된다면 광고주 입장에서 타겟층이 인식되어 송출 될 때만 광고료가 나가게 되어 비용적으로도 효율적인 효과를 나타 낼 것이라고 생각하고,

소비자 입장에서는 무분별한 광고가 아닌 연령이나 성별에 맞는 광고가 송출 되기 때문에, 더 관심을 가질 만한 제품이나 서비스에 집중할 수 있게 되며, 불필요한 정보의 혼란을 줄일 수 있어 효율적인 쇼핑 이 가능해질 것으로 예상됩니다.

그리고 지하철, 버스 정류장의 지역, 시간대 별 인구특성을 파악할 수 있게 됨으로써 다른 서비스에 활용하거나, 새로운 마케팅 전략을 수립하고, 지역 커뮤니티와 협력하여 더 효과적이고 개인화 된 서비스를 제공할 수 있게 되어, 고객의 만족도와 지역 사회와의 연계를 강화할 수 있을 것으로 예상됩니다.

다음은 한계점과 개선방안 입니다. 현재 연령별 데이터가 이전에 말한것과 같이 불균형을 띄고 있는데 이는 추후에 서비스를 이용하는 사람들의 데이터를 수집하여 모델에 추가 반영 할 생각입니다.

또한 연령에 대해 일부 잘 분류하지 못하는 현상은 10대와 20대를 묶고 30대와 40대를 묶는등 연령별 class축소를 통해 정확도 상승을 기대해 볼 것입니다.

그리고 아직까지는 이미지 인식 후에 추론까지 적지않은 시간이 소요되는데 이는 weight prunning을 통해 일부 가중치를 압축하여 처리시간을 단축시킬 예정입니다.

또한 성별/연령 조건에 기반한 광고송출이 아닌 타겟 별 추천 알고리즘을 통해 광고를 송출 할 예정이며

마지막으로 많은 사람들이 탐지될 때의 광고 타겟층이 불분명해 질수 있는데 이는 추후 미래에 기술이 된다면 시선추적기술을 통해 광고판을 바라보고 있는사람들만 타겟으로 인식해 연령과 성별을 파악하여 광고를 내보내는 방식으로 할 예정입니다.

다음은 향후 방향성 입니다. 이 서비스가 상용화 된다면 먼저 앞에 한계점에서 나온 문제를 개선할 것이며, 타겟을 인식할 때에 복장이나 특정 아이템 감지 시 그에맞는 광고를 송출하는 기능 또한 추가할 것입니다. 나아가 재난이나 긴급상황 발생 시에 광고 대신 재난 알림을 송출 하는 시스템까지 추가 할 예정입니다.

프로젝트에 사용한 참고자료입니다.

이상으로 발표를 마치겠습니다. 감사합니다.

profile
https://github.com/min731

2개의 댓글

comment-user-thumbnail
2023년 8월 7일

재밌어요 아이디어도 너무 좋아요

1개의 답글