Bilderkennung mittels Deep Learning
Deep Learning kann erfolgreich auf viele Probleme in der Bildverarbeitung und Computer Vision angewendet werden. Mit NetChain und NetTrain können Sie ein neuronales Netz definieren und trainieren, handgeschriebene Ziffern auf einem Bild zu klassifizieren.
Rufen Sie Trainings- und Validierungsdaten aus der MNIST-Datenbank handgeschriebener Ziffern ab.
In[1]:=
![Click for copyable input](assets.de/image-recognition-using-deep-learning/In_34.png)
resource = ResourceObject["MNIST"];
trainingData = ResourceData[resource, "TrainingData"];
testData = ResourceData[resource, "TestData"];
In[2]:=
![Click for copyable input](assets.de/image-recognition-using-deep-learning/In_35.png)
RandomSample[trainingData, 5]
Out[2]=
![](assets.de/image-recognition-using-deep-learning/O_20.png)
Entwerfen Sie ein Convolutional Neural Net, das 28×28-Graustufenbilder erkennen kann.
In[3]:=
![Click for copyable input](assets.de/image-recognition-using-deep-learning/In_36.png)
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]=
![](assets.de/image-recognition-using-deep-learning/O_21.png)
Trainieren Sie das Netz in drei Trainingsrunden.
In[4]:=
![Click for copyable input](assets.de/image-recognition-using-deep-learning/In_37.png)
lenet = NetTrain[lenet, trainingData, ValidationSet -> testData,
MaxTrainingRounds -> 3];
Out[4]=
![](assets.de/image-recognition-using-deep-learning/O_22.png)
Evaluieren Sie das trainierte Netz direkt mit zufällig ausgewählten Bildern aus dem Validierungssatz.
In[5]:=
![Click for copyable input](assets.de/image-recognition-using-deep-learning/In_38.png)
imgs = Keys @ RandomSample[testData, 5];
Thread[imgs -> lenet[imgs]]
Out[5]=
![](assets.de/image-recognition-using-deep-learning/O_23.png)