Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 백준 사탕 게임
- kt aivle school
- 케이티 에이블스쿨
- 앙상블
- 케이티 에이블스쿨 6기 spring
- kt 에이블스쿨 6기 미니 프로젝트
- kt 에이블스쿨 6기 빅프로젝트
- 네트워크
- KT AIVLE
- 티스토리챌린지
- SQLD
- kt 에이블스쿨 6기 ai
- 판다스
- 데이터 프레임
- 백준
- 파이썬
- kt 에이블스쿨 기자단
- 머신러닝
- 케이티 에이블스쿨 기자단
- 케이티 에이블스쿨 6기
- 케이티 에이블스쿨 6기 ai
- 알고리즘
- 케이티 에이블스쿨 6기 java
- 구현
- 오블완
- 에이블 기자단
- KT 에이블스쿨
- kt 에이블스쿨 6기
- 프로그래머스
- 케이티 에이블스쿨 6기 후기
Archives
- Today
- Total
미식가의 개발 일기
[KT 에이블스쿨(6기, AI)] 9주차, 4차 미니 프로젝트 본문
미션
나와 다른 사람을 구분하는 얼굴 인식 모델 만들기
데이터 셋
- Keras 모델용: 약 13,000개의 이미지 데이터(약 5,700명의 사람 얼굴)
- YOLO 모델용: 약 10,000개의 이미지와 텍스트 데이터
- 직접 수집한 내 얼굴 데이터
과제 수행
1. 데이터 수집
- 내 얼굴 이미지 직접 수집
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으로 결과 확인
느낀점
- 이번 4차 미니 프로젝트는 3차까지와 달리 무려 5일간 진행되었는데요. 그만큼 해결하기 어려운 프로젝트였던 것 같습니다.. 😅 그래도 개인적으로 이번 프로젝트에서 가장 많이 배웠고, 재미있었어요!
- FaceNet은 특정 위치에 한 사람만 있다면 잘 구분했지만 두 사람 이상은 잘 구분하지 못했고, 특정 위치에서 벗어나면 잘 분류하지 못했습니다.
- YOLO-CLS는 처음부터 별도의 시도 없이도 좋은 모델이 나왔습니다. 하지만 고개를 돌린다든지 각도의 변화에 대해 잘 탐지하지 못한다는 단점이 있었는데 Albumentation의 다양한 증강 기법(그림자 추가, 각도 조절, 노이즈 추가 등)을 적용하여 재학습하니 각도에 변화에 대해서도 좋은 성능을 보였고, 예측 신뢰도는 100%까지 올라갔습니다.
- YOLO 모델은 처음엔 여러 개의 Bounding Box가 생성되며 예측이 잘되지 않는 에러가 있었으나 제공받은 데이터 셋 중 mosaic이 많이 포함된 데이터 셋을 제거하니 Bounding Box를 여러 개 인식하는 에러가 해결되었고, 역시 Albumentation의 증강 기법을 활용하여 예측 신뢰도도 높일 수 있었습니다.
- 이외에도 모델의 성능을 높이기 위해 여러 가지 시도들을 해봤지만 프로젝트가 끝난 후 저희 팀의 결론은 결국은 '좋은 데이터가 좋은 모델을 만든다!'였습니다. 여러 가지 시도 중 가장 성능에 영향을 많이 줬던 시도가 1. 데이터양 늘리기, 2. 다양하게 데이터 증강하기였는데 다른 여러 가지 시도들 보다 다양하고 많은 데이터가 결국 성능에 가장 많은 영향을 줬습니다.
- 또 이미지 인식을 하는 상황에 따라 증강 기법도 적절하게 적용한다면 예측 성능을 더 높일 수 있을 것 같습니다. 회사 출입 카드 대신 얼굴 인식을 사용한다면 실내에서만 인식을 하니까 많은 변수가 있지는 않을 것입니다. 하지만 야외에서 얼굴 인식을 하는 상황이라면 날씨라든지 밝기에 영향을 받을 수 있겠죠! 이처럼 상황에 맞게 적절한 전처리를 한다면 더 좋은 데이터 셋을 확보할 수 있을 것 같다고 생각했습니다.
반응형
'KT 에이블스쿨(6기, AI)' 카테고리의 다른 글
[KT 에이블스쿨(6기, AI)] 11주차, 5차 미니 프로젝트(AICE Associate 자격증 대비) (1) | 2024.11.16 |
---|---|
[KT 에이블스쿨(6기, AI)] 10주차, 언어지능 딥러닝 (3) | 2024.11.10 |
[KT 에이블스쿨(6기, AI)] 8주차, 시각지능 딥러닝 (4) | 2024.10.26 |
[KT 에이블스쿨(6기, AI)] 7주차, 3차 미니 프로젝트 (0) | 2024.10.21 |
[KT 에이블스쿨(6기, AI)] 7주차, 딥러닝(성능 관리, 모델 저장 및 불러오기, 시계열 모델링) (1) | 2024.10.15 |