Object Detection
: Classification + Localization(위치 정보)
: Multi-Labeled Classification + Bounding Box Regression
- 여러 개의 Object들의 위치를 Bounding Box로 지정하여 찾음
[ 주요개념 ]
1) Bounding Box(위치 정보)
- 하나의 Object가 있는 최소 크기 박스
- Ground-Truth Bounding Box / Predicted Bounding Box
2) Classification(분류)
- 데이터를 미리 정의된 여러 범주로 분류하는 것
- 지도학습의 일부로서 모델은 레이블이 지정된 학습 데이터를 통해 학습됨
3) Confidence Score
- Bounding Box 안에 정말 Object가 있는지 확신의 정도
- Ground-Truth Bounding Box의 Confidence Score = 1
- Predicted Bounding Box의 Confidence Score = 0 ~ 1
=> 1에 가까울수록 Object가 있다!
=> 0에 가까울수록 Object가 없다!
4) IoU (Intersection over Union)
- 교집합 / 합집합 = 0 ~ 1
- 두 박스가 겹치는 정도
- 두 박스의 중복 영역 크기를 통해 측정 -> 겹치는 영역이 넓을수록 좋은 예측
=> 0 ~ 1 사이의 값
=> 값이 클수록 좋은 예측!
5) NMS (Non-Maximum Suppression)
- 동일 Object에 대한 중복된 예측 박스 제거
- 특정 Object라고 예측한 Bounding Box의 중복을 제거함
6) Precision, Recall, AP, mAP
Accuracy | Predicted | ||
Positive | Negative | ||
Actual | Positive | TP | FN |
Negative | FP | TN |
- Precision : TP / (TP + FP) : 모델이 Object라 예측한 것 중 실제 Object의 비율
- Recall : TP / (TP + FN) : 실제 Object 중 모델이 예측하여 맞춘 Object의 비율
- Average Precision (AP): Precision - Recall Curve (그래프 아래의 면적)
- mean Average Precision (mAP): 각 클래스별 AP를 합산하여 평균을 낸 것
* Precision - Recall Curve : Curve 아래 영역 -> Average Precision (mean AP 평가지표)
7) Annotation
- 정답 Bounding Box에 대한 정보!
- 이미지 내 Detection 정보를 별도의 설명 파일로 제공되는 것
- Object의 Bounding Box 위치나 Object 이름 등을 특정 포맷으로 제공
=> YOLO에서 txt 파일 ex) 한고은.png, 한고은.txt
UltraLytics : YOLO v8
- 데이터셋
1) train set - images: 이미지 파일
- labels: txt 파일 (클래스 정보와 위치 정보)
2) valid set - images
- labels
=> (데이터셋의 경로, 클래스의 수, 클래스명) -> YAML(학습시킬 때 사용)
# 라이브러리 설치
!pip install ultralytics
# 라이브러리 불러오기
from ultralytics import YOLO
# 모델 선언: 모델 구조 및 가중치 설정
model = YOLO()
# 모델 학습: 학습에 관련된 설정 가능
model.train()
# 모델 검증: 학습된 모델 성능을 검증
# model.val() # 생략 가능
# 예측값 생성: 데이터의 예측 결과 생성
model.predict(save=True, save_txt=True)
- 의미: class, x, y, width, height
Roboflow : Computer Vision
-> 다른 사람이 만들어 놓은 데이터셋을 끌어다 사용해보기
-> 나만의 데이터셋을 만들어 사용해보기 (직접: 이미지 수집 + Annotation)
[ 모델 구조에 사전 학습 가중치도 가져와서 사용해보기 ]
# 모델 구조 및 사전 학습 가중치 선택하기
model_transfer = YOLO(model='yolov8n.pt', task='detect')
# 모델 학습하기
model_transfer.train(model='/content/yolov8n.pt',
data='/content/futbol-players-7/data.yaml',
epochs=1,
patience=5,
seed=2024,
pretrained=True,
)
# 예측해보기
model_transfer.predict(source=image_path, save=True,
conf=0.1,
iou=0.9
)
+) 관련 책 & 강의 추천
- 비전 시스템을 위한 딥러닝
- 밑바닥부터 시작하는 딥러닝
- 모두를 위한 인공지능 (인프런)
'KT AIVLE' 카테고리의 다른 글
KT AIVLE(KT 에이블스쿨) 5기 DX트랙_ 딥러닝 심화_언어 모델 이해 (1) | 2024.04.20 |
---|---|
KT AIVLE(KT 에이블스쿨) 5기 DX트랙_ 딥러닝 심화_실습 및 언어 모델 활용 (1) | 2024.04.18 |
KT AIVLE(KT 에이블스쿨) 5기 DX트랙_ 딥러닝 심화_실습 (2) | 2024.04.17 |
KT AIVLE(KT 에이블스쿨) 5기 DX트랙_ 딥러닝 기초_CNN (0) | 2024.04.15 |
KT AIVLE(KT 에이블스쿨) 5기 DX트랙_ 딥러닝 기초 (0) | 2024.04.13 |