>  기사  >  기술 주변기기  >  기초가 전혀 없어도 컨볼루션 신경망의 원리를 이해할 수 있습니다! 매우 상세합니다!

기초가 전혀 없어도 컨볼루션 신경망의 원리를 이해할 수 있습니다! 매우 상세합니다!

WBOY
WBOY원래의
2024-06-04 20:19:27335검색

저자처럼 기술을 사랑하고 AI에 큰 관심을 갖고 있는 친구들은 컨볼루션 신경망에 대해 잘 알고 있을 것이고, 이런 '고급' 이름에 오랫동안 헷갈려 했을 거라 믿습니다. 저자는 오늘 처음부터 컨볼루셔널 신경망의 세계로 들어가겠습니다~ 모두와 공유해보세요!

컨벌루션 신경망에 대해 알아보기 전에 먼저 이미지의 원리를 살펴보겠습니다.

기초가 전혀 없어도 컨볼루션 신경망의 원리를 이해할 수 있습니다! 매우 상세합니다!

이미지 원리

이미지는 컴퓨터에서 숫자(0-255)로 표시됩니다. 각 숫자는 이미지에 있는 픽셀의 밝기 또는 색상 정보를 나타냅니다. 그중에는:

  • 흑백 이미지: 각 픽셀에는 하나의 값만 있으며 이 값은 0(검은색)에서 255(흰색) 사이입니다.

기초가 전혀 없어도 컨볼루션 신경망의 원리를 이해할 수 있습니다! 매우 상세합니다!

  • 색상 이미지: 각 픽셀에는 세 가지 값이 포함되어 있으며 가장 일반적인 것은 RGB(Red-Green-Blue) 모델입니다. 즉, 빨간색, 녹색 및 파란색 빛이 서로 다른 강도로 결합되어 다양한 색상을 생성합니다. 각 색상 채널에는 0부터 255까지 256개의 밝기 레벨이 있으므로 각 색상은 8비트 이진수로 표현될 수 있습니다. 예를 들어 (255,0,0)은 빨간색을 나타내고, (0,255,0)은 녹색을 나타내고, (0) ,0,255)는 파란색을 나타내며, 그 외의 조합은 다양한 색상에 해당됩니다. 컴퓨터에서 컬러 이미지의 데이터 구조는 일반적으로 (너비, 높이, 깊이) 모양의 3차원 배열 또는 텐서입니다. 여기서 깊이는 채널 수입니다. RGB 이미지의 경우 깊이는 3입니다. 즉, 각 픽셀 위치에는 빨간색, 녹색, 파란색 세 채널의 밝기를 나타내는 세 가지 값이 있습니다. 예를 들어, 100*100픽셀 RGB 이미지는 100x100x3바이트의 메모리를 차지합니다.

기초가 전혀 없어도 컨볼루션 신경망의 원리를 이해할 수 있습니다! 매우 상세합니다!

"여기서 "8비트 이진수"를 어떻게 이해합니까?"

RGB 색상 모델에서 각 색상 채널(빨간색, 녹색, 파란색)은 256개의 서로 다른 밝기 레벨을 가질 수 있습니다. 8비트 이진수 표현을 나타냅니다. 8비트 이진수의 최대값은 11111111이며, 10진수로 변환하면 최소값은 00000000입니다.

컨벌루션 신경망 CNN이란 무엇인가요?

CNN이 이력서에 잘 알려진 지원 시나리오를 보도했습니다. 아래 그림과 같이 원래 이미지 크기를 10x10으로 하면 왼쪽 절반은 더 큰 픽셀 값을 가지며 밝은 영역이고 오른쪽 절반은 더 작은 픽셀 값을 가지며 깊이 영역입니다. 중앙의 구분선이 감지할 에지입니다.

"그럼 가장자리를 어떻게 감지하나요?" 이때 아래 그림과 같이 필터(커널이라고도 함)가 나타나는데 커널 크기는 3x3입니다.

