본문 바로가기
AI/AI 부트캠프

[AI 부트캠프] DAY 134 - 파이널 프로젝트 25

by HOHHOH 2024. 1. 31.

[오늘의 일지]

프로젝트 - 학습 결과 분석

[상세 내용]

학습 결과 분석

- 지난 일지에서는 전체 데이터 중 단일 클래스의 학습 결과를 분석하는 과정을 정리했습니다. 오늘은 기존 단일 클래스 학습보다 전체 클래스는 아니지만 다수의 클래스를 추가해서 학습을 시킨 뒤 결과를 비교 분석해 보는 과정을 정리해 보겠습니다.

 

학습 조건

- 단일 클래스든 다중 라벨 클래스든 우선 같은 조건으로 학습할 데이터만 다르게 설정을 했습니다. 설정한 조건은 아래와 같습니다. 다만 epochs는 100으로 모두 동일하게 설정을 했지만 early stopper를 설정해서 종료되는 epochs는 차이가 발생했다고 할 수 있습니다.

model = YOLO("yolov8m.yaml")
results = model.train(
    data="D:/상표 이미지 및 텍스트/Training/data4/yolocustom.yaml",
    imgsz=640,
    epochs=100,
    batch=4,
    patience=5,
    workers=16,
    device=0,
    exist_ok=True,    
    project=f"{MODEL}",
    name="train",
    seed=SEED,
    pretrained=False,
    resume=True,
    optimizer="Adam",
    lr0=1e-3,
    augment=False,
    val=True,
    cache=True
    )

 

학습 결과

- 단일 클래스 : 전체 학습은 22 epochs에서 마무리가 되었지만 결과는 생각보다 잘 나왔습니다. 클래스는 '010102'으로 가장 첫 번째 데이터입니다. 결과는 mAP50이 0.653이고 mAP50-95가 0.303으로 나왔습니다.

 

- 다중 클래스 : 전체 학습은 62 epochs로 마무리되었고 위에 단일 클래스보다 8개의 클래스를 추가해서 9개의 클래스로 학습을 진행시켰습니다. 결과는 전체 평균으로 봤을 때  mAP50이 0.507이고 mAP50-95가 0.282으로 나왔습니다.

 

인사이트

- 저는 위에서 나온 결과를 토대로 비교할 수 있는 부분은 '010102' 클래스의 결과였습니다. 단일 클래스로 학습을 진행시켰을 때보다 평가지표가 mAP50은 0.653에서 0.548로 감소된 것을 알 수 있고 mAP50-95는 0.303에 0.266으로 감소된 것을 확인할 수 있었습니다. 그렇다면 왜 이런 감소된 결과가 발생했을지 생각해 보았습니다. 제가 생각한 원인은 데이터 자체의 특징에 있다고 생각합니다. 위에서 나오는 '010102' 클래스의 데이터는 하나의 별이라는 특징을 가지고 있습니다. 그리고 추가된 다중 클래스의 데이터들은 2개의 별, 3개의 별, 4개의 별 등 모두 별과 관련이 있지만 개수를 다르게 하고 있는 클래스들이었습니다. 즉 2개의 별이나 3개의 별을 따로 학습을 시켜도 모델이 다수의 별이 존재하는 이미지를 예측할 때는 하나의 별을 같이 예측할 경우가 존재할 것 이기고 그 반대의 경우도 존재하기 때문에 결과적으로 봤을 때는 수치가 감소한 것이라고 판단을 했습니다.

 

[마무리]

 오늘은 학습한 데이터의 결과에 대해서 분석해 보는 과정을 정리해 보았습니다. 사실 원래는 v8과 v5 모델의 성능을 비교해 보는 것이 주요 과제였지만 v5 모델의 결과가 없다는 것을 알게 되어서 데이터 간 발생할 수 있는 학습 결과에 대해서 비교 분석하는 과정을 더 자세하게 분석해 보는 걸로 방향성을 변경했습니다. 다음에는 더 좋은 gpu 리소스로 전체 데이터 학습을 돌려보는 과정을 진행해 볼 예정입니다.

반응형

댓글