Notice
Recent Posts
Recent Comments
«   2024/12   »
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
Archives
Today
Total
관리 메뉴

SYDev

[네이버 부스트 코스] 3. Sementic Segmentation & Object Detection(1) 본문

KHUDA 4th/Computer Vision

[네이버 부스트 코스] 3. Sementic Segmentation & Object Detection(1)

시데브 2023. 9. 26. 19:58
Sementic Segmentation과 Object Detection의 개념을 정확히 이해하고,
대표적으로 사용되는 모델에 대해서 알아보자.

 

본 게시물은 네이버 부스트 캠프 cv 강의(https://www.boostcourse.org/ai340/joinLectures/369545)를 기반으로 작성된 게시물입니다.

 

Sementic Segmentation

  • Sementic Segmentation(의미적 분할): Input으로 주어진 image를 class에 따라 pixel 단위로 구분하는 task이다.
  • 같은 class에 속하는 instance를 구별(instance segmentation)하지 않는다.

sementic segmentation

 

출처: https://www.jeremyjordan.me/semantic-segmentation/#dilated_convolutions

Fully Convolutional Networks(FCN)

  • Sementic Segmentation을 위해 처음으로 고안된 end-to-end(입력에서 출력까지 파이프라인 네트워크 없이 한 번에 처리) 모델이다.
  • 보통 Image Classification task를 위한 모델에서는 출력층 부분에서 fc-layers를 사용하는 것이 일반적이지만, fc-layer를 통과하면 이미지의 위치 정보가 사라지기 때문에, FCN에서는 이런 한계를 보완하기 위해 fc-layers를 모두 conv-layer로 교체(fully convolution)한다.

출처: https://www.cv-foundation.org/openaccess/content_cvpr_2015/papers/Long_Fully_Convolutional_Networks_2015_CVPR_paper.pdf

 

FCN의 네트워크 구조

 FCN의 네트워크 구조는 다음과 같이 크게 4가지로 나뉜다.

출처: https://www.cv-foundation.org/openaccess/content_cvpr_2015/papers/Long_Fully_Convolutional_Networks_2015_CVPR_paper.pdf

 

1. Convolution Layer를 통해 feature 추출
2. 1X1 convolution layer를 통하여 feature map의 채널 수를 데이터셋 객체의 개수와 동일하게 변경
3. 낮은 해상도의 heat map을 up-sampling(transposed convolution)하여 입력 이미지와 같은 크기의 map 생성
4. 최종 feature map과 라벨 feature map의 차이를 이용하여 네트워크 학습 

 

1X1 convolution

  • 그냥 conv하는 것보다 1X1 conv 층을 거치는 것이 전체 파라미터 개수를 더 줄일 수 있다.
  • ReLU 활성화 함수와 함께 사용되어 비선형성 추가

>> 그냥 conv했을 때 파라미터 개수가 160M이 나온 것에 비해, 1X1 convolution을 거치면 44.8로 현저히 줄어든다.

 

Transposed Convolution


Step 1 : parameter z, 와 p′을 계산, s와 p stride와 padding ($z=s−1 , p′=k−p−1 , s′=1$)
Step 2: input($i*i$)의 각 행과 열사이에 z 만큼의 0을 삽입. (input의 사이즈 $(2∗i−1) x (2∗i−1)$만큼 증가)
Step 3: 2에서 변형된 input에다 p′만큼의 0을 패딩
Step 4: 3까지 변형된 input에다 stride 1인 일반적인 convolution을 진행

출처: https://velog.io/@hayaseleu/Transposed-Convolutional-Layer%EC%9D%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80

>> input의 사이즈보다 output의 사이즈를 키우는 upsampling 과정

 

Upsampling and Convolution

  • Transposed Convolution은 중첩의 문제 발생
  • 이런 문제를 해결해주는 것이 Upsampling and Convolution!!

 

FCN의 Skip Connection

>> ResNet의 skip connection처럼 단순히 합하는 것이 아닌 Concatenation을 수행

 

>> 중간 layer의 feature map을 잘 고려한 경우에 더 좋은 성능을 보인다.

 

Skip Connection

  • 하나의 layer의 out을 몇 개의 layer를 건너뛴 layer의 input으로 추가
  • sum or concatenation

 

Hypercolumns for Object Segmentation

  • FCN과 같은 년도에 논문 등장
  • FCN과 전체적으로 구조는 비슷하나, 각 물체의 바운딩 박스를 먼저 뽑아낸 후에 진행한다는 점에서 차이를 보임

 

 

U-Net

  • 대칭적인 down sampling, upsampling 과정을 거치는 구조
  • down sampling 과정에서는 pooling을 통해 image 해상도는 절반으로 줄이고, 채널 수는 두 배로 늘리는 방식으로 feature map을 얻는다.
  • upsampling 과정에서는 image 해상도는 두 배로 늘리고, 채널 수는 절반으로 줄이는 방식으로 segmentation map을 얻는다.
  • down sampling 과정의 feature map을 upsampling 과정의 segmentation map과 concatenation

 

U-Net에서의 주의사항

  • 홀수의 공간해상도를 가진 feature map이 입력된다면 upsampling 과정에서 짝수의 형태로 복구된다.
  • Concatenation을 위해서는 공간해상도가 맞아야 하기 때문에 문제가 발생

 

DeepLab

 Sementic Segmentation에서 중요한 모델인 딥랩의 세 가지 주요 개념에 대해 알아보자.

 

Conditional Random Fields(CRF)

  • semantic segmenation은 픽셀 단위의 조밀한 예측이 필요해 classification 네트워크 기반으로 segmentation 망을 구상하게 된다면 계속 feature map의 크기가 줄어들게되는 특성상 detail한 정보들을 잃게 됨
  • 이런 문제를 해결하기 위해 DeepLab에서는 마지막 pooling layer 2개를 없애고 atrous conv를 사용
  • 그럼에도 한계가 존재하므로 DeepLab에서는 CRF 후처리 과정으로 픽셀 단위 정확도를 높임

>> CRF에 대한 자세한 내용은 추후 기입

 

Dilated Convolution

  • convolution filter들 사이에 dilation factor 만큼 space를 넣어주는 방법.
  • 이를 통해 실제 convolution filter보다 넓은 영역을 고려, 즉 지수적으로 receptive field를 확장

 

Depthwise Separable Convolution

  • DeepLab v3+에서는 semantic segmentation의 입력 해상도가 워낙 크기 때문에 연산이 복잡해지는 것을 완화하기 위해 dilated convolution을 depthwise separable convolution과 결합하여 사용

 

DeepLab v3의 구조


참고자료

 

컴퓨터 비전의 모든 것

부스트코스 무료 강의

www.boostcourse.org

 

1편: Semantic Segmentation 첫걸음!

Semantic Segmentation이란? 기본적인 접근 방법은?

medium.com

 

[DL] End-to-End Deep Learning 이란?

End-to-End Deep Learning 딥러닝은 '종단간 기계학습(end-to-end deep learning)' 이라고도 불린다. 여기서 '종단간' 은 처음부터 끝까지라는 의미로, 입력에서 출력까지 '파이프라인 네트워크' 없이 한 번에

wooono.tistory.com

 

FCN 논문 리뷰 — Fully Convolutional Networks for Semantic Segmentation

딥러닝 기반 OCR 스터디 — FCN 논문 리뷰

medium.com

 

1) FCN

