Main Content

augmentedImageSource

(제거 예정) 증대 영상 데이터로 구성된 배치 생성

augmentedImageSource는 향후 릴리스에서 제거될 예정입니다. 대신 augmentedImageDatastore 함수를 사용하여 증대 영상 데이터저장소를 만드십시오. 자세한 내용은 호환성 관련 고려 사항 항목을 참조하십시오.

설명

auimds = augmentedImageSource(outputSize,imds)는 영상 데이터저장소 imds의 영상을 사용하여 분류 문제를 위한 증대 영상 데이터저장소 auimds를 만듭니다. 출력 영상은 outputSize에 지정된 크기를 가집니다.

auimds = augmentedImageSource(outputSize,X,Y)는 분류나 회귀 문제를 위한 증대 영상 데이터저장소를 만듭니다. 배열 X는 예측 변수를 포함하고 배열 Y는 categorical형 레이블 또는 숫자형 응답 변수를 포함합니다.

auimds = augmentedImageSource(outputSize,tbl)은 분류나 회귀 문제를 위한 증대 영상 데이터저장소를 만듭니다. 테이블 tbl은 예측 변수와 응답 변수를 포함합니다.

auimds = augmentedImageSource(outputSize,tbl,responseNames)는 분류나 회귀 문제를 위한 증대 영상 데이터저장소를 만듭니다. 테이블 tbl은 예측 변수와 응답 변수를 포함합니다. responseNames 인수는 tbl의 응답 변수를 지정합니다.

예제

auimds = augmentedImageSource(___,Name,Value)는 증대 영상 데이터저장소가 수행하는 영상 전처리를 이름-값 쌍을 사용하여 구성하고 증대 영상 데이터저장소를 만듭니다. 여러 개의 이름-값 쌍을 지정할 수 있습니다.

예제

모두 축소

훈련된 컨벌루션 신경망이 회전 불변성을 갖도록 무작위 회전을 사용하여 영상을 전처리합니다. 이 예제에서는 augmentedImageSource 함수를 사용하여 증대 영상 datastore 객체를 만듭니다. augmentedImageDatastore 함수를 사용하여 증대 영상 datastore 객체를 만드는 권장 워크플로에 대한 예제는 증대 영상을 사용하여 신경망 훈련시키기 항목을 참조하십시오.

손으로 쓴 숫자를 표시하는 합성 영상으로 구성된 샘플 데이터를 불러옵니다.

[XTrain,YTrain] = digitTrain4DArrayData;

digitTrain4DArrayData는 숫자 훈련 세트를 4차원 배열 데이터로 불러옵니다. XTrain은 28×28×1×5,000 배열입니다. 여기서 각각은 다음을 나타냅니다.

  • 28은 영상의 높이와 너비입니다.

  • 1은 채널의 개수입니다.

  • 5,000은 손으로 쓴 숫자를 나타내는 합성 영상의 개수입니다.

YTrain은 각 관측값에 대한 레이블을 포함하는 categorical형 벡터입니다.

훈련 중에 영상을 회전하는 영상 증대기를 만듭니다. 이 영상 증대기(image augmenter)는 각 영상을 임의의 각도만큼 회전합니다.

imageAugmenter = imageDataAugmenter('RandRotation',[-180 180])
imageAugmenter = 
  imageDataAugmenter with properties:

           FillValue: 0
     RandXReflection: 0
     RandYReflection: 0
        RandRotation: [-180 180]
           RandScale: [1 1]
          RandXScale: [1 1]
          RandYScale: [1 1]
          RandXShear: [0 0]
          RandYShear: [0 0]
    RandXTranslation: [0 0]
    RandYTranslation: [0 0]

augmentedImageSource 함수를 사용하여 증대 영상 데이터저장소를 만듭니다. 증대 영상의 크기, 훈련 데이터, 영상 증대 함수를 지정합니다.

imageSize = [28 28 1];
auimds = augmentedImageSource(imageSize,XTrain,YTrain,'DataAugmentation',imageAugmenter)
auimds = 
  augmentedImageDatastore with properties:

         NumObservations: 5000
           MiniBatchSize: 128
        DataAugmentation: [1x1 imageDataAugmenter]
      ColorPreprocessing: 'none'
              OutputSize: [28 28]
          OutputSizeMode: 'resize'
    DispatchInBackground: 0

컨벌루션 신경망 아키텍처를 지정합니다.

