[8week] 시각 지능 딥러닝 (2) : Data Augmentaion, Transfer Learning,

atdawn·2024년 10월 24일
0

AIVLE

목록 보기
19/25

Image Data Augmentation : 이미지 데이터 증강 기법

  • 데이터 수집에 있어서 한계가 생길 수 있음
  • 수집한 이미지 데이터만으로라도 이용해서 어떻게든 성능을 높여보자!

데이터 증강의 한계

  • 과적합 위험: 너무 많은 증강을 통해 모델이 비정상적으로 학습할 수 있음.
  • 데이터 품질 유지: 증강이 원본 데이터의 중요한 특성을 손상시키지 않도록 신중하게 적용해야 함.

결론

  • 개인이 수집 불가능할 정도의 데이터 + 성능이 훌륭한 모델 구조와 가중치

  • Augmentation Layer은 Input Layer 바로 다음에 나와야 함

Transfer Learning : 전이 학습

  • 기존에 잘 만들어져 있는 모델을 우리 문제에 맞춰서 변형하여 사용하자!

    1. 완전히 그대로 쓸 것인가 : Pretrained Model
    1. 우리 문제에 맞게 살짝 조정 : Fine-Tuning

Fine-Tuning 전략 1

  • 데이터 수집 많음, 문제와 사전 학습 모델이 유사
    => 모델의 뒷부분 위주로 재학습

Fine-Tuning 전략 2

  • 데이터 수집 많음, 문제와 사전 학습 모델이 상이
    => 모델 전체 재학습

Fine-Tuning 전략 3

  • 데이터 수집 적음, 문제와 사전 학습 모델이 유사
    => 모델의 뒷부분 중의 뒷부분만 재학습

Fine-Tuning 전략 4

  • 데이터 수집 적음, 문제와 사전 학습 모델이 상이
    => 모델의 뒷부분 위주로 재학습

Model Save & Load

Model Checkpoint

  • epoch가 한번 돌았을때, 최고의 성능을 저장
  • fit 전에 적용
  • fit

Model Save

  • 모델 학습 후 저장
  • Model Checkpoint를 사용하지 않으면, 최적 가중치가 아닌, 마지막 가중치를 가진 모델을 저장함.

Model Load

image_dataset_from_directory()

  • 이미지 데이터를 가지고 있고, 데이터의 class에 따라서 각각 폴더가 따로 만들어져 있어야함.
    • ex) 0에 대한 이미지면 my_data/my_mnist2/0/0_1.jpg
    • ex) 1에 대한 이미지면 my_data/my_mnist2/1/1_1.jpg


Object Detection : 객체 탐지

  • Classification (분류) + Localization (영역)
  • Multi-Labeled Classification + Bounding Box Regression
    • Box는 거의 회기 문제로 접근

Bounding Box

  • 하나의 Object가 포함된 최소 크기 박스

  • 위치 정보를 나타냄 (x, y ,w, h...)

    • 특정 꼭짓점을 잘 찾아냄 (x,y)
    • 크기 또한 잘 찾아냄 (w,h)

Confidence Score : 신뢰도 점수

  • Bounding Box 안에 Object가 있는지 에 대한 모델의 확신도

  • 0~1 값을 가짐

  • 통계적 확률이라고 받아드려서는 안됨

  • 박스에 대한 모델의 자체 신용평가 (가능성)

  • 모델에 따라 계산이 조금씩 다름

    • 단순히 Object가 있을 확률
    • Object가 있을 확률 * IoU
    • Object가 특정 클래스일 확률 * IoU
  • 1에 가까울 수록 모델은 Object가 있다고 판단


IoU (Intersection over Union)


  • Ground-truth Bounding Box와 Prediction Bounding Box의 중복 영역 크기를 통해 측정

  • 모델이 예측한 바운딩 박스와 정답 바운딩 박스의 유사함 평가

  • 겹치는 영역이 넓을 수록 좋은 예측

  • 0~1


NMS 알고리즘 : Non-Maximum Suppression

  • 동일 Object에 대한 중복 박스 제거

  • 모델 학습이 모두 이루어진 후 예측 단계에서 동작

  • 절차

      1. Confidence Score 임계값 이하의 Bounding Box 제거
      1. 남은 Bounding Box들을 Confidence socre 내림차순 정렬
      1. 첫 Bounding Box(Confidence Score가 가장 높은)와의 IoU 값이 임계값 이상인 다른 박스들을 제거
      1. Bounding Box가 하나가 될 때까지 2,3번 반복
  • IoU가 임계값 이상인 경우

    • 두 Bounding Box가 동일한 Object를 나타내는 것이라고 판단
    • 상대적으로 Confidence score가 낮은 Bounding Box를 제거
  • threshold 임계값 : 우리가 지정하는 지정선

  • Confidence score threshold가 높을수록, IoU threshold가 낮을수록, 중복 박스에 대한 판단이 엄밀


