MNIST, Digit Classification, ClearML, Machine Learning, Electro4U

09 Jun 2023 Balmiki Mandal 0 Web development

Tutorial on MNIST Digit Classification Using ClearML

The MNIST dataset is a popular computer vision dataset consisting of 70,000 handwritten digit images. It is widely used for machine learning and image recognition applications. In this tutorial, we will learn how to use the ClearML platform to classify digits in the MNIST dataset.

Prerequisites

In order to follow this tutorial, you must have the following items installed:

  • Python 3.6 or higher
  • ClearML
  • TensorFlow 1.14 or higher

Downloading the Dataset

To begin, we need to download the MNIST dataset. You can do this by using the TensorFlow Keras datasets API as follows:

import tensorflow as tf

mnist = tf.keras.datasets.mnist

(x_train, y_train),(x_test, y_test) = mnist.load_data()

Data Preprocessing

Before we can start training a model, we need to preprocess the data. We will normalize the input values by dividing by 255.0 so that they range from 0 to 1. We will also reshape the training and test sets for our model.

x_train = x_train.reshape(x_train.shape[0], 28, 28, 1)
x_test = x_test.reshape(x_test.shape[0], 28, 28, 1)
input_shape = (28, 28, 1)

# Normalize the data
x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
x_train /= 255
x_test /= 255

Creating a Model

Now we need to create a model to classify the digits. We will use a simple convolutional neural network with two convolutional layers and a fully connected layer. The output layer will have 10 nodes corresponding to the 10 digits in the dataset.

model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3),
	activation='relu',
	input_shape=input_shape))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(10, activation='softmax'))

model.compile(loss='sparse_categorical_crossentropy',
	optimizer='adam',
	metrics=['accuracy'])

model.fit(x_train, y_train,
	batch_size=128,
	epochs=10,
	validation_data=(x_test, y_test))

Deploying the Model with ClearML

Once we have trained the model, we can deploy it using ClearML. First, we need to create a project in ClearML and attach the ClearML Python SDK to the project. Once that is done, we can use the clearml.deploy command to deploy the model.

import clearml

# Create a new project
project_name = "mnist-digit-classification"
clearml.projects.create(project_name)

# Attach the Python SDK to the project
clearml.tasks.connect_project(project_name)

# Deploy the model
task_name = "mnist-digit-classification"
clearml.deploy(model, task_name, project_name)

Once the model is deployed, we can start making predictions using the ClearML web UI or API.

Conclusion

In this tutorial, we learned how to use ClearML to deploy a convolutional neural network for digit recognition using the MNIST dataset. With ClearML, deploying models is easy and allows us to quickly make predictions and track performance metrics. Give it a try and see how you can use it for your image classification projects!

BY: Balmiki Mandal

Related Blogs

Post Comments.

Login to Post a Comment

No comments yet, Be the first to comment.