필터는 입력 이미지 위로 슬라이드되어 각 영역에서 잠시 멈추고 해당 요소를 곱하고 추가한 다음 원본 이미지의 마지막 영역으로 슬라이드할 때까지 다른 영역으로 슬라이드하여 계산을 계속합니다. 이 과정을 "컨볼루션"이라고 합니다.

기초가 전혀 없어도 컨볼루션 신경망의 원리를 이해할 수 있습니다! 매우 상세합니다!

위 그림에서 볼 수 있듯이 출력 결과는 가운데 부분이 밝은 색, 양쪽 부분이 어두운 색으로 나타나 원본 이미지의 경계가 무너졌음을 나타냅니다. 반영. "그러므로 입력 이미지와 해당 필터의 컨볼루션 연산을 통해 가장자리 감지가 인식된다는 결론을 내릴 수 있습니다." 스트라이드가 1이라는 것은 한 프레임을 슬라이드할 때마다 총 8x8 영역에 머무르게 되므로 최종 출력 결과는 8x8 매트릭스가 된다는 의미입니다.

"그렇다면 컨볼루션 신경망이란 정확히 무엇일까요?"

위에서 에지 검출의 특정 타겟 검출 시나리오를 분석한 후에 CNN(Convolutional Neural Network)이 다양한 필터를 지속적으로 사용한다는 것을 이해하는 것은 어렵지 않습니다. 로컬에서 전체까지 이미지 특징을 추출한 다음 대상을 식별합니다.

신경망에서 이러한 필터의 각 숫자는 매개변수이며, 이는 대량의 데이터로 훈련(즉, 딥러닝 과정)을 통해 얻을 수 있습니다.

CNN의 기본 개념

1. 컨볼루션(Convolution)

(1) 컨볼루션 계산

컨볼루션은 수학적 분석에서 통합 변환 방법으로, 이미지 처리에 사용되는 컨볼루션의 이산형입니다. 컨벌루션 신경망 CNN에서 컨벌루션 계층의 구현은 본질적으로 수학에서 정의하는 상호상관 계산(cross-correlation)이다. 구체적인 계산 과정은 아래 그림과 같습니다.

기초가 전혀 없어도 컨볼루션 신경망의 원리를 이해할 수 있습니다! 매우 상세합니다!그 중:

그림 (a): 왼쪽 그림의 크기는 3×3으로, 입력 데이터가 3×3 차원의 2차원 배열임을 나타냅니다. 가운데 그림의 크기는 2×2로, 2차원 배열임을 나타냅니다. - "컨볼루션 커널"이라고도 알려진 2×2 차원의 배열입니다. 컨볼루션 커널의 좌측 상단을 입력 데이터의 좌측 상단(0,0)에 정렬하고, 두 개의 해당 위치 데이터를 곱한 후 더하여 컨볼루션 출력(25)의 첫 번째 결과를 얻는다.

유추하자면, 그림 (b), (c), (d)는 각각 컨볼루션 출력의 두 번째, 세 번째, 네 번째 출력 결과입니다.

(2) 이미지 컨볼루션 연산

그렇다면 이미지 컨볼루션 연산이란 정확히 무엇일까요? 아래 그림과 같이 컬러 이미지 컨볼루션 과정이 표시됩니다.

기초가 전혀 없어도 컨볼루션 신경망의 원리를 이해할 수 있습니다! 매우 상세합니다!

컬러 이미지의 채널 1(빨간색), 채널 2(녹색), 채널 3(파란색)에는 각각 Kernel1, Kernel2 및 Kernel3을 사용합니다. 각 컨볼루션 커널은 해당 단색 이미지를 슬라이드하고, 각 위치의 작은 영역(커널 크기) 내의 픽셀 값과 컨볼루션 커널의 해당 요소에 대해 점별 곱셈 연산을 수행한 후 이러한 결과를 추가합니다. 값. 그런 다음 각 채널에서 얻은 값을 추가하고 전체 편향을 추가하여 해당 기능 맵에서 값을 얻습니다.

3차원 효과는 아래 그림과 같습니다.

