Group Study (2024-2025)/Machine Learning 심화

[ML 심화] 8주차 스터디 - U-Net , CS231n - Assignment1 inline question 답

ㅁㄱㅅ 2024. 11. 26. 18:27

U-Net: Convolutional Networks for Biomedical Images Segmentation 논문 리뷰

[배경 지식]

이미지를 인식하는 다양한 방법

  • 이미지 내에서 사물 인식하는 방법에는 다양한 유형 존재
  • Segmentation은 각 픽셀마다 클래스를 할당하는 작업을 의미

Semantic Segmentation

  • 이미지 내 있는 각 물체(object)들을 의미 있는(semantic) 단위로 분할(segmentation)하는 작업을 의미함
  • 분할에서는 각 픽셀마다 하나의 클래스로 분류

Semantic Segmentation의 목표

  • 이미지가 주어졌을 때, (높이 x 너비 x 1)의 크기를 가지는 한장의 분할 맵을 생성
  • 각 픽셀마다 N개의 클래스에 대한 확률을 뱉어, 정답은 (높이 x 너비 x N)의 형태를 가짐 (각 픽셀마다, 원핫인코딩)

→ 분할 작업을 위한 데이터세트 생성 비용은 매우 비쌈

각 픽셀마다 어떤 클래스로 분류되는지 일일이 지정해야 하기 때문

BUT, 일반적인 CNN 분류 모델 형식을 크게 바꾸지 않고 학습할 수 있다는 장점을 가짐 (객체 탐지 분야의 네트워크 구조가 대개 더 복잡한 편)

CNN의 동작과정

  • CNN에서는 필터 혹은 커널이라고 불리우는 것을 사용
  • 각 필터는 입력에서 특정한 특징을 잡아내어 특징맵 (feature map)을 생성

  • 하나의 필터는 슬라이딩 하며 컨볼루션 연산을 통해 특징맵을 계산

  • 일반적으로 CNN 분류 모델에서 깊은 레이어로 갈수록 채널의 수는 증가하고 너비와 높이는 감소
  • CNN의 각 필터는 특정한 특징을 인식하기 위한 목적으로 사용됨
  • Max Pooling
    • CNN 분류 모델에서 중요한 정보는 유지한 상태로 해상도(너비와 높이)를 감소시키는 방법 중 하나
    • 가장 큰 값을 가지는 원소만 남김

U-Net

  • 본 논문에서는 U자형으로 생긴 네트워크인 U-Net 아키텍처를 제안함
    • 수축 경로 (contracting path) : 이미지에 존재하는 넓은 문맥(context) 정보를 처리
    • 확장 경로(expanding path) : 정밀한 지역화(precise localization)가 가능하도록 함
  • 본 논문에서는 레이블 정보가 있는 (annotated) 데이터가 적을 때 효율적인 데이터 증강 (augmentation) 기법을 제안

Convolutional 연산의 종류

  • Down-sampling
    • Strided Convolution : 너비와 높이가 감소

  • Up-sampling
    • Transposed Convolution : 너비와 높이가 증가

U-Net 구조

  • 수축 경로 (Contracting Path)

  • 입력 이미지의 Context 포착을 목적으로 구성
  • 2 x 2 Max pooling 사용
  • → 해상도(높이와 너비) 2배 감소
  • Conv 연산으로 채널의 크기는 2배 증가
  • Conv 연산들 → ReLU → Max Pooling 반복

 

  • 확장 경로 (Expanding Path)

  • 세밀한 Localization을 위한 구성
  • 2 x 2 Convolution (Up-convolution) 사용
  • → 해상도(높이와 너비) 2배 증가
  • Conv 연산으로 채널 크기는 2배 감소
  • 수축 경로 (contracting path)에서 처리된 feature 채널에서 연결(concatenation) map을 잘라내어 가져와 수행

 

  • 최종 출력의 segmentation map은 입력 이미지보다 해상도가 작음
  • 전체 네트워크는 FC layer가 없는 FCN 아키텍처로 구성

U-Net의 Overlap-tile strategy

타일 겹치기 전략 : 타일 A와 타일 B의 일부 영역이 겹침

  • FCN 특성상 입력 이미지의 해상도에는 제한이 없음
  • BUT, U-Net 구조상 출력 이미지의 해상도가 입력이미지보다 작음
  • 실제로 노란색 영역의 segmentation이 필요하면 더 큰 범위(파란색 영역)의 패치를 삽입
  • 이미지 경계 부분은 extrapolation을 사용 → 미러링 활용

