Main Content

이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

imageInputLayer

영상 입력 계층

설명

영상 입력 계층은 신경망에 2차원 영상을 입력하고 데이터 정규화를 적용합니다.

3차원 영상의 경우 image3dInputLayer를 사용하십시오.

생성

설명

layer = imageInputLayer(inputSize)는 영상 입력 계층을 반환하고 InputSize 속성을 지정합니다.

예제

layer = imageInputLayer(inputSize,Name,Value)는 이름-값 쌍을 사용하여 선택적 속성을 설정합니다. 여러 개의 이름-값 쌍을 지정할 수 있습니다. 각 속성 이름을 작은따옴표로 묶습니다.

속성

모두 확장

영상 입력

입력 데이터의 크기로, 정수로 이루어진 행 벡터 [h w c]로 지정됩니다. 여기서 h, w, c는 각각 높이, 너비, 채널 개수입니다.

  • 회색조 영상의 경우 c1인 벡터를 지정하십시오.

  • RGB 영상의 경우 c3인 벡터를 지정하십시오.

  • 다중분광 영상이나 고분광 영상의 경우 c가 채널 개수인 벡터를 지정하십시오.

3차원 영상이나 볼륨 입력의 경우 image3dInputLayer를 사용하십시오.

예: [224 224 3]

데이터가 입력 계층을 통과하여 순방향으로 전파될 때마다 적용할 데이터 정규화로, 다음 중 하나로 지정됩니다.

  • 'zerocenter'Mean으로 지정된 평균값을 뺍니다.

  • 'zscore'Mean으로 지정된 평균값을 빼고 StandardDeviation으로 나눕니다.

  • 'rescale-symmetric'Min으로 지정된 최솟값과 Max로 지정된 최댓값을 사용하여 입력값이 [-1, 1] 범위 내에 오도록 다시 스케일링합니다.

  • 'rescale-zero-one'Min으로 지정된 최솟값과 Max로 지정된 최댓값을 사용하여 입력값이 [0, 1] 범위 내에 오도록 다시 스케일링합니다.

  • 'none' — 입력 데이터를 정규화하지 않습니다.

  • 함수 핸들 — 지정된 함수를 사용하여 데이터를 정규화합니다. 함수는 Y = func(X) 형식이어야 합니다. 여기서 X는 입력 데이터이고 출력값 Y는 정규화된 데이터입니다.

소프트웨어는 기본적으로 훈련 시점에 자동으로 정규화 통계량을 계산합니다. 훈련 중에 시간을 절약하려면 정규화에 필요한 통계량을 지정하고 trainingOptions'ResetInputNormalization'false로 설정하십시오.

정규화 차원으로, 다음 중 하나로 지정됩니다.

  • 'auto' – 훈련 옵션이 false이고 정규화 통계량 중 하나(Mean, StandardDeviation, Min 또는 Max)를 지정한 경우, 통계량과 일치하는 차원에 대해 정규화합니다. 그렇지 않은 경우, 훈련 시점에 통계량을 다시 계산하고 채널별 정규화를 적용합니다.

  • 'channel' – 채널별 정규화.

  • 'element' – 요소별 정규화.

  • 'all' – 스칼라 통계량을 사용하여 모든 값을 정규화합니다.

0을 중심으로 하는 정규화 및 z 점수 정규화에서의 평균값으로, hxwxc 배열, 채널당 평균값으로 구성된 1x1xc 배열, 숫자형 스칼라 또는 []로 지정됩니다. 여기서 h, w, c는 각각 평균값의 높이, 너비, 채널 개수입니다.

Mean 속성을 지정한 경우 Normalization'zerocenter' 또는 'zscore'여야 합니다. Mean[]인 경우 소프트웨어는 훈련 시점에 평균값을 계산합니다.

이 속성은 훈련 없이 신경망을 만들 때(예를 들어, assembleNetwork를 사용하여 신경망을 조합할 때) 설정할 수 있습니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

z-점수 정규화에서의 표준편차로, hxwxc 배열, 채널당 평균값으로 구성된 1x1xc 배열, 숫자형 스칼라 또는 []로 지정됩니다. 여기서 h, w, c는 각각 표준편차의 높이, 너비, 채널 개수입니다.

StandardDeviation 속성을 지정한 경우 Normalization'zscore'여야 합니다. StandardDeviation[]인 경우 소프트웨어는 훈련 시점에 표준편차를 계산합니다.

이 속성은 훈련 없이 신경망을 만들 때(예를 들어, assembleNetwork를 사용하여 신경망을 조합할 때) 설정할 수 있습니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

다시 스케일링하기 위한 최솟값으로, hxwxc 배열, 채널당 국소 최솟값으로 구성된 1x1xc 배열, 숫자형 스칼라 또는 []로 지정됩니다. 여기서 h, w, c는 각각 국소 최솟값의 높이, 너비, 채널 개수입니다.