기초가 전혀 없어도 컨볼루션 신경망의 원리를 이해할 수 있습니다! 매우 상세합니다!

2.Padding

위에서 언급한 가장자리 감지의 예를 보면 원본 이미지 크기가 10x10이고 필터링한 후에는 8x8. 또 다른 컨볼루션 작업을 수행하면 6x6이 됩니다... 이 경우 두 가지 단점이 있습니다.

  • 컨볼루션 작업을 수행할 때마다 출력 이미지 크기가 줄어듭니다.
  • 모서리의 픽셀이 줄어듭니다. 또는 가장자리 영역은 출력에서 ​​덜 사용됩니다. 따라서 이미지의 가장자리 위치에 대한 많은 정보를 잃기 쉽습니다.

아래 그림과 같이 왼쪽 상단 모서리에 있는 빨간색 그림자는 하나의 출력에만 닿는 반면, 중간 픽셀(보라색 상자로 표시)에는 겹치는 3x3 영역이 많이 있습니다. 따라서 모서리나 가장자리 영역의 픽셀은 출력에서 ​​덜 사용되며 이미지의 가장자리 위치에 대한 많은 정보를 잃기 쉽습니다.

기초가 전혀 없어도 컨볼루션 신경망의 원리를 이해할 수 있습니다! 매우 상세합니다!

이 문제를 해결하기 위해 일반적으로 컨볼루션 작업 전에 원본 이미지의 가장자리를 픽셀 레이어로 채웁니다. 크기는 12x12이고 볼륨 곱셈 후의 이미지 크기는 원본 이미지와 동일한 크기인 8x8입니다. 이를 통해 원본 이미지의 가장자리 영역에 있는 픽셀을 여러 번 사용할 수 있습니다.

채울 픽셀 수를 선택하세요. 일반적으로 두 가지 옵션이 있습니다.

  • 동일 컨볼루션: 위에서 언급한 것처럼 채우기 및 컨볼루션 후의 이미지 크기는 원본 이미지와 동일합니다.
  • 유효한 컨볼루션: 채우기 작업 없음, 직접 컨볼루션.

3.stride

스트라이드 개념은 서문에서 언급했는데, 원본 이미지에서 필터 필터의 각 슬라이드의 가로, 세로 방향 길이를 나타내는 것으로, 스텝 길이라고도 합니다.

s는 보폭 길이, p는 패딩 길이, 원본 이미지 크기는 nxn, 필터 크기는 fxf라고 가정하면 컨볼루션된 이미지 크기는 다음과 같습니다.

기초가 전혀 없어도 컨볼루션 신경망의 원리를 이해할 수 있습니다! 매우 상세합니다!

4풀링의 본질. 풀링 차원 축소입니다.

컨벌루션 네트워크에서 풀링 계층의 역할: 특징 맵의 매개변수 양을 줄이고, 계산 속도를 높이고, 수용 필드를 늘리는 것, 즉 다운샘플링 작업입니다.

객체 감지에 일반적으로 사용되는 풀링: 최대 풀링 및 평균 풀링.

(1) Max pooling

은 컨볼루션 연산 없이 필터 슬라이딩 영역 내에서 최대값을 취하는 것을 의미합니다. 숫자가 크다는 것은 특정 기능이 감지되고 다른 값은 무시되어 노이즈의 영향을 줄이고 모델 견고성을 향상시킬 수 있음을 의미합니다. "게다가 Max pooling에 필요한 하이퍼파라미터는 필터 크기 f와 보폭 s뿐입니다. 다른 매개변수를 학습할 필요도 없고 계산량이 적습니다.

기초가 전혀 없어도 컨볼루션 신경망의 원리를 이해할 수 있습니다! 매우 상세합니다!

(2) Average pooling

즉, 필터에서 필터 슬라이딩 영역 내의 평균값을 계산합니다.

기초가 전혀 없어도 컨볼루션 신경망의 원리를 이해할 수 있습니다! 매우 상세합니다!5.Shape

다차원 데이터, 특히 이미지 데이터를 다룰 때 Tensorflow와 Pytorch 데이터 Shape에는 차이가 있습니다.