U-Net의 학습 방법 : Objective Function

  • U-Net은 segmentation을 위한 네트워크이므로, 픽셀 단위로 소프트 맥스를 사용
  • 학습을 위해 cross-entropy 손실을 사용 (true label만 고려하므로, 일반 cross-entropy 공식과 동일함)
  • 세포(cell)를 명확하게 구분하기 위해 작은 분리 경계를 학습함
    • 가중치 함수는 인접한 셀 사이에 있는 배경 레이블에 대해 높은 가중치를 부여 (명확한 분리를 위함) → 세포와의 거리가 가까우면 가중치가 증가

U-Net의 데이터 증진 (Data Augmentation)

  • 의료 데이터의 경우 학습데이터 수가 적어 데이터 증진이 필요
  • 본 논문에서는 일반적인 data augmentation 기술을 사용함
  • 추가적으로 Elastic Deformation 방법을 사용하며, 관련 사진은 다음과 같음

실험 결과

  • EM(Electron Microscopy) Segmentation 대회에서 Warping error 기준 가장 우수한 정확도를 보임
  • PHC-U373 와 DIC-HeLa 데이터 세트에서 이전 연구보다 우수한 IOU를 보임

CS231n - Assignment inline question 자체적인 답

*자체적으로 작성 + 구글링 으로 오답이 있을 수 있습니다.

  1. 거리 행렬에서 특정 행이나 열이 밝게 보이는 구조적 패턴이 나타날 때, 밝은 색이 나타나는 이유는? (x : train , y : test)
    • 밝은 행 = 하나의 테스트 이미지에 대해 대부분의 학습 이미지 간의 이미지 유사성이 거의 없을 때
    • 밝은 열 = 모든 테스트 이미지가 학습 이미지와 유사성이 거의 없을 때
  2. 다음 중 L1 거리를 사용하는 최근접 이웃 분류기의 성능에 영향을 미치지 않는 전처리 단계는?
    • 평균 빼기
    • 픽셀 별 평균 빼기
    • 평균을 뺀 뒤 표준편차로 나누기
      • 픽셀별 표준화와 좌표축 회전은 성능에 영향을 미칠 수 있음 (상수에 변화를 주기 때문)
  3. 분류 환경에서 KNN에 대한 설명으로 모든 k에 대해 참인 것은?
    • 1-NN의 학습 오류는 항상 5-NN의 학습 오류보다 낮거나 같다.
    • k-NN 분류기로 테스트 예제를 분류하는데 걸리는 시간은 학습세트 크기에 따라 증가한다.
  4. 때때로 GradCheck(기울기 확인)에서 차원이 정확히 일치하지 않을 가능성이 있다. 이런 불일치의 원인은 무엇일까? 기울기 확인이 실패할 수 있는 1차원에서의 간단한 예는 무엇일까? 이 현상의 빈도에 대해 마진을 변경하면 어떤 영향을 미칠까? (SVM 손실함수는 엄밀히 말하면 미분 가능하지 않음)
    • SVM 손실함수는 모든 지점에서 미분 불가능하므로 모서리가 존재할 수 있으며 이런 지점에서는 기울기가 잘 정의되지 않음
  5. 시각화된 SVM 가중치가 어떻게 보이는지 설명하고, 그렇게 보이는 이유를 설명
    • 해당 클래스의 여러 이미지가 결합된 형태로 보임. 이는 가중치의 일부가 식별한 특정 그룹에 속한 이미지 특징을 대략적으로 일반화한 모습으로 나타남 (SVM은 선형 분류기이기 때문에 각 클래스의 이미지가 가지는 다양한 형태를 정확히 구분하는 결정경계를 생성할 수 없음)
  6. 왜 손실값이 −log(0.1)에 가까울 것으로 예상될까?
    • 클래스가 10개 이므로 무작위로 추출했을 때, 정답을 맞출 확률 0.1
  7. 전체 학습 손실이 모든 학습 예제에 대한 데이터포인트별 손실의 합으로 정의된다고 가정할 때, 학습 세트에 새로운 데이터포인트를 추가해도 SVM 손실은 변하지 않을 수 있지만, 소프트맥스 분류기의 손실은 그렇지 않다.
    • True
  8. 현재 ReLU를 구현하도록 했지만, 신경망에서는 다양한 활성화 함수가 있다. 활성화 함수에서 자주 발생하는 문제 중 하나는 역전파 과정에서 기울기 값이 0 (거의 0) 이 되는 현상인데 그런 현상을 가진 함수는 무엇인가?
    • Sigmoid
    • ReLU
  9. 테스트 정확도가 훈련 정확도보다 훨씬 낮음을 확인할 수 있는데 이런 격차를 줄이기 위해 어떤 방법을 사용할 수 있을까?
    • 더 큰 데이터셋으로 훈련시키기
    • 정규화 강도 늘리기

 

글 이미지 출처 :  https://www.youtube.com/watch?v=n_FDGMr4MxE