화이트 모드로 보시길 권장합니다

[A.아이 Project] 시리즈는 Ai를 이용해 친족간 특징을 분석하여
미아와 부모를 매칭시켜주는 서비스 개발 일지이다.
' A.아이 '란 무엇인가?

' A.아이 '란

 ' A.아이( Ai 아이 찾기 ) '란 인공지능을 이용해 친족 간 유전적 특징을 분석하고, 실종아동의 인적사항을 바탕으로 친족 관계일 확률이 가장 높은 사용자를 찾아 매칭을 통해 실종아동의 가족을 찾아주는 것을 목표로 한다.

 

 한국에서는 실종아동을 찾을 때, 직접 조사, 실종아동의 정보 공개를 통한 시민들로부터의 신고를 받는 방식을 사용하며, 해외의 경우 어린이집 아이들의 얼굴을 미리 인공지능에 등록해 둔 후, 어린이집 아이 실종 사고 발생 시 빠르게 대처하는 방식의 서비스가 존재하며 이러한 서비스들은 최근 실종아동에 초점을 두고 있다.

' A.아이 '는 장기실종아동에 초점을 두고 있다.

 

본 문서는 A.아이 서비스의 기획 및 개발 자료로서, 해당 서비스의 아이디어, 콘텐츠 및 관련 정보는 저작권 및 기타 지식재산권 보호를 받습니다.

본 문서의 전체 또는 일부를 제3자에게 제공하거나 공유하는 경우, 본 아이디어 및 내용을 개인적인 목적(예: 별도의 사업화, 재판매, 유사 서비스 개발 등)으로 사용할 수 없습니다. 해당 자료는 정보 제공 및 검토 목적에 한하여 공유되며, 본 문서의 무단 복제, 수정, 배포, 상업적 이용은 엄격히 금지됩니다.

이를 위반할 경우 법적 책임이 발생할 수 있습니다.

 

' A.아이 ' 아이디어의 대격변


 

서비스 대격변의 이유

서비스가 바뀐 이유

본래의 ' A.아이( Ai 아이 찾기 ) '는 위에서 말한것과 같이 인공지능을 이용해 서비스에 등록된 사람들의 얼굴 이미지를 비교한 후, 가장 얼굴이 유사한 두 사람을 매칭하여 주는 서비스이다.

이 서비스는 가족을 찾고자 하는 사람들이 사용을 하기에 서비스에 등록된 사용자중 얼굴이 유사한 사람이 있다면 둘이 가족일 확률이 높을 것이라고 생각했기에 이러한 서비스를 기획하였었다.

 

하지만 아이디어를 곱씹어 보다 보니 아이디어에 결함이 너무나도 많이 보였기에 아이디어를 수정하게 되었다.

우선 사용자들의 얼굴을 비교하여 가장 유사도가 높은 두 사람이 가족일 것이라 예측하는 부분이 서비스를 상용화 하기에는 무리가 있다고 판단한것이 아이디어를 수정한 가장 큰 이유였다.


 

서비스 대격변

 

서비스 배경

배경

 최근 핸드폰으로 오는 안전 안내 문자를 보면 '서울경찰청'과 '경기도청'에서 실종 인물을 찾는 문자가 매주 약 5건씩 오며 매주 실종 사건이 발생한다는 점에서 실종아동에 대한 관심이 생기게 되어 관련 자료를 찾아보게 되었다.

 

 보건복지부 통계에 따르면 2018년부터 2021년까지 매년 약 2만건의 실종아동이 발생한다고 하며 1년이 넘도록 집으로 돌아가지 못한 장기실종아동은 2021년 4월 기준 871명으로 절대 적지 않은 숫자였다.

 2020년 CU와 아동권리보장원이 함께한 '실종아동 찾기 캠페인'을 통해 본인이 실종아동인지 모른채 살아가던 '강씨'를 찾을 수 있었다. 우연한 기회로 자신의 어린시절 사진이 CU에서 실종아동으로 송출되고 있는것을 발견한 후, 아동권리 보장원에 문의하게 되면서 20년만에 가족과 재회할 수 있었다고 하며, 파이낸셜뉴스 기사에 나온 '김세근'씨의 경우 어렸을적 가족을 잃어버리게 되어 본인의 정확한 이름, 나이를 모른다고 한다. 이를 통해 너무 어렸을때 가족을 잃어버려 본인의 이름등을 기억하지 못하는 경우가 존재한다는 것을 알수 있었다.

 

 실종아동의 신원을 빠르게 파악하여 신속하게 가족의 품으로 돌아갈 수 있게 해주는 '지문등 사전등록' 서비스는 어린이 지문 사전등록률이 55.8%로 실종아동 10명중 5명은 지문이 등록되어 있지 않았다. 이는 지문을 등록하기 위해선 경찰서, 지구대 등을 방문해야 하는 번거로움이 있기 때문이라는 개인적인 생각이 들었다.

 

 위 문제들을 해결하는데 도움이 되고자 저희 팀은 실종아동 예방 서비스를 구상하게 되었다.