layers = [
    imageInputLayer([28 28 1])
    
    convolution2dLayer(3,16,'Padding',1)
    batchNormalizationLayer
    reluLayer
    
    maxPooling2dLayer(2,'Stride',2)
       
    convolution2dLayer(3,32,'Padding',1)
    batchNormalizationLayer
    reluLayer
    
    maxPooling2dLayer(2,'Stride',2)
       
    convolution2dLayer(3,64,'Padding',1)
    batchNormalizationLayer
    reluLayer
        
    fullyConnectedLayer(10)
    softmaxLayer
    classificationLayer];

모멘텀을 사용한 확률적 경사하강법의 훈련 옵션을 설정합니다.

opts = trainingOptions('sgdm', ...
    'MaxEpochs',10, ...
    'Shuffle','every-epoch', ...
    'InitialLearnRate',1e-3);

신경망을 훈련시킵니다.

net = trainNetwork(auimds,layers,opts);
Training on single CPU.
Initializing image normalization.
|========================================================================================|
|  Epoch  |  Iteration  |  Time Elapsed  |  Mini-batch  |  Mini-batch  |  Base Learning  |
|         |             |   (hh:mm:ss)   |   Accuracy   |     Loss     |      Rate       |
|========================================================================================|
|       1 |           1 |       00:00:01 |        7.81% |       2.4151 |          0.0010 |
|       2 |          50 |       00:00:23 |       52.34% |       1.4930 |          0.0010 |
|       3 |         100 |       00:00:44 |       74.22% |       1.0148 |          0.0010 |
|       4 |         150 |       00:01:05 |       78.13% |       0.8153 |          0.0010 |
|       6 |         200 |       00:01:26 |       76.56% |       0.6903 |          0.0010 |
|       7 |         250 |       00:01:45 |       87.50% |       0.4891 |          0.0010 |
|       8 |         300 |       00:02:06 |       87.50% |       0.4874 |          0.0010 |
|       9 |         350 |       00:02:30 |       87.50% |       0.4866 |          0.0010 |
|      10 |         390 |       00:02:46 |       89.06% |       0.4021 |          0.0010 |
|========================================================================================|

입력 인수

모두 축소

출력 영상의 크기로, 2개의 양의 정수로 구성된 벡터로 지정됩니다. 첫 번째 요소는 출력 영상의 행 개수를 지정하고, 두 번째 요소는 열 개수를 지정합니다. 이 값은 반환되는 증대 영상 데이터저장소 auimdsOutputSize 속성을 설정합니다.

영상 데이터저장소로, ImageDatastore 객체로 지정됩니다.

영상으로, 4차원 숫자형 배열로 지정됩니다. 처음 3개의 차원은 높이, 너비, 채널이고, 마지막 차원은 개별 영상의 인덱스입니다.

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

분류 또는 회귀에 대한 응답 변수로, 다음 중 하나로 지정됩니다.

  • 분류 문제의 경우, Y는 영상 레이블로 구성된 categorical형 벡터입니다.

  • 회귀 문제의 경우, Y는 다음이 될 수 있습니다.

    • n×r 숫자형 행렬. n은 관측값의 개수이고 r은 응답 변수의 개수입니다.

    • h×w×c×n 숫자형 배열. h×w×c는 응답 변수 하나의 크기이고 n은 관측값의 개수입니다.

응답 변수는 NaN을 포함해서는 안 됩니다.

데이터형: categorical | double

입력 데이터로, 테이블로 지정됩니다. tbl은 첫 번째 열에 예측 변수를 절대 영상 경로나 상대 영상 경로, 또는 영상으로 포함해야 합니다. 응답 변수의 유형과 위치는 문제에 따라 달라집니다.

  • 분류 문제의 경우, 응답 변수는 영상에 대한 레이블을 포함하는 categorical형 변수여야 합니다. augmentedImageSource 함수를 호출할 때 응답 변수의 이름을 지정하지 않는다면 두 번째 열에 응답 변수가 있어야 합니다. 응답 변수가 tbl의 다른 열에 있다면 responseNames 인수를 사용하여 응답 변수 이름을 지정해야 합니다.

  • 회귀 문제의 경우, 응답 변수는 첫 번째 열 뒤에 오는 열(들)에 있는 숫자형 값이어야 합니다. 응답 변수는 스칼라 유형으로 여러 열에 있거나, 숫자형 벡터나 3차원 숫자형 배열로 구성된 셀형 배열로 하나의 열에 있을 수 있습니다. 응답 변수의 이름을 지정하지 않으면 augmentedImageSourcetbl의 나머지 열을 응답 변수로 받습니다. responseNames 인수를 사용하여 응답 변수 이름을 지정할 수 있습니다.

