KT Aivle 5기/프로젝트
[KT AIVLE SCHOOL] KT Aivle 5차 미니프로젝트 후기 2
G허니
2024. 5. 12. 21:08
5차 미니프로젝트 두번째는 얼굴 인식 프로젝트입니다.
최종적으로는 yolo모델을 사용해 조원들의 얼굴을 인식하는것이 최종목표입니다.
프로젝트 진행순서
프로젝트의 진행순서는
데이터 전처리 -> 모델링Ⅰ- YOLO v8 -> 모델링Ⅱ - YOLO v8 추가학습
모델링Ⅰ에서는 13명의 유명인들의 얼굴을 학습시켜 모델을 만들어 보는 것 이고
모델링Ⅱ 에서는 6명의 조원들의 얼굴을 추가 학습시켜 모델을 만델을 만드는 것입니다.
플로우차트
모델링 Ⅰ
YOLO 모델에 적용할 YAML 생성
import yaml
data = {
'train': '/content/mini_project5/datasets/train/',
'val': "/content/mini_project5/datasets/valid/images",
'nc': 13,
'names': [
'Barack Obama',
'Che Guevara',
'Cristiano Ronaldo',
'David Beckham',
'Donald Trump',
'Elon Musk',
'Joe Biden',
'Lionel Messi',
'Mark Zuckerberg',
'Oprah Winfrey',
'Steve Harvey',
'Steve Jobs',
'Zaha Hadid'
]
}
dir_path = '/content/mini_project5'
os.makedirs(dir_path, exist_ok=True)
file_path = os.path.join(dir_path, 'data.yaml')
with open(file_path, 'w') as yaml_file:
yaml.dump(data, yaml_file, default_flow_style=False)
YOLO v8 모델을 사용해서 학습
# !pip install ultralytics
from ultralytics import settings
settings['datasets_dir'] = 'path/datasets'
settings['runs_dir'] = 'path/runs'
from ultralytics import YOLO
model = YOLO()
# 모델 학습
model.train(model='path/yolov8n.pt',
data='path/data.yaml',
epochs=200)
5214개의 이미지를 이용해 학습을 진행했고 765개의 이미지로 검증을 하였습니다.
모델링 Ⅱ
조원 한명당 200장 총 1200장의 이미지 데이터를 수집하였습니다.
이미지 어노테이션(상하반전, 로테이션, 그레이 스케일)을 통해 데이터의 양을 늘리고 학습을 진행하였습니다.
이미지 Augmentaion을 진행하지 않고 학습을 하였을 때는 모델이 과적합 되는 것을 볼 수 있습니다.
Augmentaion후에는 PR Curve가 이상적인 곡선을 그리며 학습이 잘 된것을 확인 할수있습니다.
아쉬운 점
개인 사진인 경우 얼굴 인식을 잘하는 반면, 여러명인 경우 인식을 잘 하지 못하는 것을 알 수 있었습니다.
아마 학습 된 사진 모두 한명만 나온 개인사진으로 학습하여 여러명인 경우 인식이 잘 안되는것 같습니다.