서비스 개념

보호자의 보호가 필요한 아동, 치매 어르신, 지적·자폐성·정신장애인 등 이하 '아이'라 칭한다.

 

 'A.아이'는 실종아동 예방 서비스로 실종아동의 신원파악을 돕기 위한 얼굴인식인공지능 서비스이다.

 

 집에서 간편하게 아이의 얼굴을 등록시켜 실종발생시 빠른 대처가 가능토록한다.

 

 보호자가 확인되지 않는 아이를 발견후 아이의 신원 확인이 어려울 때 아이가 실종아동으로 등록되어 있는지 아이의 얼굴 사진을 통해 검사가 가능하다.

 

 보호자가 확인되지 않는 아이를 발견후 아이의 신원 확인이 어려울 때 아이가 실종아동으로 등록되어 있는지 아이의 얼굴 사진을 통해 검사가 가능하다.

 

 본인이 실종아동인지도 모른채 살아가던 분들이 이 서비스를 통해 본인이 실종아동으로 등록되어 있진 않을지 실종아동들의 얼굴을 학습한 모델이 사용자의 현재 혹은 어릴적 사진을 이용해 검사해 주는 서비스이다.

 

 사용자들이 들록한 얼굴 이미지를 인공지능 모델에 학습시켜 얼굴 사진만으로 사진속 인물의 신원을 파악할 수 있도록 한다.

 

 서비스에서 사용되는 얼굴인식 인공지능 모델은 사용자들이 사전에 등록한 얼굴 사진과 '안전Dream'의 OpenApi가 제공하는 실종아동들의 이미지로 실종아동들의 얼굴을 학습시킨 후, 사진속 인물이 실종아동으로 등록되어 있는지 판단한다.


주요 타겟 고객

 아이의 얼굴을 사전에 등록하여 혹시 모를 실종상황에 대비하고자 하는 보호자 등의 사람들.

  •  기존에 있는 지문 사전등록 서비스의 경우 경찰서를 방문해야 하는 번거로움이 있다.
  •  집에서 간편하게 아이의 얼굴을 등록하여 실종 발생시 빠른 대처가 가능하게 할 수 있다.

 실종아동 발견 후 신원을 파악해야 하지만 어려움을 겪고 있는 경찰 등의 사람들.

  •  지문이 등록되어 있지 않은 실종아동은 발견후 신원을 확인하는데 까지 평균 56시간이 걸린다.
  •  하지만 이 서비스를 이용할 경우 아동의 얼굴 사진만으로 쉽게 신원 확인이 가능하다.
  •  ex. ) 보호자가 확인되지 않는 아이의 신원을 파악하고자 지문 확인을 해 보았지만 등록이 되어있 지 않아 신원 파악이 어려울 때.

 본인이 실종아동인지 검사 하고싶어 하는 사람들.

  •  어린 시절부터 아동 보호 시설에서 자란 사람들.
  •  어린 시절부터 아동보호 시설에서 자라며 실종아동 전문센터에서 본인이 등록되어 있는지 확인해 보고 싶지만 어릴적 원래 이름을 기억하지 못하는 사람들.

 

주요 서비스 내용