응답 변수는 NaN 값을 포함해서는 안 됩니다. 예측 변수 데이터에 NaN이 포함되어 있으면 이 값은 훈련 끝까지 전파되지만, 대부분의 경우 훈련이 수렴하지 않습니다.

데이터형: table

입력 테이블에 있는 응답 변수의 이름으로, 다음 중 하나로 지정됩니다.

  • 단일 응답 변수를 갖는 분류 또는 회귀 작업의 경우, responseNames는 입력 테이블의 응답 변수를 포함하는 문자형 벡터 또는 string형 스칼라여야 합니다.

    여러 응답 변수를 갖는 회귀 작업의 경우, responseNames는 입력 테이블의 응답 변수를 포함하는 string형 배열 또는 문자형 벡터로 구성된 셀형 배열이어야 합니다.

데이터형: char | cell | string

이름-값 인수

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.

예: augmentedImageSource([28,28],myTable,'OutputSizeMode','centercrop')은 영상을 중앙에서 자르도록 OutputSizeMode 속성을 설정하는 증대 영상 데이터저장소를 만듭니다.

입력 영상의 색 채널에 수행되는 전처리 연산으로, 'ColorPreprocessing'과 함께 'none', 'gray2rgb' 또는 'rgb2gray'가 쉼표로 구분되어 지정됩니다. 이 인수는 반환되는 증대 영상 데이터저장소 auimdsColorPreprocessing 속성을 설정합니다. ColorPreprocessing 속성은 증대 영상 데이터저장소의 모든 출력 영상이 inputImageLayer가 요구하는 색 채널 개수를 갖도록 합니다.

입력 영상에 적용할 전처리로, 'DataAugmentation'과 함께 imageDataAugmenter 객체 또는 'none'이 쉼표로 구분되어 지정됩니다. 이 인수는 반환되는 증대 영상 데이터저장소 auimdsDataAugmentation 속성을 설정합니다. DataAugmentation'none'인 경우, 입력 영상에 전처리가 적용되지 않습니다.

출력 영상 크기 조정에 사용할 메서드로, 'OutputSizeMode'와 함께 다음 중 하나가 쉼표로 구분되어 지정됩니다. 이 인수는 반환되는 증대 영상 데이터저장소 auimdsOutputSizeMode 속성을 설정합니다.

  • 'resize' — 출력 크기에 맞도록 영상을 스케일링합니다. 자세한 내용은 imresize 항목을 참조하십시오.

  • 'centercrop' — 훈련 영상의 중앙에서 자르기를 수행합니다. 자르기의 크기는 출력 크기와 같습니다.

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

데이터형: char | string

병렬 증대 수행 여부로, 'BackgroundExecution'과 함께 false 또는 true가 쉼표로 구분되어 지정됩니다. 이 인수는 반환되는 증대 영상 데이터저장소 auimdsDispatchInBackground 속성을 설정합니다. 'BackgroundExecution'true이고 Parallel Computing Toolbox™가 설치되어 있는 경우, 증대 영상 데이터저장소 auimds는 영상 증대를 병렬로 수행합니다.

출력 인수

모두 축소

증대 영상 데이터저장소로, augmentedImageDatastore 객체로 반환됩니다.

버전 내역

R2017b에 개발됨

모두 확장

R2018a: augmentedImageSource 객체 제거됨

R2017b에서는 딥러닝 신경망 훈련을 위해 augmentedImageSource 객체를 만들어 영상을 전처리할 수 있었습니다. R2018a부터 augmentedImageSource 객체가 제거되었습니다. 대신 augmentedImageDatastore 객체를 사용하십시오.

augmentedImageDatastore에는 데이터 전처리를 도와주는 추가적인 속성과 메서드가 있습니다. 훈련을 위해서만 사용할 수 있었던 augmentedImageSource와 달리 augmentedImageDatastore는 훈련과 예측 둘 다를 위해 사용할 수 있습니다.

augmentedImageDatastore 객체를 만들기 위해 augmentedImageDatastore 함수(권장) 또는 augmentedImageSource 함수를 사용할 수 있습니다.