ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [0416 복습] 딥러닝 심화_Object Detection, Bounding Box, Class Classification, Confidence Score, IoU, NMS, Precision, Recall, AP,mAP, Annotation
    KT 에이블스쿨 복습 2024. 4. 16. 22:48

    **셀프 복습용으로 작성한 것이라 실수가 있을 수 있습니다!

    혹시 실수를 발견하시면 댓글로 알려주시면 감사드리겠습니다 :)

     

    딥러닝 심화

    CH1. 시각지능

    Object Detection의 주요 개념

    • Classification + Localization 
    • Multi-Labeled Classification + Bounding Box Regression: 다중분류 문제와 bounding box 선형회귀의 결합
    • Localization: 단 하나의 Object 위치를 Bounding Box로 지정하여 찾음
    • Object Detection: 여러 개의 Object들의 위치를 Bounding Box로 지정하여 찾음

     

    1. Bounding Box 

    • bounding box는 지도학습으로 정답이 있어야 함, 하나의 Object가 포함된 최소 크기 박스, 위치 정보에 해당!
    • ground-truth bounding box (정답박스)
    • predicted bounding box (우리가 예측한 박스)
    • bounding box 정보를 표현하는 방식은 모델마다 다름 (x min, y min, x max, y max / x center , y center, width, height)
    • Bounding box 의 꼭지점을 잘 예측한다! (x, y) 크기 자체에 대한 예측을 잘한다! (w, h) 

    → 모델이 Object가 있는 위치를 잘 예측한다!

     


    2. Class Classification

    • 우리가 지금까지 배웠던 분류 (이진분류, 다중분류)

     

    3. Confidence Score

    • Object가 Bounding Box 안에 있는지 이에 대한 확신의 정도! (0~1 사이)
    • Predicted Bounding Box의 Confidence Score가 1에 가까울수록 Object가 있다고 판단
    • Predicted Bounding Box의 Confidence Score가 0에 가까울수록 Object가 없다고 판단
    • Ground-Truth Bounding Box의 Confidence Score은 항상 1 (항상 Object가 있기 때문)
    • 모델에 따라 계산이 조금씩 다르다!


    4. IoU (Intersection over Union)

    • 겹치는 영역 / 합의 영역
    • 겹치는 영역이 넓을수록 좋은 예측, 두 박스의 중복 영역 크기를 통해 예측
    • 0 ~1 사이의 값, 값이 클수록 좋은 예측

     

    5. NMS (Non-Maximum Suppression)

    • 동일 Object에 대한 중복 박스 제거
    • IoU가 일정값 이상이면 같은 Object를 가리키는 것이라고 판단해 Confidence Score가 상대적으로 낮은 Bounding Box를 제거하는 것
    • Confidence Score Threshold가 높을수록, IoU Threshold가 낮을수록 중복 박스에 대한 판단이 엄밀해지는 것
      • Confidence Score Threshold & IoU Threshold는 하이퍼 파라미터로 사용자가 조정할 수 있음
    • ReLU 함수에서 0 이하의 값은 0, 그 이상은 그대로 살림 → 0은 임계값 (기준)

    1) 일정 Confidence Score 이하의 Bounding Box를 제거 (일정값 설정할 수 있음)

    2) 남은 Bounding Box들을 Confidence Score 내림차순으로 정렬

    3) 첫 Bounding Box(Confidence Score가 가장 높은)와의 IoU 값이 일정 이상인 박스들을 제거

    → 서로 같은 것을 가리키고 있다고 생각하기 때문에 

    4) Bounding Box가 하나 될 때까지 반복

     


    6. Precision, Recall, AP, mAP

    • Confusion Matrix (혼동행렬에서의 O.D)

    • Precision: TP / (TP + FP), 모델이 Object라 예측한 것 중 실제 Object의 비율
    • Recall:  TP / (TP + FN), 실제 Object 중 모델이 예측하여 맞춘 Object의 비율
    • IoU 값에 따라 Precision, Recall이 변화함 
    • Precision - Recall Curve: Precision과 Recall을 모두 감안한 지표
      • 그래프 아래의 면적을 AP라고 부름: Average Precition
      • mean Average Precision(mAP): 각 클래스 별 AP를 합산해 평균 낸 것, 높을수록 좋다! 0~1 사이의 값


    7. Annotation

    • 이미지 내 Dectection 정보를 별도의 설명 파일로 제공되는 것을 Annotation이라고 함 (정답 정보)
    • Annotation은 Object의 Bounding box 위치나 Object 이름 등을 특정 포맷으로 제공
    • 우리가 다룰 YOLO모델은 텍스트 파일에 있음!

     

     

    UltraLytices : YOLO v8

    • DarkNet Framework 기반의 YOLO v3을 PyTorch로 변환, YOLO v5, YOLO v8 개발
    • You Only Look Once: real time detecter
    # 라이브러리 설치
    !pip install ultralytics
    
    # 라이브러리 불러오기
    from ultralytics import YOLO
    
    # 모델 선언, 모델 구조 및 가중치 설정
    model = YOLO()
    
    # 모델 학습, 학습에 관련된 설정 가능
    model.train()
    
    # 모델 검증, 학습된 모델 성능을 검증
    model.val()
    
    # 예측값 생성, 데이터의 예측 겨로가 생성
    model.predict(save=True, save_txt=True)

     

     

    • Real-Time Object Detection은 YOLO의 변종들이 상위순위 차지하고 있음 
    • 욜로 모델 생성할 때 기본값 yolov8n 사용
    • You Only Look Once: real time detect
    • UltraLytics YOLO 검색하면 파라미터에 대한 정보 전부 알 수 있음! (확인하는 습관 기르기)
    # 사전 학습된 가중치를 불러오는 것! (Transfer Learning) 대형 데이터셋에 맞게 적용됨, task= 'detect'가 기본 옵션
    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,            # default 0.25
                            # iou=0.5,
                            save=True, save_txt=True, line_width=2)
    • 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

     

Designed by Tistory.