주요 서비스 기능

  1. 우리아이 얼굴 사전등록 서비스
    • 아이의 얼굴을 사전에 등록해 실종발생시 빠른 대처가 가능하도록 하는 기능
      • 얼굴을 등록하기 전, 아동의 얼굴 사진 수집 동의, 아동의 보호자 개인정보 수집 동의, 개인정보 제 3자 제공 동의를 받아야 한다.
      • 집에서 간편하게 아이의 얼굴 사진을 촬영하는 것으로 얼굴 등록이 가능하며 얼굴과 함께 아이의 구체적인 정보( 나이, 이름, 보호자명, 보호자 연락처 등 )를 등록 할 수 있다.
  2. 실종아동 검색 서비스
    • ' 안전Dream '에서 제공하는 ' 실종검색 OpenApi '를 이용해 이름, 실종 발생일 등으로 실종아동 검색이 가능하다. 이때 검색된 실종아동의 이름, 성별, 사진, 실종 발생일, 실종 당시 나이, 현재 나이, 신체적 특징, 실종 발생 장소에 대한 정보를 사용자에게 제공한다.
    • 검색시 기본적으로 실종아동의 이름, 성별을 입력받으며 부가적 으로 실종 발생일, 실종 당시 나이, 현재 나이, 신체적 특징, 실종 장소를 입력받는다.
  3. 실종아동 신원확인 서비스 
    • 사용자의 얼굴이 사전에 등록되어 있는지 혹은 실종아동으로 등록되어 있는지 얼굴 사진을 이용해 검새주는 서비스실종아동 신원 파악에 도움을 준다.
    • case 1) 
      • 실종아동 발견후 지문이 등록되어 있지 않아 신원 확인이 어려울 경우 실종아동의 얼굴 사진을 찍은 뒤, 얼굴 사진을 검사기에 입력.
        • 얼굴이 사전에 등록되어 있을 경우 : 얼굴과 함게 저장되어 있는 이름, 나이, 보호자명, 보호자 연락처 등의 정보를 제공한다.
        • 얼굴이 사전에 등록되어 있지 않을 경우 : 실종아동으로 등록된 사람들의 얼굴을 학습한 인공지능 모델이 사진속 얼굴과 유사한 실종아동 5명의 이름, 성별, 사진, 실종 발생일, 실종 당시 나이, 현재 나이, 신체적 특징, 실종 발생 장소에 대한 정보를 제공한다.
    • case 2)
      • 아동 보호 시설에서 살아온 사람들 중 본인이 실종아동이라는 사실도 모른채 살아가는 사람들이 존재하며 너무 어렸을 때 가족과 떨어져 실종아동이 되었기에 본인의 원래 이름을 모르고 있는 경우가 있다. 이러한 경우 이름을 이용한 실종아동 검색이 불가능 하기 때문에 얼굴 사진을 이용해 실종아동으로 등록되어 있는지 검사할 수 있다.

서비스 시나리오


 

서비스 경쟁력/차별화

경쟁(유사) 서비스 현황 ( 안전 Dream )

안전Dream

  •  경찰청에서 기존 실종아동찾기 센터, 117학교·여성폭력 및 성매매피해자 긴급지원센터(117센터)등 관련 홈페이지를 통합한 서비스로 웹페이지와 앱으로 구현되어 있다.
  •  앱의 설치 횟수는 100만회 이상으로 시장 규모가 굉장히 크다. 이는 '안전Dream'이 유일한 실종아동 전문 앱인 영향이 큰것으로 보인다.
  •  평점은 리뷰 1000개, 3.7점으로 다소 낮다. 이는 휴대폰 인증, 정보 입력 등의 기능에서 많은 오류가 나기 때문인 것으로 보인다.
  •  실종아동 검색의 경우 이름, 나이, 장소 등 한번에 하나의 정보만으로 검색을 하도록 되어있다.
  •  앱내에서 지문 사전등록을 할 수 있는 서비스가 있지만 지문을 등록할 때 카메라로 지문을 인식시켜야 하기에 인식이 잘 안되는 문제점이 있다.

