티스토리 뷰
이미지 객체 인식
- 이미지 내 사물을 인식하기 위하여 4가지 방식을 사용함.

1. Classification : 분류 방법으로, 입력받은 이미지를 어떤 것인지 분류하는 방식
2. Classification + Localization : 분류를 한 뒤 추가로 이미지 내에서 객체가 어느 위치에 존재하는 지 바운딩 박스 표시를 하는 방식
3. Object detection : 바운딩 박스를 통해 각각의 위치와 종류를 분류하는 방식
4. Instance Segmentation : 이미지 내에 존재하는 모든 객체 각각의 인스턴스에 대해 픽셀 단위로 구분하는 방식
YOLO 모델 동작 원리

YOLO는 객체 탐지에 하나의 모델만을 사용하여 객체와 속성을 동시에 찾는 방식
1. 입력한 사진을 가로 세로 동일한 그리드 영역으로 나눈다. (1) 사진에서는 7*7 사이즈 그리드 셀로 구분, 각 셀은 그 셀의 중심에 객체가 있는지를 판별하기 위해 사용됨
입력받은 이미지를 백본 CNN을 통과시켜 다단계 피쳐맵을 만든다.
YOLO는 다음과 같은 구조를 가지고 있다.
1) backbone(CSPDarknet) : 입력 이미지에서 저수준 feature를 추출
2) Neck (SPP+PAN) : 여러 스케일에서 중요한 정보를 융합
3) Head (Detection layers) : 각 스케일 그리드 셀마다 최종 바운딩 박스, 신뢰도, 클래스 예측
Backbone
입력한 이미지의 크기가 640*640*3 크기의 이미지이다. backbone은 CNN을 이용해 피쳐맵을 생성한다.
2. 각 그리드 셀에서 어디에 사물이 존재하는지 anchor box와 박스에 대한 신뢰도 점수를 예측하고 어떤 사물인지 분류 작업 (Detection 단계)
anchor box는 셀의 중심을 기준으로, 정해진 비율의 크기를 가진 박스를 여러개 배치하여 셀 안에 객체가 있는지 확인한다.
boundig box와 anchor box는 다른 것임.

위 그림은 anchor box의 예제 사진이다. 이처럼 일정한 비율을 가진 박스들을 자유롭게 배치하여 셀 안에서 물체를 확인할 수 있다.
바운딩 박스는 객체의 위치와 크기를 나타내기 위한 박스이다. 정답지와 같은 역할로, 학습 시에 직접 바운딩 박스를 라벨링해야 하고, 모델은 바운딩 박스와 예측 박스의 차이를 기준으로 Loss를 계산한다.
여기서 예측 박스는 바운딩 박스, anchor box와는 다른 박스이다.
-------------------
추론 단계(=Detection 단계)에서 먼저 사람이 이미지에 대해 객체의 위치(x, y)와 크기(w, h)를 지정해주고, anchor 박스를 올려 박스를 얼마나 옮겨야 바운딩 박스와 일치하는지 오프셋을 계산한다. 이 과정은 CNN을 통해 도출된다.
이 오프셋을 적용해 예측한 박스가 예측 박스이다.
-------------------
학습 단계에서 score는 Pr(object) * IOU * Pr(Class_i|object)로 계산한다. (YOLOv2부터 학습 시 손실함수에서 IOU를 사용하고 inference에서는 사용하지 않음)
Pr(Object)는 바운딩 박스 안에 물체가 존재할 확률이다. 박스가 물체가 없는 배경만을 잡고 있으면 Pr(object)는 0이다.
IOU는 학습 데이터의 바운딩 박스와 예측한 바운딩 박스가 일치하는 정도를 나타낸다.
아래 IOU 그림을 보면 이해가 쉽다.
Pr(Class_i|object)는 클래스 확률 C이다. 이는 객체를 포함하는 경우, 각 클래스의 조건부 확률이다. 박스가 배경을 예측하면 0이된다.

Inference 단계
추론을 위해 셀이 가지고 있는 정보에 대해 알아보자.
셀은 셀 안에 존재하는 객체에 대한 정보를 가지고 있는데, 이를 차원이라고 부른다.
차원의 개수는 바운딩 박스 개수에 따라 달라진다.
바운딩 박스는 객체의 위치(x, y), 객체의 크기(w, h), 박스 confidence score 5개의 인자로 구성되어 있다.
confidence score는 박스가 객체를 포함하고 있을 가능성과 바운딩 박스가 얼마나 정확한지를 반영한다.
class confidence score는 클래스와 일치할 확률이다. 즉 confidence score는 바운딩박스가 객체를 포함할 확률, class confidence score는 클래스와 일치할 확률이다.
이 둘을 곱하면 bounding box가 해당 클래스의 객체를 포함할 확률과 위치 정확도까지 고려한 값을 나타낸다.
첫번째 셀에 대해 2개의 바운딩 박스가 예상되고, 20개의 클래스가 있다고 하면,
첫번째 바운딩 박스의 x,y,w,h, score 5개
두번째 바운딩 박스의 x,y,w,h, score 5개
20개 클래스에 대한 클래스 중 정답일 확률값 20개
총 30차원의 값으로 구성이된다.
NMS단계
동일하거나 유사한 위치에 여러 바운딩박스가 겹쳐 예측되는 경우가 많다.이럴 땐 NMS를 거쳐 박스를 제거한다.
이는 IoU가높은 박스 중 가장 신뢰도가 높은 박스를 선택하는 것을 말한다.
'머신러닝 > 딥러닝' 카테고리의 다른 글
| AI / Multi-modal에 관하여 (1) (0) | 2025.02.19 |
|---|---|
| Keras / RNN (Recurrent Neural Network) (0) | 2024.03.17 |
| 머신러닝, 딥러닝 / 이상탐지(Anomaly Detection) (0) | 2023.03.13 |
| MLP로 텍스트 분류 (0) | 2022.09.20 |
| 케라스 훑어보기 (1) | 2022.09.16 |
- Total
- Today
- Yesterday
- AVTP
- many-to-many
- SVM
- cuckoo
- 딥러닝
- 논문 잘 쓰는법
- CAN-FD
- 차량용 이더넷
- 단순선형회귀
- many-to-one
- HTML
- Ethernet
- AVB
- automotive
- porks
- 머신러닝
- 이상탐지
- one-to-many
- 회귀
- PCA
- AE
- 로지스틱회귀
- 차량 네트워크
- Python
- 케라스
- 논문 작성
- problem statement
- automotive ethernet
- related work
- SOME/IP
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |