LITTLE BY LITTLE

[8]실전! 텐서플로2를 활용한 딥러닝 컴퓨터비전 - 이미지 보강 및 분할2(합성곱 인코더-디코더2. U-Net, 객체 분할 Sementic Segmentation) 본문

4-2/이미지 딥러닝

[8]실전! 텐서플로2를 활용한 딥러닝 컴퓨터비전 - 이미지 보강 및 분할2(합성곱 인코더-디코더2. U-Net, 객체 분할 Sementic Segmentation)

위나 2022. 10. 9. 20:05

대표적인 합성곱 인코더-디코더 2. U-Net

U-Net 아키텍처

  1. FCN에서 영감 받은 아키텍처 ( FCN의 확장 )
  2. 목적은 의미론적 분할 Segmentation(주로 의학 촬영)
    1. * sementic segmentation : 픽셀 단위로 물체를 구별해내는 기술으로, bouding box를 구별하는 basic detection에서부터 시작함.
      1. detection과의 차이점은 detection은 대상 여부 + 위치 정보를 박스로 나타내는 반면, 의미론적 분할은 같은 내용을 픽셀로 나타낸다는 것
      2. 객체 분할과 인스턴스 분할을 모두 아우르며, 차이점은 밀도 높은 픽셀 단위의 예측을 반환하기 위해 입력 이미지의 각 픽셀마다 레이블을 할당하는 기법이 필요하다.
    2. ex. 엑스레이(=2D), CT(=3D)에서 암이 '어디에' 있고, '크기'가 어떠한지 알아야 한다. => 단순 분류로는 불가능, 객체 탐지와 분할을 같이 사용해야한다. (object detection + segmentation)
  3. FCN과 유사한 특징
    1. 스킵 연결은 인코딩 블록을 그에 대응하는 디코딩 블록과 연결 
    2. => 따라서 디코딩 블록은 이전 블록으로부터 컨텍스트 정보를 제공받고, 인코딩 경로에서 위치 정보를 제공받는다. 
  4. FCN과의 차이점 두 가지
    1. 전통적인 U자 형태의 인코더-디코더 구조라는 것 - "대칭형"
    2. 스킵 연결에서 나온 인코더의 특징맵을 덧셈이 아닌, 디코더와 채널 축을 따라 연결(concatenate)하여 결합한다.
  5. 특징 깊이를 증가시키면서, 공간 차원은 축소시키는 [다중 블록 축소 인코더] + 이미지 해상도를 복원하는 [확장 디코더] 로 구성 
  6. 디코딩 블록에는
    1. 업스케일링을 위해 s=2인 전치 합성곱 계층을 사용
    2. 그 대신에 최근접 이웃 스케일링을 통해 구현하기도 함
    3. 다양하게 변형됨 ex. U-Net 블록을 잔차 블록으로 대체 / 내부 블록과 외부 블록 사이의 연결 밀도 ↑

U-NET 아키텍처

