Tflite 200mb большой

Я строю модель, которая должна классифицировать цветы. Итак, я создал модель с Tensorflow:

  keras.layers.Conv2D(128, (3,3), activation='relu', input_shape=(imageShape[0], imageShape[1],3)),
  keras.layers.MaxPooling2D(2,2),
  keras.layers.Dropout(0.5),
  
  keras.layers.Conv2D(256, (3,3), activation='relu'),
  
  keras.layers.MaxPooling2D(2,2), 
 
  keras.layers.Conv2D(512, (3,3), activation='relu'),
  
  keras.layers.MaxPooling2D(2,2),
 
  keras.layers.Flatten(),
      
  keras.layers.Dropout(0.3),      
  
  keras.layers.Dense(280, activation='relu'),
  
  keras.layers.Dense(4, activation='softmax')

  opt = tf.keras.optimizers.RMSprop()
  model.compile(loss='categorical_crossentropy',
              optimizer= opt,
              metrics=['accuracy'])

Во время тренировки я сохраняю чекпоинты как.h5

checkpoint = ModelCheckpoint("preSaved"+str(time.time())+".h5", monitor='val_loss', verbose=1, 
save_best_only=True, save_weights_only=False, mode='auto', period=1)

Теперь у меня есть эпоха с довольно низкими потерями, и я хочу преобразовать ее в.tflite, чтобы загрузить в Firebase (используйте ее в приложении Android Studio).

import tensorflow as tf

new_model= tf.keras.models.load_model(filepath="model.h5")
tflite_converter = tf.lite.TFLiteConverter.from_keras_model(new_model)
tflite_converter.inference_type=tf.uint8
tflite_converter.default_ranges_stats=[min_value,max_value]
tflite_converter.quantized_input_stats={"conv2d_6_input_6:0"[mean,std]}
tflite_converter.post_training_quantize=True
tflite_model = tflite_converter.convert()
open("tf_lite_model.tflite", "wb").write(tflite_model)

Размер.h5 составляет около 335 МБ, а конечный.tflite - 160 МБ. Но Firebase разрешает только.tflite до 60 МБ, и если я использую локальную модель, для загрузки требуются минуты. Я читал, что.tflite обычно меньше. Есть ли проблема в моей модели или когда я конвертирую ее в.tflite?

1 ответ

Размер модели в значительной степени определяется архитектурой вашей модели (различными слоями, составляющими модель, и количеством параметров в каждом слое). Вы можете поэкспериментировать, изменив их, чтобы получить модель меньшего размера.

Вот гораздо более простая архитектура для модели классификации изображений. Имейте в виду, конечно, что меньшая модель может иметь меньшую точность, чем более сложная версия.

Другие вопросы по тегам