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가 있다고 판단
- 모델에 따라 계산이 조금씩 다름
- 단순히 Object가 있을 확률
- Object가 있을 확률 X IoU
- 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를 제거하는 기술
- 일정 Confidence Score 이하의 Bounding Box 제거
- 남은 Bounding Box들을 Confidence Score 내림차순으로 정렬
- 첫 Bounding Box(Confidence Score가 가장 높은!)와의 IoU 값이 일정 이상인 박스들을 제거
- 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
- data : 학습시킬 데이터셋의 경로. default 'coco128.yaml'
- epochs : 학습 데이터 전체를 총 몇 번씩 학습시킬 것인지 설정. default 100
- patience : 학습 과정에서 성능 개선이 발생하지 않을 때 몇 epoch 더 지켜볼 것인지 설정. default 50
- batch : 미니 배치의 사이즈 설정. default 16. -1일 경우 자동 설정.
- imgsz : 입력 이미지의 크기. default 640
- save : 학습 과정을 저장할 것인지 설정. default True
- project : 학습 과정이 저장되는 폴더의 이름.
- name : project 내부에 생성되는 폴더의 이름.
- exist_ok : 동일한 이름의 폴더가 있을 때 덮어씌울 것인지 설정. default False
- pretrained : 사전 학습된 모델을 사용할 것인지 설정. default False
- optimizer : 경사 하강법의 세부 방법 설정. default 'auto'
- verbose : 학습 과정을 상세하게 출력할 것인지 설정. default False
- seed : 재현성을 위한 난수 설정
- resume : 마지막 학습부터 다시 학습할 것인지 설정. default False
- freeze : 첫 레이어부터 몇 레이어까지 기존 가중치를 유지할 것인지 설정. default None
예측값 생성 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
728x90
'KT AIVLE > DX 복습' 카테고리의 다른 글
[KT AIVLE] DX트랙 IT 인프라(12주차) 복습(IT 인프라: 스위치, OSI 7계층, 라우터) (0) | 2024.05.09 |
---|---|
[KT AIVLE] DX트랙 딥러닝(9주차) 복습(딥러닝 심화: CNN, Roboflow, CIFAR-10, Annotation) (1) | 2024.04.29 |
[KT AIVLE] DX트랙 딥러닝(8주차) 복습(딥러닝 기초: Regression, 이진분류, 다중분류) (0) | 2024.04.13 |
[KT AIVLE] DX트랙 머신러닝(7주차) 복습(비지도학습: 차원 축소, 클러스터링) (0) | 2024.04.04 |
[KT AIVLE] DX트랙 머신러닝(7주차) 복습(K-Fold Cross Validation, Hyperparameter 튜닝, 앙상블) (0) | 2024.04.04 |