경쟁(유사) 서비스 대비 차별화 요소

  • 집에서 간편하게 아이의 얼굴을 사전에 등록하여 실종 발생시 아이를 발견하였을 때 빠르게 신원 확인이 가능하다.
    • 기존 '안전Dream' 앱에서 제공하는 핸드폰을 이용한 지문 사전등록 서비스의 경우 지문 자체가 잘 인식이 안되는 등 많은 오류가 발생하기 때문에 집에서 지문을 등록하기 어렵다.
    • 앱으로 등록이 어려울 시 아이를 데리고 지구대, 파출소에 데려가 등록해야 하는 번거로움이 있다.
  • 기존 서비스에는 없던 얼굴인식 인공지능을 이용한 실종아동 신원 검색이 가능하다.
    • 얼굴인식을 통해 아이의 얼굴이 사전에 등록되어 있는지, 실종아동으로 등록되어 있는지 검사가 가능하다.
    • 지문을 이용해 신원을 확인할 때 지문 인식 전용 기기가 필요하지만, 얼굴을 이용해 신원을 파악할 경우 별도의 기기 없이 핸드폰 카메라만으로 확인할 수 있다.

화이트 모드로 보시길 권장합니다

[A.아이 Project] 시리즈는 Ai를 이용해 친족 간 특징을 분석하여
미아와 부모를 매칭시켜주는 서비스 개발 일지이다.
' A.아이 '란 무엇인가?

' A.아이 '란

 ' A.아이( Ai 아이 찾기 ) '란 인공지능을 이용해 친족 간 유전적 특징을 분석하고, 실종아동의 인적사항을 바탕으로 친족 관계일 확률이 가장 높은 사용자를 찾아 매칭을 통해 실종아동의 가족을 찾아주는 것을 목표로 한다.

 

 한국에서는 실종아동을 찾을 때, 직접 조사, 실종아동의 정보 공개를 통한 시민들로부터의 신고를 받는 방식을 사용하며, 해외의 경우 어린이집 아이들의 얼굴을 미리 인공지능에 등록해 둔 후, 어린이집 아이 실종 사고 발생 시 빠르게 대처하는 방식의 서비스가 존재하며 이러한 서비스들은 최근 실종아동에 초점을 두고 있다.

' A.아이 '는 장기실종아동에 초점을 두고 있다.


 

모델 구조

Siamese Network

Siamese Network

샴쌍둥이가 몸의 일부를 공유하듯 서로 비슷한 두 네트워크가 가중치(weight)를 공유한다.

두 네트워크는 가중치를 공유하기에 하나의 네트워크라 인식해도 무방하다.

Siamese Network 구조

 Machine learning은 좋은 특징을 학습하기 위해선 많은 양의 데이터가 필요하며 많은 양의 데이터를 확보하지 못할 경우 좋은 모델이라 할지라도 제성능을 발휘하지 못한다.

 Siamese Network는 데이터가 부족한 상황에서 추가적인 학습 없이 새로운 Class에 대해 좋은 성능을 낼 수 있는 모델을 설계하는 것을 목적으로 만들어졌다. 사람이 소량의 데이터 만으로도 빠르게 학습하는 것을 머신러닝으로 구현하는 것이다.

 머신러닝 모델은 새로운 class에 대한 데이터가 적을 경우 제대로 학습할 수 없다. 이러한 한계를 극복하기 위해 One-shot learning을 이용한다.

두 이미지를 입력받고, Siamese Network 내부 두 개의 sub network에 넣어 output을 만든 후, 두 output의 distance를 벡터의 L1 Norm으로 계산하고 sigmoid 활성화 함수를 사용하여 'different', 'same'를 0과 1로 예측값을 출력한다.

 

 

One-shot learning :

 사람은 코끼리 정면 사진과 측면 사진 두장만으로도 두 이미지 속 동물이 '코끼리'라는 것을 쉽게 인식할 수 있다.

하지만 딥러닝 모델의 경우 코끼리 정면 사진만을 학습한 뒤, 코끼리 측면 사진을 입력할 경우 사진 속 동물이 '코끼리'라고 인식하는데 어려움이 있으며 이미지 속 코끼리를 정확히 '코끼리'라 인식하기 위해선 여러 각도에서 찍은 코끼리의 수많은 이미지를 이용해 학습해야만 한다.

Few-shot learning이란 소량의 데이터 만으로 딥러닝 모델이 사람과 같이 학습할 수 있게 하는 것을 의미하며

