Adore__

[Boost Course DL] 5. Computer Vision Applications 본문

AI Learner/Computer Vision

[Boost Course DL] 5. Computer Vision Applications

3_GreenHeart 2023. 4. 18. 13:21
728x90

Source: Boost Course 'DL기초 다지기'

 

 

Computer Vision에서 주로 사용하는 모델은 CNN이다.

CNN은 정말 다양하게 사용되는데, 그 중 Sementic Segmentation과 Object Detection에 대해 알아보자

 

 

Semantic Segmentation


Semantic Segmentation은 dense classification이라고도 불리지만, 정확히는 classification과는 다르다.

 

보통 일반적인 분류 문제는 이미지 1장이 주어질 때, 이게 강아지인지 고양이인지 labeling 하는 것을 말한다.

하지만 Semantic Segmentation은 한 이미지 안에서 '모든' pixel마다 분류한다.

semantic segmentation

위 사진에서 보면 각 pixel별로 '도로'인지, '사람'인지 분류한다. 따라서 class별로 경계선을 만들게 된다.

 

 

다만 '사람' class안에서 특정 '객체'를 분류하는 instance segmentation과는 다르다.

즉, 내가 구매한 로봇이 있을 때 앞에 놓인 여러 사람들 중 '사용자인 나' 1명만을 특정해서 segmentation을 하는 것은 instance segmentation이다.

 

아무튼 이러한 semantic segmentation은 자율주행, 운전 보조 장치 등에 활발하게 사용되고 있다.

 

 

 

Semantic Seg 방법 1) Fully Convolutional Network


일반적인 CNN은 다음 그림과 같다. 

이미지 하나가 들어오면 conv, pooling 등과 flat, fully connected layer을 거쳐서 dense layer로 만든다.

 

 

일반적인 CNN (https://developersbreach.com)

 

 

 

하지만 Fully 'Convolutional' Network은 dense layer를 없앤다. 대신 이를 'convolution layer'로 바꾸자는 것이다.

 

신기한 것은 image에서 conv, flat, dense를 거친 것과 (일반적), conv만 거치는 것 (FCN)은 parameter가 일치한다.

즉 parameter 관점에서는 아무것도 달라진 게 없다.

 

Naver Boost Course

 

 

 

 

flat으로 한 줄로 펴서 fully connection한 것을, 가로로 돌려서 conv filter로 동일한 작업을 한 것이라고 보면 된다.

 

줄어든 dimension을 늘리는 방법 중 하나인 deconvolution

 

 

결국 parameter 수도 같다면 convolutionalization을 왜 하는 것일까? 특히 Semantic Segmentation 관점에서!

이는 바로 fully connected layer의 단점때문인데, 크게 두가지로 나눠서 볼 수 있다.

  1. 이미지의 위치 정보 손실 : Segmentation은 pixel마다 class를 분류하고 객체와 배경을 분할해야 하기때문에 위치정보가 매우 중요하다! 따라서 이 정보를 유지할 수 있는 conv layer를 대신 사용하는 것이다.
  2. input image의 size 고정 : 일반 CNN은 1x1 filter 갯수에 따라서 channel의 수가 결정된다. 하지만 보통 feature map의 크기는 input image보다 작기때문에, input image의 제한을 갖게 된다.

FCN의 가장 특징은 input의 spatial dimension의 독립성이다. 

input 이미지 크기 (차원)에 상관없이 network가 돌아간다는 것이다. 그리고 output이 커지게 되면, 이에 비례하여 뒷단의 network가 커지게 된다.

 

해당 이미지에서 FCNN을 거치면 고양이의 위치가 heatmap 형태로 나오게 된다.

 

주의해야할 점은, 위 표를 보면 spacial dimension이 점점 줄어들고 있다. 따라서 다시 늘리는 방법이 필요하다. 이를 위해서 deconv, unpooling 등 여러 방법이 제시된다. (왜 dimension이 줄어들면 안좋을까)

 

 

 

'AI Learner > Computer Vision' 카테고리의 다른 글

[Boost Course CV] 2.2 Image Classification (1)  (0) 2023.04.07
[BoostCourse CV] 1.Start  (0) 2023.04.06
Comments