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가 이상적인 곡선을 그리며 학습이 잘 된것을 확인 할수있습니다.

 

아쉬운 점

개인 사진인 경우 얼굴 인식을 잘하는 반면, 여러명인 경우 인식을 잘 하지 못하는 것을 알 수 있었습니다.

아마 학습 된 사진 모두 한명만 나온 개인사진으로 학습하여 여러명인 경우 인식이 잘 안되는것 같습니다.