이러한 응용 영역에서 convolution는 종종 신호와 픽셀을 더 바람직한 값으로 변환하는 필터로 수행됩니다.
고성능 컴퓨팅에서, convolution 패턴은 종종 stencil 컴퓨팅이라고 불린다. 컨볼루션은 일반적으로 각 데이터 요소에 대한 상당한 수의 수학적 작업을 포함합니다. 각 출력 데이터 요소는 서로 독립적으로 계산될 수 있으며, 평행 컴퓨팅에 바람직한 특징입니다. 반면, 다소 어려운 경계 조건의 출력 데이터 요소들 사이에서 입력 데이터 공유의 수준이 상당히 높습니다. 이것은 convolution를 정교한 타일링 방법과 입력 데이터 스테이징 방법의 중요한 사용 사례로 만듭니다.
컨블루션은 매출 데이터 요소가 이웃 입력 요소의 집합의 중량 합이 되는 배열 작업이다. 중량 수수의 계산에 사용되는 무게는 일반적으로 convolution kernel라고 불리는 입력 마스크 배열에 의해 정의됩니다. 우리는 이 마스크 배열을 convolution 마스크라고 부를 것입니다. 같은 convolution 마스크는 일반적으로 배열의 모든 요소에 사용됩니다
아래는 5 요소 convolution mask array M가 7 요소 입력 array N에 적용되는 1D 데이터의 convolution 예제를 보여준다.
이미지 처리 및 컴퓨터 비전에서 입력 데이터는 일반적으로 x-y 공간에 픽셀이 있는 2차원 배열입니다. 따라서 이미지 회전들은 2차원 회전입니다. 마스크는 사각형이 될 필요는 없습니다.
1. 1차원에서 2차원 회전
1차원 구슬을 아시죠?
- 입력: 1D 배열 (예를 들어,
[x0, x1, x2, ...]) - 커널: 작은 1D 배열 (예를 들어,
[w0, w1, w2]) - 동작: 는 커널을 슬라이드하고 중량 수를 가져간다.
이미지에 대한 입력값은 2D (높이 × 너비) 입니다.
- 입력: 픽셀의 매트릭스, 모양
H × W - 커널: 작은 매트릭스, 예를 들어
3 × 3또는5 × 5 - 동작: 은 이미지의 각
3 × 3패치 위에 커널을 배치하고, 요소를 곱하여, 합 → 하나의 출력 픽셀을 넣습니다.
이 아이디어는 이미 알고 있는 것과 같지만
- 배열 → 2D 배열 (매트릭스)
- 2D에 이웃 요소 → 이웃 픽셀
2. 여러 채널 (예를 들어, RGB)
실제 영상은 2D 뿐만 아니라 채널을 가지고 있습니다.:
- 형태:
H × W × C(예를 들어, R, G, B에 대한C = 3). - 그럼 커널은 도 깊이를 가지고 있습니다
C:- 형태:
kH × kW × C.
- 형태:
컨볼루션 단계:
- 한 입장에선 작은 큐브를 가져가야 합니다.
kH × kW × C. - 커널과 함께 요소를 곱하기
kH × kW × C. - 모든 값 → 1 숫자를 합시다 (그 위치에서 하나의 출력 채널 값).
그래서 개념적으로: 3D 컨볼루션 우주 + 채널, 하지만 여전히 중형 이웃의 합
3. 필터 (핵) 및 특징 지도
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) = max(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는 그 간단한 블록을 가지고:
- 1차원 배열에서 2차원 3차원 텐서로 확장합니다.
- 풍부한 특징 지도를 생성하기 위해 여러 가지 다른 커널을 병렬로 적용합니다.
- 순수한 선형성을 피하기 위해 비선형성을 추가합니다.
- 각 단계에 더 추상적인 구조를 볼 수 있도록 많은 그런 층을 쌓아두십시오.
CNN의 마법은 새로운 종류의 수학이 아닙니다. 그것은 강력한 시각적 표현을 배울 수 있는 깊은 건축으로 많은 작은, 지역적, convolution 작업의 구성입니다.