Ultralytics YOLO27: 대기자 명단에 등록하세요.
YOLO 라이선스 받기
Ultralytics 용어집으로 돌아가기

Capsule Networks (CapsNet)

캡슐 네트워크(CapsNets)는 각 부분을 벡터로 표현합니다. 벡터의 길이는 해당 부분일 확률을 나타내고 방향은 자세를 나타내며, 동적 라우팅으로 연결됩니다.

캡슐 네트워크 (CapsNets)는 캡슐로 구성된 신경망입니다. 캡슐은 출력이 단일 숫자가 아니라 벡터인 작은 뉴런 그룹입니다. 캡슐 벡터의 길이는 숫자, 눈, 바퀴와 같은 개체가 존재할 확률을 나타내며, 벡터의 방향은 해당 개체의 위치, 크기, 방향, 획 두께를 비롯한 자세 및 변형 매개변수를 인코딩합니다. Geoffrey Hinton, Alex Krizhevsky, Sida Wang은 2011년 자동 인코더 변환에 관한 논문에서 캡슐을 소개했으며, Sara Sabour, Nicholas Frosst, Hinton은 캡슐 간 동적 라우팅에서 캡슐을 실용적인 분류기로 발전시켰습니다. 이 논문은 NIPS 2017에서 발표되었으며, 합의 기반 라우팅이라는 반복 알고리즘을 사용해 연속된 레이어의 캡슐을 연결합니다.

캡슐이 맥스 풀링을 대체하는 이유#

합성곱 신경망 (CNN)은 스칼라 활성화 값으로 특징을 감지하고, 맥스 풀링으로 특징 맵을 축소하는 경우가 많습니다. 맥스 풀링은 각 윈도우에서 가장 강한 응답을 유지하고 해당 응답이 윈도우 안에서 발생한 위치는 버립니다. 이 방식은 작은 이동에 대한 탐지의 강건성을 높이지만, 일부가 존재하는지만 확인하는 네트워크는 입이 눈 위에 있는 얼굴도 받아들일 수 있습니다. 이를 피카소 문제라고 합니다. Hinton은 불변성보다 등변성이 중요하다고 주장했습니다. 물체가 이동하거나 회전하면 캡슐 벡터의 길이, 즉 물체가 존재할 확률은 그대로 유지하면서 벡터의 방향은 물체와 함께 회전해야 합니다. 이렇게 시점 정보를 학습하는 캡슐은 CNN이 새로운 각도에서 물체를 인식하도록 사용하는 데이터 증강을 덜 필요로 합니다.

Ultralytics YOLO26은 캡슐 없이도 물체 위치를 유지합니다. 스트라이드 2인 합성곱 5개가 입력을 원래 해상도의 1/32로 축소하고, 유일한 맥스 풀링 블록인 SPPF는 스트라이드 1에서 5 x 5 윈도우로 세 차례 연속 풀링합니다. 이를 통해 탐지 헤드가 예측하는 그리드를 축소하지 않고 수용 영역을 넓힙니다.

동적 라우팅의 작동 방식#

하위 레이어의 각 캡슐은 출력에 학습된 가중치 행렬을 곱해 상위 레이어에 있는 모든 캡슐의 출력을 예측합니다. 라우팅은 각 하위 캡슐의 출력이 각 상위 캡슐에 얼마나 전달되는지를 결정합니다. 0에서 시작하는 라우팅 로짓에 소프트맥스를 적용해 결합 계수를 구하면 각 하위 캡슐의 출력이 상위 캡슐들에 분배됩니다. 각 상위 캡슐은 해당 계수로 가중한 예측을 합산한 뒤 스쿼시 함수를 적용합니다. 이 함수는 벡터의 방향을 유지하면서 길이를 0에서 1 사이로 매핑합니다. 각 예측과 상위 캡슐의 새로운 출력 사이의 내적을 로짓에 더하므로, 하위 캡슐은 자신이 예측한 상태를 가진 상위 캡슐에 출력을 더 많이 보냅니다.

import torch

torch.manual_seed(0)

# 하위 캡슐 6개가 상위 캡슐 2개에 대해 8차원 자세를 각각 예측합니다.
predictions = 0.2 * torch.randn(6, 2, 8)
pose = 0.5 * torch.randn(8)
predictions[:4, 0] = pose + 0.05 * torch.randn(4, 8)  # 하위 캡슐 0~3은 상위 캡슐 0과 일치합니다.

