[KT AIVLE] DX트랙 딥러닝(9주차) 복습(딥러닝 심화: Object Detection, YOLO v8)

728x90

딥러닝 심화 복습

객체 감지(Object Detection)

  • 이미지나 비디오에서 여러 객체를 식별하고, 그 객체들의 위치를 파악하는 작업
  • 분류(Classification)와 위치 파악(Localization)의 결합
    • Localization : 단 하나의 Object 위치를 Bounding Box로 지정하여 찾음
    • Object Detection : 여러 개의 Object들의 위치를 Bounding Box로 지정하여 찾음

 

1. Bounding Box

  • 하나의 object가 포함된 최소 크기 박스
  • 구성: x, y(좌표 정보) w,h(크기 정보)
    • x min, y min, x max, y max, x center, y center, width, height

 

2. Class Classification

  • 주어진 데이터를 여러 개의 클래스 또는 범주로 분류하는 작업

 

3. Confidence Score

  • Object Detection 모델에서 각각의 Bounding Box가 실제로 객체를 포함하고 있는 정도(확률)를 나타내는 지표
  • 0 ~ 1 사이의 값, 1에 가까울 수록 Object가 있다고 판단
  • 모델에 따라 계산이 조금씩 다름
    1. 단순히 Object가 있을 확률
    2. Object가 있을 확률 X IoU
    3. Object가 특정 클래스일 확률 X IoU

 

4. IoU(Intersection over Union)

  • 예측된(Prediction) Bounding Box실제(Ground-truth) Bounding Box간의 겹치는 영역의 크기를 측정하는 지표
  • 0 ~ 1 사이의 값, 값이 클수록 좋은 예측(겹치는 영역이 넓을 수록 좋은 예측)

 

5. NMS (Non-Maximum Suppression)

  • Object Detection에서 중복된 Bounding Box를 제거하는 기술
    1. 일정 Confidence Score 이하의 Bounding Box 제거
    2. 남은 Bounding Box들을 Confidence Score 내림차순으로 정렬
    3. 첫 Bounding Box(Confidence Score가 가장 높은!)와의 IoU 값이 일정 이상인 박스들을 제거
    4. Bounding Box가 하나 될 때까지 반복
  • IoU가 일정 값 이상이면 같은 Object를 가리키는 것이라고 판단, 상대적으로 Confidence Score가 낮은 Bounding Box를 제거하는 것
  • Confidence Score Threshold가 높을수록, IoU Threshold가 낮을수록
    • 중복 박스에 대한 판단이 엄밀해지는 것
    • Conf Threshold가 높아지면 그 기준 이하의 Conf Score를 가진 박스는 아예 안 그려짐
    • IoU Threshold가 낮아지면 기준 이상으로 Bounding Box가 겹칠 때 다른 박스를 제거
  • Confidence Score Threshold와 IoU Threshold는 사용자가 조절할 수 있음 즉, HyperParameter

 

6.Precision, Recall, AP, mAP

 

  • TP : 실제 Object를 모델이 Object라 예측
    - 모델이 올바르게 탐지
  • FP : Object 아닌데 모델이 Object라 예측
    - 모델의 잘못된 탐지
  • FN : 실제 Object를 모델이 아니라고 예측
    - 모델의 잘못된 탐지
  • TN : Object 아닌데 모델도 아니라고 예측
    - 모델이 탐지하지 않음

 

 

 

Precision(정밀도)

  • TP / (TP + FP)
  • 모델이 Object라 예측한 것 중 실제 Object의 비율

Recall(재현율)

  • TP / (TP + FN)
  • 실제 Object 중 모델이 예측하여 맞춘 Object의 비율

 

Precision - Recall Curve

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

Average Precision (AP)

  • Precision - Recall Curve 그래프 아래의 면적

mean Average Precision(mAP)

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

 

 

 

 

7. Annotation(labeling)

  • 인공지능이 데이터가 무엇인지 이해할 수 있도록 별도의 주석을 달아주는 작업.
  • 이미지, 텍스트, 비디오를 포함한 모든 유형의 데이터에 tag 형식으로 추가하며 주로 XML, JSON 등을 사용하여 메타 데이터로 저장.
  • Annotation은 Object의 Bounding Box 위치나 Object 이름 등을 특정 포맷으로 제공.

 

YOLO v8

  • YOLOv8은 Object Detection을 위한 딥러닝 모델 중 하나
  • YOLO(You Only Look Once)시리즈는 실시간 객체 감지를 위한 딥러닝 알고리즘
!pip install ultralytics
from ultralytics import YOLO
model = YOLO()
model.train()
model.val()
model.predict()

 

# 모델의 구조와 해당 구조에 맞게 사전 학습된 가중치 불러오기
model = YOLO(model='yolov8n.pt', task='detect')

# 모델 학습
model.train(data='coco128.yaml',
            epochs=10,
            patience=5,
            save=True,
            # project='trained',
            # name='trained_model',
            exist_ok=False,
            pretrained=False,
            optimizer='auto',
            verbose=False,
            seed=2024,
            resume=False,
            freeze=None
            )
            
 # 예측값 생성           
 results = model.predict(source='이미지 파일',
                        # conf=0.5,
                        iou=0.5,
                        save=True, save_txt=True, line_width=2)

 

모델학습 Parameters

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

 

예측값 생성 Parameters

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