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

Convolution

합성곱은 작은 가중치 커널을 입력 위로 이동시켜 CNN의 핵심 연산인 특성 맵을 생성합니다. 스트라이드, 패딩, 변형을 다룹니다.

컨볼루션은 커널 또는 필터라고 하는 작은 가중치 격자를 입력 위에서 이동시키며 각 위치에서 가중합을 계산하는 연산입니다. 컴퓨터 비전(CV)에서 입력은 이미지 또는 특징 맵의 스택이며, 각 커널은 수직 에지, 텍스처 패치 또는 네트워크의 더 깊은 층에서 바퀴나 얼굴의 일부와 같은 패턴이 나타나는 위치에서 높은 값을 갖는 출력 맵을 생성합니다. 손으로 설계한 커널은 블러링, 샤프닝 및 에지 검출을 위한 이미지 처리에 오랫동안 사용되어 왔습니다. 합성곱 신경망(CNN)에서는 학습 중에 커널 값이 모델 가중치로 학습되므로 네트워크가 자체 특징 검출기를 발견합니다.

컨볼루션 작동 방식#

각 위치에서 커널을 입력의 패치 위에 놓고, 각 커널 가중치에 그 아래에 있는 입력 값을 곱한 다음, 곱의 합에 편향을 더해 출력값 하나를 만듭니다. 커널을 높이와 너비 전체에 걸쳐 이동하면 2차원 출력 맵이 생성됩니다. 실제 입력에는 이미지의 빨강, 초록, 파랑 채널처럼 여러 채널이 있으므로 각 커널은 모든 입력 채널을 포함합니다. 64채널 입력에 대한 3×3 커널은 3 × 3 × 64 = 576개의 가중치를 가지며 출력 채널 하나를 생성합니다. 컨볼루션 계층은 이러한 커널을 여러 개 적용하며, 커널 수가 출력 채널 수를 결정합니다. 따라서 3×3 커널을 사용하는 64채널에서 128채널로의 계층에는 3 × 3 × 64 × 128 = 73,728개의 가중치가 있습니다.

같은 커널을 모든 위치에서 재사용하므로 컨볼루션 계층은 완전 연결 계층보다 훨씬 적은 파라미터가 필요하며, 이미지 한쪽 모서리에서 학습한 패턴을 다른 모든 위치에서도 인식할 수 있습니다. 입력을 이동하면 출력도 같은 만큼 이동하는데, 이를 이동 등변성이라고 합니다. 각 출력값은 입력의 작은 주변 영역에만 의존하며, 계층을 쌓으면 심층 출력값이 요약하는 수용 영역이 몇 픽셀에서 이미지 대부분으로 확장됩니다.

딥러닝 라이브러리는 실제로 상호 상관을 계산합니다. 수학적 컨볼루션은 커널을 뒤집은 뒤 이동시키지만 PyTorch의 Conv2d는 그렇게 하지 않습니다. 커널은 학습되므로 네트워크가 뒤집힌 가중치를 학습할 뿐이며, 실제로는 두 연산을 서로 바꿔 사용할 수 있습니다. cuDNN과 같은 GPU 라이브러리는 보통 컨볼루션을 대규모 행렬 곱셈으로 재구성하거나 Winograd 또는 FFT 기반 알고리즘을 사용해, 커널을 그대로 이동시키는 것보다 빠르게 같은 결과를 계산합니다.

스트라이드, 패딩, 팽창 및 그룹#

네 가지 하이퍼파라미터가 컨볼루션 출력의 형태와 연산 비용을 제어합니다:

  • 스트라이드: 커널 위치 사이의 간격입니다. 스트라이드가 2이면 위치를 하나씩 건너뛰어 출력의 높이와 너비가 절반으로 줄어듭니다. 이는 많은 최신 CNN이 다운샘플링하는 방식입니다.
  • 패딩: 입력 테두리 주위에 추가하는 값으로, 보통 0을 사용합니다. 패딩을 1로 설정하면 스트라이드 1에서 3×3 컨볼루션의 출력 크기가 입력과 같아집니다.
  • 팽창: 커널의 탭 사이에 간격을 둡니다. 따라서 팽창이 2인 3×3 커널은 동일한 9개 가중치로 5×5 영역을 포함해 추가 비용 없이 수용 영역을 확장합니다.
  • 그룹: 채널을 서로 독립적인 그룹으로 분할합니다. 채널마다 그룹을 하나씩 두면 깊이별 컨볼루션이 각 채널을 따로 필터링하고, 이어지는 1×1 점별 컨볼루션이 채널을 혼합합니다. 이 두 연산을 결합한 깊이별 분리 컨볼루션은 모바일 하드웨어용으로 MobileNets가 널리 알렸습니다.

