Mobilenetv3-Large-Tflite-Modell funktioniert in Notebook, prognostiziert jedoch immer dieselbe Klasse in der Flutter-AppPython

Python-Programme
Anonymous
 Mobilenetv3-Large-Tflite-Modell funktioniert in Notebook, prognostiziert jedoch immer dieselbe Klasse in der Flutter-App

Post by Anonymous »

Ich habe ein Bildklassifizierungsmodell mit 46-Klasse unter Verwendung von Mobilenetv3-Large mit TensorFlow/Keras trainiert und es als ein .keras Modell gespeichert. Ich habe es in TFLite verwendete tf.lite.tfliteConverter.from_keras_model ()
Beim Testen des Tflite -Modells auf meinem Notebook erzeugt. Wenn ich jedoch mein Flutter APK erstelle und das Modell dort ausführe, gibt es immer die gleiche Klasse aus, unabhängig vom Eingabebild. Mein Vorgängermodell mit MobileNetv2 hat in Flutter korrekt funktioniert. Hier ist der Trainingscode und der Conversion -Code, den ich verwendet habe. Ich vermute, dass dies möglicherweise mit Unterschieden bei der Vorverarbeitung oder Modellumwandlung zwischen Mobilenetv2 und mobilenetv3-large zusammenhängt. Hat jemand auf dieses Problem gestoßen oder hat Vorschläge zu dem, was die konstante Ausgabe in der Flutterumgebung verursacht?

Code: Select all

from tensorflow.keras.regularizers import l2
from tensorflow.keras.layers import Dropout
from tensorflow.keras.applications import MobileNetV3Large

l2_strength = 0.01

base_model = MobileNetV3Large(weights='imagenet', include_top=False, input_shape=(224, 224, 3))
base_model.trainable = False  # Freeze the base model

x = base_model.output
x = GlobalAveragePooling2D()(x)
x = Dense(1024, activation='swish', kernel_regularizer=l2(l2_strength))(x)
x = Dropout(0.5)(x)  # Add dropout
predictions = Dense(46, activation='softmax', kernel_regularizer=l2(l2_strength))(x)

model = Model(inputs=base_model.input, outputs=predictions)

model.compile(optimizer=Adam(learning_rate=0.0005), loss='categorical_crossentropy', metrics=['accuracy'])

from tensorflow.keras.callbacks import ReduceLROnPlateau, EarlyStopping
from tensorflow.keras.regularizers import l2
from tensorflow.keras.layers import Dense, Dropout

reduce_lr = ReduceLROnPlateau(monitor='val_loss', factor=0.2, patience=3, min_lr=1e-7)
early_stopping = EarlyStopping(monitor='val_loss', patience=5, restore_best_weights=True)

history = model.fit(
train_generator,
steps_per_epoch=len(train_generator),
validation_data=validation_generator,
validation_steps=len(validation_generator),
epochs=50,
callbacks=[reduce_lr, early_stopping]
)
# Accuracy
test_loss, test_accuracy = model.evaluate(test_generator)
print(f'Test Accuracy: {test_accuracy * 100:.2f}%')
# Model saving
model.save('classifier_V3.keras')
Unten ist, wie ich mein Kerasmodell in Tflite umwandeln

Code: Select all

import tensorflow as tf
from tensorflow.keras.models import load_model
model_path = "classifier_V3.keras"
tflite_model_path = "classifier_V3.tflite"

model = load_model(model_path)

converter = tf.lite.TFLiteConverter.from_keras_model(model)
tflite_model = converter.convert()

with open(tflite_model_path, 'wb') as f:
f.write(tflite_model)
print(f"TensorFlow Lite model saved to {tflite_model_path}")
Wenn Sie einen Hinweis haben>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post