NIPS 2017년 논문
저자 : Sara Sabour, Nicholas Frosst, Geoffrey E. Hinton
논문 : https://arxiv.org/pdf/1710.09829
2017년 Google Brain의 Geoffrey E. Hinton이 발표한 Object Recognition 분야의 새로운 접근방법을 제안한 논문이다. 기존의 Object Recognition모델들은 Convolution Network를 기반으로 설계되어있다. Convolution Network는 feature extracting - max pooling 로 이루어져있다. 여기서 maxpooling의 정보손실 문제를 지적하며 CapsuleNet를 소개했다.
1. 개념이해
Invariance vs. Equivariance
Translation-invariance / equivariance는 이미지 처리의 다양한 CNN Architecture 소개에 자주 등장하는 개념이다.
- Invariance는 input x에 약간의 변형을 가해도 같은 결과값을 출력해주는 함수를 말한다.
- translation-invariance란 이미지 내에 고양이가 어디에 있든 이동에 불변하게, 동일하게 "cat"이라고 classification할 수 있는 특징을 말한다.
- CNN은 Translation-Invariance하여, 고양이가 오른쪽에 있는지 혹은 왼쪽에 있는지를 구분하지 못한다.
- Equivariance는 $f(x)= x$ 와 같이 입력 $x$값에 따라 출력값이 변하는 것을 말한다. 우측의 그림 처럼 함수 f는 입력 이미지에 따라 서로 다른 이미지를 출력하고 있다.
Rendering
- 렌더링 (rendering) : 표현하고자하는 도형의 정보를 주고 컴퓨터 그래픽으로 표현하는 과정
- Inverse Rendering : 이미지 entity의 정보를 벡터형태로 표현할 수 있는 방법을 찾는 과정
*본 논문에서 각 entity의 정보들을 의미하는 숫자는 instantiation parameter 라고 지칭한다.
*Capsule Network는 간단하게 Inverse Rendering를 하는 네트워크로 생각하면 된다.
CapsNet 개념
Capsule Network(CapsNet)는 일반적인 딥러닝 신경망처럼 여러 개의 층으로 구성되어 있지만, 기존 CNN과 다르게 Capsule(캡슐)이라는 개념을 사용하여 이미지의 특징을 더욱 정교하게 표현할 수 있다.
Capsule이란?
기존 CNN은 하나의 특징이 있는지 없는지를 스칼라 값으로 표현했지만 Capsule은 백터 형태의 단위를 가진다. 캡슐에는 2가지 정보를 담고 있다.
- Instantiation Parameter (인스턴스화 파라미터)
- 객체의 특징 정보(위치, 크기, 방향, 기울기, 두께 등)를 포함하는 값.
- 예를 들어, 숫자 "6"을 인식할 때, 이 숫자가 오른쪽으로 기울어져 있는지, 크기가 작은지, 두껍게 쓰여 있는지를 나타냄.
- Length of Vector (벡터의 길이 = 존재 확률)
- 벡터의 길이(Magnitude) 는 해당 객체가 존재할 확률을 나타냄.
- 길이가 1에 가까울수록 해당 객체가 이미지 안에 존재할 가능성이 높음.
- 길이가 0에 가까울수록 해당 객체가 존재하지 않음.
CapsNet 해결하고자 하는 문제?
CapsNet에서 Capsule을 사용할 때 두 가지 주요한 문제점이 발생합니다.
- 서로 다른 차원의 Capsule 간 Forward Propagation
- 일반적인 CNN에서는 레이어 간 뉴런이 1:1 또는 일부 뉴런만 연결되지만, CapsNet에서는 서로 차원이 다른 Capsule끼리 연결되어야 해서 Affine Transformation (선형 변환) 을 사용하여 차원을 맞춰주는 과정이 필요함.
- Capsule 벡터의 길이를 [0,1] 범위로 변환
- 기존 CNN에서 ReLU나 Sigmoid를 이용해 뉴런 출력을 조정하듯이, Capsule의 벡터 길이를 일정한 범위(0~1)로 제한하는 과정이 필요함.
→ 두가지 문제를 해결하기 위해 CapsNet에서는 Capsule 간의 Dynamic Routing을 사용
2. Dynamic Routing Algorithm
Hyperparameter : r (routing을 몇번할지)
Squash Function
일반적인 CNN에서는 ReLU나 Sigmoid 같은 활성화 함수를 사용하지만, Capsule은 벡터 단위로 정보를 처리하기 때문에 기존 방식과 다르게 Squash Function을 사용하게 됩니다.
Squash Function은 벡터의 방향을 유지하면서 vector의 길이를 0과 1사이로 조정해주는 역할을 한다.
$\mathbf{v}_j= squash(s_j) = \frac{\left\|\mathbf{s}_j\right\|^2}{1+\left\|\mathbf{s}_j\right\|^2} \frac{\mathbf{s}_j}{\left\|\mathbf{s}_j\right\|}$
$\mathbf{v}_j \in [0, 1]$
$\mathbf{v}_j$ is the vector output of capsule $j$ and $s_j$ is its total input
캡슐 벡터의 길이를 확률처럼 해석할 수 있으며, 존재 가능성이 높은 객체는 길이가 커지고, 가능성이 낮은 객체는 길이가 작아진다.
Dynamic Routing : 캡슐간 Agreement
기존 CNN에서는 Max Pooling을 사용해 중요한 특징을 추출했지만, 이는 위치 정보를 일부 잃어버리는 단점이 있었습니다. CapsNet에서는 Routing by Agreement를 사용하여 비슷한 정보를 가진 캡슐끼리 더 강한 연결을 맺도록 학습한다.
예를들어 : "보트(Boat)"와 "집(House)" 이라는 객체를 인식하고 싶다고 가정
- 보트와 집을 인식하기전 레이어에는 사각형(Rectangle)과 삼각형(Triangle)을 인식하는 캡슐이 필요
- 사각형과 삼각형의 캡슐 벡터는 각각 instantiation parameter가 3개 필요해서 3차원 벡터를 사용하고 보트와 집을 표현하는 상위 캡슐은 instantiation parameter가 5개 필요해서 5차원 벡터가 필요하다고 가정
- 선형변환을 하기위해 Weight Matrix $\mathbf{W}_{i j}$ 를 사용하여 3차원 백터를 5차원 백터로 변환한다
- 변환(내적)된 벡터는 각 캡슐이 보트인지, 집인지 예측하는 “Prediction Vector” $\hat{\mathbf{u}}_{j \mid i}$가 된다
- $\hat{\mathbf{u}}_{j \mid i}=\mathbf{W}_{i j} \mathbf{u}_i$
Agreement를 이용한 최종 캡슐 결정
변환된 예측 벡터들이 실제로 어떤 캡슐과 유사한지를 판단해야 한다.
- 위 이미지에서 1, 2번 캡슐의 예측 결과는 비슷하지만, 3, 4번 캡슐의 예측 결과는 실제와 다르다. 1, 2번째 capsule 끼리 agreement가 있다고 표현한다.
Softmax 가중합을 사용한 최종 벡터 $s_j$ 계산 (모든 예측 백터 $\hat{\mathbf{u}}_{j \mid i}$ 를 조합하여 최종 캡슐 백터를 결정)
$\mathbf{s}_j=\sum_i c_{i j} \hat{\mathbf{u}}_{j \mid i} $
$s_j = c_1 \hat{u}_{j \mid 1}+c_2 \hat{u}_{j \mid 2}+c_3 \hat{u}_{j \mid 3}+c_4 \hat{u}_{j \mid 4} v_j$
- 여기서 $c_{ij}$는 softmax를 적용한 가중치 $b_{ij}$값
- Softmax를 사용하면 비슷한 예측끼리 가중치가 커지고, 그렇지 않은 경우 가중치가 작아지는 효과가 발생 ($v_j$는 이전 layer 캡슐들의 가중합인데 이전 layer에서 capsule끼리 agreement가 많았다면 $v_j$의 모양은 같은 agreement를 가졌던 capsule들의 모양과 비슷해질 것이다.)
(1) Agreement많은 캡슐
(2) Agreement 적은 캡슐
- 여러 캡슐이 "이건 분명히 집이다!" 라고 일치된 예측을 하면 → 가중치 증가
- 캡슐들 간 예측이 다르면 → 가중치 감소
과정을 여러 번 반복하면서 가장 신뢰할 수 있는 캡슐 벡터가 활성화된다.
가중치 업데이트 과정
가중치 $b_{ij}$는 이전 레이어의 캡슐 백터가 다음 레이어의 캡슐과 얼마나 Agreement(같은지)를 학습하는 과정에서 업데이트 된다.
$b_{i j} \leftarrow b_{i j}+\hat{u}_{j \mid i} \cdot v_j$
$\hat{u}_{j \mid i}$ 와 $v_j$의 내적은 각도가 비슷할수록 커지게된다. $b_{ij}$를 업데이트하는 과정에서 이전 layer 캡슐의 예측 벡터와 다음 layer의 캡슐의 내적합으로 update가 되는데 비슷한 캡슐의 가중치는 계속 커지게되고 덜 비슷한 캡슐의 가중치는 작아지면서 업데이트하게 된다. Routing Algorithm은 기존의 Network들처럼 feed forward으로 값을 전달하는 것이아닌 각 레이어마다 내부에서 반복적으로 Routing이 일어나게된다. 각 Layer사이에서 Routing이 반복적으로 일어나게되면 Fully Connected 형태가 아니게되고 agreement한 capsule끼리 새로운 다음 layer capsule을 만들어나가게 된다.
3. Capsule Network Architecture
4. Margin Loss
Capsule Network에서 instantiation 백터의 길이는 특정 객체 (Mnist : 숫자)가 존재할 확률을 나타낸다. 따라서 최상위 레이어의 캡슐이 특정 숫자 $k$를 인식할 때, 그 숫자가 실제로 이미지에 존재하는 경우에만 벡터 길이가 길어지도록 학습해야 한다.
$L_k=T_k \max \left(0, m^{+}-\left|v_k\right|\right)^2+\lambda\left(1-T_k\right) \max \left(0,\left|v_k\right|-m^{-}\right)^2$
- $T_k = 1$ 숫자 k가 존재하면 활성
- $m^+ = 0.9, m^- = 0.1$ 마진 설정 값
- $\lambda = 0.5$ : 존재하지 않는 숫자에 대한 손실을 줄이기 위한 가중치.
의미 :
- 특정 숫자가 존재하면, 해당 캡슐의 벡터 길이가 0.9 이상이 되도록 학습. 특정 숫자가 존재하지 않으면, 해당 캡슐의 벡터 길이가 0.1 이하가 되도록 학습. $\lambda$ 를 통해 존재하지 않는 숫자의 영향력을 조절하여 초기 학습 시 모든 캡슐의 벡터 길이가 과도하게 줄어드는 것을 방지.
5. Decoder
Decoder구조는 Capsule Net의 출력값을 입력으로 받아 원본 이미지를 재구성하고 세개의 Fully Connected Layer를 거치게 된다. Decoder는 재구성 손실(MSE)을 최소화하도록 학습한다.
Loss = Margin Loss + $\alpha$ reconstruction loss
$\alpha$ = 0.0005
6. Capsule Network 결과
- Reconstruction : CapsNet은 Reconstruction 잘한다
- CNN vs. CapsNet : CapsNet은 CNN보다 정확도 높으면서 모델이 가볍다
- MultiMNIST Dataset : 겹쳐진 object도 잘 구별 해낸다 MultiMNIST dataset은 연구진들이 직접 만든 데이터로 MNIST data의 서로다른 2개의 숫자를 최대 80%이상 겹쳐지도록 만든 데이터이다
7. Capsule Network 장단점
장점
- MNIST 데이터셋에서 높은 정확도를 달성.
- 적은 양의 학습 데이터로도 효과적으로 학습할 수 있다.
- 위치 자세 정보가 보존이 되고 Equivariance 을 유지할 수 있다.
- 이미지 분할(Image Segmentation) 및 객체 탐지(Object Detection)에서 좋은 가능성을 보여준다.
- 캡슐 간 Routing by Agreement 방식은 겹쳐진 객체를 잘 구분한다.
- Affine 변환(크기, 회전 등)에 대한 Robustness 을 제공한다.
단점
- Routing Algorithm으로 인해 학습 속도가 느리다
- 실제 RGB채널의 Image에 대해서(예를들면 CIFAR10) 월등하게 좋은 성적을 거두지 못한다.
- CapsNet의 문제점은 이미지의 모든것들을 capsule화 화려고 하기 때문에 오히려 예측에 방해가 된다고 한다. 인간에게도 일어나는 Crowding효과가 Capsnet에서도 발생한다.
- 큰 사이즈의 이미지에대해서도 잘 동작할지 모른다
Novelty (새로운점) & Contribution (학문적기여)
- Equivariance 개념 도입 : CNN이 학습하는 Invaraince대신 Equivariance를 학습하여 객체의 위치, 방향, 크기 변화에도 모델 성능이 좋음
- Routing by Agreement 알고리즘 : CNN의 단순한 활성화 함수와 달리 하위캡슐의 예측 벡터가 서로 일치라는 정도에 따라 상위 캡슐의 활성화를 조절
- Max Pooling 제거 : CNN의 Max Pooling이 정보 소실을 초래하는 문제를 해결하기 위해 캡슐 구조를 활용하여 전체적인 특징을 유지하면서 중요한 정보를 전달할 수 있도록 함.
'Computer Vision' 카테고리의 다른 글
[2025-1]전윤경 - VoxelNet: End-to-End Learning for Point Cloud Based 3D Object Detection (0) | 2025.03.07 |
---|---|
[2025-1] 임수연 - SPVNAS (0) | 2025.03.07 |
[2025-1] 김유현 - Wasserstein GAN (0) | 2025.02.28 |
[2025-1] 전연주 - VoteNet: Deep Hough Voting for 3D Object Detection in Point Clouds (0) | 2025.02.26 |
[2025-1] 박서형 - DemoFusion: Democratising High-Resolution Image Generation With No $$$ (0) | 2025.02.22 |