FCN
- 완전 합성곱 신경망: Fully Convolutional Network
- 각 픽셀에 의미론적 레이블을 할당하는 '시맨틱 분할'에 사용되는 심층 학습 모델
- 과정
- Convolution
- Deconvolution(Upsampling)
- 분류를 위해 flatten(1차원)하는 대신, Convolution으로 줄어든 사이즈를 다시 키움
- Skip architecture
- 해결해야 할 문제
- coarse(컨벌루션으로 추상화된)한 feature-map해결하기 위해, 원본 이미지 픽셀에 가까운 dense-map으로 변환
FCN의 구조
- VGG16모델의 Backbone 사용
- 업 샘플링
- 7x7 > 2배 > 14x14 > 2배 >28x28 > 8배 >224x224
- Skip-connection 사용 (다음 단계를 생략하고 바로 완전연결층으로 보내는 필터)
- 완전연결계층은 없음
코드

U-Net
- 대칭을 나타내기 위해 구조를 U자형으로 그림.
- 생체의학 영상 분할 분야에 응용
- 구성: 축소 경로, 병목 경로, 확장 경로
- 정확히 4번 일어난다.
- 인코더
- 구성: 합성곱(3x3)+풀링(2x2)
- 디코더
- 구성: 업샘플링+합성곱(3x3)
- 스킵 연결
- 구성: 인코더와 디코더를 병합
- 사이즈가 맞지 않음에도 concat을 하는데, 큰 이미지를 crop해서 concat한다.

왜 줄였다가 늘릴까?
- 피처맵 초기
- 위치정보
- 리세트필드가 작다.(지역정보를 따로따로 보유)
- Fine (그대로)
- 명시적
- decoded
- 피처맵 추상화
- 의미정보
- 리세트필트가 크다.(글로벌피처, 하나의 지역이 갖고 있는 정보가 크다)
- Coarse (세밀하지않은)
- 추상적
- encoded
- 축소: 연산 효율성을 높여, 의미를 찾는다.
- 확장: 위치정보를 명확히 한다.
- 연결(concat(축소,확장))
왜 시작 사이즈가 572인가?
- 10번의 컨볼루션(패딩없는)과 4번의 풀링 동안, 단 한번도 홀수가 나오지 않았다.
- 572x572 > 28x28
- 처음부터 28x28까지 줄어들 것을 고려하여 전체 레이어에 대한 세부 설계(conv 개수, padding유무)에 부합하는 이미지 크기를 의도적으로 결정.
- 2의 n제곱 수가 아닌 572를 사용한 것은 padding을 주지 않았기 때문
- Padding을 주지 않았기 때문에 인코딩 쪽 피처맵과 디코딩 쪽 피처맵 크기가 서로 맞지 않음(디코딩쪽이 더 작음)
- 추론하고자 하는 이미지보다 입력이미지가 더 큼.
- UNET설계자는 의도적으로 입력이미지를 실제 추론하고자 하는 이미지보다 크게 설정.
왜 입력이미지 크기와 출력이미지 크기가 다를까?
- 생체의학 분야에서 개발된 모델, 생체의학 분야에서 다루는 데이터셋은 보통 초고해상도 이미지다. 즉, 크기가 매우 큰 이미지.
- 매우 큰 이미지를 한번에 모델에 입력으로 넣어줄 수 없기 때문에, 이미지를 잘라서 따로 따로 학습시킨다. (이를 '타일링'이라 한다.)
- 도메인 특성상 세포의 분포를 확인하는 것이기 때문에 데이터를 쪼개서 세그멘테이션 한다고 해도, 의미적 훼손이 크지 않기 때문에 사용 가능한 기법이다.
- 단, 타일링의 경계에서 잘리게 되는 객체들이 존재할 수 있으며, 이 경우는 의미의 훼손이 발생할 수 있다. 이 문제를 해결하기 위해서 Unet 설계자는 'Overlapping 타일링'을 사용했다.
- 572 x 572 로 자를뿐 실제로 확인하는 영역은 더 작다. 그리고 영역을 겹쳐서(Overlap), 사용한다. 원본은 사방으로 마진을 두고 자른다. 업스케일링은 마진만큼 원본이미지를 패딩한다. 합친다.
- 이미지가 너무 크다. -> 타일링하자.
- 타일링하면 경계에서 이미지 훼손이 생긴다. -> Overlapping 타일링 하자
- Overlapping을 하면, 입력 이미지지의 크기와 실제 추론하고자 하는 타겟 이미지의 크기가 서로다르다. -> 모델의 입력 크기와 출력 크기를 다르게 설정하자.
- 모델의 입력 크기와 출력 크기가 다르려면 -> conv 층에 패딩을 두지 말자. -> 정확한 사이즈는 계산해서 설계한다.
Segmentation 후처리
- 침식: 주변의 어두운 색으로 자신을 바꿈
- 팽창: 주변의 밝은 색으로 자신을 바꿈
- Opening (침식>팽창)
- 흰색 노이즈 점을 없애줌
- Closing (팽창>침식)
- 작은 경계가 메워짐
Deeplab v3 (또는 v3+)
최근까지 발전해 온 Segmentation 모델
Tags:
AI개발_교육