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

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'AverageImage 속성으로 지정된 평균 이미지를 뺍니다. trainNetwork 함수는 훈련 시점에 자동으로 평균 이미지를 계산합니다.

  • 'none' — 입력 데이터를 변환하지 않습니다.

0이 중심이 되는 정규화에 사용할 평균 이미지로, hxwxc 배열, 채널당 평균값으로 구성된 1x1xc 배열 또는 []로 지정됩니다. 여기서 h, w, c는 각각 평균 이미지의 높이, 너비, 채널 개수입니다.

이 속성은 훈련 없이 네트워크를 만들 때(예를 들어, assembleNetwork를 사용하여 네트워크를 조합할 때) 설정할 수 있습니다. 설정하지 않은 경우, trainNetwork 함수는 훈련 시점에 평균 이미지를 다시 계산합니다. 평균 이미지를 지정한 경우에는 Normalization 속성이 'zerocenter'여야 합니다.

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

참고

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

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

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

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

  • 'randfliplr' — 50%의 확률로 입력 이미지를 무작위로 가로로 뒤집습니다.

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

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

데이터형: 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'
        AverageImage: []

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

참고 문헌

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

R2016a에 개발됨