Wolfram 언어

이미지 처리 및 신호 처리

심층 학습을 사용한 화상 인식

심층 학습은 다양한 이미지 처리 및 컴퓨터 비전 문제에 적용하여 좋은 결과를 얻을 수 있습니다. NetChainNetTrain을 사용하여 이미지에서 주어진 육필의 숫자를 분류하는 신경망을 정의하고 훈련할 수 있습니다.

육필 숫자에 대한 MNIST 데이터베이스에서 훈련과 확인을 위해 데이터를 얻습니다.

In[1]:=
Click for copyable input
resource = ResourceObject["MNIST"]; trainingData = ResourceData[resource, "TrainingData"]; testData = ResourceData[resource, "TestData"];
In[2]:=
Click for copyable input
RandomSample[trainingData, 5]
Out[2]=

28×28 그레이 스케일 이미지를 인식할 수 있도록 구축된 합성곱 분류 신경망을 설계합니다.

In[3]:=
Click for copyable input
lenet = NetChain[ {ConvolutionLayer[20, 5], Ramp, PoolingLayer[2, 2], ConvolutionLayer[50, 5], Ramp, PoolingLayer[2, 2], FlattenLayer[], 500, Ramp, 10, SoftmaxLayer[]}, "Output" -> NetDecoder[{"Class", Range[0, 9]}], "Input" -> NetEncoder[{"Image", {28, 28}, "Grayscale"}] ]
Out[3]=

세번의 훈련 라운드를 거쳐 네트워크를 훈련합니다.

In[4]:=
Click for copyable input
lenet = NetTrain[lenet, trainingData, ValidationSet -> testData, MaxTrainingRounds -> 3];
Out[4]=

훈련된 네트워크를 확인 집합에서 무작위로 샘플링된 이미지에 직접 사용하여 평가합니다.

In[5]:=
Click for copyable input
imgs = Keys @ RandomSample[testData, 5]; Thread[imgs -> lenet[imgs]]
Out[5]=

관련 예제

de en es fr ja pt-br ru zh