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