semantic segmentation을 할 수 있는 fully convolutional network의 특징

1. semantic segmentation의 기본

 

image classification은 이미지 단위로 category를 분류했다면 이번에는 이미지 내 존재하는 pixel단위로 classification을 한다

 

구체적으로 이미지 내 pixel이 사람에 속하는지 자동차에 속하는지 오토바이에 속하는지 구분한다

 

이미지 속에서 물체의 마스크를 만들어 색으로 구분함

 

 

A라는 pixel은 사람에 속하고 B라는 pixel은 자동차에 속하고 C라는 pixel은 오토바이에 속하고

 

의문이 생기는 점은 서로 다른 사람들이나 서로 다른 물체도 구분해주느냐인데

 

semantic segmentation은 서로 다른 물체인 instance는 구분하지 않고

 

물체의 본질인 class만 구분한다(파이썬 class, instance 개념이랑 비슷함)

 

 

서로 다른 사람에도 같은 색으로 구별하고 있다는 것을 알 수 있다

 

 

2. semantic segmentation 활용

 

메디컬 이미지에서 관심있는 부분을 탐지할 수 있음

 

 

무인 자동차에서 주행중 물체를 구분하는데 사용할 수 있음

 

영상 컨텐츠 편집에서 필수적인 기술인 computational photography로 활용가능

 

 

이런 사진이 주어졌다고 생각해보자.

 

 

semantic segmentation으로 물체들을 특징에 맞게 적절하게 구분

 

 

필요없는 부분을 제거하여 다른 부분으로 편집한다

 

원래 사진의 바다를 제거하고 산으로 바꿈

 

 

3. Fully convolutional network

 

이전에는 semantic segmentation을 해결하기 위해서는 사람들이 만든 다양한 알고리즘의 결합으로 해결했다

 

그러나 data가 많아도 학습 가능한 부분들이 제한적이었다.

 

성능을 높이기 위해 다양한 수학적 모델들이 제안되었지만 잘 안됐다.

 

그러다가 혜성같이 등장한 semantic segmentation을 위한 첫 end to end 구조가 Fully convolutional network

 

end to end가 무슨 말이냐면 input부터 output까지 미분가능한 네트워크라는 말

 

구체적으로 (input,output) 데이터 pair만 있으면 중간의 network를 학습하여 target task를 한번에 해결할 수 있는 구조

 

fully convolutional network의 기본 구조

 

4. fully convolutional network는 어떠한 문제를 해결했을까

 

기존 AlexNet은 convolutional network 뒤에 flattening part가 있어서

 

convolutional layer를 통과하면 벡터로 만들어서 fully connected layer를 통과시켰음

 

근데 이게 무슨 문제가 있냐면 특정 이미지 size의 input만 받을 수 있다는 것임

 

학습과정에서 사용한 이미지와 다른 size를 가진 image를 넣으면 마지막 fully connected layer에 들어가질 못한다

 

 

input size가 다르면 convolution layer를 통과한 뒤 나오는 dimension이 달라져서

 

flatten 결과도 달라지고 그러면 미리 정해둔 fully connected layer와 연결이 안돼

 

그런데 fully convolutional network는 입력 이미지의 size가 달라져도 output size가 input size와 동일하게 나오면서 동작할 수 있게 만들었다.

 

심지어 네트워크가 전부 미분가능하여 단 한번에 학습할 수 있는 end-to-end구조

 

TAGS.

Comments