logits = torch.zeros(6, 2)
for _ in range(3):  # 논문에 제시된 합의 기반 라우팅의 반복 횟수는 3회입니다.
    coupling = logits.softmax(dim=1)  # 각 하위 캡슐은 표를 상위 캡슐들에 나눠 보냅니다.
    s = (coupling.unsqueeze(-1) * predictions).sum(dim=0)
    squared = s.square().sum(dim=-1, keepdim=True)
    parents = squared / (1 + squared) * s / squared.sqrt()  # 스쿼시: 길이는 [0, 1) 범위입니다.
    logits = logits + (predictions * parents).sum(dim=-1)  # 합의가 로짓을 높입니다.

print(coupling[:, 0].round(decimals=2))
print(parents.norm(dim=-1).round(decimals=2))

tensor([0.9700, 0.9700, 0.9700, 0.9700, 0.5700, 0.4700])과 tensor([0.9800, 0.1500])을 출력합니다. 세 번 반복한 뒤 합의한 하위 캡슐 4개는 출력의 97%를 상위 캡슐 0에 보냅니다. 나머지 2개는 거의 균등하게 분배하며, 산발적인 표만 받은 상위 캡슐 1의 벡터 길이는 0.15인 반면 상위 캡슐 0의 벡터 길이는 0.98에 도달합니다. 라우팅은 Transformer의 어텐션 메커니즘을 반대 방향으로 실행하는 방식과 비슷합니다. 소프트맥스는 하위 캡슐이 출력을 보낼 수 있는 상위 캡슐을 대상으로 실행되므로, 상위 캡슐들이 각 하위 캡슐의 출력을 두고 경쟁합니다.

2017년 CapsNet과 그 성능#

원본 네트워크는 얕은 구조입니다. 크기 9 x 9 커널 256개를 사용하는 합성곱이 PrimaryCaps에 입력되고, 합성곱 캡슐 레이어인 PrimaryCaps는 28 x 28 숫자 이미지를 32 x 6 x 6 = 1,152개의 8차원 캡슐로 변환합니다. 라우팅은 각 클래스에 16차원 캡슐 하나씩을 두는 DigitCaps에 캡슐을 연결합니다. 학습은 캡슐 길이에 마진 손실 함수를 적용해 존재하는 숫자의 길이는 0.9보다 높이고 나머지 숫자의 길이는 0.1보다 낮추며, 올바른 숫자 캡슐로부터 이미지를 복원하는 디코더를 함께 사용합니다. 디코더는 자동 인코더 방식의 정규화 항을 적용하며 가중치는 0.0005로 낮춥니다. 16개 차원 중 하나를 교란한 뒤 결과를 디코딩하면 크기, 획 두께, 기울기, 너비와 같은 속성 하나가 달라집니다. 따라서 캡슐 출력은 CNN 활성화보다 해석하기 쉬우며, 이는 설명 가능한 AI가 추구하는 목표와 같습니다.

기준 CNN의 파라미터가 3,540만 개인 데 비해 파라미터 820만 개를 사용한 CapsNet은 MNIST 테스트 오류율 0.25%를 달성해 기준 모델의 0.39%보다 낮았습니다. 평균적으로 경계 상자가 80% 겹치는 숫자 쌍인 MultiMNIST에서는 8.1% 대비 5.2%를 기록했습니다. 최대 2픽셀 이동한 MNIST 숫자만으로 학습했을 때 무작위 아핀 변환을 적용한 같은 숫자로 구성된 affNIST에서 79%의 점수를 얻었으며, 파라미터 수가 비슷한 CNN은 66%를 기록했습니다. CIFAR-10에서는 CapsNet 7개로 구성된 앙상블이 10.6%의 오류율을 기록했습니다. 이는 CNN을 해당 데이터셋에 처음 적용했을 때의 성능과 비슷한 수준이며, 저자들은 캡슐이 복잡한 배경을 처리하려는 점을 성능 차이의 원인으로 설명했습니다.

한계와 후속 캡슐 모델#