TensorFlow:(batch_size, height, width, in_channels)
  • Pytorch:(batch_size, in_channels, height, width)
  • 여기서:
  • batch_size: 일괄 처리되는 샘플 수입니다.
  • in_channels: 입력 이미지의 채널 수, 컬러 이미지의 경우 일반적으로 3(빨간색, 녹색, 파란색)입니다.
  • 높이와 너비는 각각 이미지의 높이와 너비입니다.

기초가 전혀 없어도 컨볼루션 신경망의 원리를 이해할 수 있습니다! 매우 상세합니다!

위 그림과 같이:

  • 입력 이미지 모양: [높이, 너비, 채널], 즉 [8,8,3], 3채널(R, 지, 비).
  • 컨볼루션 커널 모양: [kernel_height, kernel_width, in_channels, out_channels], 즉 [3,3,3,5], 3개 채널(R, G, B), 출력 채널이 있는 3x3 컨볼루션 커널을 나타냅니다. 숫자는 다음과 같습니다. 5.
  • 출력 이미지 모양: [height, width, out_channels], 즉 [6,6,5], 5개 채널(R, G, B)이 있는 6x6 출력 이미지를 나타냅니다.
out_height = (height - kernel_height + 1) / strideout_width = (width - kernel_width + 1) / stride

8x8 이미지와 3x3 컨볼루션 커널의 경우 출력 크기는 (8 - 3 + 1) / 1 = 6이므로 출력 모양은 [6, 6, 5]이며, 이는 5개의 출력 채널이 있는 6x6 기능 맵을 나타냅니다. .

컨볼루션 커널의 입력 채널 수(in_channels)는 입력 이미지의 채널 수에 따라 결정됩니다. 예를 들어 RGB 형식 이미지의 입력 채널 수는 3입니다.

출력 매트릭스의 채널 수(out_channels)는 컨볼루션 커널의 출력 채널 수, 즉 컨볼루션 커널에 포함된 필터 수에 따라 결정됩니다. 이 예에서 컨벌루션 커널에는 5개의 필터가 있으므로 출력에는 5개의 채널이 있습니다.

6. 활성화 기능

모든 매핑 관계가 선형 관계로 정확하게 표현될 수 있는 것은 아닙니다. 따라서 비선형 매핑을 표현하려면 활성화 함수가 필요합니다.

활성화 함수도 비선형 매핑입니다. 신경망이 선형 연산으로만 쌓이면 복잡한 표현 공간을 형성할 수 없고, 높은 의미 정보를 추출하기 어렵기 때문에 비선형 매핑 관계를 추가할 필요가 있습니다.

(1) 시그모이드 함수

기초가 전혀 없어도 컨볼루션 신경망의 원리를 이해할 수 있습니다! 매우 상세합니다!

기초가 전혀 없어도 컨볼루션 신경망의 원리를 이해할 수 있습니다! 매우 상세합니다!

시그모이드 함수는 특성을 (0,1) 간격으로 압축합니다. 0 끝은 금지 상태이고 1 끝은 활성화 상태입니다. 중간 부분의 그라데이션이 가장 큽니다.

(2) Relu 함수

ReLU(Rectified Linear Unit). 일반적으로 Vanishing Gradient 현상을 완화하는 데 사용됩니다.

기초가 전혀 없어도 컨볼루션 신경망의 원리를 이해할 수 있습니다! 매우 상세합니다!

0보다 작은 부분에서는 값과 기울기가 0이고, 0보다 큰 도함수는 1이므로 시그모이드 함수에서 기울기가 0에 가까워서 발생하는 기울기 소멸 문제를 방지할 수 있습니다.

기초가 전혀 없어도 컨볼루션 신경망의 원리를 이해할 수 있습니다! 매우 상세합니다!

(3) Softmax 함수

여러 객체 범주에 더 일반적으로 사용되는 분류자는 Softmax 함수입니다.