(출처 : https://dbstndi6316.tistory.com/251)

  1. U-Net = [이미지의 context 정보를 얻기 위한 네트워크] + [Localization을 위한 네트워크]
    1. 이미지의 context 정보를 얻기 위한 네트워크 = 인코딩 과정 = Contracting Path
      1. 완전합성곱 연결망처럼 VGG 베이스의 아키텍처를 가짐
      2. 3x3 convolution 두번 (+Relu, No padding)
      3. 2x2 Max Pooling (stride=2)
    2. Localization을 위한 네트워크 = 디코딩 과정 = Expanding Path
      1. 높은 차원의 채널을 갖는 업샘플링으로 얕은 레이어의 특징맵 결합
      2. coarse map에서 dense map을 얻기위한 과정
      3. 비선형 예측을 위해 1x1 conv 연산을 추가
      4. 3x3 convolution 두번 (+Relu) 
      5. 2x2 Up Conv (Featuer map의 크기를 두 배로)
    3. 여기에 스킵 아키텍처가 추가된 형태
      1. 스킵 아키텍처는 각 Expanding step마다 up-convolution된 피처 맵들을 Contacting path의 cropped된 특징맵과 연결하는 역할을 한다.
    4. * 최종 출력인 segmentation map의 크기는 입력 이미지의 크기보다 작다.(←conv 연산에서 패딩을 사용하지 않았기 때문)
    5. 출력 값은 픽셀 단위의 Softmax로 예측
    6. Loss function은 Cross-Entropy 함수 사용

인코더-디코더를 사용한 객체 분할 (Segmentation)

 

차원이 HxW인 입력 이미지가 주어졌을 때, 네트워크는 HXWXN 확률 맵을 반환하며, 여기에서 argmax를 통해 예측 레이블 맵을 구할 수 있다. / 우측 그림과 같이 경계를 나누고(분할) 픽셀이 어디에 위치하는지 분류한다

  1. 인코딩-디코딩 네트워크는 한 도메인의 데이터 샘플을 다른 도메인으로 매핑 (ex. 노이즈 있는 데이터를 없는 데이터로, 컬러를 깊이로)하기 위해 훈련되었다. => 객체 분할에서 컬러 도메인의 이미지를 클래스 도메인으로 매핑하는 것에서도 비슷하게 쓰일 수 있음
  2. 사진의 각 픽셀 값과 컨텍스트가 주어졌을 때, 픽셀에 target class 중 하나를 할당, 동일한 width X depth를 갖는 레이블 맵 반환
  3. 인코더-디코더를 위의 레이블 맵을 바로 출력하도록 구성할 경우,  결과 품질이 현저히 떨어짐
  4. 따라서 성능 저하 방지를 위해, 전체 이미지 단위로 각 이미지마다 클래스당 점수를 포함하는 N개 로짓의 컬럼 벡터를 출력하는 대신에, 픽셀 단위의 점수를 담고 있는 HXWXN 텐서를 반환하도록 구성 <=> 즉, mask로 '있다/없다'로 구분
  5. => 위와 같은 출력 텐서를 얻기 위해서 출력 채널의 개수(D)를 클래스 개수(N)과 동일하게 설정한다.
  6. 그 다음, 분류기처럼 훈련시키기
  7. 교차-엔트로피 손실 사용 : Softmax 값과 실제 값을 원-핫 인코딩으로 나타낸 레이블맵과 비교 가능
  8. HXWXN 예측은 채널 축을 따라 가장 높은 값을 갖는(soft max함수는 0과 1사이 값을 출력하니 0~1사이 값 중 최댓값) 인덱스를 선택함으로써 픽셀별 레이블로 변환될 수 있다.

분할 손실과 지표를 사용해 훈련하기 -  픽셀별 가중치 부여

의미론적 분할(sementic segmentation)을 위한 픽셀 가중치 측정 전략의 예시로, 픽셀이 밝을수록 손실에 대한 가중치가 높은 것을 의미한다.

  1. class imbalance 해결하기 => 가중치 부여
    1. 이미지 단위 분류와 픽셀 단위 분류 작업에서 클래스 불균형 문제가 발생함(ex. 암 발견 문제에서는 암이 없는 경우가 대다수) 
    2. 또는 어떤 클래스는 모든 이미지에 나타날 수 있지만, 소수의 픽셀에만 적용되는 반면 다른 클래스는 이미지의 대부분을 차지할 수도 있다.
    3. 분할 모델이 더 큰 클래스로 편향되는 것을 방지하기 위해 손실 함수 조정이 필요하다.
    4. 각 클래스의 교차 엔트로피 손실에 대한 기여도를 측정
    5. 훈련 이미지에서 등장하는 클래스가 작을수록 손실에 대한 가중치를 높게 부여
    6. 픽셀별로 가중치를 주기 위해서 필요한 가중치 맵은 레이블 맵으로부터 계산
    7. 각 픽셀에 적용된 가중치는 클래스에 따라 설정될 뿐만 아니라, 다른 요소와 상대적 픽셀 위치 등을 고려함
  2. class imbalance 해결하기 => 다른 비용 함수로 교체하기
    1. 교차 엔트로피 자체를 클래스 비율에 영향 받지 않는 다른 비용함수를 사용하는 방법이 있다.
    2. 교차 엔트로피는 모델의 실제 목표 영역과 관계없이 다른 클래스를 올바르게 분할하고 있는지는 표현하지 않음
    3. sementic segmentation에 특화된 손실함수와 지표로는 IoU, 쇠렌센-다이스 계수가 있다. (쇠렌센-다이스 계수는 IoU와 비슷한데, IoU는 교집합 / 합집합인 반면, 다이스 계수는 (2 * 교집합) / |A| + |B| 이다.
      1. 의미론적 분할에서 다이스 계수는 각 클래스에 대해 예측된 마스크가 실제 마스크와 얼마나 잘 겹치는지 측정하기 위해서 사용된다. 
      2. 분자는 정확하게 분류된 픽셀 개수를,
      3. 분모는 예측된 마스크와 실제 마스크 모두에서 이 클래스에 속한 전체 픽셀 개수를 나타낸다.
      4. 0과 1사이의 값으로, A와B가 전혀 겹치지 않으면 0이고, 완전히 겹치면 1이다.
      5. * 소프트 다이스 : 실제 값을 담은 원-핫 인코딩 텐서와 달리, 예측 텐서는 실제로 이진 값을 포함하지 않음. 예측 텐서는 0과 1사이 연속 범위에 포함되는 softmax 확률로 구성됨

CRFs(조건부 랜덤 필드)로 후처리

  1. 윤곽이 뚜렷하지 않고 부정확한 영역의 경우, 즉 경계면이 혼동되는 경우 작은 예측 레이블 맵을 얻는다. 
  2. 결과를 후처리함으로써 이러한 단점을 바로잡는 기법들이 있고, 그 중 가장 유명한 'CRFs(조건부 랜덤 필드)'기법
    1. 원본 이미지로 돌아가서 각 픽셀의 컨텍스트를 고려함으로써 픽셀 단위의 예측 개선 가능
      1. 두 개의 이웃한 픽셀 사이 색 변화가 적을시 둘은 동일한 클래스에 속할 가능성이 있음
      2. 공간과 색 기반의 모델과 예측기가 제공하는 확률 맵(여기서는 CNN에서 출력한 softmax tensor)을 고려해서 CRF기법으로 시각적 윤곽선 측면에서 더 정교화된 레이블맵 반환 

요약

1. U-Net은 의미론적 분할(Segmentation)을 목적으로 FCN이 확장된 모델이며, 업샘플링과 스킵 아키텍처를 적용하여 Segmentation의 Localization과 Context 사이의 trade-off를 해결하였다.
* sementic segmentation : 픽셀 단위로 물체를 구별해내는 기술으로, bouding box를 구별하는 basic detection에서부터 시작, detection과의 차이점은 detection은 (대상 여부 + 위치 정보)를 박스로 나타내는 반면, 의미론적 분할은 같은 내용을 픽셀로 나타낸다는 것
2. U-Net은 인코더 부분인 Contracting path와 디코더 부분인 Expanding path로 구성된다.
3. Segmentation에서 인코더-디코더가 자주 사용되며, 성능 저하 방지를 위해 mask 개념을 도입, 출력 채널의 개수D를 클래스 개수N과 동일하게 설정
4. 클래스 불균형을 해결하기 위해서 픽셀 가중치를 부여하거나, 교차 엔트로피를 다른 비용 함수로 대체한다.
5. 윤곽이 뚜렷하지 않아 경계면이 혼동되는 경우 픽셀 사이의 컨텍스트를 고려하는 조건부 랜덤필드(CRFs) 사용

 

Comments