- 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,