특정 분류 작업에서 Softmax 함수의 입력은 종종 여러 범주의 점수이고 출력은 각 범주에 해당하는 확률이며 모든 범주의 확률 값은 0에서 1 사이입니다. 합계는 1입니다.

Softmax 함수 공식은 다음과 같습니다.

기초가 전혀 없어도 컨볼루션 신경망의 원리를 이해할 수 있습니다! 매우 상세합니다!

여기서 Vi는 i번째 범주의 점수를 나타내고 C는 분류된 전체 범주 수를 나타내며 출력 Si는 i번째 범주의 확률입니다.

CNN 전체 구조

컨볼루션 신경망 CNN은 입력 계층, 컨볼루션 계층, Relu, 풀링 계층, 완전 연결 계층 및 출력 계층으로 구성됩니다.

아래 그림에 표시된 것처럼 컨벌루션 네트워크의 예는 컨벌루션 네트워크의 첫 번째 계층이고 그 다음에는 다른 컨벌루션 계층 또는 풀링 계층이 있으며 마지막 계층은 완전 연결 계층입니다. 이후 레이어는 이미지의 더 큰 부분을 식별하고 이전 레이어는 일반적으로 간단한 기능(예: 색상 및 가장자리)에 중점을 둡니다. 이미지 데이터가 CNN의 레이어를 통해 진행되면서 결국 의도한 객체를 식별할 때까지 객체의 더 큰 요소나 모양을 식별하기 시작합니다.

기초가 전혀 없어도 컨볼루션 신경망의 원리를 이해할 수 있습니다! 매우 상세합니다!

그 중:

  • 입력 레이어: 원본 이미지 데이터를 네트워크에 대한 입력으로 받습니다.
  • 컨볼루션 레이어: 필터와 활성화 기능으로 구성됩니다. CNN의 주요 기능은 샘플 특징을 추출하는 것입니다. 입력 데이터, 필터(또는 컨볼루션 커널) 및 기능 맵으로 구성됩니다. 입력 데이터가 RGB 이미지인 경우 입력이 높이, 너비, 깊이의 3차원을 갖는다는 의미입니다. 필터의 본질은 2차원 가중치 매트릭스로, 이미지의 수용 필드에서 이동하여 특징이 존재하는지 확인합니다. 컨볼루션 연산 과정은 위에서 설명한 바와 같다. 컨벌루션 레이어에 일반적으로 설정되는 하이퍼파라미터에는 필터 수, 스트라이드, 패딩 방식(유효 또는 동일), 활성화 함수 등이 포함됩니다.
  • 풀링 레이어: 본질은 이미지의 로컬 상관 원리를 사용하여 유용한 정보를 유지하면서 데이터 처리량을 줄입니다. 모델 과적합을 방지하는 데 특정 효과가 있습니다.
  • 완전 연결 레이어: 이 레이어의 각 노드는 이전 레이어의 모든 노드에 연결되며, 이전에 추출된 특징을 합성하는 데 사용됩니다. 일반적으로 완전 연결 계층에는 가장 많은 매개변수가 있습니다.
  • 출력 레이어: 완전 연결 레이어의 정보를 기반으로 가장 높은 확률로 결과를 얻습니다.

CNN의 장점

기존 신경망과 비교하여 CNN은 로컬 연결, 가중치 공유 등의 장점이 있어 학습하는 매개변수의 양이 크게 줄어들고 네트워크가 더 빠르게 수렴됩니다.

  • 부분 연결: 특징 맵의 각 출력 값은 입력 이미지의 모든 픽셀 값에 연결될 필요가 없고 적용된 필터의 수용 필드에만 연결하면 되므로 컨벌루션 레이어를 종종 "부분적으로 연결된 레이어"”, 이 특성을 로컬 연결이라고도 합니다.
  • 가중치 공유: 컨볼루션 커널이 이미지에서 이동할 때 가중치는 변경되지 않습니다. 그것이 바로 체중분배입니다.

위 내용은 기초가 전혀 없어도 컨볼루션 신경망의 원리를 이해할 수 있습니다! 매우 상세합니다!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.