One-shot learning은 Few-shot learning의 한 종류로 단 한장만의 데이터로 학습할 수 있게 하는 것을 의미한다.

( Siamese Network 논문 & 참고한 논문 해석 블로그)

https://www.cs.cmu.edu/~rsalakhu/papers/oneshot1.pdf

https://rhcsky.tistory.com/6

 

[논문 리뷰] Siamese Neural Networks for One-shot Image Recognition

Meta Learning 학습하는 과정을 학습하다. Meta learning은 현재 AI에서 가장 유망하고 트렌디한 연구분야로 AGI(Artificial General Intelligence)로 나아갈 수 있는 매우 중요한 디딤돌이라고 볼 수 있다. AGI란 ‘

rhcsky.tistory.com


Triplet Network

Triplet Network

 서도 다른 것으로 분류해야 하지만 생김새와 구조가 비슷하여 같은 공간 내에 위치한 데이터를 떨어뜨리는 것이 Metric learning의 목적이며, 서로 유사하지만 다른 특징을 가지는 데이터를 분류하지 못하는 CNN의 한계를 해결하고자 제안된 방법이 Triplet Network이다.

 

두 데이터가 서로 다른 것이지만, 생김새가 비슷해 가까운 거리에 위치한 데이터들을 멀리 떨어뜨리는 것이다.

Anchor와 Negative와의 거리는 증가시키고 Anchor와 Positive와의 거리는 감소시킨다.

Triplet Network

( Anchor : 비교하고자 하는 데이터 )

( Positive : Anchor와 유사한 데이터 )

( Negative : Anchor와 유사하지 않은 데이터 )

 

Metric learning :

input data간 거리를 유클리드 거리 공식 등으로 계산 한 뒤 학습한다.

데이터간 거리를 통해 유사성을 판단하며 비슷한 데이터는 가깝게, 다른 데이터들은 멀게 나타낸다.

이미지 데이터의 특징을 벡터로 나타내고, 벡터간 거리를 계산하여 학습 하는 방식을 사용한다.

Siamese Network와 Triplet Network 등이 Metric learning에 속한다.


Contrastive learning

Contrastive learning

Contrastive learning은 '대조 학습'으로 Self-supervised learning(자기주도 학습) 학습 방법을 사용한다.

라벨링이 되어있지 않은( unlabeled ) 데이터를 이용해 학습을 진행한다.

라벨이 없기에 새로운 class에 대응이 가능하다.

데이터들을 특정 기준을 통해 유사한 데이터일 경우 가까운 거리에, 아닐 경우 먼 거리에 존재토록 학습한다.

 

positive pair와 negative pair로 구성되어 있으며 같은 이미지에서 나온 pair는 positive pair,

다른 이미지 끼리는 negative pair가 된다.

하나의 샘플(데이터)에서 두개의 view가 생성된다.

( view : 다양한 방식으로 변형된 데이터를 의미한다 )

 

Self-supervised learning :

자기주도 학습이다.

스스로 학습 데이터에 대한 분류를 수행한다.

라벨 없이 입력 데이터 내에서 스스로 tag를 설정해 학습한다.

 

기존 라벨링 데이터를 이용해 학습하는 supervised learning은 라벨이 있기에 분류하는 이미지가 어떠한 것인지 구분할 수 있기에 새로운 이미지가 주어지면 해당 이미지가 어떠한 class에 속하는지 예측할 수 있다.

 

unlabeled 데이터를 이용해 학습하는 unsupervised learning은 라벨이 없는 데이터를 이용해 학습한다. 때문에 데이터의 특징에 따라 군집화 하지만 실제로 해당 데이터가 어떠한 범주(ex. 강아지, 고양이)에 속하는지 모른다.

 

Self-supervised learning은 라벨이 없는 데이터(Untagged data)를 기반으로 학습하며 스스로 학습 데이터에 대한 분류(supervsion)를 수행한다.

Self-supervised learning은 4개의 과정을 따른다

1. pretext task를 정의한다.

( pretext task : 스스로 특징을 정해 supervision 방식으로 모델을 학습 )

2. unlabeled 데이터셋을 이용해 pretext task를 목표로 학습한다.