Precision, Recall, AP, mAP

Precision

  • 모델이 Object라 예측한 것 중 실제 Object의 비율

Recall

  • 실제 Object 중 모델이 예측하여 맞춘 Object의 비율

Confusion Matrix with O.D

  • Confidence score threshold 값에 따라 Precision, Recall 변화 (모델 스스로)

Precision-Recall Curve

  • Precision과 Recall을 모두 감안한 지표

Average Precision (AP)

  • Precision - Recall Curve 그래프 아래의 면적
  • 하나의 class에 대한 Average Precision

mean Average Precision(mAP)

  • O.D에서 가장 중요한 성능 지표!

  • 각 클래스 별 AP를 합산하여 평균을 낸 것


Annotaion

  • 이미지 내 Detection 정보를 별도의 설명 파일로 제공되는 것을 Annotation이라고 함.
  • Annotation은 Object의 Bounding Box 위치나 Object 이름 등을 특정 포맷으로 제공.
  • 학습 과정에 필요
  • YOLO 는 .txt 파일

UltraLytics : YOLO

  • UltraLytics YOLOv8을 개발한 조직
  • Ultralytics HUB라는 플랫폼을 제공하여 머신 러닝 모델의 생성, 훈련 및 배포를 지원
  • YOLO : 객체 탐지 딥러닝 모델

YOLO 실습 : COCO8

  • MS COCO는 (<- ImageNet 같은 느낌) Object Detection 모델을 학습할 때 사용한 데이터셋

  • YOLO는 MS COCO 데이터셋으로 학습한 object detection 모델

  • 결과물이 yolo11n.pt에 담겨있는 것

  • COCO8 : 경량화 버전

  1. 라이브러리 설치

  2. wandb off

  1. YOLO 모델

  2. 모델링

그럼 지정 위치에 모델이 저장된다

  1. 모델 학습

하이퍼 파라미터

  • data : 학습시킬 데이터셋의 경로. default 'coco8.yaml'
  • epochs : 학습 데이터 전체를 총 몇 번씩 학습시킬 것인지 설정. default 100
  • patience : 학습 과정에서 성능 개선이 발생하지 않을 때 몇 epoch 더 지켜볼 것인지 설정. default 100
  • batch : 미니 배치의 사이즈 설정. default 16. -1일 경우 자동 설정.
  • imgsz : 입력 이미지의 크기. default 640
  • save : 학습 과정을 저장할 것인지 설정. default True
  • project : 학습 과정이 저장되는 폴더의 이름.
  • name : project 내부에 생성되는 폴더의 이름.
  • exist_ok : 동일한 이름의 폴더가 있을 때 덮어씌울 것인지 설정. default False
  • pretrained : 사전 학습된 모델을 사용할 것인지 설정. default True
  • optimizer : 경사 하강법의 세부 방법 설정. default 'auto'
  • verbose : 학습 과정을 상세하게 출력할 것인지 설정. default False
  • seed : 재현성을 위한 난수 설정
  • resume : 마지막 학습부터 다시 학습할 것인지 설정. default False
  • freeze : 첫 레이어부터 몇 레이어까지 기존 가중치를 유지할 것인지 설정. default None

  • YOLO가 받아들이는 파일 구조
  1. 예측값 생성

파라미터

  • source : 예측 대상 이미지/동영상의 경로
  • conf : confidence score threshold. default 0.25
  • iou : NMS에 적용되는 IoU threshold. default 0.7. threshold를 넘기면 같은 object를 가리키는 거라고 판단.
  • save : 예측된 이미지/동영상을 저장할 것인지 설정. default False
  • save_txt : Annotation 정보도 함께 저장할 것인지 설정. default False
  • save_conf : Annotation 정보 맨 끝에 Confidence Score도 추가할 것인지 설정. default False
  • line_width : 그려지는 박스의 두께 설정. default None

  • 저장 경로에서 이미지 확인

yaml

  • 데이터의 정보와 클래스 정보를 저장하기 위한 파일

  • yaml 파일 구조

  • yaml 파일 생성

touch name.yaml
profile
복습 복습 복습

0개의 댓글