Recent Posts
Recent Comments
Link
«   2025/05   »
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 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

VVNN

Seg-Net 본문

스터디

Seg-Net

vvnn 2021. 7. 6. 12:22

pixel-wise : 한 이미지의 개별 픽셀에 대한 의미있는 class

pair-wise : 학습 class에서 최대화된 데이터 유사성

unary terms : class 모델 or one class 분류 / 모든 class의 통계만 값을 가짐.

 

 

Seg-Net : pixel-wise semantic segmentation을 위한 fully convolutional neural network architecture. 의미 정보를 포함한 class 단위로 분할. 같은 class instance는 구별하지 않음. 어떤 물체인지(what), 어디에 있는지(where).

 

 

Seg-Net 구성

Encorder Network : VGG16(16층의 모델)의 13개 Convolution Layer 이용(FCL 제외). 층이 깊을수록 성능이 좋음. Max Pooling 실행동안 위치정보 저장.

# VGG16 -> 16개의 layer & stride=1, padding=1의 3*3필터 & stride=2의 2*2 max pooling 레이어

# 7*7 필터 1번 convolution -> 가중치 49개 / 3*3 필터 1번 convolution -> 가중치 27개

# 가중치가 적을수록 학습속도가 빨라지고 층의 개수가 늘어나 비선형성을 증가시킴

 

 

Decorder Network : Upsampling과 Convolution 수행. 마지막 Layer에서 K-Class Softmax 분류기를 사용해 각 픽셀의 class 예측.

구조적 장점-> boundary declineation 경계묘사 향상 / 파라미터 개수를 줄여 end-to-end를 가능하게 함(속도 빨라짐)

# End-to-End Learning : 입력부터 출력까지 파이프라인(부분적 네트워크)없이 한번에 처리(데이터가 클 때 효율적 = 데이터가 많아야 함.)

 

 

=> Seg-Net : Decorder 구조로 인해 FCN과 DeepLab V1보다 느리지만, FCL을 사용하지않아 Deconv-Net보다 빠르다. 학습과 test에 많은 메모리가 소모되지 않고 model size가 FCN과 DeepLab V1보다 작다.

 

 

 

Seg-Net 구조

13개의 encoder layer와 13개의 decoder layer로 구성. decoder 마지막에 learnable softmax classifier가 존재.

Input : 3채널 RGB 이미지(높이, 너비, 채널)

 

Encorder Network

- VGG16의 13개 Convolution layer :

4x4 input에 3x3 kernel 적용, padding=0, stride=1 -> 2x2 output

   ▶ input 이미지 convolution 연산 -> 영상에서 특정 위치에 있는 픽셀들은 그 주변 픽셀들과 correlation이 높고, 거리가 멀어질 수록 연관성은 감소하게 된다는 것에서 출발. 연산을 통해 데이터에서 feature 추출, 차원이 줄어듬. Filter(=Kernel =Window) 크기, Stride, Padding 적용 여부, Max Pooling 크기에 따라서 출력 데이터의 Shape이 변경됨.

   ▶ zero padding -> convolution을 적용했을 때 이미지 값이 줄어들고 학습 성능이 악화되는 것을 방지하기 위해 이미지 주변을 0으로 채워주는 것. 이미지 사이즈 유지를 위해 & Edge쪽 정보 손실을 줄이고 픽셀 정보를 더 잘 이용하기 위해 사용.

   ▶ convolution stride -> kernel이 지정된 간격으로 필터를 순회. convolution을 수행할 때 건너 뛸 픽셀의 개수를 지정. 입력 영상의 크기가 큰 경우, 연산량을 줄이기 위해 입력단에 가까운 쪽에만 적용함.

   ▶ feature map -> convolutional layer의 출력 영상. 필터가 input 데이터를 지정된 간격으로 순회하여 채널 별로 convolution하고, 모든 채널(컬러->3개/흑백->1개)의 convolution 합을 feature map으로 만듦. feature map의 크기는 layer의 depth가 커질수록 작아짐. 채널별 feature map을 만들고 각 채널의 feature map을 합산해 최종 feature map으로 반환.

 

- Batch Normalization : 학습하는 과정 자체를 전체적으로 안정화하여 학습 속도를 가속.

 

- 활성화 함수 : 일정값이 이상이면 active 아니면 deactive

   ▶ ReLu -> 입력값이 0보다 작으면 non-activate로 꺼버리고 0보다 크면 그 값을 그대로 반환

 

- Pooling layer : 데이터의 공간적 특성을 유지하면서 크기를 줄여주는 층. Conv 레이어의 출력 데이터를 입력으로 받아 출력 데이터(Activation map)의 크기를 줄이거나 특정 데이터를 강조하는 용도. 해상도를 줄이고 위치정보 저장. 데이터의 공간적인 특성을 그대로 유지하면서 크기를 줄여, 특정위치에서 큰 역할을 하는 특징을 추출하거나, 전체를 대변하는 특징을 추출할 수 있는 장점. 크기가 줄어들어 학습할 가중치를 크게 줄이게 되고, 이는 과적합 문제(overfitting problem)해결에도 도움이 됨.

   ▶Max Pooling -> Pooling filter 영역에서 픽셀의 최댓값을 뽑아냄. convolution 레이어와 마찬가지로 window size와 stride 지정. output의 feature map은 input에 비해 너비와 높이 감소.

 

 

Decorder Network

- Upsampling layer : sampling을 통해 데이터 크기를 키우는 것. Encorder에서 저장한 Max Pooling 위치 정보를 수신받아 이행.

 

- Softmax Classifier : 각 픽셀의 class 예측. k개의 값이 존재할 때 각각의 값의 편차를 확대시켜 큰 값은 상대적으로 더 크게, 작은 값은 상대적으로 더 작게 만들어 normalization시킴. softmax를 통해 상대적 중요도를 나타내는 k개의 값으로 다시 태어나고, 이 값들의 총합은 1. network 마지막층에 softmax를 배치시키면 그 값들은 class 확률로 변모. 어떤 class에 속할 확률을 나타냄.

 

 

'스터디' 카테고리의 다른 글

code 해석 (~segnet)  (0) 2021.07.14
텐서  (0) 2021.07.14
neg / pos  (0) 2021.07.06
교차 검증(K-Fold Cross Validation)  (0) 2021.07.06
Loss Function  (0) 2021.07.05
Comments