입력 크기가 n, 커널 크기가 k, 패딩이 p, 스트라이드가 s, 팽창이 d일 때 출력 크기는 ⌊(n + 2p − d(k − 1) − 1) / s⌋ + 1입니다. 아래 코드 조각은 각각 64채널, 80×80 특징 맵을 128채널로 매핑하는 네 개의 계층을 적용합니다:

import torch
from torch import nn

x = torch.randn(1, 64, 80, 80)  # a 64-channel, 80x80 feature map

# Four ways to map 64 input channels to 128 output channels
layers = {
    "standard 3x3": nn.Conv2d(64, 128, kernel_size=3, padding=1, bias=False),
    "stride 2": nn.Conv2d(64, 128, kernel_size=3, stride=2, padding=1, bias=False),
    "dilation 2": nn.Conv2d(64, 128, kernel_size=3, padding=2, dilation=2, bias=False),
    "depthwise separable": nn.Sequential(
        nn.Conv2d(64, 64, kernel_size=3, padding=1, groups=64, bias=False),  # one 3x3 filter per channel
        nn.Conv2d(64, 128, kernel_size=1, bias=False),  # 1x1 convolution mixes channels
    ),
}
for name, layer in layers.items():
    params = sum(p.numel() for p in layer.parameters())
    print(f"{name}: output {tuple(layer(x).shape)}, {params:,} weights")

표준 계층은 가중치 73,728개로 (1, 128, 80, 80)을 출력합니다. 스트라이드 2는 가중치 수는 그대로 유지하면서 출력을 (1, 128, 40, 40)로 절반 축소하며, 팽창 2는 80×80 크기와 가중치 73,728개를 유지하면서 각 출력이 5×5 영역을 보도록 합니다. 깊이별 분리 연산 쌍은 가중치 8,768개만으로 동일한 (1, 128, 80, 80) 출력을 생성해 약 8.4배 적은 가중치를 사용합니다. YOLO26은 두 가지 아이디어를 모두 사용합니다. 스트라이드 2의 3×3 컨볼루션 다섯 개가 640×640 이미지를 가장 깊은 백본 특징 맵의 20×20 그리드로 축소하고, 검출 헤드의 분류 분기는 깊이별 3×3 컨볼루션과 점별 1×1 컨볼루션을 결합해 연산량을 줄입니다.

다른 차원에서의 컨볼루션#

  • 1D 컨볼루션: 오디오 파형, 센서 신호 및 시계열을 대상으로 단일 축을 따라 이동합니다.
  • 3D 컨볼루션: 의료 영상 분석에서 CT와 MRI 같은 비디오 클립 및 체적 스캔을 처리하기 위해 깊이 또는 시간 축을 추가합니다.
  • 전치 컨볼루션: 각 입력값을 더 큰 출력 영역에 펼쳐 U-Net과 같은 세그멘테이션 모델의 특징 맵을 업샘플링합니다. 학습된 자체 가중치를 사용해 스트라이드 컨볼루션으로 줄어든 공간 크기를 복원합니다.
  • 완전 연결 계층: 자체 가중치를 사용해 모든 입력을 모든 출력에 연결합니다. 컨볼루션은 위치 간 가중치를 공유하면서 연결을 주변의 국소 영역으로 제한한 완전 연결 계층입니다.
  • 풀링: 컨볼루션처럼 윈도우를 이동시키지만, 학습된 가중치 없이 최댓값을 취하는 것과 같은 고정 규칙을 적용합니다.
  • 셀프 어텐션: 모든 위치 쌍 사이의 데이터 의존적 가중치를 계산하므로 한 계층에서 이미지의 멀리 떨어진 부분을 연결합니다. 컨볼루션은 어디서나 동일한 고정 커널을 적용하고 국소 윈도우만 처리하므로 픽셀 수에 선형으로 비례하는 연산 비용을 유지합니다.
  • 이미지 필터링: 가우시안 블러 및 Sobel 에지 검출기 같은 기존 필터는 손으로 설계한 고정 커널을 사용하는 컨볼루션입니다. OpenCV의 filter2D도 딥러닝 라이브러리와 동일하게 상호 상관을 계산하며, 커널을 뒤집으면 실제 컨볼루션이 됩니다.

솔루션 살펴보기

스포츠 분야의 컴퓨터 비전

스포츠 분야의 컴퓨터 비전

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의 미래를 만들어 가세요!

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