이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.
네트워크를 훈련시키고 새로운 데이터에 대해 예측을 수행하려면 이미지가 네트워크의 입력 크기와 일치해야 합니다. 네트워크의 입력 크기와 일치하도록 이미지의 크기를 조정하려면 imresize
또는 augmentedImageDatastore
를 사용할 수 있습니다.
이미지에 아핀 기하 변환을 적용하여 훈련, 검증, 테스트 및 예측 데이터 세트를 증대할 수 있습니다. 훈련 이미지 증대는 네트워크가 과적합되는 것을 방지하고 훈련 이미지의 정확한 세부 정보가 기억되지 않도록 하는 데 도움이 됩니다.
transform
함수와 combine
함수를 사용하여 사용자 고유의 파이프라인에 따라 이미지를 전처리할 수 있습니다.
네트워크의 이미지 입력 크기를 구하려면 네트워크의 imageInputLayer
의 InputSize
속성의 처음 2개 요소를 가져옵니다. 예를 들어, AlexNet에서 사전 훈련된 네트워크의 이미지 입력 크기를 가져오려면 다음을 수행합니다.
net = alexnet; inputSize = net.Layers(1).InputSize(1:2)
inputSize = 227 227
이미지 크기 조정 방법은 이미지 데이터형에 따라 달라집니다.
단일 컬러 이미지, 단일 다중분광 이미지 또는 회색조 이미지 스택을 나타내는 3차원 배열의 크기를 조정하려면 imresize
를 사용하십시오. 예를 들어, 3차원 배열 im3d
의 이미지 크기를 조정하려면 다음을 수행합니다.
im = imresize(im3d,inputSize);
이미지 스택을 나타내는 4차원 배열의 크기를 조정하기 위해 imresize
를 사용할 수 있습니다. 예를 들어, 4차원 배열 im4d
의 이미지를 크기 조정하려면 다음을 수행합니다.
im = imresize(im4d,inputSize);
또는 augmentedImageDatastore
를 사용하여 4차원 배열의 이미지 크기를 원하는 크기로 조정하거나 자를 수 있습니다. 기본적으로, augmentedImageDatastore
는 이미지를 원하는 크기로 조정합니다. 그 대신 이미지의 중앙이나 임의의 위치에서 이미지를 자르려면 '
이름-값 쌍 인수를 사용할 수 있습니다. 예를 들어, 4차원 배열 OutputSizeMode
'im4d
의 이미지를 각 이미지의 중앙에서 자르려면 다음을 수행합니다.
auimds = augmentedImageDatastore(inputSize,im4d,'OutputSizeMode','centercrop');
ImageDatastore
또는 테이블의 이미지를 크기 조정하거나 자르려면 augmentedImageDatastore
를 사용하십시오. 예를 들어, 이미지 데이터저장소 imds
의 이미지 크기를 조정하려면 다음을 수행합니다.
auimds = augmentedImageDatastore(inputSize,imds);
증대 이미지 데이터저장소나 크기 조정된 4차원 배열을 훈련, 예측 및 분류를 위해 사용할 수 있습니다. 크기 조정된 3차원 배열은 예측 및 분류를 위해서만 사용할 수 있습니다.
이미지 크기 조정 외에도, augmentedImageDatastore
를 사용하면 회전, 반사, 전단 및 평행 이동 변환을 조합하여 이미지를 증대할 수 있습니다. 다음 도식은 trainNetwork
가 증대 이미지 데이터저장소를 사용하여 각 Epoch에 대해 훈련 데이터를 변환하는 방법을 보여줍니다.
훈련 이미지를 정의합니다. 이미지를 ImageDatastore
, 4차원 숫자형 배열 또는 테이블로 저장할 수 있습니다. ImageDatastore
를 사용하면 너무 커서 메모리에 담을 수 없는 이미지 컬렉션에서 데이터를 가져올 수 있습니다. 이 함수는 기계 학습 및 컴퓨터 비전 응용의 더 빠른 처리를 위해 이미지 배치를 읽어 들이도록 설계되어 있습니다.
imageDataAugmenter
를 만들어서 회전 각도의 범위나 무작위로 반사를 적용할 지점과 같은 이미지 변환 옵션을 구성합니다.
샘플 이미지에 적용된 변환을 미리 보려면 augment
함수를 사용하십시오.
훈련 이미지, 출력 이미지의 크기 및 imageDataAugmenter
를 지정하여 augmentedImageDatastore
를 만듭니다. 출력 이미지의 크기는 네트워크의 imageInputLayer
의 크기와 호환되어야 합니다.
trainNetwork
의 데이터 소스로 증대 이미지 데이터저장소를 지정하여 네트워크를 훈련시킵니다. 훈련의 각 반복마다, 증대 이미지 데이터저장소는 훈련 데이터의 미니 배치에 임의의 변환 조합을 적용합니다.
증대 이미지 데이터저장소를 훈련 이미지의 소스로 사용하면 각 Epoch에 사용되는 훈련 데이터가 무작위로 섭동되어 Epoch마다 조금씩 다른 데이터 세트가 사용됩니다. 각 Epoch에 사용되는 실제 훈련 이미지의 개수는 변경되지 않습니다. 변환된 이미지는 메모리에 저장되지 않습니다.
이 워크플로의 예제는 증대 이미지를 사용하여 네트워크 훈련시키기 항목을 참조하십시오.
일부 데이터저장소는 이미지 배치를 읽어 들일 때 특정 이미지 전처리 연산을 수행합니다. 다음 표에는 이러한 응용 사례별 데이터저장소가 나열되어 있습니다. 이러한 모든 데이터저장소는 데이터를 trainNetwork
에 필요한 2열 테이블 또는 2열 셀형 배열에 반환합니다. 이러한 데이터저장소는 Deep Learning
Toolbox™를 사용하는 심층 학습 응용 사례를 위한 훈련, 검증 및 테스트 데이터 세트의 소스로 사용할 수 있습니다.
데이터저장소 | 설명 |
---|---|
augmentedImageDatastore | 심층 신경망을 훈련시키기 위해 크기 조정, 회전, 반사, 전단, 평행 이동을 비롯한 무작위 아핀 기하 변환을 적용합니다. 예제는 AlexNet을 사용한 전이 학습 항목을 참조하십시오. |
pixelLabelImageDatastore | 의미론적 분할 네트워크를 훈련시키기 위해 이미지와 그 대응되는 실측 레이블에 동일한 아핀 기하 변환을 적용합니다(Computer Vision Toolbox™ 필요). 예제는 심층 학습을 사용한 의미론적 분할 항목을 참조하십시오. |
randomPatchExtractionDatastore | 이미지 또는 픽셀 레이블 이미지로부터 임의 부분의 여러 개의 쌍을 추출합니다(Image Processing Toolbox™필요). 선택적으로 이런 부분의 쌍에 동일한 무작위 아핀 기하 변환을 적용할 수 있습니다. 예제는 Single Image Super-Resolution Using Deep Learning 항목을 참조하십시오. |
denoisingImageDatastore | 잡음 제거 네트워크를 훈련시키기 위해 임의로 생성된 가우스 잡음을 적용합니다(Image Processing Toolbox 필요). |
응용 사례별 데이터저장소에서 제공하는 것보다 일반적이고 복잡한 이미지 전처라 연산을 수행하려면 transform
함수와 combine
함수를 사용할 수 있습니다. transform
함수는 사용자가 정의한 사용자 지정 변환 함수에 따라 기본 데이터저장소의 데이터 배치를 처리합니다. combine
함수는 복수의 데이터저장소에서 읽어 들인 데이터를 trainNetwork
에 필요한 2열 테이블 또는 2열 셀형 배열 형식으로 변환하고, 기본 데이터저장소 간의 패리티를 유지합니다.
함수 | 결과 데이터저장소 | 설명 |
---|---|---|
transform | TransformedDatastore | 기본 데이터저장소에서 읽어 들인 데이터의 배치를 사용자 고유의 전처리 파이프라인에 따라 변환합니다. |
combine | CombinedDatastore | 둘 이상의 기본 데이터저장소에서 읽어 들인 데이터를 가로로 결합합니다. |
기본 데이터저장소는 read
함수를 사용하여 데이터 배치를 읽어 들입니다. 사용자 지정 변환 함수는 read
함수에서 반환되는 형식으로 데이터를 받아야 합니다. 이미지 데이터의 경우, 형식은 기본 ImageDatastore
의 ReadSize
속성에 좌우됩니다.
ReadSize
가 1이면 변환 함수는 정수형 배열을 받아야 합니다. 배열의 크기는 ImageDatastore
에 있는 이미지의 유형과 일치합니다. 예를 들어, 회색조 이미지는 차원이 mxn이고, 트루컬러 이미지는 차원이 mxnx3이고, 채널이 c개인 다중분광 이미지는 차원이 mxnxc입니다.
ReadSize
가 1보다 크면 변환 함수는 배치에 있는 각 이미지에 대응되는 이미지 데이터로 구성된 셀형 배열을 받아야 합니다.
transform
함수는 네트워크의 입력 크기와 일치하는 데이터를 반환해야 합니다. transform
함수는 일대다 관측값 매핑을 지원하지 않습니다.
transform
함수는 기본 ImageDatastore
가 JPG 또는 PNG 이미지 파일의 배치를 읽어 들일 때 프리페치를 지원합니다. imageDatastore
의 readFcn
옵션은 일반적으로 상당히 느리므로 이 옵션을 사용하여 사용자 지정 변환 함수를 지정하지 마십시오. 이미지 읽기를 위해 사용자 지정 함수를 사용하는 경우, ImageDatastore
는 프리페치를 수행하지 않습니다.
classify
| combine
| imresize
| predict
| trainNetwork
| transform