YoLov1 :
신경망 구성
1. 입력층
결과 : 448x448x3 해설 : (w, h, c) 입력층의 이미지
2. Conv층
결과 : 224x224x192
해설 : 3x7x7x64 필터(c, w, h, n)로 2 stride 적용하여 Convolution.
즉, 3 channel을 가진 7x7 필터를 64개 사용하여 Convolution 연산한 결과가 224x224x192
3. MaxPool층
결과 : 112x112x192
해설 : 즉, 2x2의 크기를 가진 윈도우로 2 stride 적용하여 MaxPool 연산한 결과가 112x112x192
4. Conv + MaxPool
결과 : 56x56x256
5. Conv층 여러개 + MaxPool
결과 : 28x28x512
해설 : GoogLeNet처럼 Convolution을 여러 필터로 연산한 후 Bottleneck으로 합쳐, MaxPool
6. Conv층 여러개 + MaxPool
결과 : 14x14x1024
7. Conv층 여러개 + MaxPool
결과 : 7x7x1024
8. Conv층 여러개 + MaxPool
결과 : 7x7x1024
.. 1~8에서 MaxPool 연산 전마다 활성화함수 LeakyReLu 적용. 여기까지 Pretraining한다.
9. Flatten으로 완전연결층 입력으로 사용 + 완전연결층(Fully Connected Layer) + 결과에 LeakyReLu 적용
결과 : 4096x1
10. 완전연결층(ReLu적용안함)
결과 : 1470x1
11. Reshape
결과 : 7x7x30
... 1~11까지 진행하여, Convolution과 maxpooling에 의해
448x448 이미지의 특징 맵을 7 x 7만큼 가진 그리드 셀이 생성되었다.
... 각 셀들은 바운딩 박스 갯수만큼 b개의 { x, y, w, h 및 confidence score}를 가져야 한다.
confidence score란 Pr(Object) * IOU.
Pr은 Predict의 약자. 일반적인 CNN(Convolutional Neural Network)의 결과층 Predict(가중합)과 비슷한 맥락이다.
IOU는 Intersection Over Union의 약자이다.
즉, "물체가 있을 확률" * "예측과 정답 바운더리 간 영역 겹침률"을 의미한다.
... 또한 각 셀들은 분류 클래스 갯수만큼 c개의 conditional class probability를 가져야 한다.
conditional class probability란 object가 어떤 class인지 예측한 것들을 의미한다.
... 즉, 특징 맵이 7x7x30인 위 신경망의 경우
448x448 이미지에 대해 전역 Convolution 연산을 거듭하여, 추출한 특징맵이 7x7의 그리드 셀이 되게했다.
그리고 각각의 셀이 "2 * { x, y, w, h 및 confidence score} + 분류 클래스 각각에 대한 예측도들"를 가지게
신경망을 설계했다.
YoLo의 손실 함수 :
머신러닝 모델은 손실함수가 나타내는 값을 최소화함으로써 훈련된다.
머신러닝에 속하는 딥러닝 YoLo 모델은
손실함수 유형 중 SSE(sum squared error, 최소제곱법)를 사용하며,
신경망에 대한 정답 데이터로 "object를 포함하는 정답 바운더리 데이터 x, y, w, h"를 받는다.
'+' 기호로 구분되는 5개의 항을 최소화해야 한다.
첫번째 항 :
정답데이터 x, y와 예측값x, y의 차이(손실)를 제곱한다.
즉, 정답데이터 x, y와 예측데이터 x,y의 차이가 적게 나오도록 훈련시킬 것이다.
두번째 항 :
정답데이터 w, h와 예측값 w, h의 제곱근의 차이(손실)를 제곱한다.
즉, 정답데이터 w, h와 예측데이터 w, h의 차이가 적게 나오도록 훈련시킬 것이다.
세번째 항 :
어떤 오브젝트가 있는(obj) 영역의 정답데이터 Confidence Score와 예측값 Confidence Score의 손실을 제곱한다.
이때, Confidence Score는 "YoLov1 신경망 구성 문단"에서 상술했듯 Predict(Object) * IOU로 계산한다.
즉, 배경이 아닌 영역의 정답 데이터의 {영역 겹침률, 예측값}과 예측 데이터의 {영역 겹침률, 예측값}의 차이가
적게 나오도록 훈련시킬 것이다.
네번째 항 :
어떤 오브젝트도 없는(no obj) 영역의 정답데이터 Confidence Score와 예측값 Confidence Score의 손실을 제곱한다.
즉, 배경인 영역의 정답 데이터의 {영역 겹침률, 예측값}과 예측 데이터의 {영역 겹침률, 예측값}의 차이가
적게 나오도록 훈련시킬 것이다.
다섯번째 항 :
cell에서의 class를 predict한 예측값과 정답 데이터와의 차이(손실)를 제곱한다.
출처 :
YoLov1 한국어 리뷰 : https://medium.com/curg/you-only-look-once-다-단지-한-번만-보았을-뿐이라구-bddc8e6238e2
손실함수 설명 : https://curaai00.tistory.com/8
https://leechamin.tistory.com/233
https://velog.io/@skhim520/YOLO-v1-논문-리뷰-및-코드-구현
YoLov1 영문 리뷰 : https://towardsdatascience.com/yolov1-you-only-look-once-object-detection-e1f3ffec8a89
Confidence 캘리브레이션 : https://3months.tistory.com/490
Confidence (mAP 계산) https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=angelkim88&logNo=221564305011
신경망 구조와 기법들 중심으로 다루어,
가능한 담백하게 YoLov1부터 YoLov4까지 공부한 걸 정리해 올려보겠습니다.
다음 리뷰는 YoLov1이 20개의 클래스를 다룬 것에 비해
무려 9000개의 클래스를 detection 하는 YoLov2 입니다.
'프로그래밍 > 머신러닝' 카테고리의 다른 글
[딥러닝] 합성곱 신경망(CNN) 편향 bias 계산 방법 (0) | 2021.03.19 |
---|---|
[머신러닝 데이터 전처리] 훈련 세트, 테스트 세트, 검증 세트 차이 (0) | 2021.03.13 |
[머신러닝] 현실 손글씨 데이터 전처리 방법(컬러 사진) (1) | 2021.03.12 |
시그마, 인테그랄(적분) 뜻 (0) | 2020.09.27 |