Main Content

imageInputLayer

영상 입력 계층

설명

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

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

생성

설명

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

예제

layer = imageInputLayer(inputSize,Name,Value)는 하나 이상의 이름-값 인수를 사용하여 선택적으로 Normalization, NormalizationDimension, Mean, StandardDeviation, Min, Max, SplitComplexInputs, Name 속성을 설정합니다. 속성 이름을 따옴표로 묶습니다.

속성

모두 확장

영상 입력

읽기 전용 속성입니다.

입력 데이터의 크기로, 정수로 이루어진 행 벡터 [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는 정규화된 데이터입니다.

소프트웨어는 기본적으로 trainnet 함수 및 trainNetwork 함수를 사용할 때 자동으로 정규화 통계량을 계산합니다. 훈련 중에 시간을 절약하려면 정규화에 필요한 통계량을 지정하고 trainingOptionsResetInputNormalization 옵션을 0(false)으로 설정하십시오.

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

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

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

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

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

데이터형: char | string

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

Mean 속성을 지정한 경우 Normalization'zerocenter' 또는 'zscore'여야 합니다. Mean[]인 경우 trainnet 함수 및 trainNetwork 함수는 평균값을 계산합니다. 사용자 지정 훈련 루프를 사용하여 dlnetwork 객체를 훈련시키려면, 또는 assembleNetwork 함수를 사용하여 훈련 없이 신경망을 조합하려면 Mean 속성을 숫자형 스칼라 또는 숫자형 배열로 설정해야 합니다.

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

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

StandardDeviation 속성을 지정한 경우 Normalization'zscore'여야 합니다. StandardDeviation[]인 경우 trainnet 함수 및 trainNetwork 함수는 표준편차를 계산합니다. 사용자 지정 훈련 루프를 사용하여 dlnetwork 객체를 훈련시키려면, 또는 assembleNetwork 함수를 사용하여 훈련 없이 신경망을 조합하려면 StandardDeviation 속성을 숫자형 스칼라 또는 숫자형 배열로 설정해야 합니다.

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

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

Min 속성을 지정한 경우 Normalization'rescale-symmetric' 또는 'rescale-zero-one'이어야 합니다. Min[]인 경우 trainnet 함수 및 trainNetwork 함수는 최솟값을 계산합니다. 사용자 지정 훈련 루프를 사용하여 dlnetwork 객체를 훈련시키려면, 또는 assembleNetwork 함수를 사용하여 훈련 없이 신경망을 조합하려면 Min 속성을 숫자형 스칼라 또는 숫자형 배열로 설정해야 합니다.

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

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

Max 속성을 지정한 경우 Normalization'rescale-symmetric' 또는 'rescale-zero-one'이어야 합니다. Max[]인 경우 trainnet 함수 및 trainNetwork 함수는 최댓값을 계산합니다. 사용자 지정 훈련 루프를 사용하여 dlnetwork 객체를 훈련시키려면, 또는 assembleNetwork 함수를 사용하여 훈련 없이 신경망을 조합하려면 Max 속성을 숫자형 스칼라 또는 숫자형 배열로 설정해야 합니다.

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

읽기 전용 속성입니다.

입력 데이터를 실수부와 허수부로 분할하는 플래그로, 다음 값 중 하나로 지정됩니다.

  • 0(false) – 입력 데이터를 분할하지 않습니다.

  • 1(true) – 데이터를 실수부와 허수부로 분할합니다.

SplitComplexInputs1인 경우 계층은 입력 데이터보다 두 배 많은 수의 채널을 출력합니다. 예를 들어, 입력 데이터가 numChannels개의 채널을 갖는 복소수 값이면 계층은 2*numChannels개의 채널을 갖는 데이터를 출력합니다. 이때 채널 1부터 numChannels은 입력 데이터의 실수부를 포함하고 numChannels+1부터 2*numChannels은 입력 데이터의 허수부를 포함합니다. 입력 데이터가 실수인 경우 채널 numChannels+1부터 2*numChannels이 모두 0입니다.

복소수 값 데이터를 신경망에 입력하려면 입력 계층의 SplitComplexInputs 옵션이 1이어야 합니다.

복소수 값 데이터를 갖는 신경망을 훈련시키는 방법을 보여주는 예제는 Train Network with Complex-Valued Data 항목을 참조하십시오.

읽기 전용 속성입니다.

참고

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

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

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

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

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

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

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

데이터형: string | char | cell

계층

계층 이름으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다. Layer 배열 입력값에 대해 trainnet, trainNetwork, assembleNetwork, layerGraph, dlnetwork 함수는 이름이 ""인 계층에 자동으로 이름을 할당합니다.

ImageInputLayer 객체는 이 속성을 문자형 벡터로 저장합니다.

데이터형: char | string

읽기 전용 속성입니다.

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

데이터형: double

읽기 전용 속성입니다.

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

데이터형: cell

읽기 전용 속성입니다.

계층의 출력값 개수로, 1로 반환됩니다. 이 계층은 단일 출력값만 가집니다.

데이터형: double

읽기 전용 속성입니다.

출력값 이름으로, {'out'}으로 반환됩니다. 이 계층은 단일 출력값만 가집니다.

데이터형: cell

예제

모두 축소

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

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

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

   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   ''   2-D Convolution         20 5x5 convolutions with stride [1  1] and padding [0  0  0  0]
     3   ''   ReLU                    ReLU
     4   ''   2-D 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

알고리즘

모두 확장

참고 문헌

[1] Krizhevsky, Alex, Ilya Sutskever, and Geoffrey E. Hinton. "ImageNet Classification with Deep Convolutional Neural Networks." Communications of the ACM 60, no. 6 (May 24, 2017): 84–90. https://doi.org/10.1145/3065386

[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.

확장 기능

버전 내역

R2016a에 개발됨

모두 확장