이러한 응용 영역에서 convolution는 종종 신호와 픽셀을 더 바람직한 값으로 변환하는 필터로 수행됩니다.
고성능 컴퓨팅에서, convolution 패턴은 종종 stencil 컴퓨팅으로 불린다. 통화는 일반적으로 각 데이터 요소에 대한 상당한 수의 수학적 작업을 포함한다. 각 출력 데이터 요소는 서로 독립적으로 계산될 수 있으며, 평행 컴퓨팅에 바람직한 특징입니다. 반면, 다소 까다로운 경계 조건으로 출력 데이터 요소들 사이에서 입력 데이터 공유의 수준이 상당히 높습니다. 이것은 convolution를 복잡한 타일링 방법과 입력 데이터 스테이지링 방법의 중요한 사용 사례로 만듭니다.
컨볼루션은 매출 데이터 요소가 이웃 입력 요소의 집합의 중량 합이 되는 배열 작업이다. 중계 수 수 계산에 사용되는 무게는 일반적으로 convolution 커널로 불리는 입력 마스크 배열에 의해 정의됩니다. 우리는 이 마스크 배열을 convolution 마스크로 부릅니다. 같은 convolution 마스크는 일반적으로 배열의 모든 요소에 사용됩니다
아래는 5 요소 convolution mask array M가 7 요소 입력 array N에 적용되는 1D 데이터의 convolution 예제를 보여준다.
이미지 처리 및 컴퓨터 비전에서 입력 데이터는 일반적으로 x-y 공간에 픽셀이 있는 2차원 배열입니다. 따라서 이미지 회전들은 2D 회전입니다. 마스크는 사각형의 배열이 될 필요는 없습니다.
1 1D에서 2D의 돌이
1차원 구슬을 아시죠?
- 입문: 1D 배열 (예를 들어, `[x0, x1, x2, ...)
- 원: 작은 1D 배열 (예를 들어,
[w0, w1, w2]) - 운동: 코 kernel를 슬라이드하고 중량 수를 가져오십시오.
** 이미지**에 대해서는 입력값은 2D (높이 × 너비) 입니다.
- 입입: 피클스의 매트릭스, 모양
H × W - ** 커널:** 작은 매트릭스, 예를 들어
3 × 3또는5 × 5 - 운동: 이미지 각
3 × 3패치 위에 커널을 배치, 요소를 곱하여, 합 → 하나의 출력 픽셀.
이건 이미 알고 있는 것과 같은 생각이지만
- 배열 → 2D 배열 (매트릭스)
- 2D에 이웃 요소 → 이웃 픽셀
2 여러 채널 (예를 들어, RGB)
실제 사진은 2D 뿐만 아니라 종종 채널을 가지고 있습니다.
- 형태:
H × W × C(예를 들어, R, G, B에 대해C = 3). - 그러면 kernel 또한 깊이를
C:- 형태:
kH × kW × C.
- 형태:
이 되는 단계:
- 한 위치에서는 작은 큐브를
kH × kW × C kH × kW × C를 원자로 곱하기- 모든 값 → 1 숫자를 합시다 (이 위치에서 하나의 출력 채널 값).
개념적으로: 공간 + 채널에 대한 3D 회전 **, 하지만 여전히 이웃의 중량 합만
3 필터 (원 kernel) 및 특징 지도
CNN에서, 당신은 한 개의 커널을 사용하지 않습니다. 당신은 ** 많은 **:
F다른 커널을 사용한다고 가정해보자.- 각 커널은
kH × kW × C_in의 모양을 가지고 있습니다. - 각 커널은 ** ** 기능 지도로 불리는 ** 하나의 출력 채널을 생성합니다.
입력 형태가
H × W × C_in,
F 커널을 사용하면 출력 형태는 다음과 같습니다
H_out × W_out × F.
각 F 출력 채널은 다른 패턴을 담고 있습니다.
- 한 커널은 ** 가장자리**, 다른 ** 코너**, 다른 ** 텍스처** 등을 감지하는 것을 배울 수 있습니다.
생각해보세요. ** CNN 레이어 = 입력값에 여러 가지 다른 회전 (필터) 를 적용한다.
4 발걸음 및
더 많은 2개의 배열 관련 세부 사항:
- ** 단계:** 각 단계에 얼마나 멀리 핵을 이동하는지.
- 단계 1: 한 번에 1 픽셀을 이동합니다 → 밀집 출력.
- 단계 2: 다른 모든 픽셀을 더 작은 출력으로 건너뛰십시오.
- ** :** 이미지 경계 주변에서 0을 추가합니다.
- 이 없으면 출력이 작아집니다.
- 을 사용하면 같은 높/폭을 유지할 수 있습니다.
수학적으로, 그것은 여전히 그냥 점 점 제품과 창을 슬라이딩하지만,
- 얼마나 멀리 슬라이드 (발걸음)
- 국경 정보 (패딩) 를 잃는 것
5 비선형성: 활성화 기능을 추가
지금까지 모든 것이 직선적입니다. 중계된 금액입니다. CNN층은 ** 비선형성을** 추가합니다:
- convolution 후, 요소로 활성화 함수를 적용 (예를 들어,
ReLU(x) = 최대(0, x)).
그래서 하나의 conv 층은:
- 회전 (선형 중량 수모)
- 활성화 (무선형)
이 조합은 CNN가 복잡한 비선형 지도를 배울 수 있게 해줍니다.
6 겹겹 → 깊은 특징 계층
전체 CNN는 단지 ** 많은 층**의:
- → 활성화 (→ 때로는 )
직관:
- ** 초기 층**: 간단한 것들을 감지합니다 (한쪽, 부스러).
- 중층: 그 양식을 텍스처, 모양으로 결합한다.
- ** 후층**: 모양을 객체 부분과 객체로 결합한다.
이 모든 것은 여전히 같은 원시적인 것으로 만들어졌습니다. **지역 이웃을 파악하고 중량 금액을 계산합니다.
7 완전히 연결된 (밀도가 높은) 층에 연결
** 완전 연결된 층**은 또한 단지 중량 수량입니다:
- 입력: 1D 벡터
- 출력 단위 = (중중 × 입력) + 편향의 합.
차이점:
- 밀집층: 모든 출력 단위에서는 **** 입력 요소가 모두 사용된다.
- Conv 계층: 각 출력 단위는 ** 로컬 이웃** (스파스 연결) 을 사용하며 ** 포지션들 사이 중량을 공유합니다.
CNN를 이렇게 볼 수 있습니다.
- convolution를 사용하여
- 위치 (가근 피클러가 더 중요)
- 무게 공유 (모든 위치에서 동일한 커널)
- 전체 이미지에 밀도가 높은 층보다 적은 매개 변수입니다.
결론: 단순 한 운영 에서 강력 한 네트워크 로 이어지는 것
"At each position, take neighbors and compute a weighted sum with a kernel,"
그럼 여러분은 이미 CNN의 핵심에 대해 이야기하고 있습니다.
CNN는 그 간단한 블록을 가지고
- 1D 매트리에서 2D/3D 텐서로 확장합니다.
- 풍부한 특징 지도를 생성하기 위해 여러 개의 커널을 병렬로 적용합니다.
- 순수 선형성을 피하기 위해 비선형성을 추가합니다.
- 각 단계에 더 추상적인 구조가 나타나도록 많은 그런 층을 쌓아두십시오.
CNN의 마법은 새로운 종류의 수학이 아닙니다. 그것은 강력한 시각적 표현을 배울 수 있는 깊은 건축으로 많은 작은, 지역적, convolution 작업의 구성입니다.