STUDY/deep learning

[Image Segmentation] - 기술과 딥러닝 기반모델(FCN,U-Net,SegNet, DeepLab, ResNet)

officialhoyoon 2025. 2. 4. 13:53

Traditional Image Segmentation 기술 

image segmentation 모델에 적용된 객체인식 및 위치 파악 기술은 특정 application이나 세그먼트화할 이미지 유형에 따라 달라짐. 

 

1. Threshold Method 

- 객체와 배경의 대비가 높은 이미지에 적합 

- image binarization에 자주 사용되므로 binary image에서만 작동하는 contour detection 및 identification과 같은 추가 알고리즘 사용가능 

- Otsu's Threshold, Mean shift 

원본 이미지 threshold image

 

 

2. Region Based Method 

- 인접한 픽셀 간의 유사성(비슷한 속성)을 찾아 공통 클래스로 그룹화하여 작동 

    일반적인 segmentation procedure은 일부 pixels에 대하여 seed pixel로 설정하고, 해당 알고리즘은 seed pixele들의 

immediate boundaries를 감지하여 similar or dissimilar를 분류 

- immediate neighbors는 시드로 처리되고 전체 이미지가 segment화 될 때까지 반복 ex, watershde algorithm

watershed based method가 euclidean distance map의 로컬 최대값에서 시작해 2개의 seed(시작 픽셀)가 동일한 지역 또는 segment에 속하는 것으로 분류될 수 없다는 제약조건이 있다는 점에서 유사 

-다양한 특징을 가진 이미지에 적압 

-큰 이미지의 경우 느린 속도 

-region growing , region split and merge 

 

3. Edge Based Method 

- Egde detection, 이미지에서 어떤 픽셀이 edge 픽셀인지 분류(차이가 나는 부분에 집중)하고 그에 따라 별도의 클래스에 따라 해당 edge 픽셀을 골라내는 작업 

 

-대비가 낮은 이미지에 적합

-노이즈에 민감

-Canny, Gradient, Laplacian

 

  

4. watershed based method

이미지에서 gradient의 크기로 구성된 gradient magnitude 영상을 구하고, 그 영상으로부터 watershed(산의 봉우리, peak)를 구해 그 watershed를 영역을 구분해주는 역할로 이용, 이미지를 segement화 하는 방식 

 

- 영상에 존재하는 detail이나 노이즈로 인해 graident를 구했을 때 local minimus을 만들어내기 때문에 자연 영상에 대부분 over-segmentation문제가 발생

-marker를 사용해 segmentation될 영역을 지정.(보통 최종적으로 segmentation되는 영역의 수 == marker의 수)

Watershed, Marker Controlled Watershed 

 

5. Clustering Based Method 

최신 image segementation에서 일반적으로 가장 많이 쓰이는 것은 clustering algorithm. 공통 속성을 가진 픽셀을 특정 

segment에 속하는 것으로 함께 clustering하여 작동되는 unsupervised 알고맂,ㅁ 

 

-시드 픽셀로 시작한 다음 유사성 기준에 따라 해당 픽셀을 중심으로 영역 확장 

-개체가 많은 이미지에 적합

-계산 비용이 많이 들 수 있음. 

-K Means, Fuzzy C-Means

 

6. Deep Learning Based Method 

머신러닝 알고리즘을 사용해 이미지에 있는 물체의 특징을 학습한 뒤 알고리즘을 사용하여 새그먼트를 객체 도는 배경으로 분류 

- 다양한 특징을 가진 이미지에 적합 

- 많은 양의 학습 데이터 필요 

 

 

Deep Learning Based Method

1. FCN(Fully Convolutional networks) 

semantic Segmentation의 대표적인 모델 

기존 classification용 cnn 모델의 문제 

AlexNet, VGG 등 분류에 자주 쓰이는 깊은 신경망들은 Semantic Segmentation에 부적합하다. 일반적으로 

convolution 층들과 fully connected 층들로 이루어져 있으므로 항상 input image를 신경망에 맞는 고정된 사이즈로 작게 만들어 입력해줘야한다. 

 

분류용 CNN 모델들은 물체가 어떤 클래스에 속하는지 예측해낼 수 있으나 parameter과 차원을 줄이는 layer를 갖고 있어 자세한 위치정보를 잃게될 수 있다. 

(마지막에 쓰이는 fully connected layer에 의해 물체가 어디에 존재하는지 예측할 수 없게 됨) 

 

pooling 과 fully connected layer를 없애고 stride와 padding을 1로 설정해 일정한 convolution을 진행한다면 input의 차원은 보존할 수 있으나 parameter의 개수가 많아져 메모리 문제나 계산비용이 과다해진다. 

 

 

FCN 모델

fully connected layer를 1x1 convoluton층으로 바꿈, 

네트워크 전체가 convolution 층들로 이루어지고, fully connected 층들이 없어졌으므로 입력 이미지 크기에 제한을 

받지 않는다. 

여러 층의 convolution 층들을 거치고 나면 feature map의 크기가 H/32 X W/32가 되는데, 그 특성맵의 한 픽셀이 

입력이미지의 32X32 크기를 대표 ==> 입력이미지의 위치 정보를 '대략적으로' 유지 

convolution 층들을 거치고 나서 얻게 된 마지막 특성맵의 개수 == 훈련된 클래스의 개수 

   ==> 5개의 클래스로 훈련된 신경망이라면 5개의 특성맵(hetmap)을 산출 

   ==> 각 heatmap은 하나의 클래스를 대표 

   ==> 고양이 클래스에 대한 heatmap인 경우, 고양이가 있는 위치의 픽셀값들이 높음. 

 

