| import tensorflow as tf |
| from tensorflow.keras.applications import MobileNet |
| from tensorflow.keras.layers import Dense, GlobalAveragePooling2D |
| from tensorflow.keras.models import Model |
| from tensorflow.keras.preprocessing.image import ImageDataGenerator |
|
|
| |
| base_model = MobileNet(weights='imagenet', include_top=False) |
|
|
| |
| x = base_model.output |
| x = GlobalAveragePooling2D()(x) |
| x = Dense(1024, activation='relu')(x) |
| num_classes=2 |
| predictions = Dense(num_classes, activation='softmax')(x) |
|
|
| model = Model(inputs=base_model.input, outputs=predictions) |
|
|
| |
| model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) |
|
|
| |
|
|
|
|
| train_datagen = ImageDataGenerator( |
| preprocessing_function=tf.keras.applications.mobilenet.preprocess_input, |
| rotation_range=20, |
| width_shift_range=0.2, |
| height_shift_range=0.2, |
| horizontal_flip=True |
| ) |
| batch_size=16 |
| train_generator = train_datagen.flow_from_directory( |
| '/content/tire-dataset/train_data', |
| target_size=(224, 224), |
| batch_size=batch_size, |
| class_mode='categorical' |
| ) |
|
|
| test_datagen = ImageDataGenerator( |
| preprocessing_function=tf.keras.applications.mobilenet.preprocess_input, |
| rotation_range=20, |
| width_shift_range=0.2, |
| height_shift_range=0.2, |
| horizontal_flip=True |
| ) |
| batch_size=16 |
|
|
|
|
| |
| num_epochs=1 |
| model.fit(train_generator, epochs=num_epochs) |
|
|
| |
| test_generator = test_datagen.flow_from_directory( |
| '/content/tire-dataset/test_data', |
| target_size=(224, 224), |
| batch_size=batch_size, |
| class_mode='categorical' |
| ) |
|
|
| accuracy = model.evaluate(test_generator) |
| print('Test accuracy:', accuracy) |
|
|
|
|
|
|
| from tensorflow import keras |
| from tensorflow.keras.preprocessing import image |
| from tensorflow.keras.applications.mobilenet import preprocess_input, decode_predictions |
| import numpy as np |
|
|
| |
| |
|
|
| |
| img_path = '/content/tire-dataset/test_data/Tire/00000.jpg' |
| img = image.load_img(img_path, target_size=(224, 224)) |
| x = image.img_to_array(img) |
| x = np.expand_dims(x, axis=0) |
| x = preprocess_input(x) |
|
|
| |
| predictions = model.predict(x) |
|
|
| |
| |
| |
| |
|
|
|
|
| model.save('/content/model_keras/keras_model.h5') |
|
|
|
|
| !tensorflowjs_converter --input_format=keras --output_format=tfjs_graph_model --split_weights_by_layer --weight_shard_size_bytes=99999999 --quantize_float16=* /content/model_keras/keras_model.h5 ./model_tfjs |
|
|
|
|