MCT Quickstart Guideline — MCT Documentation: ver 1.0.0

> orphan

# MCT Quickstart Guideline

Here is an example of a code that shows how to use MCT with Keras models.

Import MCT and MobileNetV1 from Keras applications:

    import model_compression_toolkit as mct
    from tensorflow.keras.applications.mobilenet import MobileNet

Data preprocessing functions:

    import cv2
    import numpy as np

    MEAN = 127.5
    STD = 127.5
    RESIZE_SCALE = 256 / 224
    SIZE = 224

    def resize(x):
        resize_side = max(RESIZE_SCALE * SIZE / x.shape[0], RESIZE_SCALE * SIZE / x.shape[1])
        height_tag = int(np.round(resize_side * x.shape[0]))
        width_tag = int(np.round(resize_side * x.shape[1]))
        resized_img = cv2.resize(x, (width_tag, height_tag))
        offset_height = int((height_tag - SIZE) / 2)
        offset_width = int((width_tag - SIZE) / 2)
        cropped_img = resized_img[offset_height:offset_height + SIZE, offset_width:offset_width + SIZE]
        return cropped_img

    def normalization(x):
        return (x - MEAN) / STD

Initialize data loader:

        # Set the batch size of the images at each calibration iteration.
        batch_size = 50

        # Set the path to the folder of images to load and use for the representative dataset.
        # Notice that the folder have to contain at least one image.
        folder = '/path/to/images/folder'

        # Create a representative data generator, which returns a list of images.
        # The images can be preprocessed using a list of preprocessing functions.
        from model_compression_toolkit import FolderImageLoader
        image_data_loader = FolderImageLoader(folder,
                                              preprocessing=[resize, normalization],
                                              batch_size=batch_size)

        # The representative data generator to pass to MCT.
        def representative_data_gen() -> list:

Run Post Training Quantization:

        # Create a model and quantize it using the representative_data_gen as the calibration images.
        # Set the number of calibration iterations to 10.
        model = MobileNet()
        quantized_model, quantization_info = mct.keras_post_training_quantization(model,
                                                                                  representative_data_gen,