미식가의 개발 일기

[KT 에이블스쿨(6기, AI)] 9주차, 4차 미니 프로젝트 본문

KT 에이블스쿨(6기, AI)

[KT 에이블스쿨(6기, AI)] 9주차, 4차 미니 프로젝트

대체불가 핫걸 2024. 11. 2. 17:25

미션

나와 다른 사람을 구분하는 얼굴 인식 모델 만들기

 

데이터 셋

  • Keras 모델용: 약 13,000개의 이미지 데이터(약 5,700명의 사람 얼굴)
  • YOLO 모델용: 약 10,000개의 이미지와 텍스트 데이터
  • 직접 수집한 내 얼굴 데이터 

 

과제 수행 

1. 데이터 수집

  • 내 얼굴 이미지 직접 수집

저는 10,000장 정도 수집했습니다!

 

2. 데이터 전처리 

  • 데이터 증강: keras layers, Albumentations 활용  
    • keras layers로 증강을 하여 학습했을 때는 성능에 큰 변화가 없었습니다. 더 더양한 증강 기법을 찾던 중 Albumentations라는 훨씬 다양한 증강 기법을 제공하는 라이브러리를 발견했고, 이를 적용하여 학습을 하니 성능이 향상되었습니다. 

  • 데이터 라벨링: 온라인 라벨링(roboflow) or 로컬 라벨링 
    • 처음에는 roboflow의 auto label 기능을 활용하여 라벨링을 하려 했으나 1,000장만 무료로 변환할 수 있었습니다. 5장 정도 auto labeling을 해본 결과 대부분의 값이 [x, y, w, h] = [0.5, 0.5, 1, 1]로 근접하는 것을 알게 되었고,  [x, y, w, h] 값을 임의로 지정하여 로컬에서 라벨링을 수행했습니다.
  • 각 모델에서 요구하는 데이터 셋 구조로 정리
    • FaceNet: 클래스별 폴더 구조
    • YOLO-CLS: 클래스별 폴더 구조
    • YOLO: 이미지 파일과 라벨 파일을 분리

※ YOLO, YOLO-CLS에 대한 포스팅

 

얼굴 인식을 위한 딥러닝 모델: YOLO vs YOLO-CLS

- YOLO와 YOLO-CLS는 Ultralytics라는 회사에서 개발한 이미지 학습 모델- YOLO는 객체 탐지, YOLO-CLS는 이미지 분류를 위한 모델로 서로 다른 기능을 수행- 학습 전 각 모델이 요구하는 데이터셋 구조를 적

irreplaceablehotgirl.tistory.com

 

3. 학습, 추론 및 저장 

  • 모델별 학습 후 저장 

  • 실제 Cam으로 결과 확인

FaceNet, YOLO-CLS, YOLO 모델에 대한 결과

 

 

느낀점

  • 이번 4차 미니 프로젝트는 3차까지와 달리 무려 5일간 진행되었는데요. 그만큼 해결하기 어려운 프로젝트였던 것 같습니다.. 😅 그래도 개인적으로 이번 프로젝트에서 가장 많이 배웠고, 재미있었어요!
  • FaceNet은 특정 위치에 한 사람만 있다면 잘 구분했지만 두 사람 이상은 잘 구분하지 못했고, 특정 위치에서 벗어나면 잘 분류하지 못했습니다.
  • YOLO-CLS는 처음부터 별도의 시도 없이도 좋은 모델이 나왔습니다. 하지만 고개를 돌린다든지 각도의 변화에 대해 잘 탐지하지 못한다는 단점이 있었는데 Albumentation의 다양한 증강 기법(그림자 추가, 각도 조절, 노이즈 추가 등)을 적용하여 재학습하니 각도에 변화에 대해서도 좋은 성능을 보였고, 예측 신뢰도는 100%까지 올라갔습니다.
  • YOLO 모델은 처음엔 여러 개의 Bounding Box가 생성되며 예측이 잘되지 않는 에러가 있었으나 제공받은 데이터 셋 중 mosaic이 많이 포함된 데이터 셋을 제거하니 Bounding Box를 여러 개 인식하는 에러가 해결되었고, 역시 Albumentation의 증강 기법을 활용하여 예측 신뢰도도 높일 수 있었습니다.
  • 이외에도 모델의 성능을 높이기 위해 여러 가지 시도들을 해봤지만 프로젝트가 끝난 후 저희 팀의 결론은 결국은 '좋은 데이터가 좋은 모델을 만든다!'였습니다. 여러 가지 시도 중 가장 성능에 영향을 많이 줬던 시도가 1. 데이터양 늘리기, 2. 다양하게 데이터 증강하기였는데 다른 여러 가지 시도들 보다 다양하고 많은 데이터가 결국 성능에 가장 많은 영향을 줬습니다. 
  • 또 이미지 인식을 하는 상황에 따라 증강 기법도 적절하게 적용한다면 예측 성능을 더 높일 수 있을 것 같습니다. 회사 출입 카드 대신 얼굴 인식을 사용한다면 실내에서만 인식을 하니까 많은 변수가 있지는 않을 것입니다. 하지만 야외에서 얼굴 인식을 하는 상황이라면 날씨라든지 밝기에 영향을 받을 수 있겠죠! 이처럼 상황에 맞게 적절한 전처리를 한다면 더 좋은 데이터 셋을 확보할 수 있을 것 같다고 생각했습니다. 
반응형