** 들어가기 전
Computer Vision Task와 Datasets는 아래와 같다.
▶ 컴퓨터 비전에서 자주 쓰이는 데이터 셋 (이미지와 정답(레이블)을 모아둔 자료)
MINIST | CIFAR-10 | CIFAR-100 | ImageNet | COCO | |
주요목적 | 손글씨 숫자 인식 | 기본적인 이미지 분류 | 복잡한 이미지 분류 | 다양한 물체 분류 및 인식 | 객체 탐지 및 세그멘테이션 |
카테고리수 | 10(0~9) | 10 | 100 | 1,000+ | 80 |
이미지수 | 70,000 (train:60,000 test:10,000) |
60,000 (train:50,000 test:10,000) |
60,000 (train:50,000 test:10,000) |
약 1,400만 장 | 약 33만 장 |
이미지크기 | 28x28, 흑백 | 32x32, 컬러 | 32x32, 컬러 | 다양한 크기, 컬러 | 다양한 크기, 컬러 |
데이터구성 | 단순 이미지 (손글씨 숫자) |
일상 물체 이미지 (비행기, 자동차, 고양이 등) |
일상 물체 이미지, 더 다양함 | 다양한 물체와 복잡한 배경 포함 | 복잡한 장면과 여러 물체 |
사용난이도 | 쉬움 | 쉬움 | 중간 | 어려움 | 어려움 |
테스크종류 | 이미지 분류 | 이미지 분류 | 이미지 분류 | 이미지 분류, 객체 탐지, 세그맨테이션 | 객체 탐지, 세그멘테이션, 키포인트 |
응용분야 | 간단한 인식 모델 실험 | 기초 딥러닝 훈련 | 더 복잡한 모델 훈련 | 대규모 딥러닝 모델 학습 및 연구 | 자율주행, 이미지 캡셔닝 등 |
1. Object Detection
- Classification + Localization : 단 하나의 Object 분류 + 어디있는지 위치를 표시 (Bounding Box)
- Multi-Labeled Classfication + Bounding Box Regression
:여러개의 Object 분류 + 어디있는지 위치 표시 (Bounding Box)
▶ 주요 개념
1) Class Classification |
2) Bounding Box |
3) IoU | 4) Confidence Score |
5) Precision, Recall, AP, mAP | 6) NMS | 7) Annotation |
1) Class Clasffication (클래스 분류) : 무엇인지 알아내기!
2) Bounding Box : 어디 있는지 네모로 표시하기!
- 이미지 내에서 Object의 위치를 사각형 상자로 표현하기 위해, 상자의 x, y좌표와 width, height를 예측
(왼쪽 상단 코너부터 오른쪽 하단 코너까지)
- 손실 함수 : 모델이 얼마나 정확하게 상자를 그렸는지 평가하기 위해 사용, 값이 작을수록 더 정확히 예측
분류 손실 (Classfication Loss) | 회귀 손실(Regression Loss) | 총 손실 (Total Loss) |
물체의 클래스 (ex. 강아지,고양이) - Cross-Entropy Loss 주로 사용 |
- 위치를 예측 - MSE나 L1 손실함수 주로 사용 - ex. 실제 (12,22)와 예측 (10,20) 차이 |
- Object Detection은 분류 손실과 회귀 손실 함께 사용 |
3) IoU (Intersection over Union)
▶ IoU = Area of Overlap / Area of Union
- 두 박스의 중복 영역 크기를 통해 측정
- 겹치는 영역이 넓을수록 좋은 예측 (0~1 사이의 값)
4) Confidence Score
- Bounding Box 안에 object가 있는지, '모델의 확신, 자신'
- Predicted Bounding Box의 Confidence Score가 1에 가까울수록 박스 내 Object가 있다고 판단
- 0에 가까울수록 Object가 없다고 판단
- 모델에 따라 계산이 조금씩 다름
5) Precision, Recall, AP, mAP
* Confusion Matrix with O.D (Object Detection)
이건 이제 억시로 많이 봐서 눈 감고도 말할 수 있음
Precision | TP / (TP + FP) 모델이 Object라 예측한 것 중 실제 Object의 비율 |
Recall | TP / (TP + FN) 실제 Object 중 모델이 예측하여 맞춘 Object의 비율 |
(1) Confidence score threshold 값에 따라 Precision, Recall이 변화함.
** 예시
① Threshold를 0.5로 설정한 경우
- Object 존재에 대한 확신이 0.5 이상인 예측만 유효한 것으로 간주
Box | Confidence Score | 판단 |
1 | 0.6 | 유효 |
2 | 0.2 | 제외 |
3 | 0.8 | 유효 |
② Threshold를 0.9로 설정한 경우 (TP라 판단하는 기준이 높아짐, 등급컷이 올라감)
Box | Confidence Score | 판단 |
1 | 0.6 | 제외 |
2 | 0.2 | 제외 |
3 | 0.8 | 제외 |
③ Threshold를 0.1로 설정한 경우 (TP라 판단하는 기준이 낮아짐, 등급컷이 내려감)
Box | Confidence Score | 판단 |
1 | 0.6 | 유효 |
2 | 0.2 | 유효 |
3 | 0.8 | 유효 |
④ Threshold 변화에 따른 성능
Threshold | TP | FP (잘못 예측) | FN (놓친 객체) | Precision | Recall | F1-Score |
0.9 | 10 | 1 | 4 | 0.91 | 0.71 | 0.87 |
0.5 | 12 | 4 | 3 | 0.75 | 0.80 | 0.77 |
0.1 | 14 | 8 | 2 | 0.64 | 0.88 | 0.69 |
- 높은 Threshold는 정확한 예측을 가능하게 하지만(Precision 증가), 놓친 객체가 많을 수 있음(Recall 감소).
- 낮은 Threshold는 놓친 객체는 많이 없지만(Recall 증가), 잘못 예측한 게 많음.(Precision 감소)
=> 적절한 Threshold 설정으로 모델의 성능을 조절하고, Precision과 Recall 사이의 균형을 맞추어야 함.
(2) IoU threshold 영향
① Threshold를 0.5로 설정한 경우 : FP (틀렸다고 예측하였고, 실제로는 맞음)
② Threshold를 0.2로 설정한 경우 : TP (맞았다고 예측하였고, 실제로도 맞음)
(3) AP, mAP
Average Precision (AP) | mean Average Precision (mAP) |
![]() |
![]() |
Precision - Recall Curve : 모델의 "평가 과정"에서 그려진다. 그래프 아래의 면적이 클수록 정확하게 예측하고 놓친 객체가 적다는 뜻 |
각 클래스 별 AP를 합산하여 평균을 낸 것 mAP가 높을 수록 모델이 모든 클래스에서 고르게 잘 예측한다는 뜻 |
** 참고 : Average Precision
1. 특정 클래스 선택
2. IoU 임계값 설정 : 보통 0.50에서 시작
3. Confidence score 임계값이 다양하게 변화하면서 Precision, Recall이 계산되어 P-R curve가 그려짐
4. IoU 임계값 설정에 따른 P-R curve 아래의 면적(AUC) 계산
5. IoU 임계값을 0.05 높이고, 3~4번 과정 반복 (0.95까지)
6. 5번까지의 과정을 통해 구한 면적들의 평균 계산
=> 특정 클래스에 대한 최종 Average Precision
** 참고 : mean Average Precision
1. 모든 클래스에 AP 계산 과정을 적용하여 클래스별 AP 산출
2. 1번 과정을 통해 만들어진 AP들의 평균 계산
=> 이것이 mean Average Precision
6) NMS (Non-Maximum Suppression) => 예측값 끼리!
![]() |
![]() |
- 추론 과정의 알고리즘 (.predict())
- 동일 Object에 대한 중복 박스를 제거하는 후처리 과정
① Confidence score 임계값 이하의 Bounding Box 제거 ② 남은 Bounding Box들을 Confidence score 내림차순으로 정렬 ③ 첫 Bounding Box와의 IoU 값이 임계값 이상인 다른 박스들을 제거 (동일박스라고 판단) ④ Bounding Box가 하나 될 때까지 반복 * IoU가 임계값 이상인 경우, 두 Bounding Box가 동일한 Object를 나타내는 것으로 판단하여, 상대적으로 Confidence score가 낮은 Bounding Box를 제거하는 것 - IoU threshold가 낮아질수록 분리 기준이 엄격해진다! (조금만 겹쳐도 동일로 판단!) |
ex) IoU Threshold=0.5일 때 (if-else)
Box | confidence Score | IoU | if-else | 결과 |
A | 0.9 | 0.6 | A, B IoU 0.5 이상이므로, 조건에 맞음. (동일한 object라고 판단) Confidence Score이 더 높은 A를 남겨둠 |
남겨둠 |
B | 0.8 | 0.7 | 버림 | |
C | 0.7 | 0.2 | IoU가 0.5 미만이므로, A와 C는 겹치지 않음. (서로 다른 object라고 판단) A,C 모두 남겨둠 |
남겨둠 |
=> Confidence Score와 IoU threshold는 HyperParameter로 사용자가 조절할 수 있다.
=> .predict()에서 설정!
7) Annotation
- 이미지 안의 정보에 대해서 별도의 파일로 제공되는 것
- 해당 파일 안에는 Object의 위치 정보, 클래스 정보, 클래스명 등의 정보가 있다.
'딥러닝' 카테고리의 다른 글
[딥러닝] Reboflow : Project _ 20241108 (7) | 2024.11.08 |
---|---|
[딥러닝] UltraLytics : YOLO & Reboflow : Universe _ 20241107 (5) | 2024.11.07 |
[딥러닝] 언어 모델 활용 (2) RAG _ 20241106 (10) | 2024.11.06 |
[딥러닝] 언어 모델 활용 (1) LangChain _ 20241106 (1) | 2024.11.06 |
[딥러닝] 언어모델 이해 (3) Tokenizing & Embedding _ 20241105 (10) | 2024.11.05 |