( 데이터 자체의 정보를 적당히 변형하여 supervision으로 삼는다 )

3. Downstream task에서 가중치는 냅둔 채 transfer learning( 전이학습 )을 수행한다.

( Downstream task : 구체적으로 풀고싶은 문제, 원하는 task를 fine-tuning 방식을 통해 모델을 업데이트 하는 방식 )

( task : 모델이 학습하고 수행해야 할 목표를 정의 )

4. 라벨이 없는 상태에서 직접 supervision을 만들어 학습 후, transfer learning 단계에서 Supervised learning을 수행해 (2)에서 학습시킨 모델의 성능을 평가한다.

( 참고한 블로그 )

https://greeksharifa.github.io/self-supervised%20learning/2020/11/01/Self-Supervised-Learning/https://lifeisenjoyable.tistory.com/15

https://velog.io/@stapers/Self-Supervised-Learning

 

Self-Supervised Learning

처음 기계학습을 공부할 때를 생각해보면 세상엔 두가지 종류로 나눌 수 있다고 배운다. 지도학습 (supervised learning)비지도 학습 (unsupervised learning)여기서 지도학습은 레이블이 존재하는 특정 태

velog.io

 

Self-supervised learning (자기지도 학습) 이란?

요즘 Deep learning에서 주목받고 있는 학습법인 Self-supervised learning을 소개할까 합니다. 이번 글에서는 Self-supervised learning에 대한 간단한 소개 이후 왜 이 학습법이 주목받는지, Self-supervised learning

lifeisenjoyable.tistory.com

 

Python, Machine & Deep Learning

Python, Machine Learning & Deep Learning

greeksharifa.github.io


화이트 모드로 보시길 권장합니다

[A.아이 Project] 시리즈는 Ai를 이용해 친족간 특징을 분석하여
미아와 부모를 매칭시켜주는 서비스 개발 일지이다.

' A.아이 '란 무엇인가?

' A.아이 '란

 ' A.아이( Ai 아이 찾기 ) '란 인공지능을 이용해 친족 간 유전적 특징을 분석하고, 실종아동의 인적사항을 바탕으로 친족 관계일 확률이 가장 높은 사용자를 찾아 매칭을 통해 실종아동의 가족을 찾아주는 것을 목표로 한다.

 

 한국에서는 실종아동을 찾을 때, 직접 조사, 실종아동의 정보 공개를 통한 시민들로부터의 신고를 받는 방식을 사용하며, 해외의 경우 어린이집 아이들의 얼굴을 미리 인공지능에 등록해 둔 후, 어린이집 아이 실종 사고 발생 시 빠르게 대처하는 방식의 서비스가 존재하며 이러한 서비스들은 최근 실종아동에 초점을 두고 있다.

' A.아이 '는 장기실종아동에 초점을 두고 있다.


 

A.아이 모델 개발

얼굴 특징 추출

 필자는 프로젝트의 첫 모델을 만들 때, 모델 개발 관련 논문을 참고하기보단 얼굴의 어떤 부위에 부모의 유전적 특징이 나타나는지를 찾아보았고, 주로 하관이 많은 영향을 받으며 코 부위가 유전자의 영향을 가장 많이 받는다는 것을 알 수 있었다. 여몯

 

 

수치적으로 추출한 얼굴 특징을 이용한 모델 학습

 알게 된 정보를 토대로 python의 openCV haaracacade모델을 이용해 얼굴을 추출 한 뒤, 얼굴의 각 부위들을 크롭 하여 얼굴의 특징을 추출하고자 하였다. 하지만 openCV haaracacade를 이용해 사진에서 얼굴 크롭을 시도해 본 결과, 얼굴 이외의 것을 크롭 하는 경우가 빈번했다. 때문에 mediapipe의 face_detection 함수를 이용해 이미지에서 얼굴을 검출하였다. 

 

 우리가 만들고자 하는 모델은 유사 연예인 찾기 모델같이 단순하게 비슷한 사람을 찾는 것이 아니라 친족 관계 사이에 있는 고유한 얼굴의 유전적 특징을 통해 친족 관계를 매칭시켜 주는 것이 목표이기 때문에 얼굴의 턱선, 눈매, 콧볼 등 세부적인 특징을 추출하여 모델 학습에 사용하고자 하였다.

 

 mediapipe의 face_landmark를 이용해 얼굴의 세부적 특징을 수치로 추출하기로 하였다. 유클리드 거리 계산 공식을 이용해 각 landmark의 좌표 사이의 거리를 구하거나, 각 좌표들을 연결하여 그래프를 만든 후, 그래프의 기울기를 구하는 등의 방법으로 턱선, 눈과 눈 사이의 거리, 광대의 넓이 등을 추출하였다.

