-
[0416 복습] 딥러닝 심화_Object Detection, Bounding Box, Class Classification, Confidence Score, IoU, NMS, Precision, Recall, AP,mAP, AnnotationKT 에이블스쿨 복습 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
- 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
'KT 에이블스쿨 복습' 카테고리의 다른 글
[0419 복습] 딥러닝_언어 모델 활용_transformer (GPT, BERT) (1) 2024.04.20 [0417 복습] 딥러닝 심화_Roboflow 데이터셋 활용 실습, CNN 포함 모델링 (0) 2024.04.17 [0415 복습] 딥러닝 기초_딥러닝 개념, 회귀 모델링, 이진분류, 다중분류, CNN 등 (0) 2024.04.15 [0402 복습] 앙상블 (보팅, 배깅, 부스팅, 스태킹) (0) 2024.04.03 [0401 복습] 머신러닝 마무리_로지스틱 회귀분석, K-Fold Cross Validation(k-분할 교차 검증), 성능 예측, 하이퍼파라미터 튜닝, Random Search, Grid Search (0) 2024.04.01