Min 속성을 지정한 경우 Normalization'rescale-symmetric' 또는 'rescale-zero-one'이어야 합니다. Min[]인 경우 소프트웨어는 훈련 시점에 최솟값을 계산합니다.

이 속성은 훈련 없이 신경망을 만들 때(예를 들어, assembleNetwork를 사용하여 신경망을 조합할 때) 설정할 수 있습니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

다시 스케일링하기 위한 최댓값으로, hxwxc 배열, 채널당 국소 최댓값으로 구성된 1x1xc 배열, 숫자형 스칼라 또는 []로 지정됩니다. 여기서 h, w, c는 각각 국소 최댓값의 높이, 너비, 채널 개수입니다.

Max 속성을 지정한 경우 Normalization'rescale-symmetric' 또는 'rescale-zero-one'이어야 합니다. Max[]인 경우 소프트웨어는 훈련 시점에 최댓값을 계산합니다.

이 속성은 훈련 없이 신경망을 만들 때(예를 들어, assembleNetwork를 사용하여 신경망을 조합할 때) 설정할 수 있습니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

참고

DataAugmentation 속성은 권장되지 않습니다. 자르기, 반사를 비롯한 기하 변환을 사용하여 영상을 전처리하려면 augmentedImageDatastore를 대신 사용하십시오.

훈련 중에 사용할 데이터 증대 변환으로, 다음 중 하나로 지정됩니다.

  • 'none' — 데이터 증대 없음

  • 'randcrop' — 훈련 영상에서 무작위 자르기를 수행합니다. 무작위 자르기의 크기는 입력 크기와 같습니다.

  • 'randfliplr' — 50%의 확률로 입력 영상을 무작위로 가로로 뒤집습니다.

  • 'randcrop''randfliplr'로 구성된 셀형 배열. 이 셀형 배열에 지정된 순서대로 증대가 적용됩니다.

영상 데이터 증대는 과적합을 줄이는 한 가지 방법입니다[1], [2].

데이터형: string | char | cell

계층

계층 이름으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다. 계층 그래프에 계층을 포함하려면 비어 있지 않은 고유한 계층 이름을 지정해야 합니다. 이 계층을 사용하여 시리즈 신경망을 훈련시킬 때 Name''로 설정하면, 소프트웨어가 훈련 시점에 해당 계층에 자동으로 이름을 할당합니다.

데이터형: char | string

계층의 입력값 개수. 이 계층에는 입력값이 없습니다.

데이터형: double

계층의 입력값 이름. 이 계층에는 입력값이 없습니다.

데이터형: cell

계층의 출력값 개수. 이 계층은 단일 출력값만 가집니다.

데이터형: double

계층의 출력값 이름. 이 계층은 단일 출력값만 가집니다.

데이터형: cell

예제

모두 축소

28x28 컬러 영상에 대해 이름이 'input'.인 영상 입력 계층을 만듭니다. 기본적으로 이 계층은 모든 입력 영상에서 훈련 세트의 평균값 영상을 빼서 데이터 정규화를 수행합니다.

inputlayer = imageInputLayer([28 28 3],'Name','input')
inputlayer = 
  ImageInputLayer with properties:

                      Name: 'input'
                 InputSize: [28 28 3]

   Hyperparameters
          DataAugmentation: 'none'
             Normalization: 'zerocenter'
    NormalizationDimension: 'auto'
                      Mean: []

Layer 배열에 영상 입력 계층을 포함시킵니다.

layers = [ ...
    imageInputLayer([28 28 1])
    convolution2dLayer(5,20)
    reluLayer
    maxPooling2dLayer(2,'Stride',2)
    fullyConnectedLayer(10)
    softmaxLayer
    classificationLayer]
layers = 
  7x1 Layer array with layers:

     1   ''   Image Input             28x28x1 images with 'zerocenter' normalization
     2   ''   Convolution             20 5x5 convolutions with stride [1  1] and padding [0  0  0  0]
     3   ''   ReLU                    ReLU
     4   ''   Max Pooling             2x2 max pooling with stride [2  2] and padding [0  0  0  0]
     5   ''   Fully Connected         10 fully connected layer
     6   ''   Softmax                 softmax
     7   ''   Classification Output   crossentropyex

호환성 관련 고려 사항

모두 확장

R2019b부터 권장되지 않음

향후 릴리스에서 동작 변경

참고 문헌

[1] Krizhevsky, A., I. Sutskever, and G. E. Hinton. "ImageNet Classification with Deep Convolutional Neural Networks". Advances in Neural Information Processing Systems. Vol 25, 2012.

[2] Cireşan, D., U. Meier, J. Schmidhuber. "Multi-column Deep Neural Networks for Image Classification". IEEE Conference on Computer Vision and Pattern Recognition, 2012.

확장 기능

GPU 코드 생성
GPU Coder™를 사용하여 NVIDIA® GPU용 CUDA® 코드를 생성할 수 있습니다.

R2016a에 개발됨