face landmark
얼굴 특징 수치로 추출

 얼굴의 특징을 수치적으로 추출한 뒤, 추출한 데이터를 이용해 tensorflow로 만든 모델을 학습시켜 본 결과, 정확도는 굉장히 낮았다. 이는 모델의 구조, 데이터 수 등 많은 이유가 있겠지만 필자는 데이터의 개수와 얼굴의 특징을 추출하는 방식에 문제가 있다고 생각하였다.

( 모델 학습에 필요한 얼굴 이미지를 10개 정도만 사용하였기 때문에 이러한 문제가 생긴 것이라 생각된다. )

 

CNN을 이용한 모델(1)

 첫 모델의 결과가 안 좋게 나온 이후, 필자는 CNN을 이용한 모델을 UB KinFace Dataset, KinFaceW Dataset을 사용하여 만들었다.

( UB KinFace Dataset : 부모와 자식 이미지가 다른 장소, 다른 조명 각도에서 찍힌 데이터셋. )

( KinFaceW Dataset : 부모와 자식 이미지가 같은 장소, 같은 조명 각도에서 찍힌 데이터셋. )

 

데이터 전처리 :

 부모 얼굴 이미지와, 자식 얼굴 이미지를 오버랩시키게 된다면, 얼굴의 비슷한 부분은 겹쳐지게 되고, 비슷하지 않은 부분은 일그러진 이미지가 만들어진다. 필자는 모델이 이미지가 일그러진 부분과 비슷하게 겹쳐진 부분에 대한 특징을 모델이 학습할 수 있을 것이라 생각하고 모델 설계 후, 모델을 학습시켰다.

오버랩 이미지

이 모델은 Test Dataset에 대해 대부분의 데이터를 '가족'이라 예측하기에 50%라는 결과를 보였다. 이는 모델을 학습시키기 위한 데이터 전처리 과정이 잘못되었다 생각한다.

test dataset 정확도

CNN을 이용한 모델(2)

 첫 모델과 두 번째 모델 모두 안 좋은 결과를 보였다.

세 번째 모델은 KinFaceW 데이터셋으로  부모 이미지와 자식 이미지, 다중 입력을 받아 두 이미지 사이의 관계를 파악해 분류하는 다중입력 모델을 이용해 학습시켰다.

멀티모달 학습 모델

모델을 단순히 100번 학습시켜 보았을 때는 과적합이 일어났다. 과적합이 일어났는지는 Traning dataset에 대한 정확도가 Validation dataset보다 높게 나올 경우( 두 그래프 사이의 격차가 넓을 경우 ) 과적합이 일어났다 판단할 수 있다.

 

 필자는 과적합을 방지하기 위해 학습 조기종료( Early Stopping ) 방법을 적용시켜 과대적합을 예방하였다.

과대적합이 일어났을 때에는 정확도가 약 75% 나왔지만 과대적합 예방 후에는 정확도 약 80%가 나왔다.

과적합
과적합 예방

 하지만 이 모델에 UB KinFace Dataset 데이터 66개를 넣어본 결과 정확도 33%를 보였다. 이는 KinFaceW Dataset은 부모, 자식 이미지가 동일한 장소, 동일한 조명 위치에서 찍은 데이터 셋이고, UB KinFace Dataset은 각각 다른 장소, 조명 위치에서 찍은 데이터 셋이기에 정확도가 낮은 문제가 발생하는 것이라 생각된다.

얼굴 사진은 조명의 위치에 따라 부각되는 얼굴의 특징이 다르기 때문이다.


 

다음 모델부턴 논문을 참고하여 모델을 만들 예정이다.

+ Recent posts