라우팅은 모든 하위 캡슐과 상위 캡슐의 쌍에 대해 여러 차례 반복되므로 이미지 크기와 클래스 수가 커지면 연산량과 메모리 사용량이 빠르게 증가합니다. 캡슐 네트워크는 ImageNet과 같은 대규모 이미지 분류 벤치마크에서 CNN이나 비전 Transformer의 성능을 따라잡지 못했습니다. 연구자들은 예를 들어 소규모 학습 세트를 사용하는 MRI 뇌 스캔의 종양 유형 분류와 같은 의료 영상 분석에 캡슐 네트워크를 적용했습니다.

Hinton, Sabour, Frosst가 ICLR 2018에서 발표한 EM 라우팅을 사용하는 행렬 캡슐은 자세 벡터를 4 x 4 자세 행렬로 대체하고 기대값-최대화 알고리즘으로 라우팅했습니다. 여러 시점에서 촬영한 장난감 물체로 구성된 smallNORB 벤치마크에서 이전 최첨단 모델보다 테스트 오류를 45% 줄였으며, 기준 CNN보다 화이트박스 적대적 공격에 더 강했습니다. 2019년에는 레이블 없이 캡슐을 학습하는 적층형 캡슐 자동 인코더가 등장했습니다. Hinton이 2021년에 제안한 GLOM은 동적 라우팅을 전혀 사용하지 않고, 동일한 부분-전체 계층 구조를 서로 일치하는 임베딩 벡터의 섬으로 표현합니다.

솔루션 살펴보기

스포츠 분야의 컴퓨터 비전

스포츠 분야의 컴퓨터 비전

Ultralytics YOLO가 선수 및 공 추적, 경기력 분석, 코칭 인사이트, 선수 재활을 통해 스포츠 비전을 구현하는 방법을 알아보세요.
자세히 알아보기
항공 이미지 컴퓨터 비전

항공 이미지 컴퓨터 비전

Ultralytics YOLO를 활용해 드론 및 항공 이미지를 농업, 양식업, 보전, 지리 공간 분석을 위한 실시간 인사이트로 전환하세요.
자세히 알아보기
항공우주 분야의 컴퓨터 비전

항공우주 분야의 컴퓨터 비전

Ultralytics YOLO를 활용해 항공기 검사, 활주로 FOD 감지, 공항 지상 운영, 복합재 결함 감지 등 항공우주 분야에 컴퓨터 비전을 적용하세요.
자세히 알아보기
보안 분야의 컴퓨터 비전

보안 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 모든 시설을 보호하세요. Vision AI는 경계 모니터링, 위협 감지, 번호판 인식, 작업장 안전을 지원합니다.
자세히 알아보기
로보틱스 분야의 컴퓨터 비전

로보틱스 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 더 스마트한 머신을 구현하세요. 로보틱스 분야의 Vision AI는 자율 주행, 인식, 객체 추적, 실시간 제어를 지원합니다.
자세히 알아보기
물류 분야의 컴퓨터 비전

물류 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 물류를 간소화하세요. 비전 AI는 화물 검사, 분류, 차량 추적, 실시간 창고 안전 모니터링을 지원합니다.
자세히 알아보기
리테일 분야의 컴퓨터 비전

리테일 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 리테일의 새로운 가능성을 열어 보세요. 비전 AI는 재고 추적, 선반 모니터링, 대기열 관리, 더욱 심층적인 고객 인사이트를 지원합니다.
자세히 알아보기
의료 분야의 컴퓨터 비전

의료 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 의료 솔루션을 구축하세요. 의료 분야의 비전 AI는 의료 영상 판독을 가속화하고, 진단을 개선하며, 환자 모니터링을 지원합니다.
자세히 알아보기
제조 분야의 컴퓨터 비전

제조 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 제조 공정을 최적화하세요. 비전 AI는 품질 관리, 결함 탐지, PPE 규정 준수, 조립 라인 자동화를 지원합니다.
자세히 알아보기
자동차 분야의 컴퓨터 비전

자동차 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 자동차 분야에 컴퓨터 비전을 적용하세요. 비전 AI는 도로 안전, 운전자 지원, 차량 자동화를 개선해 더 스마트한 도로를 구현합니다.
자세히 알아보기
농업 분야의 컴퓨터 비전

농업 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 스마트 농업에 비전 AI를 도입하세요. 작물 모니터링, 가축 추적, 정밀 농업을 지원하여 더 높은 수확량과 더 스마트한 농업을 실현합니다.
자세히 알아보기

함께 AI의 미래를 만들어 가세요!

머신러닝의 미래와 함께 여정을 시작하세요