우선 U-Net은 Biomedical 분야에서 이미지 분할(Image Segmentation)을 목적으로 제안된
Fully-Convolutional Network기반 모델이다.
오토인코더(autoencoder)와 같은 인코더-디코더(encoder-decoder)기반 모델.
Image Segmentation 혹은 Semantic Segmentaion이라 불리는 영역의 베이스가 되는 논문이며,
지금도 많이 사용되고 있다.
Semantic Segmentaion은 다음과 같은 일을 한다.
왼쪽의 이미지를 받아 오른쪽과 같이 객체의 class로 구분합니다.
Semantic Segmentation은 ‘인물 사진 모드’ 등에 필요합니다.
Semantic Segmentation을 활용하여 사람인지 아닌지 구분하며, 사람을 강조하기 위해 다른 객체들을 흐릿하게 만듭니다.
모델 구조
전체적인 구조가 U 모양으로 생겨서 U-Net입니다.
U-Net은 크게 Encoder와 Decoder로 나눠지는데
인코더는 주변 픽셀들을 참조하는 범위를 넓혀가면서 이미지로부터 Contextual 정보를 추출하는 역할을 한다.
파란색 화살표를 보면 인코더의 각 단계에서 계속 반복적으로 나타나는 것을 볼 수 있는데,
이는 3x3 Conv, Batch Normalization, ReLU 활성화 함수가 차례로 배치된 것을 의미한다.
3x3 Conv를 두 번 수행하며, 수행할 때 패딩이 없으므로 Feature Map 크기가 조금씩 감소한다.
Downsampling할 때마다 Feature map의 크기가 절반으로 줄어들며, Channel의 수는 2배 증가한다.
1 → 64 → 128 → 256 → 512 → 1024 이런 식으로 진행되며 Downsampling할 때마다 채널은 2배 증가한다.
여기에 있는 파란색 화살표 2개도 인코더에 있는 화살표와 동일하다.
하얀 네모 박스는 copy and crop을 통해서 인코더에 있는 맵을 복사한 것이다.
파란 네모 박스는 디코더의 하위 단계에서 Up-sampling인 전치 컨볼루션(transposed convolution)을 통해서
맵의 차원을 두 배로 늘리면서 채널 수를 반으로 줄였다.
두 개의 맵을 서로 합쳐서(concatenation) 이미지의 저차원 정보와 고차원 정보를 모두 이용할 수 있다.
디코더 부분의 오른쪽 상간 마지막 부분을 보면 1x1 Conv로 특징 맵을 처리하여 Semantic Segmentaion 맵을 생성하는 부분이다.
'딥러닝' 카테고리의 다른 글
[Pytorch] 합성곱 신경망: 딥러닝 학습시키기 기본 (0) | 2023.03.29 |
---|---|
[Pytorch] 딥러닝 학습시키기 기초 연습 (0) | 2023.03.03 |
[Pytorch] 커스텀 데이터셋 만들기 (0) | 2023.03.03 |
파이토치 기초 정리 (0) | 2023.02.07 |
pytorch CUDA (GPU) 설치하는 방법 (0) | 2022.10.20 |
댓글