Skip to content

Doheon/familyphotoproj

Repository files navigation

Family Photo Classifier

pytorch, django를 이용하여 제작한 가족사진 분류 web applicaiton.

사진을 첨부하면 그 사진이 4명의 가족 구성원중 누구인지 확률로 알려준다.

Object Detection을 이용해 더 성능이 좋아진 v2가 개발되었다.

Family Photo Classifier V2

동작화면

1 2
시작 인터페이스 사진을 첨부한 결과

동기

가족여행을 다녀오고 사진을 종합해 보니 2000여장이 넘는 사진이 나왔다.

사진은 많은데 아무도 분류를 안해서 저장소에 방치되고 있었다.

사진을 우리 가족의 구성원중 누군지 알려주고 자동으로 분류해주는 우리 가족 전용 분류기를 만들기 위해 이 프로젝트를 진행하였다.
 

Modeling

Data Preprocessing

  • 가족 사진 데이터에는 여러명이 있는 사진과 독사진이 있었다.

  • 여러명이 있는 사진으로 multi-label classification을 시도해보았으나 성능이 좋지 않아서 독사진만 이용하여 multi-class classification을 진행하였다.

  • 4명의 가족 구성원의 독사진만 분류하여 훈련의 데이터로 사용하였다.

  • 각 클래스당 200여장의 사진을 사용했고, 270x270의 사이즈로 resize하였다.

  • 이 과정에서 세로가 더 긴 사진이 90도 회전하는 현상이 있어서 모든 사진을 반대방향으로 90도 회전한 사진을 추가하여 데이터를 두 배로 늘려주었다.

  • 10개의 데이터를 하나의 batch로 설정하여 batch training을 할 수 있도록 하였다.

Train

  • pytorch를 이용하여 훈련을 진행하였다.

  • torchvision의 resnet18을 사용하여 훈련을 진행하였고, 마지막 fc layer의 output의 개수를 4개로 설정하여 4개의 class에 대해 훈련을 진행할 수 있도록 했다.

  • loss function은 CrossEntropyLoss를 이용하여 multi-class classification을 해결하도록 했다.

  • optimizer는 SGD, learning rate는 0.001을 이용하였다.

  • loss가 적절히 수렴할때 까지 epoch를 조절하면서 훈련을 진행하였다.

 

Django

  • 사진을 첨부할 수 있도록 만들고 upload 버튼을 누르면 서버로 사진을 전송하고 사진에 대한 예측 결과를 받아와서 그래프로 표현하도록 하였다.

  • 사진을 받으면 예측을 진행하고 확률을 계산하여 4명에 대한 확률과, 가장 높은 확률이 누구인지를 template에 전달한다.

  • 예측의 결과는 chart.js를 이용하여 보기 편하게 시각화하였다.

  • 모바일에서 접속할 경우 카메라에 접근하여 사진을 찍은 후 바로 찍은 사진으로 예측을 진행할 수 있도록 하였다.

  • nginx, uwsgi를 연동하고 로컬 컴퓨터를 이용하여 최종 배포하였다.

 

Result

성능

  • train에 사용된 데이터에 대해서는 매우 높은 정확도를 보였다.

  • train set에 없는 사진인, 직접 사진을 찍어서 바로 예측했을 때는 약 70%의 정확도로 조금 부족한 예측 성능을 가지고 있었다.

  • 엄마와 누나, 나와 아빠를 자주 혼동하는 것을 확인했고, 성별별로 헷갈려하는 것이라고 생각된다.

문제점

  • train set에 없는 데이터에 대해서는 만족할만한 정확도를 보이지 않는다.

  • 독사진에만 사용이 가능하기 때문에 어차피 독사진들을 분류해야 해서 완벽한 자동 분류가 불가능하다.

  • 독사진에만 사용이 가능하기 때문에 가족들이 여러명 있는 사진에는 사용이 불가능하다.

  • 우리 가족이 없는 음식이나 풍경사진을 직접 제외해줘야 한다.

  • 독사진이어도 사진에 우리가족이 아닌 다른사람이 섞여 있으면 결과예측에 혼란이 생긴다.

개선방향

나는 수천장의 사진 중 내가 있는 사진만 뽑아주는 것을 원했다.

결국 중요한 것은 이 사진에 내가 있느냐 없는냐이기 때문에 이 방법으로는 불가능하다고 느꼈다.

만약 사진에서 object detection을 하고 그 후에 classification을 하면 원하는 기능을 구현할 수 있을 것이라고 생각된다.

이 방법으로 개선한 version2를 제작하였다.

Family Photo Classifier V2

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published