- classification with localization VS Detection
이미지에서 찾고자 하는 대상이 단일/ 복수
- Classification with localization
-좌상단 (0,0)/ 우하단(1,1)
- 직사각형 중간점 (bx,by)
- 높이 (bh)/ 너비(bw)
- Pc: 이미지에 객체가 있는지 여부를 저장 (배경이면 0, 객체가 있으면 1)
- Landmark detection
여러개의 특징점을 포함하는 레이블 training set를 만들어 신경망으로 하여금 어디에 특징점들이 있는지를 말할 수 있게 학습시킬 수 있다. (훈련시키고자 하는 모든 이미지에서 사람이 지정한 특징점의 정의는 같아아 함.)
- Sliding windows detection
Convolution net 안에 인식 이미지 영역을 설정하고, 이동하면서 객체를 인식.
=> 계산비용이 크다는 단점! (convolution 구현을 통해 해결)
- Turning FC layer into convolution layers
- 아래는 MAX POOL 이후 모든 차원을 1차원으로 만드는 대신 CONV 연산을 진행
- 5X5 400개 필터로 진행 => 1X1X400의 신경망
(기존의 400개의 노드를 1X1X400 volume으로 취급함)
- Convolution implementation of sliding windows
4개의 window를 슬라이딩
- 마지막을 CONV층을 사용하여 4개의 window에 해당하는 구역을 생성
- CONV층을 4번 통과하지 않고, 한번에 4개의 window에 대한 분류를 함(계산비용을 줄여줌)
=> 각 연산 결과를 나타내는 것이 아니라 공통 이미지 영역에 있는 많은 계산을 공유
- YOLO algorithm
그리드 셀에 해당하는 객체가 있는지 확인할 수 있다. 이를 통해 각 이미지 별로 Bounding box를 설정할 수 있다.
=> 하나의 그리드에서 하나의 객체 파악에는 용이/ 여러 객체가 포함되는 경우 문제가 생김! (그리드 셀을 작게 설정하여 여러 객체가 포함될 가능성 낮춤.)
- Intersection Over Union (IOU)
- 객체 탐지 알고리즘의 성능을 판단하는 기준 및 객체 탐지에 다른 성능을 추가할 때 사용하는 함수 .
- 0과 1사이의 값을 가진다. (보통 0.5보다 크면 맞다고 판단/ IOU가 높을수록 더 엄격한 기준)
- 바운딩 박스가 많이 겹칠수록 크다.
- Non-max suppression
최대치가 아닌 근접한 값은 억제하며, 최대값을 선택. 그리드 별 확률을 조사하여 가장 큰 확률을 선택.
1. pc값이 임의의 임계값(0.6) 보다 작은 그리드는 삭제
2. 높은 pc를 가진 그리드의 output을 가져온다.
3. 최대값보다 낮은 pc를 가진 그리드를 삭제
4. 가장 높은 확률을 가지는 그리드를 구한다.
- Overlapping objects
- Anchor boxes
하나의 그리드에 여러개의 객체를 감지하는 방법
(기존 물체 감지 알고리즘의 최대 단점은 각각의 격자 셀이 오직 하나의 물체만 감지 가능)
이전: training이미지의 각 객체는 개체의 중간 지점을 포함하는 그리드 셀에 할당
2개의 anchor boxes: training 이미지의 각 개체는 개체의 중간 지점과 IoU가 가장 높은 그리드 셀이 대한 엥커 박스를 포함하는 그리드 셀에 할당
=> 알고즘이 제대로 작동하지 않는 경우
1. 2개의 anchor box를 가지는 모델에서 하나의 그리드에서 3개 이상의 객체를 탐지하게 되면, 알고리즘이 제대로 작동하지 않는다.
2. 똑같은 그리드 셀과 연결된 객체가 2개 있고, 똑같은 anchor box가 있는 경우
- YOLO algorithm
-Outputting the non-max suppressed outputs
1. 각 그리드 셀에서 두 개의 예측 경계 상자를 가져온다.
2. 확률이 낮은 예측은 제거한다.
3. 각 클래스(pedestrain, car, motorcycle)에 대해 non max suppression을 사용하여 최종 예측을 생성.
- Region proposal: R-CNN
모든 window에서 객체를 탐지하지 않고, 몇개의 window에서만 객체를 탐지/ segmentation algorithm을 활용
=> R-CNN 파생 알고리즘은 일반적으로 YOLO 알고리즘보다 약간 느리다.
- R-CNN: 영역제안/ 제안된 영역을 하나씩 분류/ 객체의 클래스(label)와 경계 상자(bounding box)를 출력
- Fast R-CNN: 영역 제안/ 제안된 모든 영역을 슬라이딩 윈도우 방식의 합성곱 연산(convolution implementation)을 사용하여 한 번에 분류
- Faster R-CNN: 합성곱 신경망(convolutional network)을 사용하여 영역을 제안
- Semantic segmentation: 각 픽셀(pixel)별로 특징을 알고 싶을 때 적용
convolution network을 통해 이미지 크기가 작아지고, transpose convolution을 통해 이미지 크기가 커진다.
- Transpose Convolution
원본 입력값보다 더 크게 결과 값을 만든다.
Filter를 output layer에 맞춰서 계산 => 곱연산 영역에 벗어나는 부분은 제외하고 연산 => 겹치는 부분은 각 값 더함.
다음을 적용하는 이유)
1. 연산결과를 통해 각 픽셀의 특징을 나타낼 수 있다.
2. 초기 레이블을 가져와 classification을 용이하게 할 수 있다.
- U-Net
Traspose Convolution을 통해 height, width을 늘리면서 channel은 줄인다/ 회색부분은 skip-connection
- Face recognition
- Verification(1:1): input image가 맞는지 확인
- Recogniton(1:K): K명의 데이터베이스에서 input image를 확인
- One-shot learning: 샘플이 하나만 주어짐
=> 샘플 하나로 사람을 인식하기 어렵기 때문에 similarity function을 학습시킨다.
d: 두 이미지의 차이를 출력(두 이미지가 같은 사람이면 낮은 값을 출력)
d가 하이퍼 파라미터 T보다 작으면 두 그림은 같은 사람인 것을 예측
- Siamese Network
서로 다른 두개의 input에 동일한 convolution network를 실행한 다음에 두개의 결과 값을 비교하는 것
1. 두 네트워크에 두 사진을 입력으로 넣고 convolution network로 인코딩
2. if 두 사람이 비슷한 사람이라면 인코딩 거리 값은 작어야함
3. if 두 사람이 다른 사람이라면 인코딩 거리 값은 커야함
4. 위 조건을 만족하도록 학습시킴
- Learning Objective
f(img)가 0을 가지면 안됨/ 각 이미지는 서로 다른 이미지를 훈련/ positive와 negative의 차이는 하이퍼 파라미터 alpha인 margin(간격)보다 커야 한다.
- Triplet Loss function
Triplet Loss 함수는 하나의 이미지를 기준(A)으로 같은 사람임을 뜻하는 긍정이미지(P)와 다른 사람임을 뜻하는 부정이미지(N)의 거리를 구한다.
=> A와 P 사이의 거리가 항상 A와 N사이의 거리보다 작거나 같아야 한다.
A,P,N을 무작위로 고르면 제약식을 쉽게 달성한다. (무작위로 뽑힌 확률적으로 A,N이 A,P보다 훨씬 다를 것이기 때문)
따라서 훈련세트를 만들 때 훈련하기 어렵게 만든다. d(A,P)와 d(A,N)이 비슷하면 어렵게 만드는 효과가 있다.
'3-1 > Deep Learning' 카테고리의 다른 글
14주차-Natural Language Processing (0) | 2024.06.07 |
---|---|
13주차-Recurrent Neural Networks (0) | 2024.06.01 |
10주차-Deep CNN models (0) | 2024.05.15 |
9주차-ML Strategy (0) | 2024.05.11 |
7주차-Convolutional Neural Networks (1) | 2024.05.11 |