FCN 모델의 Architecture

 

1. Convolution layer를 톻해 feature 추출 

2. 1X1 Convolution layer를 통해, 낮은 해상도의 class presence Heat Map 추출 

3. Transposed Convolution을 통해 낮은 해상도의 heatmap을 upsampling한뒤 , 

     input과 같은 크기의 Map 생성 

4. Map의 각 pixel class에 따라 색칠한뒤, Segmentation 결과를 반환한다. 

 

1,2번 과정은 downsampling 단계로, convolution을 통해 차원을 축소한다. 

3번 과정은 upsampling 단계로, 1,2번 과정을 통해 만들어진 heatmap의 크기를 원래 이미지의 

크기로 다시 복원해주는 단계이다. 

4번 과정은 upsampling된 heatmap을 종합해 최종적인 segmentetation map을 만드는 단계이다. 

  -> 각 필셀당 확률이 가장 높은 클래스를 선정 

  -> 단순히 upsampling 시 원래 이미지 크기으 segmenation map을 얻을 수는 있으나 디테일하지 못함. 

       몽뚱그려져 있고 디테일하지 못함. 한 번에 32배 upsampling하는 방법을 FCN-32s라고 함. 

 

 

 

skip combining 기법 

 convolution과 pooling 단계로 이루어진 이전 단계의 컨볼루션층들의 특성 맵을 참고하여 upsampling시 좀더 정확도를 

높일 수 있음(이전 컨볼루션층들의 특성맵들이 더 높은 해상도를 갖고 있으므로) 

    --> 전전 단계의 특성맵(pool8)과 전 단계의 특성맵(pool4)을 2배 upsampling한 것과 현 단계의 특성맵(conv7)을 4배 한

것을 모두 더한 다음에 8배 upsampling을 해 얻은 특성맵들로 segmentation map을 얻는 방법을 FCN 8s라고 함. 

 

 

 

2. U-Net

sematic Segementation Task 수행에 널리 쓰이는 모델 중 하나로, 의학 이미지 Segmentation을 위해 개발된 U형태의

모델이다. 

 

U-Net의 장점

   빠른 속도

  이미지를 인식하는 단위(Patch)에 대한 Overlap 비율이 적음 

  기존의 모델에서 많이 사용되었던 Sliding Window 방식은 이전 Patch에서 검증이 끝난 부분을 다음 

  Patch에서 검증이 하여 연산을 낭비하지만, U-Net에서는 이전 Patch에서 검증이 끝난 부분을 다음 Patch에서 

  중복하여 검증하지 않으므로 느린 연산 속도가 개선됨. 

 Context와 localization의 늪에서 탈출 

  segmentation Network는 클래스 분류를 위한 인접 문맥 파악(Context)과 객체의 위치 판단(Localization)을 동시에

  수행해야 한다. 

  각 성능은 Patch의 크기에 영향을 받는데, 이때 Trade-off를 갖게됨. 

        => patch의 크기가 커지면 더 넓은 범위의 이미지를 한번에 인식할 수 있어 Context파악에는 탁월한 효과를 보이나

             많은 Max-Pooling을 거치며 Localization 성능이 저하됨.

        => Patch의 크기가 작아지면 Localization 성능은 좋아지나, 인식하는 범위가 지나치게 협소해져 Context 파악 성능                 이 저하됨.

         => U-Net은 다층의 Layer의 Output을 동시에 검증해 이러한 모순적 관계를 극복함

 

 

 U-Net 모델의 Architecture 

    알파벳 U 형태의 구조의 왼쪽 절반에 해당하는 Contracting Path와 오른쪽 절반에 해당하는 Expanding Path의 2가지로

    분리됨. 

 

     Contracting Path

         Encoder의 역할을 수행하는 부분으로, 전형적인 Convolution Network로 구성

         입력을 Feature Map으로 변형해 이미지의 Context를 파악 

         점진적으로 Spatial dimenstion을 줄여가며 고차원의 semantic 정보를 convolution filter가 추출해낼 수 있게됨.

          Contracting Path의 앞단에 이미 잘 학습된 모델을 backbone으로 사용해 학습 효율과 성능을 높일 수 있으며, 

         주로 ResNet 등의 모델을 사용함. 

 

 

    Expanding path 

         Decoder의 역할을 수행하는 부분으로, 전형적인 Upsampling + Convolution Network로 구성

         Convolution 연산을 거치기 전, Contracting Path에서 줄어든 사이즈를 다시 복원(Upsampling)하는 형태

         Expanding Path에서는 Contracting을 통해 얻은 Feature Map을 Upsampling하고, 각 Expanding 단계에 대응되는

         Contracting 단계에서의 Feature Map과 결합해서(SKip-Connection Concatenate) 더 정확한 Localization을 수행

         encoder에서 spatial dimension 축소로 인해 손실된 spatial 정보를 점진적으로 복원하여 정교한 boundary                           segmentation을 완성

         Multi-Scale Object Segmentation을 위해 DownSampling과 UpSampling을 순서대로 반복하는 구조 

         

    U-Net이 다른 encoder-decoder 구조와 다른 점은 희색 선이다.  

        ->Spatial 정보를 복원하는 과정에서 feature map 중 동일한 크기를 지닌 feature map을 가져와 prior로 활용

        ->더 정확한 boundary segmentation이 가능해짐.