이 연구는 CNN 모델의 마지막에 Fully Connected Network를 덧붙여 분류문제로 해결하던 것을 개선하여 마지막 레이어도 Convolution 층을 덧붙여 end to end로 convolution 하도록 Fully Convolutional Networks(FCN)을 개발하였다. 픽셀단위의 위치 정보도 모델이 학습할 수 있도록 개선한 모델이다. 저자들은 의미(semantic information)를 깊은 층에서 coarse(엉긴, 조잡한?) 레이어와 세부적이고 정확한 segmentation을 얕은(shallow) 층에서 추출하는 레이어를 조합한 구조를 제안한다.
CNN은 이미지 분류뿐아니라 bounding box 객체탐지, key point 예측, local correspondence 같은 이미지 부분적인 역할도 진전이 있었다. 그 다음 연구의 방향은 자연스럽게 픽셀 단위의 추론을 진행하는 것이다. 이전에 콘볼루션으로 semantic segmentaion을 진행할때는 각 픽셀이 가깝게 둘러싸고 있는 객체나 지역으로 레이블 되었었다.
저자들은 end-to-end, pixels-to-pixels로 semantic segmentation을 수행해 당시 SOTA를 달성했다. 사전학습(pre training) 된 모델을 백본으로 이용했다. 풀링된 층을 업샘플링 층으로 픽셀단위의 학습과 예측을 하였다. 사전학습 모델의 파인튜닝도 진행했다.
Semantic segmentation은 의미와 위치 사이에서 딜레마가 있다. 깊은 피쳐 계층(deep feature hierarchies)은 위치와 의미를 담고있다(encode). 저자들은 의미와 외관 정보를 담기 위해 스킵(skip)이라는 개념을 도입했다.
저자들은 3장에서 Fully convolutional networks에 대해 설명한다. FCN의 모든 레이어는 h x w x d로 구성된다. 첫 레이어은 h x w의 크기를 가진 이미지이고 색상은 d의 채널을 가진다. 더 깊어진 레이어에서 특정위치의 영역은 receptive fields라고 하는데, 원본 위미지의 위치와 연결되었다.
콘볼루션은 translation invariance하다. Convnets의 파츠인 콘볼루션, pooling, activation은 입력의 부분적인 위치에서 작동하고 상대적인 지역 정보(spatial coordinates)에 의지한다. 아래 그림은 Convnets을 함수로 표현했다. i, j를 이용해 지역적인 좌표를 나타내고 k로 receptive field의 크기, s로 stride를 표현한다.
커널 사이즈 k와 stride s는 아래 함수처럼 층이 깊어지는 것에 영향을 받는다. 층이 깊어질수록 수용영역은 로컬영역에서 크기가 이미지 전체와 가깝게 넓어지는 이치이다. 전체 깊은 네트워크(deep nets)이 아래 함수로 이뤄진 콘볼루션으로 구성된다면 이를 FCN으로 부르기로한다. FCN은 입력 크기의 제한이 없지만 출력은 동일한 차원으로 한다.
손실함수는 FCN이 정의한 태스크에 대해 한다. 아래 함수처럼 마지막 레이어의 모든 지역적인 정보를 더하여 구한다. 손실함수에 대한 확률적 경사하강법은 전체 이미지에 SGD를 하는 것과 같다. 모든 receptive fields를 미니배치로 받기 때문이다.
FCN으로 전환하는 것은 모든 픽셀에 대한 dense prediction이 가능하게 한다. 그림 2처럼 End-to-end로 콘볼루션을 이용하면 클래스에대한 확률이 아닌 히트맵을 생성하는데, 모델 출력이 공간적인 정보를 포함하고 있고 계산적인 효율성도 있다. 알렉스넷은 이미지 분류에 1.2ms가 걸리는데, FCN모델은 500 x 500 입력을 받아서 10 x 10의 그리드를 처리하는데 22ms가 필요하다. 1개의 그리드는 0.22초 가량이 소모되기 때문에 대략 5배 가량 빠른 속도를 보인다.
Input shifting과 output interlacing 기법이 coarse 출력에서 dense prediction을 하기 위해 사용할 수 있다. 필터와 레이어의 stride를 변경하는 것만으로 입력과 같은 크기의 출력을 생산할 수 있다. 그러나 저자들의 모델에서는 사용하지 않음(해당 기법에 대한 이해는 더 공부필요).
저자들은 업샘플링(upsampling)을 위한 다른 방법으로 주변 4개 값을 이용해 bilinear interpolation한다. 역방향 콘볼루션( backward convolution, deconvolution)을 사용해 f의 팩터로 업샘플링을하면 1/f의 스트라이드로 콘볼루션을 진행하는 것과 같은데 end-to-end 학습이 가능하기 때문에 dense prediction이 가능하면서도 속도도 빠르다.
저자들은 ILSVRC 분류기를 사용해 FCN을 업샘플링과 픽셀단위 손실함수로 확장하여 dense prediction을 한다. 픽셀마다 multinomial logistic loss를 계산하고 모든 클래스의 평균 IoU(mean intersection of union)으로 검증한다. 그리고 skip 아키텍쳐를 도입해 의미정보와 지역정보, 대략적인 정보와 구체적인 정보를 통합시킨다.
AlexNet, VGGnets, GoogLeNet을 사용한다. 저자들은 마지막 분류계층을 없애고 콘볼루션으로 대체했다. 21 채널의 1 x 1콘볼루션으로 대략적인(coarse) 출력위치에 있는 PASCAL의 클래스를 예측하였다. 이 층은 업샘플링층에 뒤따른다. 각 모델을 FCN으로 확장한 결과는 table1과 같다.
FCN은 피쳐 계층의 층을 조합하고 출력의 공간적인 정확도를 다듬는다(그림 3 참조).
콘볼루션화된 분류기가 파인튜닝되어 Segmentation 점수가 높아도 출력은 coarse할 수 있다(fig 4). 32픽셀 스트라이드는 업샘플링된 결과의 디테일함에 제한적이다. 저자들은 이를 해결하기위해 마지막 예측 층과 낮은 계층의 작은 stride를 결합한다. 선형적인 학습 순서를 Fig 3의 DAG(Directed Acyclic Graph) 구조로 변경한다. 이를통해 fine 레이어와 coarse 레이어를 합쳐 전체적인 구조(global structure)를 아는 지역적인(local) 예측이 가능하게 한다.
FCN-32s는 출력이 거칠고 세부적이지 않다. 16 픽셀 스트라이드로 반으로 나누고 별도로 1 by 1 콘볼루션을 pool4 다음에 위치시킨다. 이 출력을 업샘플링 레이어인 32 스트라이드 conv7층에 합산한다. 업샘플링은 bilinear intepolation을 한다. stride 16은 원본 크기로 업샘플링되고 FCN-16s이라고 이름 지었는데, end-to-end 학습이 된다. 더 간결한 설명은 reference에서 참고 바랍니다. 설명 굿굿이다!
Skip net을 이용하면 검증 셋에서 3.0 mean IU가 증가해 62.4점이 나온다. 그림 4에서는 출력의 개선이 설명되어있다. 작은 스트라이드 넷과 합쳐지면 거친 segmentation 결과가 더 finer해진다. pool4와 conv7의 결과를 업샘플링(2x)하고 pool3과 합쳐 FCN-8s 네트워크도 만든다(62.7mIoU). 출력에서 디테일과 스무딩함이 개선되었다. 더 낮은 층에서의 결합은 성능 저하가 있어 진행하지 않았다.
VGG16 기반의 모델에서는 이러한 방식의 문제가 있었다. pool5의 stride를 1로 설정하면 콘볼루션화된 fc6이 receptive fields를 유지하기 위해 커널사이즈 14x14를 갖는다. 계산 비용뿐아니라 꽤나 큰 필터를 학습하는 것은 어려웠다고 한다. 작은 필터로 진행해도 결과가 좋지 않았다고 하는데, 이미지넷에서 학습한 가중치(weight)의 초기화에는 더 높은 층의 레이어가 중요하다는 것이다.
저자들은 전체이미지 학습과 패치 샘플링의 트레이드오프(trade-off)를 비교하는 실험도 진행했다. 일반적인 그리드를 사용한 학습에 비해 전체 데이터셋에서 마지막 층의 셀을 1-p의 확률로 랜덤하게 선택하여 샘플링된 패치를 이용한 학습에서 배치가 더 큰 분산(variance)이 있고 수렴하는 것이 더 빠르게 되었다. 효과적인 배치학습을 위해 저자들은 배치당 이미지 수를 1/p의 팩터로 증가시켰다. 그림5의 결과 샘플링 방법은 전체 이미지 학습에 비해 수렴이라는 관점에서 유의미한 효과가 있지는 않았지만 배치마다 더 많은 이미지가 필요했기 때문에 샘플링을 진행하지 않았다.
더 자세한 실험 결과는 논문을 참조바란다.
논문을 자세히 읽고 공부하기 위해 실험 방법, 데이터, 모델 등을 파악하려 할 수록 영어 읽기 능력의 부재, 도메인 지식의 부재 등이 느껴진다. ChatGPT를 이용하지 않으면 더 깊은 이해가 어려운 수준이다.. 블로그나 ChatGPT 덕분에 더 깊은 공부가 가능하지만 한편으로는 내 역량에 대한 아쉬움도 남는다.
Reference
https://arxiv.org/abs/1411.4038
https://wikidocs.net/147359
'papers' 카테고리의 다른 글
U-Net: Convolutional Networks for Biomedical Image Segmentation (0) | 2025.02.19 |
---|---|
Distilling the Knowledge in a Neural Network (0) | 2025.01.30 |
You Only Look Once: Unified, Real-Time Object Detection (0) | 2024.12.18 |
Deep Residual Learning for Image Recognition (0) | 2024.12.10 |
Learning Deep Features for Discriminative Localization (1) | 2024.11.30 |