FCN은 이미지 분류에서 우수한 성능을 보인 CNN 기반 모델(AlexNet, VGG16, GoogLeNet)을 Semantic Segmentation Task를 수행할 수 …

wikidocs.net

 

1 x 1 Convolution ?

1 x 1 Convolution AlexNet과 VGGNet의 큰 파라미터를 줄이기 위해 GoogLeNet에서는 1x1 Convolution을 사용했습니다. 1x1 Convolution은 이후 다양한 모델에서 연산량을 줄이기 위해 사용되어 이 방법이 매우 효과적

geunuk.tistory.com

 

Transposed Convolutional Layer은 무엇인가?

Transpoed convolution과 deconvolution은 다름 transposed Convolutional Layer는 Deconvolutional layer라고 잘못알려져 있습니다. Deconvonutional layer는 일반적인 convolutiona

velog.io

 

Skip connection에서 add(summation) vs concatenation

U-Net architecture를 공부하다가 어떤 네트워크는 image size와 channel이 동일해서 add를 하기도 하고, 어떤 네트워크는 image size는 동일하지만 channel이 달라 (보통 2배 차이남) concatenation해 주기도 한다.

at0z.tistory.com

 

DeepLab · Seongkyun Han's blog

DeepLab 10 Jul 2019 | Deep learning DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs Original paper: https://arxiv.org/pdf/1606.00915.pdf Authors: Liang-Chieh Chen, George Papandreou, Iasonas K

seongkyun.github.io