commit bea44c1b7c9b92cdd1c842e1691965f0b38bb6d3 Author: Ibnu Naz'm Ar-rosyid Date: Fri Jul 18 20:05:17 2025 +0700 done diff --git a/Model/Model_ResNet-50_Tomato-leaf-disease.py b/Model/Model_ResNet-50_Tomato-leaf-disease.py new file mode 100644 index 0000000..836ec41 --- /dev/null +++ b/Model/Model_ResNet-50_Tomato-leaf-disease.py @@ -0,0 +1,418 @@ +# -*- coding: utf-8 -*- +"""Skripsi ResNet-50_Tomato Leaf Disease Classification_FINAL.ipynb + +Automatically generated by Colab. + +Original file is located at + https://colab.research.google.com/drive/1DCYce_7Aik3nvrZQM-_YWCoyeyZBu4KH + +# Libraries +""" + +!nvidia-smi + +!pip install tensorflow +!pip install tensorflowjs + +!pip list + +import tensorflow as tf +import numpy as np +# import tensorflowjs as tfjs +from tensorflow.keras.applications.resnet50 import ResNet50, preprocess_input +import matplotlib.pyplot as plt +from tensorflow.keras import layers +from tensorflow.keras.utils import plot_model +from tensorflow.keras.utils import image_dataset_from_directory +from tensorflow.keras import mixed_precision + +print("TensorFlow version:", tf.__version__) +print("GPU detected:", tf.config.list_physical_devices('GPU')) +mixed_precision.set_global_policy('mixed_float16') + +!nvcc --version + +# from google.colab import drive +# drive.mount('/content/drive') + +# !unzip "/content/drive/MyDrive/daun tomat/tomato_leaf_disease_dataset.zip" -d "/content" +# !unzip "/content/drive/MyDrive/daun tomat/tomato_leaf_disease_dataset_nobg.zip" -d "/content" + +!unzip 'tomato_leaf_disease_dataset.zip' + +"""# Read dataset""" + +dataset_dir = '/content/tomato_leaf_disease_dataset' + +image_size = (224, 224) + +train_dataset = image_dataset_from_directory( + dataset_dir, + batch_size=32, + image_size=image_size, + seed=42, + validation_split=0.2, + subset="training", +) + +val_dataset = image_dataset_from_directory( + dataset_dir, + batch_size=32, + image_size=image_size, + seed=42, + validation_split=0.2, + subset="validation", +) + +classes = train_dataset.class_names + +"""# Show some of dataset""" + +plt.figure(figsize=(15, 20)) +for images, labels in train_dataset.take(1): + for i in range(16): + plt.subplot(8, 4, i + 1) + plt.imshow(images[i]/255) + plt.title(f"{classes[labels[i].numpy()]}") + plt.axis(False); + +"""# Cache""" + +train_ds = train_dataset.cache().prefetch(tf.data.AUTOTUNE) +val_ds = val_dataset.cache().prefetch(tf.data.AUTOTUNE) + +"""#Model""" + +resnet = ResNet50(include_top=False, weights='imagenet') +resnet.trainable = False + +inputs = layers.Input(shape=(224, 224, 3)) +x = preprocess_input(inputs) +x = resnet(inputs, training=False) +x = layers.GlobalAveragePooling2D()(x) +x = layers.Dropout(0.25)(x) +outputs = layers.Dense( + len(classes), + activation='softmax' +)(x) + + +model = tf.keras.Model(inputs=inputs, outputs=outputs) + +model.summary() + +plot_model(model, show_shapes=True, show_layer_activations=True, dpi=70) + +"""# Set Loss Function and Optimizer""" + +model.compile(optimizer='adam', loss=tf.keras.losses.SparseCategoricalCrossentropy(), metrics=[tf.keras.metrics.SparseCategoricalAccuracy(name='accuracy')]) + +"""# Callback + +""" + +import tensorflow as tf +from tensorflow.keras.callbacks import ModelCheckpoint, EarlyStopping, ReduceLROnPlateau + +early_stop_callback = EarlyStopping( + monitor='val_loss', + patience=3, + restore_best_weights=True, + verbose=0 +) + +reduce_lr_callback = ReduceLROnPlateau( + monitor='val_loss', + factor=0.5, + patience=2, + min_lr=1e-6, + verbose=0 +) + +checkpoint_callback = ModelCheckpoint( + filepath='best_model.weights.h5', + monitor='val_loss', + save_weights_only=True, + save_best_only=True, + mode='min', + verbose=0 +) + +callbacks = [early_stop_callback, reduce_lr_callback, checkpoint_callback] + +"""# Train Model""" + +hist = model.fit( + train_ds, + validation_data=val_ds, + epochs=100, + callbacks=callbacks, +) + +"""# Visualize the train and validation accuracy&loss""" + +import matplotlib.pyplot as plt +def plot_curves(history): + acc = history.history['accuracy'] + val_acc = history.history['val_accuracy'] + loss = history.history['loss'] + val_loss = history.history['val_loss'] + epochs = range(len(history.history['accuracy'])) + + plt.title("Train and Val Accuracy") + plt.plot(epochs, acc, label='training_acc') + plt.plot(epochs, val_acc, label='val_acc') + plt.ylabel('Accuracy') + plt.xlabel('Epoch') + plt.legend(loc="lower right") + + plt.figure() + plt.title("Train and Val Loss") + plt.plot(epochs, loss, label='training_loss') + plt.plot(epochs, val_loss, label='val_loss') + plt.ylabel('Loss') + plt.xlabel('Epoch') + plt.legend() + +plot_curves(hist) + +from sklearn.metrics import classification_report +import numpy as np + +class_names = train_dataset.class_names + +y_pred = [] +y_true = [] + +for images, labels in val_dataset: + predictions = model.predict(images) + y_pred.extend(np.argmax(predictions, axis=1)) + y_true.extend(labels.numpy()) + +# Hasilkan laporan klasifikasi +report = classification_report(y_true, y_pred, target_names=class_names) +print(report) + +import matplotlib.pyplot as plt +import seaborn as sns +from sklearn.metrics import confusion_matrix +import random + +# Buat confusion matrix +cm = confusion_matrix(y_true, y_pred) +plt.figure(figsize=(10, 8)) +sns.heatmap(cm, annot=True, fmt="d", cmap="Blues", xticklabels=class_names, yticklabels=class_names) +plt.xlabel("Predicted Label") +plt.ylabel("True Label") +plt.title("Confusion Matrix") +plt.show() + + +all_images = [] +all_labels = [] + +for images, labels in val_dataset: + all_images.extend(images) + all_labels.extend(labels) + +# Ambil indeks acak +num_samples = 9 +indices = random.sample(range(len(all_images)), num_samples) + +plt.figure(figsize=(15, 10)) +for i, idx in enumerate(indices): + img = all_images[idx] + true_label = all_labels[idx].numpy() + + pred = model.predict(np.expand_dims(img, axis=0)) + pred_label = np.argmax(pred, axis=1)[0] + + plt.subplot(3, 3, i+1) + plt.imshow(img.numpy().astype("uint8")) + plt.title(f"True: {class_names[true_label]}\nPred: {class_names[pred_label]}") + plt.axis('off') + +plt.tight_layout() +plt.show() + +"""# Save model""" + +model.save('ResNet-50_tomato-leaf-disease.keras'); + +import tensorflow as tf + +model = tf.keras.models.load_model('/content/ResNet-50_tomato-leaf-disease.keras') + +model.summary() +model.save('/content/drive/MyDrive/model_pak_ridwan_custom.h5') +print("Model telah disimpan dalam format .h5") + +model.export('saved_model/') + +tfjs.converters.save_keras_model(model, 'ResNet-50_tomato-leaf-disease-tfjs/') + +converter = tf.lite.TFLiteConverter.from_keras_model(model) +converter.target_spec.supported_ops = [ + tf.lite.OpsSet.TFLITE_BUILTINS, + tf.lite.OpsSet.SELECT_TF_OPS +] +converter.optimizations = [tf.lite.Optimize.DEFAULT] + +tflite_model = converter.convert() + +with open('ResNet-50_tomato-leaf-disease_v8.tflite', 'wb') as f: + f.write(tflite_model) + +"""# Predict an image""" + +import tensorflow as tf +import numpy as np +import matplotlib.pyplot as plt + +# Load Model +model = tf.keras.models.load_model('ResNet-50_tomato-leaf-disease.keras', compile=False) + + +# Load dan praproses gambar +img_path = '/content/fd3a25ef-50f2-4ca2-a20d-d0a99bcbae13___GCREC_Bact-Sp-6394_JPG.rf.1e9be7991e041d414a175bc85e0e505b.jpg' +image = tf.keras.utils.load_img(img_path, target_size=(224, 224)) +image_array = tf.keras.utils.img_to_array(image) +image_array = tf.expand_dims(image_array, axis=0) + +# Prediksi +predict = model.predict(image_array) +predicted_index = np.argmax(predict, axis=1)[0] +predicted_class = classes[predicted_index] +predicted_prob = predict[0][predicted_index] + +# Tampilkan hasil +plt.imshow(image) +plt.title(f"Prediksi: {predicted_class}; Probability: {predicted_prob:.2f}") +plt.axis('off') +plt.show() + +import tensorflow as tf +import numpy as np +import matplotlib.pyplot as plt + +# Fungsi untuk load model TFLite +def load_tflite_model(model_path): + interpreter = tf.lite.Interpreter(model_path=model_path) + interpreter.allocate_tensors() + return interpreter + +# Load model TFLite +model_tflite = load_tflite_model('ResNet-50_tomato-leaf-disease.tflite') + +# Load dan praproses gambar +img_path = '/content/fd3a25ef-50f2-4ca2-a20d-d0a99bcbae13___GCREC_Bact-Sp-6394_JPG.rf.1e9be7991e041d414a175bc85e0e505b.jpg' +image = tf.keras.utils.load_img(img_path, target_size=(224, 224)) +image_array = tf.keras.utils.img_to_array(image) +image_array = tf.expand_dims(image_array, axis=0) + +# Mendapatkan input dan output tensor dari model TFLite +input_details = model_tflite.get_input_details() +output_details = model_tflite.get_output_details() + +# Menyiapkan input data untuk TFLite +input_data = np.array(image_array, dtype=np.float32) +model_tflite.set_tensor(input_details[0]['index'], input_data) + +# Menjalankan inferensi +model_tflite.invoke() + +# Mengambil hasil output dari inferensi +output_data = model_tflite.get_tensor(output_details[0]['index']) + +# Prediksi +predicted_index = np.argmax(output_data, axis=1)[0] +predicted_class = classes[predicted_index] # Pastikan 'classes' sudah didefinisikan +predicted_prob = output_data[0][predicted_index] + +# Tampilkan hasil +plt.imshow(image) +plt.title(f"Prediksi: {predicted_class}; Probability: {predicted_prob:.2f}") +plt.axis('off') +plt.show() + +# !pip install rembg +# !pip install onnxruntime + +# import tensorflow as tf +# import numpy as np +# import matplotlib.pyplot as plt +# from rembg import remove +# from PIL import Image +# import io + +# # Load Model +# model = tf.keras.models.load_model('ResNet-50_tomato-leaf-disease_nobg.keras') + +# # Kelas penyakit daun tomat +# classes = [ +# 'bacterial_spot', +# 'healthy', +# 'late_blight', +# 'leaf_curl_virus', +# 'leaf_mold', +# 'mosaic_virus', +# 'septoria_leaf_spot' +# ] + +# # Load gambar dan hilangkan background +# img_path = 'jamurdaun.jpeg' +# with open(img_path, 'rb') as f: +# input_image_bytes = f.read() + +# output_image_bytes = remove(input_image_bytes) +# image_no_bg = Image.open(io.BytesIO(output_image_bytes)).convert("RGB") +# image_no_bg = image_no_bg.resize((224, 224)) + +# # Konversi gambar ke array untuk prediksi +# image_array = tf.keras.utils.img_to_array(image_no_bg) +# image_array = tf.expand_dims(image_array, axis=0) + +# # Prediksi +# predict = model.predict(image_array) +# predicted_index = np.argmax(predict, axis=1)[0] +# predicted_class = classes[predicted_index] +# predicted_prob = predict[0][predicted_index] + +# # Tampilkan hasil prediksi +# plt.imshow(image_no_bg) +# plt.title(f"Prediksi: {predicted_class}; Probability: {predicted_prob:.2f}") +# plt.axis('off') +# plt.show() + +# !pip install tensorrt +# !pip install tensorflowjs +# !pip install TensorFlow==2.15.0 +# !pip install tensorflow-decision-forests==1.8.1 + +!pip uninstall -y tensorflow tensorflowjs +!pip install tensorflow==2.15.0 tensorflowjs==4.9.0 +!pip install --upgrade jax==0.4.30 + +!tensorflowjs_converter --input_format=keras ResNet-50_tomato-leaf-disease.h5 ResNet-50_tomato-leaf-disease-tfjs + +# import zipfile +# import os + +# def zip_folder(folder_path, output_zip_path): +# """ +# Kompres sebuah folder menjadi file ZIP. + +# Args: +# folder_path (str): Path ke folder yang ingin dikompres. +# output_zip_path (str): Path untuk output file ZIP. +# """ +# with zipfile.ZipFile(output_zip_path, 'w', zipfile.ZIP_DEFLATED) as zipf: +# for root, dirs, files in os.walk(folder_path): +# for file in files: +# file_path = os.path.join(root, file) +# zipf.write(file_path, os.path.relpath(file_path, folder_path)) + +# folder_to_zip = "ResNet-50_tomato-leaf-disease-tfjs_nobg" +# output_zip_file = "ResNet-50_tomato-leaf-disease-tfjs_nobg.zip" +# zip_folder(folder_to_zip, output_zip_file) +# print(f"Folder '{folder_to_zip}' berhasil dikompres menjadi '{output_zip_file}'") \ No newline at end of file diff --git a/Model/ResNet-50_tomato-leaf-disease-tfjs.zip b/Model/ResNet-50_tomato-leaf-disease-tfjs.zip new file mode 100644 index 0000000..e3f9814 Binary files /dev/null and b/Model/ResNet-50_tomato-leaf-disease-tfjs.zip differ diff --git a/Model/ResNet-50_tomato-leaf-disease.tflite b/Model/ResNet-50_tomato-leaf-disease.tflite new file mode 100644 index 0000000..aad08c0 Binary files /dev/null and b/Model/ResNet-50_tomato-leaf-disease.tflite differ diff --git a/README.md b/README.md new file mode 100644 index 0000000..41f7f1b --- /dev/null +++ b/README.md @@ -0,0 +1,42 @@ +# TomatoLeafCare + +This application is designed to detect diseases on tomato leaves using a CNN machine learning model with ResNet-50 architecture, specifically for Android devices. + +## Table of Contents +- [About the Project](#about-the-project) +- [Features](#features) +- [Technology Used](#technology-used) +- [Installation](#installation) +- [Usage](#usage) +- [Contact](#contact) + +## About the Project +The **TomatoLeafCare** project aims to help anyone interested in growing tomatoes monitor the health of their tomato plants. This Android-based app makes it easy to identify common tomato leaf diseases by analyzing images uploaded by users. The app provides a quick diagnosis along with recommended treatments to help maintain the health and productivity of tomato plants. + +## Features +- **Disease Detection**: The app identifies various tomato leaf diseases based on images uploaded by users. +- **Treatment Recommendations**: After detecting a disease, the app provides treatment advice to help users manage plant health effectively. + +## Technology Used +- **CNN** : Utilizes a CNN model with ResNet-50 architecture for accurate disease detection on tomato leaves. +- **RAD Method** : The software development methodology used in this project. +- **Android Studio** : The primary tool for developing Android applications. +- **Kotlin** : The programming language used to create the application. + +## Installation +To install **TomatoLeafCare**, follow these steps: +1. Clone the repository: `git clone https://github.com/yourusername/TomatoLeafCare.git` +2. Open the project in Android Studio. +3. Build and run the application on an Android emulator or physical device. + +## Usage +1. Launch the **TomatoLeafCare** app on your Android device. +2. Capture or upload an image of a tomato leaf. +3. Wait for the app to process the image. +4. View the disease diagnosis and recommended treatments provided. + +## Contact +If you have any questions or suggestions, please contact: + +**Name** : Ibnu Naz'm Ar-rosyid +**Email** : ibnunazm.a11@gmail.com diff --git a/Server/controllers/classificationController.js b/Server/controllers/classificationController.js new file mode 100644 index 0000000..4ece5b2 --- /dev/null +++ b/Server/controllers/classificationController.js @@ -0,0 +1,63 @@ +const tf = require('@tensorflow/tfjs-node'); +const fs = require('fs'); +const path = require('path'); + +// Path ke model +const modelPath = path.join( + __dirname, + '../resources/ResNet-50_tomato-leaf-disease-tfjs_v8/model.json' +); + +let model; + +// Fungsi untuk memuat model +const loadModel = async () => { + try { + model = await tf.loadLayersModel(`file://${modelPath}`); + console.log('Model loaded successfully.'); + } catch (err) { + console.error('Error loading model:', err); + throw new Error('Model loading failed.'); + } +}; + +// Memuat model saat aplikasi dimulai +loadModel(); + +const preprocessImage = async (imagePath) => { + const imageBuffer = fs.readFileSync(imagePath); + let tensor = tf.node.decodeImage(imageBuffer, 3); + tensor = tf.image.resizeBilinear(tensor, [224, 224]); + tensor = tensor.expandDims(0); + //tensor = tensor.toFloat().div(tf.scalar(255.0)); + return tensor; +}; + +// Fungsi untuk mengklasifikasikan gambar +const classifyImage = async (imagePath) => { + try { + const classes = [ + 'bacterial_spot', + 'healthy', + 'late_blight', + 'leaf_curl_virus', + 'leaf_mold', + 'mosaic_virus', + 'septoria_leaf_spot', + ]; + + const tensor = await preprocessImage(imagePath); + const predictions = model.predict(tensor); + const predictedClassIndex = predictions.argMax(-1).dataSync()[0]; + + // Ambil nama kelas berdasarkan indeks + const predictedClassName = classes[predictedClassIndex]; + + return { index: predictedClassIndex, class: predictedClassName }; + } catch (err) { + console.error('Error during classification:', err); + throw new Error('Error during classification.'); + } +}; + +module.exports = { classifyImage }; diff --git a/Server/controllers/classificationController.js.save b/Server/controllers/classificationController.js.save new file mode 100644 index 0000000..4ece5b2 --- /dev/null +++ b/Server/controllers/classificationController.js.save @@ -0,0 +1,63 @@ +const tf = require('@tensorflow/tfjs-node'); +const fs = require('fs'); +const path = require('path'); + +// Path ke model +const modelPath = path.join( + __dirname, + '../resources/ResNet-50_tomato-leaf-disease-tfjs_v8/model.json' +); + +let model; + +// Fungsi untuk memuat model +const loadModel = async () => { + try { + model = await tf.loadLayersModel(`file://${modelPath}`); + console.log('Model loaded successfully.'); + } catch (err) { + console.error('Error loading model:', err); + throw new Error('Model loading failed.'); + } +}; + +// Memuat model saat aplikasi dimulai +loadModel(); + +const preprocessImage = async (imagePath) => { + const imageBuffer = fs.readFileSync(imagePath); + let tensor = tf.node.decodeImage(imageBuffer, 3); + tensor = tf.image.resizeBilinear(tensor, [224, 224]); + tensor = tensor.expandDims(0); + //tensor = tensor.toFloat().div(tf.scalar(255.0)); + return tensor; +}; + +// Fungsi untuk mengklasifikasikan gambar +const classifyImage = async (imagePath) => { + try { + const classes = [ + 'bacterial_spot', + 'healthy', + 'late_blight', + 'leaf_curl_virus', + 'leaf_mold', + 'mosaic_virus', + 'septoria_leaf_spot', + ]; + + const tensor = await preprocessImage(imagePath); + const predictions = model.predict(tensor); + const predictedClassIndex = predictions.argMax(-1).dataSync()[0]; + + // Ambil nama kelas berdasarkan indeks + const predictedClassName = classes[predictedClassIndex]; + + return { index: predictedClassIndex, class: predictedClassName }; + } catch (err) { + console.error('Error during classification:', err); + throw new Error('Error during classification.'); + } +}; + +module.exports = { classifyImage }; diff --git a/Server/controllers/classificationController.js.save.1 b/Server/controllers/classificationController.js.save.1 new file mode 100644 index 0000000..5a1c610 --- /dev/null +++ b/Server/controllers/classificationController.js.save.1 @@ -0,0 +1,61 @@ +const tf = require('@tensorflow/tfjs-node'); +const fs = require('fs'); +const path = require('path'); + +// Path ke model +const modelPath = path.join( + __dirname, + '../resources/ResNet-50_tomato-leaf-disease-tfjs_nobg/model.json' +); + +let model; + +const loadModel = async () => { + try { + model = await tf.loadLayersModel(`file://${modelPath}`); + console.log('Model loaded successfully.'); + } catch (err) { + console.error('Error loading model:', err); + throw new Error('Model loading failed.'); + } +}; + +loadModel(); + +const preprocessImage = async (imagePath) => { + const imageBuffer = fs.readFileSync(imagePath); + let tensor = tf.node.decodeImage(imageBuffer, 3); + tensor = tf.image.resizeBilinear(tensor, [224, 224]); + tensor = tensor.expandDims(0); + //tensor = tensor.toFloat().div(tf.scalar(255.0)); + return tensor; +}; + +// Fungsi untuk mengklasifikasikan gambar +const classifyImage = async (imagePath) => { + try { + const classes = [ + 'bacterial_spot', + 'healthy', + 'late_blight', + 'leaf_curl_virus', + 'leaf_mold', + 'mosaic_virus', + 'septoria_leaf_spot', + ]; + + const tensor = await preprocessImage(imagePath); + const predictions = model.predict(tensor); + const predictedClassIndex = predictions.argMax(-1).dataSync()[0]; + + // Ambil nama kelas berdasarkan indeks + const predictedClassName = classes[predictedClassIndex]; + + return { index: predictedClassIndex, class: predictedClassName }; + } catch (err) { + console.error('Error during classification:', err); + throw new Error('Error during classification.'); + } +}; + +module.exports = { classifyImage }; diff --git a/Server/middleware/authMiddleware.js b/Server/middleware/authMiddleware.js new file mode 100644 index 0000000..49394a3 --- /dev/null +++ b/Server/middleware/authMiddleware.js @@ -0,0 +1,23 @@ +function basicAuth(req, res, next) { + const authHeader = req.headers['authorization']; + + if (!authHeader || !authHeader.startsWith('Basic ')) { + res.setHeader('WWW-Authenticate', 'Basic'); + return res.status(401).send('Authentication required.'); + } + + const base64Credentials = authHeader.split(' ')[1]; + const credentials = Buffer.from(base64Credentials, 'base64').toString('ascii'); + const [username, password] = credentials.split(':'); + + const USERNAME = 'rahasia'; + const PASSWORD = 'tomat'; + + if (username === USERNAME && password === PASSWORD) { + next(); + } else { + return res.status(403).send('Access denied.'); + } +} + +module.exports = basicAuth; diff --git a/Server/package.json b/Server/package.json new file mode 100644 index 0000000..703ff3b --- /dev/null +++ b/Server/package.json @@ -0,0 +1,18 @@ +{ + "dependencies": { + "@tensorflow/tfjs-node": "^4.8.0", + "express": "^4.21.2", + "multer": "^1.4.5-lts.1" + }, + "name": "tomato_leaf_care", + "version": "1.0.0", + "main": "server.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "start": "node server.js" + }, + "keywords": [], + "author": "", + "license": "ISC", + "description": "" +} diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard10of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard10of23.bin new file mode 100644 index 0000000..e28aa12 Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard10of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard11of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard11of23.bin new file mode 100644 index 0000000..75ca936 Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard11of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard12of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard12of23.bin new file mode 100644 index 0000000..6b09d0d Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard12of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard13of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard13of23.bin new file mode 100644 index 0000000..3bd9934 Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard13of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard14of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard14of23.bin new file mode 100644 index 0000000..e566da1 Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard14of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard15of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard15of23.bin new file mode 100644 index 0000000..36508cf Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard15of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard16of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard16of23.bin new file mode 100644 index 0000000..20a1dc9 Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard16of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard17of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard17of23.bin new file mode 100644 index 0000000..fcf4b34 Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard17of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard18of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard18of23.bin new file mode 100644 index 0000000..b167003 Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard18of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard19of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard19of23.bin new file mode 100644 index 0000000..e3a1331 Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard19of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard1of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard1of23.bin new file mode 100644 index 0000000..50b50ad Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard1of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard20of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard20of23.bin new file mode 100644 index 0000000..c179d34 Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard20of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard21of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard21of23.bin new file mode 100644 index 0000000..73771ec Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard21of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard22of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard22of23.bin new file mode 100644 index 0000000..6f174cb Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard22of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard23of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard23of23.bin new file mode 100644 index 0000000..39d9ccf Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard23of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard2of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard2of23.bin new file mode 100644 index 0000000..835dc9d Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard2of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard3of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard3of23.bin new file mode 100644 index 0000000..e34749c Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard3of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard4of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard4of23.bin new file mode 100644 index 0000000..31e2002 Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard4of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard5of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard5of23.bin new file mode 100644 index 0000000..de0e410 Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard5of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard6of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard6of23.bin new file mode 100644 index 0000000..79e8c2d Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard6of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard7of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard7of23.bin new file mode 100644 index 0000000..a693c57 Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard7of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard8of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard8of23.bin new file mode 100644 index 0000000..d1c7097 Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard8of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard9of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard9of23.bin new file mode 100644 index 0000000..be8ac68 Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/group1-shard9of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/model.json b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/model.json new file mode 100644 index 0000000..a8b7941 --- /dev/null +++ b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_new/model.json @@ -0,0 +1 @@ +{"format": "layers-model", "generatedBy": "keras v3.8.0", "convertedBy": "TensorFlow.js Converter v4.22.0", "modelTopology": {"keras_version": "3.8.0", "backend": "tensorflow", "model_config": {"class_name": "Functional", "config": {"name": "functional", "trainable": true, "layers": [{"class_name": "InputLayer", "config": {"batch_shape": [null, 224, 224, 3], "dtype": "float32", "sparse": false, "name": "input_layer_1"}, "name": "input_layer_1", "inbound_nodes": []}, {"class_name": "Functional", "config": {"name": "resnet50", "trainable": false, "layers": [{"class_name": "InputLayer", "config": {"batch_shape": [null, null, null, 3], "dtype": "float32", "sparse": false, "name": "input_layer"}, "name": "input_layer", "inbound_nodes": []}, {"class_name": "Cast", "config": {"dtype": "float16"}, "name": "cast_1", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 3], "dtype": "float32", "keras_history": ["input_layer", 0, 0]}}], "kwargs": {}}]}, {"class_name": "ZeroPadding2D", "config": {"name": "conv1_pad", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "padding": [[3, 3], [3, 3]], "data_format": "channels_last"}, "name": "conv1_pad", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 3], "dtype": "float16", "keras_history": ["cast_1", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv1_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 64, "kernel_size": [7, 7], "strides": [2, 2], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv1_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 3], "dtype": "float16", "keras_history": ["conv1_pad", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv1_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv1_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 64], "dtype": "float16", "keras_history": ["conv1_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Activation", "config": {"name": "conv1_relu", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv1_relu", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 64], "dtype": "float16", "keras_history": ["conv1_bn", 0, 0]}}], "kwargs": {}}]}, {"class_name": "ZeroPadding2D", "config": {"name": "pool1_pad", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "padding": [[1, 1], [1, 1]], "data_format": "channels_last"}, "name": "pool1_pad", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 64], "dtype": "float16", "keras_history": ["conv1_relu", 0, 0]}}], "kwargs": {}}]}, {"class_name": "MaxPooling2D", "config": {"name": "pool1_pool", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "pool_size": [3, 3], "padding": "valid", "strides": [2, 2], "data_format": "channels_last"}, "name": "pool1_pool", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 64], "dtype": "float16", "keras_history": ["pool1_pad", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv2_block1_1_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 64, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv2_block1_1_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 64], "dtype": "float16", "keras_history": ["pool1_pool", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv2_block1_1_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv2_block1_1_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 64], "dtype": "float16", "keras_history": ["conv2_block1_1_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Activation", "config": {"name": "conv2_block1_1_relu", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv2_block1_1_relu", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 64], "dtype": "float16", "keras_history": ["conv2_block1_1_bn", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv2_block1_2_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 64, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv2_block1_2_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 64], "dtype": "float16", "keras_history": ["conv2_block1_1_relu", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv2_block1_2_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv2_block1_2_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 64], "dtype": "float16", "keras_history": ["conv2_block1_2_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Activation", "config": {"name": "conv2_block1_2_relu", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv2_block1_2_relu", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 64], "dtype": "float16", "keras_history": ["conv2_block1_2_bn", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv2_block1_0_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 256, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv2_block1_0_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 64], "dtype": "float16", "keras_history": ["pool1_pool", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv2_block1_3_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 256, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv2_block1_3_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 64], "dtype": "float16", "keras_history": ["conv2_block1_2_relu", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv2_block1_0_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv2_block1_0_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv2_block1_0_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv2_block1_3_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv2_block1_3_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv2_block1_3_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Add", "config": {"name": "conv2_block1_add", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}}, "name": "conv2_block1_add", "inbound_nodes": [{"args": [[{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv2_block1_0_bn", 0, 0]}}, {"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv2_block1_3_bn", 0, 0]}}]], "kwargs": {}}]}, {"class_name": "Activation", "config": {"name": "conv2_block1_out", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv2_block1_out", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv2_block1_add", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv2_block2_1_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 64, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv2_block2_1_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv2_block1_out", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv2_block2_1_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv2_block2_1_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 64], "dtype": "float16", "keras_history": ["conv2_block2_1_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Activation", "config": {"name": "conv2_block2_1_relu", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv2_block2_1_relu", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 64], "dtype": "float16", "keras_history": ["conv2_block2_1_bn", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv2_block2_2_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 64, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv2_block2_2_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 64], "dtype": "float16", "keras_history": ["conv2_block2_1_relu", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv2_block2_2_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv2_block2_2_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 64], "dtype": "float16", "keras_history": ["conv2_block2_2_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Activation", "config": {"name": "conv2_block2_2_relu", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv2_block2_2_relu", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 64], "dtype": "float16", "keras_history": ["conv2_block2_2_bn", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv2_block2_3_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 256, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv2_block2_3_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 64], "dtype": "float16", "keras_history": ["conv2_block2_2_relu", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv2_block2_3_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv2_block2_3_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv2_block2_3_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Add", "config": {"name": "conv2_block2_add", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}}, "name": "conv2_block2_add", "inbound_nodes": [{"args": [[{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv2_block1_out", 0, 0]}}, {"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv2_block2_3_bn", 0, 0]}}]], "kwargs": {}}]}, {"class_name": "Activation", "config": {"name": "conv2_block2_out", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv2_block2_out", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv2_block2_add", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv2_block3_1_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 64, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv2_block3_1_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv2_block2_out", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv2_block3_1_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv2_block3_1_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 64], "dtype": "float16", "keras_history": ["conv2_block3_1_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Activation", "config": {"name": "conv2_block3_1_relu", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv2_block3_1_relu", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 64], "dtype": "float16", "keras_history": ["conv2_block3_1_bn", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv2_block3_2_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 64, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv2_block3_2_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 64], "dtype": "float16", "keras_history": ["conv2_block3_1_relu", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv2_block3_2_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv2_block3_2_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 64], "dtype": "float16", "keras_history": ["conv2_block3_2_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Activation", "config": {"name": "conv2_block3_2_relu", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv2_block3_2_relu", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 64], "dtype": "float16", "keras_history": ["conv2_block3_2_bn", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv2_block3_3_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 256, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv2_block3_3_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 64], "dtype": "float16", "keras_history": ["conv2_block3_2_relu", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv2_block3_3_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv2_block3_3_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv2_block3_3_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Add", "config": {"name": "conv2_block3_add", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}}, "name": "conv2_block3_add", "inbound_nodes": [{"args": [[{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv2_block2_out", 0, 0]}}, {"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv2_block3_3_bn", 0, 0]}}]], "kwargs": {}}]}, {"class_name": "Activation", "config": {"name": "conv2_block3_out", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv2_block3_out", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv2_block3_add", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv3_block1_1_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 128, "kernel_size": [1, 1], "strides": [2, 2], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv3_block1_1_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv2_block3_out", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv3_block1_1_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv3_block1_1_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 128], "dtype": "float16", "keras_history": ["conv3_block1_1_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Activation", "config": {"name": "conv3_block1_1_relu", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv3_block1_1_relu", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 128], "dtype": "float16", "keras_history": ["conv3_block1_1_bn", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv3_block1_2_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 128, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv3_block1_2_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 128], "dtype": "float16", "keras_history": ["conv3_block1_1_relu", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv3_block1_2_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv3_block1_2_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 128], "dtype": "float16", "keras_history": ["conv3_block1_2_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Activation", "config": {"name": "conv3_block1_2_relu", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv3_block1_2_relu", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 128], "dtype": "float16", "keras_history": ["conv3_block1_2_bn", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv3_block1_0_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 512, "kernel_size": [1, 1], "strides": [2, 2], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv3_block1_0_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv2_block3_out", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv3_block1_3_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 512, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv3_block1_3_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 128], "dtype": "float16", "keras_history": ["conv3_block1_2_relu", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv3_block1_0_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv3_block1_0_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 512], "dtype": "float16", "keras_history": ["conv3_block1_0_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv3_block1_3_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv3_block1_3_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 512], "dtype": "float16", "keras_history": ["conv3_block1_3_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Add", "config": {"name": "conv3_block1_add", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}}, "name": "conv3_block1_add", "inbound_nodes": [{"args": [[{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 512], "dtype": "float16", "keras_history": ["conv3_block1_0_bn", 0, 0]}}, {"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 512], "dtype": "float16", "keras_history": ["conv3_block1_3_bn", 0, 0]}}]], "kwargs": {}}]}, {"class_name": "Activation", "config": {"name": "conv3_block1_out", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv3_block1_out", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 512], "dtype": "float16", "keras_history": ["conv3_block1_add", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv3_block2_1_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 128, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv3_block2_1_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 512], "dtype": "float16", "keras_history": ["conv3_block1_out", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv3_block2_1_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv3_block2_1_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 128], "dtype": "float16", "keras_history": ["conv3_block2_1_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Activation", "config": {"name": "conv3_block2_1_relu", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv3_block2_1_relu", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 128], "dtype": "float16", "keras_history": ["conv3_block2_1_bn", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv3_block2_2_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 128, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv3_block2_2_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 128], "dtype": "float16", "keras_history": ["conv3_block2_1_relu", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv3_block2_2_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv3_block2_2_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 128], "dtype": "float16", "keras_history": ["conv3_block2_2_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Activation", "config": {"name": "conv3_block2_2_relu", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv3_block2_2_relu", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 128], "dtype": "float16", "keras_history": ["conv3_block2_2_bn", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv3_block2_3_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 512, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv3_block2_3_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 128], "dtype": "float16", "keras_history": ["conv3_block2_2_relu", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv3_block2_3_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv3_block2_3_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 512], "dtype": "float16", "keras_history": ["conv3_block2_3_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Add", "config": {"name": "conv3_block2_add", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}}, "name": "conv3_block2_add", "inbound_nodes": [{"args": [[{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 512], "dtype": "float16", "keras_history": ["conv3_block1_out", 0, 0]}}, {"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 512], "dtype": "float16", "keras_history": ["conv3_block2_3_bn", 0, 0]}}]], "kwargs": {}}]}, {"class_name": "Activation", "config": {"name": "conv3_block2_out", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv3_block2_out", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 512], "dtype": "float16", "keras_history": ["conv3_block2_add", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv3_block3_1_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 128, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv3_block3_1_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 512], "dtype": "float16", "keras_history": ["conv3_block2_out", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv3_block3_1_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv3_block3_1_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 128], "dtype": "float16", "keras_history": ["conv3_block3_1_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Activation", "config": {"name": "conv3_block3_1_relu", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv3_block3_1_relu", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 128], "dtype": "float16", "keras_history": ["conv3_block3_1_bn", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv3_block3_2_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 128, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv3_block3_2_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 128], "dtype": "float16", "keras_history": ["conv3_block3_1_relu", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv3_block3_2_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv3_block3_2_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 128], "dtype": "float16", "keras_history": ["conv3_block3_2_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Activation", "config": {"name": "conv3_block3_2_relu", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv3_block3_2_relu", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 128], "dtype": "float16", "keras_history": ["conv3_block3_2_bn", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv3_block3_3_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 512, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv3_block3_3_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 128], "dtype": "float16", "keras_history": ["conv3_block3_2_relu", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv3_block3_3_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv3_block3_3_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 512], "dtype": "float16", "keras_history": ["conv3_block3_3_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Add", "config": {"name": "conv3_block3_add", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}}, "name": "conv3_block3_add", "inbound_nodes": [{"args": [[{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 512], "dtype": "float16", "keras_history": ["conv3_block2_out", 0, 0]}}, {"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 512], "dtype": "float16", "keras_history": ["conv3_block3_3_bn", 0, 0]}}]], "kwargs": {}}]}, {"class_name": "Activation", "config": {"name": "conv3_block3_out", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv3_block3_out", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 512], "dtype": "float16", "keras_history": ["conv3_block3_add", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv3_block4_1_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 128, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv3_block4_1_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 512], "dtype": "float16", "keras_history": ["conv3_block3_out", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv3_block4_1_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv3_block4_1_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 128], "dtype": "float16", "keras_history": ["conv3_block4_1_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Activation", "config": {"name": "conv3_block4_1_relu", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv3_block4_1_relu", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 128], "dtype": "float16", "keras_history": ["conv3_block4_1_bn", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv3_block4_2_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 128, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv3_block4_2_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 128], "dtype": "float16", "keras_history": ["conv3_block4_1_relu", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv3_block4_2_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv3_block4_2_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 128], "dtype": "float16", "keras_history": ["conv3_block4_2_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Activation", "config": {"name": "conv3_block4_2_relu", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv3_block4_2_relu", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 128], "dtype": "float16", "keras_history": ["conv3_block4_2_bn", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv3_block4_3_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 512, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv3_block4_3_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 128], "dtype": "float16", "keras_history": ["conv3_block4_2_relu", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv3_block4_3_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv3_block4_3_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 512], "dtype": "float16", "keras_history": ["conv3_block4_3_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Add", "config": {"name": "conv3_block4_add", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}}, "name": "conv3_block4_add", "inbound_nodes": [{"args": [[{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 512], "dtype": "float16", "keras_history": ["conv3_block3_out", 0, 0]}}, {"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 512], "dtype": "float16", "keras_history": ["conv3_block4_3_bn", 0, 0]}}]], "kwargs": {}}]}, {"class_name": "Activation", "config": {"name": "conv3_block4_out", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv3_block4_out", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 512], "dtype": "float16", "keras_history": ["conv3_block4_add", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv4_block1_1_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 256, "kernel_size": [1, 1], "strides": [2, 2], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv4_block1_1_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 512], "dtype": "float16", "keras_history": ["conv3_block4_out", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv4_block1_1_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv4_block1_1_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv4_block1_1_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Activation", "config": {"name": "conv4_block1_1_relu", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv4_block1_1_relu", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv4_block1_1_bn", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv4_block1_2_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 256, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv4_block1_2_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv4_block1_1_relu", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv4_block1_2_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv4_block1_2_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv4_block1_2_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Activation", "config": {"name": "conv4_block1_2_relu", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv4_block1_2_relu", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv4_block1_2_bn", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv4_block1_0_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 1024, "kernel_size": [1, 1], "strides": [2, 2], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv4_block1_0_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 512], "dtype": "float16", "keras_history": ["conv3_block4_out", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv4_block1_3_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 1024, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv4_block1_3_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv4_block1_2_relu", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv4_block1_0_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv4_block1_0_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 1024], "dtype": "float16", "keras_history": ["conv4_block1_0_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv4_block1_3_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv4_block1_3_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 1024], "dtype": "float16", "keras_history": ["conv4_block1_3_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Add", "config": {"name": "conv4_block1_add", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}}, "name": "conv4_block1_add", "inbound_nodes": [{"args": [[{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 1024], "dtype": "float16", "keras_history": ["conv4_block1_0_bn", 0, 0]}}, {"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 1024], "dtype": "float16", "keras_history": ["conv4_block1_3_bn", 0, 0]}}]], "kwargs": {}}]}, {"class_name": "Activation", "config": {"name": "conv4_block1_out", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv4_block1_out", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 1024], "dtype": "float16", "keras_history": ["conv4_block1_add", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv4_block2_1_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 256, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv4_block2_1_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 1024], "dtype": "float16", "keras_history": ["conv4_block1_out", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv4_block2_1_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv4_block2_1_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv4_block2_1_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Activation", "config": {"name": "conv4_block2_1_relu", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv4_block2_1_relu", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv4_block2_1_bn", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv4_block2_2_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 256, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv4_block2_2_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv4_block2_1_relu", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv4_block2_2_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv4_block2_2_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv4_block2_2_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Activation", "config": {"name": "conv4_block2_2_relu", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv4_block2_2_relu", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv4_block2_2_bn", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv4_block2_3_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 1024, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv4_block2_3_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv4_block2_2_relu", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv4_block2_3_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv4_block2_3_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 1024], "dtype": "float16", "keras_history": ["conv4_block2_3_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Add", "config": {"name": "conv4_block2_add", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}}, "name": "conv4_block2_add", "inbound_nodes": [{"args": [[{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 1024], "dtype": "float16", "keras_history": ["conv4_block1_out", 0, 0]}}, {"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 1024], "dtype": "float16", "keras_history": ["conv4_block2_3_bn", 0, 0]}}]], "kwargs": {}}]}, {"class_name": "Activation", "config": {"name": "conv4_block2_out", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv4_block2_out", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 1024], "dtype": "float16", "keras_history": ["conv4_block2_add", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv4_block3_1_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 256, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv4_block3_1_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 1024], "dtype": "float16", "keras_history": ["conv4_block2_out", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv4_block3_1_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv4_block3_1_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv4_block3_1_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Activation", "config": {"name": "conv4_block3_1_relu", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv4_block3_1_relu", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv4_block3_1_bn", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv4_block3_2_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 256, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv4_block3_2_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv4_block3_1_relu", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv4_block3_2_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv4_block3_2_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv4_block3_2_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Activation", "config": {"name": "conv4_block3_2_relu", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv4_block3_2_relu", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv4_block3_2_bn", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv4_block3_3_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 1024, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv4_block3_3_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv4_block3_2_relu", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv4_block3_3_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv4_block3_3_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 1024], "dtype": "float16", "keras_history": ["conv4_block3_3_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Add", "config": {"name": "conv4_block3_add", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}}, "name": "conv4_block3_add", "inbound_nodes": [{"args": [[{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 1024], "dtype": "float16", "keras_history": ["conv4_block2_out", 0, 0]}}, {"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 1024], "dtype": "float16", "keras_history": ["conv4_block3_3_bn", 0, 0]}}]], "kwargs": {}}]}, {"class_name": "Activation", "config": {"name": "conv4_block3_out", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv4_block3_out", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 1024], "dtype": "float16", "keras_history": ["conv4_block3_add", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv4_block4_1_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 256, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv4_block4_1_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 1024], "dtype": "float16", "keras_history": ["conv4_block3_out", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv4_block4_1_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv4_block4_1_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv4_block4_1_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Activation", "config": {"name": "conv4_block4_1_relu", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv4_block4_1_relu", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv4_block4_1_bn", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv4_block4_2_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 256, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv4_block4_2_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv4_block4_1_relu", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv4_block4_2_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv4_block4_2_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv4_block4_2_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Activation", "config": {"name": "conv4_block4_2_relu", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv4_block4_2_relu", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv4_block4_2_bn", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv4_block4_3_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 1024, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv4_block4_3_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv4_block4_2_relu", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv4_block4_3_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv4_block4_3_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 1024], "dtype": "float16", "keras_history": ["conv4_block4_3_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Add", "config": {"name": "conv4_block4_add", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}}, "name": "conv4_block4_add", "inbound_nodes": [{"args": [[{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 1024], "dtype": "float16", "keras_history": ["conv4_block3_out", 0, 0]}}, {"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 1024], "dtype": "float16", "keras_history": ["conv4_block4_3_bn", 0, 0]}}]], "kwargs": {}}]}, {"class_name": "Activation", "config": {"name": "conv4_block4_out", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv4_block4_out", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 1024], "dtype": "float16", "keras_history": ["conv4_block4_add", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv4_block5_1_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 256, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv4_block5_1_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 1024], "dtype": "float16", "keras_history": ["conv4_block4_out", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv4_block5_1_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv4_block5_1_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv4_block5_1_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Activation", "config": {"name": "conv4_block5_1_relu", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv4_block5_1_relu", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv4_block5_1_bn", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv4_block5_2_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 256, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv4_block5_2_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv4_block5_1_relu", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv4_block5_2_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv4_block5_2_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv4_block5_2_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Activation", "config": {"name": "conv4_block5_2_relu", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv4_block5_2_relu", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv4_block5_2_bn", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv4_block5_3_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 1024, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv4_block5_3_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv4_block5_2_relu", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv4_block5_3_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv4_block5_3_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 1024], "dtype": "float16", "keras_history": ["conv4_block5_3_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Add", "config": {"name": "conv4_block5_add", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}}, "name": "conv4_block5_add", "inbound_nodes": [{"args": [[{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 1024], "dtype": "float16", "keras_history": ["conv4_block4_out", 0, 0]}}, {"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 1024], "dtype": "float16", "keras_history": ["conv4_block5_3_bn", 0, 0]}}]], "kwargs": {}}]}, {"class_name": "Activation", "config": {"name": "conv4_block5_out", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv4_block5_out", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 1024], "dtype": "float16", "keras_history": ["conv4_block5_add", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv4_block6_1_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 256, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv4_block6_1_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 1024], "dtype": "float16", "keras_history": ["conv4_block5_out", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv4_block6_1_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv4_block6_1_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv4_block6_1_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Activation", "config": {"name": "conv4_block6_1_relu", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv4_block6_1_relu", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv4_block6_1_bn", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv4_block6_2_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 256, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv4_block6_2_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv4_block6_1_relu", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv4_block6_2_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv4_block6_2_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv4_block6_2_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Activation", "config": {"name": "conv4_block6_2_relu", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv4_block6_2_relu", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv4_block6_2_bn", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv4_block6_3_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 1024, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv4_block6_3_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 256], "dtype": "float16", "keras_history": ["conv4_block6_2_relu", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv4_block6_3_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv4_block6_3_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 1024], "dtype": "float16", "keras_history": ["conv4_block6_3_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Add", "config": {"name": "conv4_block6_add", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}}, "name": "conv4_block6_add", "inbound_nodes": [{"args": [[{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 1024], "dtype": "float16", "keras_history": ["conv4_block5_out", 0, 0]}}, {"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 1024], "dtype": "float16", "keras_history": ["conv4_block6_3_bn", 0, 0]}}]], "kwargs": {}}]}, {"class_name": "Activation", "config": {"name": "conv4_block6_out", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv4_block6_out", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 1024], "dtype": "float16", "keras_history": ["conv4_block6_add", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv5_block1_1_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 512, "kernel_size": [1, 1], "strides": [2, 2], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv5_block1_1_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 1024], "dtype": "float16", "keras_history": ["conv4_block6_out", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv5_block1_1_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv5_block1_1_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 512], "dtype": "float16", "keras_history": ["conv5_block1_1_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Activation", "config": {"name": "conv5_block1_1_relu", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv5_block1_1_relu", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 512], "dtype": "float16", "keras_history": ["conv5_block1_1_bn", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv5_block1_2_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 512, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv5_block1_2_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 512], "dtype": "float16", "keras_history": ["conv5_block1_1_relu", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv5_block1_2_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv5_block1_2_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 512], "dtype": "float16", "keras_history": ["conv5_block1_2_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Activation", "config": {"name": "conv5_block1_2_relu", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv5_block1_2_relu", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 512], "dtype": "float16", "keras_history": ["conv5_block1_2_bn", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv5_block1_0_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 2048, "kernel_size": [1, 1], "strides": [2, 2], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv5_block1_0_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 1024], "dtype": "float16", "keras_history": ["conv4_block6_out", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv5_block1_3_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 2048, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv5_block1_3_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 512], "dtype": "float16", "keras_history": ["conv5_block1_2_relu", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv5_block1_0_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv5_block1_0_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 2048], "dtype": "float16", "keras_history": ["conv5_block1_0_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv5_block1_3_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv5_block1_3_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 2048], "dtype": "float16", "keras_history": ["conv5_block1_3_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Add", "config": {"name": "conv5_block1_add", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}}, "name": "conv5_block1_add", "inbound_nodes": [{"args": [[{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 2048], "dtype": "float16", "keras_history": ["conv5_block1_0_bn", 0, 0]}}, {"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 2048], "dtype": "float16", "keras_history": ["conv5_block1_3_bn", 0, 0]}}]], "kwargs": {}}]}, {"class_name": "Activation", "config": {"name": "conv5_block1_out", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv5_block1_out", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 2048], "dtype": "float16", "keras_history": ["conv5_block1_add", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv5_block2_1_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 512, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv5_block2_1_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 2048], "dtype": "float16", "keras_history": ["conv5_block1_out", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv5_block2_1_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv5_block2_1_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 512], "dtype": "float16", "keras_history": ["conv5_block2_1_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Activation", "config": {"name": "conv5_block2_1_relu", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv5_block2_1_relu", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 512], "dtype": "float16", "keras_history": ["conv5_block2_1_bn", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv5_block2_2_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 512, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv5_block2_2_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 512], "dtype": "float16", "keras_history": ["conv5_block2_1_relu", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv5_block2_2_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv5_block2_2_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 512], "dtype": "float16", "keras_history": ["conv5_block2_2_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Activation", "config": {"name": "conv5_block2_2_relu", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv5_block2_2_relu", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 512], "dtype": "float16", "keras_history": ["conv5_block2_2_bn", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv5_block2_3_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 2048, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv5_block2_3_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 512], "dtype": "float16", "keras_history": ["conv5_block2_2_relu", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv5_block2_3_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv5_block2_3_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 2048], "dtype": "float16", "keras_history": ["conv5_block2_3_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Add", "config": {"name": "conv5_block2_add", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}}, "name": "conv5_block2_add", "inbound_nodes": [{"args": [[{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 2048], "dtype": "float16", "keras_history": ["conv5_block1_out", 0, 0]}}, {"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 2048], "dtype": "float16", "keras_history": ["conv5_block2_3_bn", 0, 0]}}]], "kwargs": {}}]}, {"class_name": "Activation", "config": {"name": "conv5_block2_out", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv5_block2_out", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 2048], "dtype": "float16", "keras_history": ["conv5_block2_add", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv5_block3_1_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 512, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv5_block3_1_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 2048], "dtype": "float16", "keras_history": ["conv5_block2_out", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv5_block3_1_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv5_block3_1_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 512], "dtype": "float16", "keras_history": ["conv5_block3_1_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Activation", "config": {"name": "conv5_block3_1_relu", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv5_block3_1_relu", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 512], "dtype": "float16", "keras_history": ["conv5_block3_1_bn", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv5_block3_2_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 512, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv5_block3_2_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 512], "dtype": "float16", "keras_history": ["conv5_block3_1_relu", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv5_block3_2_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv5_block3_2_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 512], "dtype": "float16", "keras_history": ["conv5_block3_2_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Activation", "config": {"name": "conv5_block3_2_relu", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv5_block3_2_relu", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 512], "dtype": "float16", "keras_history": ["conv5_block3_2_bn", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Conv2D", "config": {"name": "conv5_block3_3_conv", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "filters": 2048, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv5_block3_3_conv", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 512], "dtype": "float16", "keras_history": ["conv5_block3_2_relu", 0, 0]}}], "kwargs": {}}]}, {"class_name": "BatchNormalization", "config": {"name": "conv5_block3_3_bn", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "axis": 3, "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null, "synchronized": false}, "name": "conv5_block3_3_bn", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 2048], "dtype": "float16", "keras_history": ["conv5_block3_3_conv", 0, 0]}}], "kwargs": {"mask": null}}]}, {"class_name": "Add", "config": {"name": "conv5_block3_add", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}}, "name": "conv5_block3_add", "inbound_nodes": [{"args": [[{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 2048], "dtype": "float16", "keras_history": ["conv5_block2_out", 0, 0]}}, {"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 2048], "dtype": "float16", "keras_history": ["conv5_block3_3_bn", 0, 0]}}]], "kwargs": {}}]}, {"class_name": "Activation", "config": {"name": "conv5_block3_out", "trainable": false, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "activation": "relu"}, "name": "conv5_block3_out", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, null, null, 2048], "dtype": "float16", "keras_history": ["conv5_block3_add", 0, 0]}}], "kwargs": {}}]}], "input_layers": [["input_layer", 0, 0]], "output_layers": [["conv5_block3_out", 0, 0]]}, "name": "resnet50", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, 224, 224, 3], "dtype": "float32", "keras_history": ["input_layer_1", 0, 0]}}], "kwargs": {"training": false, "mask": null}}]}, {"class_name": "GlobalAveragePooling2D", "config": {"name": "global_average_pooling2d", "trainable": true, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "data_format": "channels_last", "keepdims": false}, "name": "global_average_pooling2d", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, 7, 7, 2048], "dtype": "float16", "keras_history": ["resnet50", 0, 0]}}], "kwargs": {}}]}, {"class_name": "Dropout", "config": {"name": "dropout", "trainable": true, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "rate": 0.25, "seed": null, "noise_shape": null}, "name": "dropout", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, 2048], "dtype": "float16", "keras_history": ["global_average_pooling2d", 0, 0]}}], "kwargs": {"training": false}}]}, {"class_name": "Dense", "config": {"name": "dense", "trainable": true, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "mixed_float16"}, "registered_name": null}, "units": 7, "activation": "softmax", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "dense", "inbound_nodes": [{"args": [{"class_name": "__keras_tensor__", "config": {"shape": [null, 2048], "dtype": "float16", "keras_history": ["dropout", 0, 0]}}], "kwargs": {}}]}], "input_layers": [["input_layer_1", 0, 0]], "output_layers": [["dense", 0, 0]]}}, "training_config": {"loss": {"class_name": "SparseCategoricalCrossentropy", "config": {"name": "sparse_categorical_crossentropy", "reduction": "sum_over_batch_size", "from_logits": false, "ignore_class": null}}, "loss_weights": null, "metrics": [{"class_name": "SparseCategoricalAccuracy", "config": {"name": "accuracy", "dtype": "float32"}}], "weighted_metrics": null, "run_eagerly": false, "steps_per_execution": 1, "jit_compile": true, "optimizer_config": {"class_name": "LossScaleOptimizer", "config": {"name": "loss_scale_optimizer", "weight_decay": null, "clipnorm": null, "global_clipnorm": null, "clipvalue": null, "use_ema": false, "ema_momentum": 0.99, "ema_overwrite_frequency": null, "loss_scale_factor": null, "gradient_accumulation_steps": null, "inner_optimizer": {"module": "keras.optimizers", "class_name": "Adam", "config": {"name": "adam", "learning_rate": 7.812500371073838e-06, "weight_decay": null, "clipnorm": null, "global_clipnorm": null, "clipvalue": null, "use_ema": false, "ema_momentum": 0.99, "ema_overwrite_frequency": null, "loss_scale_factor": null, "gradient_accumulation_steps": null, "beta_1": 0.9, "beta_2": 0.999, "epsilon": 1e-07, "amsgrad": false}, "registered_name": null}, "initial_scale": 32768.0, "dynamic_growth_steps": 2000}}}}, "weightsManifest": [{"paths": ["group1-shard1of23.bin", "group1-shard2of23.bin", "group1-shard3of23.bin", "group1-shard4of23.bin", "group1-shard5of23.bin", "group1-shard6of23.bin", "group1-shard7of23.bin", "group1-shard8of23.bin", "group1-shard9of23.bin", "group1-shard10of23.bin", "group1-shard11of23.bin", "group1-shard12of23.bin", "group1-shard13of23.bin", "group1-shard14of23.bin", "group1-shard15of23.bin", "group1-shard16of23.bin", "group1-shard17of23.bin", "group1-shard18of23.bin", "group1-shard19of23.bin", "group1-shard20of23.bin", "group1-shard21of23.bin", "group1-shard22of23.bin", "group1-shard23of23.bin"], "weights": [{"name": "dense/kernel", "shape": [2048, 7], "dtype": "float32"}, {"name": "dense/bias", "shape": [7], "dtype": "float32"}, {"name": "conv1_conv/kernel", "shape": [7, 7, 3, 64], "dtype": "float32"}, {"name": "conv1_conv/bias", "shape": [64], "dtype": "float32"}, {"name": "conv1_bn/gamma", "shape": [64], "dtype": "float32"}, {"name": "conv1_bn/beta", "shape": [64], "dtype": "float32"}, {"name": "conv1_bn/moving_mean", "shape": [64], "dtype": "float32"}, {"name": "conv1_bn/moving_variance", "shape": [64], "dtype": "float32"}, {"name": "conv2_block1_1_conv/kernel", "shape": [1, 1, 64, 64], "dtype": "float32"}, {"name": "conv2_block1_1_conv/bias", "shape": [64], "dtype": "float32"}, {"name": "conv2_block1_1_bn/gamma", "shape": [64], "dtype": "float32"}, {"name": "conv2_block1_1_bn/beta", "shape": [64], "dtype": "float32"}, {"name": "conv2_block1_1_bn/moving_mean", "shape": [64], "dtype": "float32"}, {"name": "conv2_block1_1_bn/moving_variance", "shape": [64], "dtype": "float32"}, {"name": "conv2_block1_2_conv/kernel", "shape": [3, 3, 64, 64], "dtype": "float32"}, {"name": "conv2_block1_2_conv/bias", "shape": [64], "dtype": "float32"}, {"name": "conv2_block1_2_bn/gamma", "shape": [64], "dtype": "float32"}, {"name": "conv2_block1_2_bn/beta", "shape": [64], "dtype": "float32"}, {"name": "conv2_block1_2_bn/moving_mean", "shape": [64], "dtype": "float32"}, {"name": "conv2_block1_2_bn/moving_variance", "shape": [64], "dtype": "float32"}, {"name": "conv2_block1_0_conv/kernel", "shape": [1, 1, 64, 256], "dtype": "float32"}, {"name": "conv2_block1_0_conv/bias", "shape": [256], "dtype": "float32"}, {"name": "conv2_block1_3_conv/kernel", "shape": [1, 1, 64, 256], "dtype": "float32"}, {"name": "conv2_block1_3_conv/bias", "shape": [256], "dtype": "float32"}, {"name": "conv2_block1_0_bn/gamma", "shape": [256], "dtype": "float32"}, {"name": "conv2_block1_0_bn/beta", "shape": [256], "dtype": "float32"}, {"name": "conv2_block1_0_bn/moving_mean", "shape": [256], "dtype": "float32"}, {"name": "conv2_block1_0_bn/moving_variance", "shape": [256], "dtype": "float32"}, {"name": "conv2_block1_3_bn/gamma", "shape": [256], "dtype": "float32"}, {"name": "conv2_block1_3_bn/beta", "shape": [256], "dtype": "float32"}, {"name": "conv2_block1_3_bn/moving_mean", "shape": [256], "dtype": "float32"}, {"name": "conv2_block1_3_bn/moving_variance", "shape": [256], "dtype": "float32"}, {"name": "conv2_block2_1_conv/kernel", "shape": [1, 1, 256, 64], "dtype": "float32"}, {"name": "conv2_block2_1_conv/bias", "shape": [64], "dtype": "float32"}, {"name": "conv2_block2_1_bn/gamma", "shape": [64], "dtype": "float32"}, {"name": "conv2_block2_1_bn/beta", "shape": [64], "dtype": "float32"}, {"name": "conv2_block2_1_bn/moving_mean", "shape": [64], "dtype": "float32"}, {"name": "conv2_block2_1_bn/moving_variance", "shape": [64], "dtype": "float32"}, {"name": "conv2_block2_2_conv/kernel", "shape": [3, 3, 64, 64], "dtype": "float32"}, {"name": "conv2_block2_2_conv/bias", "shape": [64], "dtype": "float32"}, {"name": "conv2_block2_2_bn/gamma", "shape": [64], "dtype": "float32"}, {"name": "conv2_block2_2_bn/beta", "shape": [64], "dtype": "float32"}, {"name": "conv2_block2_2_bn/moving_mean", "shape": [64], "dtype": "float32"}, {"name": "conv2_block2_2_bn/moving_variance", "shape": [64], "dtype": "float32"}, {"name": "conv2_block2_3_conv/kernel", "shape": [1, 1, 64, 256], "dtype": "float32"}, {"name": "conv2_block2_3_conv/bias", "shape": [256], "dtype": "float32"}, {"name": "conv2_block2_3_bn/gamma", "shape": [256], "dtype": "float32"}, {"name": "conv2_block2_3_bn/beta", "shape": [256], "dtype": "float32"}, {"name": "conv2_block2_3_bn/moving_mean", "shape": [256], "dtype": "float32"}, {"name": "conv2_block2_3_bn/moving_variance", "shape": [256], "dtype": "float32"}, {"name": "conv2_block3_1_conv/kernel", "shape": [1, 1, 256, 64], "dtype": "float32"}, {"name": "conv2_block3_1_conv/bias", "shape": [64], "dtype": "float32"}, {"name": "conv2_block3_1_bn/gamma", "shape": [64], "dtype": "float32"}, {"name": "conv2_block3_1_bn/beta", "shape": [64], "dtype": "float32"}, {"name": "conv2_block3_1_bn/moving_mean", "shape": [64], "dtype": "float32"}, {"name": "conv2_block3_1_bn/moving_variance", "shape": [64], "dtype": "float32"}, {"name": "conv2_block3_2_conv/kernel", "shape": [3, 3, 64, 64], "dtype": "float32"}, {"name": "conv2_block3_2_conv/bias", "shape": [64], "dtype": "float32"}, {"name": "conv2_block3_2_bn/gamma", "shape": [64], "dtype": "float32"}, {"name": "conv2_block3_2_bn/beta", "shape": [64], "dtype": "float32"}, {"name": "conv2_block3_2_bn/moving_mean", "shape": [64], "dtype": "float32"}, {"name": "conv2_block3_2_bn/moving_variance", "shape": [64], "dtype": "float32"}, {"name": "conv2_block3_3_conv/kernel", "shape": [1, 1, 64, 256], "dtype": "float32"}, {"name": "conv2_block3_3_conv/bias", "shape": [256], "dtype": "float32"}, {"name": "conv2_block3_3_bn/gamma", "shape": [256], "dtype": "float32"}, {"name": "conv2_block3_3_bn/beta", "shape": [256], "dtype": "float32"}, {"name": "conv2_block3_3_bn/moving_mean", "shape": [256], "dtype": "float32"}, {"name": "conv2_block3_3_bn/moving_variance", "shape": [256], "dtype": "float32"}, {"name": "conv3_block1_1_conv/kernel", "shape": [1, 1, 256, 128], "dtype": "float32"}, {"name": "conv3_block1_1_conv/bias", "shape": [128], "dtype": "float32"}, {"name": "conv3_block1_1_bn/gamma", "shape": [128], "dtype": "float32"}, {"name": "conv3_block1_1_bn/beta", "shape": [128], "dtype": "float32"}, {"name": "conv3_block1_1_bn/moving_mean", "shape": [128], "dtype": "float32"}, {"name": "conv3_block1_1_bn/moving_variance", "shape": [128], "dtype": "float32"}, {"name": "conv3_block1_2_conv/kernel", "shape": [3, 3, 128, 128], "dtype": "float32"}, {"name": "conv3_block1_2_conv/bias", "shape": [128], "dtype": "float32"}, {"name": "conv3_block1_2_bn/gamma", "shape": [128], "dtype": "float32"}, {"name": "conv3_block1_2_bn/beta", "shape": [128], "dtype": "float32"}, {"name": "conv3_block1_2_bn/moving_mean", "shape": [128], "dtype": "float32"}, {"name": "conv3_block1_2_bn/moving_variance", "shape": [128], "dtype": "float32"}, {"name": "conv3_block1_0_conv/kernel", "shape": [1, 1, 256, 512], "dtype": "float32"}, {"name": "conv3_block1_0_conv/bias", "shape": [512], "dtype": "float32"}, {"name": "conv3_block1_3_conv/kernel", "shape": [1, 1, 128, 512], "dtype": "float32"}, {"name": "conv3_block1_3_conv/bias", "shape": [512], "dtype": "float32"}, {"name": "conv3_block1_0_bn/gamma", "shape": [512], "dtype": "float32"}, {"name": "conv3_block1_0_bn/beta", "shape": [512], "dtype": "float32"}, {"name": "conv3_block1_0_bn/moving_mean", "shape": [512], "dtype": "float32"}, {"name": "conv3_block1_0_bn/moving_variance", "shape": [512], "dtype": "float32"}, {"name": "conv3_block1_3_bn/gamma", "shape": [512], "dtype": "float32"}, {"name": "conv3_block1_3_bn/beta", "shape": [512], "dtype": "float32"}, {"name": "conv3_block1_3_bn/moving_mean", "shape": [512], "dtype": "float32"}, {"name": "conv3_block1_3_bn/moving_variance", "shape": [512], "dtype": "float32"}, {"name": "conv3_block2_1_conv/kernel", "shape": [1, 1, 512, 128], "dtype": "float32"}, {"name": "conv3_block2_1_conv/bias", "shape": [128], "dtype": "float32"}, {"name": "conv3_block2_1_bn/gamma", "shape": [128], "dtype": "float32"}, {"name": "conv3_block2_1_bn/beta", "shape": [128], "dtype": "float32"}, {"name": "conv3_block2_1_bn/moving_mean", "shape": [128], "dtype": "float32"}, {"name": "conv3_block2_1_bn/moving_variance", "shape": [128], "dtype": "float32"}, {"name": "conv3_block2_2_conv/kernel", "shape": [3, 3, 128, 128], "dtype": "float32"}, {"name": "conv3_block2_2_conv/bias", "shape": [128], "dtype": "float32"}, {"name": "conv3_block2_2_bn/gamma", "shape": [128], "dtype": "float32"}, {"name": "conv3_block2_2_bn/beta", "shape": [128], "dtype": "float32"}, {"name": "conv3_block2_2_bn/moving_mean", "shape": [128], "dtype": "float32"}, {"name": "conv3_block2_2_bn/moving_variance", "shape": [128], "dtype": "float32"}, {"name": "conv3_block2_3_conv/kernel", "shape": [1, 1, 128, 512], "dtype": "float32"}, {"name": "conv3_block2_3_conv/bias", "shape": [512], "dtype": "float32"}, {"name": "conv3_block2_3_bn/gamma", "shape": [512], "dtype": "float32"}, {"name": "conv3_block2_3_bn/beta", "shape": [512], "dtype": "float32"}, {"name": "conv3_block2_3_bn/moving_mean", "shape": [512], "dtype": "float32"}, {"name": "conv3_block2_3_bn/moving_variance", "shape": [512], "dtype": "float32"}, {"name": "conv3_block3_1_conv/kernel", "shape": [1, 1, 512, 128], "dtype": "float32"}, {"name": "conv3_block3_1_conv/bias", "shape": [128], "dtype": "float32"}, {"name": "conv3_block3_1_bn/gamma", "shape": [128], "dtype": "float32"}, {"name": "conv3_block3_1_bn/beta", "shape": [128], "dtype": "float32"}, {"name": "conv3_block3_1_bn/moving_mean", "shape": [128], "dtype": "float32"}, {"name": "conv3_block3_1_bn/moving_variance", "shape": [128], "dtype": "float32"}, {"name": "conv3_block3_2_conv/kernel", "shape": [3, 3, 128, 128], "dtype": "float32"}, {"name": "conv3_block3_2_conv/bias", "shape": [128], "dtype": "float32"}, {"name": "conv3_block3_2_bn/gamma", "shape": [128], "dtype": "float32"}, {"name": "conv3_block3_2_bn/beta", "shape": [128], "dtype": "float32"}, {"name": "conv3_block3_2_bn/moving_mean", "shape": [128], "dtype": "float32"}, {"name": "conv3_block3_2_bn/moving_variance", "shape": [128], "dtype": "float32"}, {"name": "conv3_block3_3_conv/kernel", "shape": [1, 1, 128, 512], "dtype": "float32"}, {"name": "conv3_block3_3_conv/bias", "shape": [512], "dtype": "float32"}, {"name": "conv3_block3_3_bn/gamma", "shape": [512], "dtype": "float32"}, {"name": "conv3_block3_3_bn/beta", "shape": [512], "dtype": "float32"}, {"name": "conv3_block3_3_bn/moving_mean", "shape": [512], "dtype": "float32"}, {"name": "conv3_block3_3_bn/moving_variance", "shape": [512], "dtype": "float32"}, {"name": "conv3_block4_1_conv/kernel", "shape": [1, 1, 512, 128], "dtype": "float32"}, {"name": "conv3_block4_1_conv/bias", "shape": [128], "dtype": "float32"}, {"name": "conv3_block4_1_bn/gamma", "shape": [128], "dtype": "float32"}, {"name": "conv3_block4_1_bn/beta", "shape": [128], "dtype": "float32"}, {"name": "conv3_block4_1_bn/moving_mean", "shape": [128], "dtype": "float32"}, {"name": "conv3_block4_1_bn/moving_variance", "shape": [128], "dtype": "float32"}, {"name": "conv3_block4_2_conv/kernel", "shape": [3, 3, 128, 128], "dtype": "float32"}, {"name": "conv3_block4_2_conv/bias", "shape": [128], "dtype": "float32"}, {"name": "conv3_block4_2_bn/gamma", "shape": [128], "dtype": "float32"}, {"name": "conv3_block4_2_bn/beta", "shape": [128], "dtype": "float32"}, {"name": "conv3_block4_2_bn/moving_mean", "shape": [128], "dtype": "float32"}, {"name": "conv3_block4_2_bn/moving_variance", "shape": [128], "dtype": "float32"}, {"name": "conv3_block4_3_conv/kernel", "shape": [1, 1, 128, 512], "dtype": "float32"}, {"name": "conv3_block4_3_conv/bias", "shape": [512], "dtype": "float32"}, {"name": "conv3_block4_3_bn/gamma", "shape": [512], "dtype": "float32"}, {"name": "conv3_block4_3_bn/beta", "shape": [512], "dtype": "float32"}, {"name": "conv3_block4_3_bn/moving_mean", "shape": [512], "dtype": "float32"}, {"name": "conv3_block4_3_bn/moving_variance", "shape": [512], "dtype": "float32"}, {"name": "conv4_block1_1_conv/kernel", "shape": [1, 1, 512, 256], "dtype": "float32"}, {"name": "conv4_block1_1_conv/bias", "shape": [256], "dtype": "float32"}, {"name": "conv4_block1_1_bn/gamma", "shape": [256], "dtype": "float32"}, {"name": "conv4_block1_1_bn/beta", "shape": [256], "dtype": "float32"}, {"name": "conv4_block1_1_bn/moving_mean", "shape": [256], "dtype": "float32"}, {"name": "conv4_block1_1_bn/moving_variance", "shape": [256], "dtype": "float32"}, {"name": "conv4_block1_2_conv/kernel", "shape": [3, 3, 256, 256], "dtype": "float32"}, {"name": "conv4_block1_2_conv/bias", "shape": [256], "dtype": "float32"}, {"name": "conv4_block1_2_bn/gamma", "shape": [256], "dtype": "float32"}, {"name": "conv4_block1_2_bn/beta", "shape": [256], "dtype": "float32"}, {"name": "conv4_block1_2_bn/moving_mean", "shape": [256], "dtype": "float32"}, {"name": "conv4_block1_2_bn/moving_variance", "shape": [256], "dtype": "float32"}, {"name": "conv4_block1_0_conv/kernel", "shape": [1, 1, 512, 1024], "dtype": "float32"}, {"name": "conv4_block1_0_conv/bias", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block1_3_conv/kernel", "shape": [1, 1, 256, 1024], "dtype": "float32"}, {"name": "conv4_block1_3_conv/bias", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block1_0_bn/gamma", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block1_0_bn/beta", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block1_0_bn/moving_mean", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block1_0_bn/moving_variance", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block1_3_bn/gamma", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block1_3_bn/beta", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block1_3_bn/moving_mean", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block1_3_bn/moving_variance", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block2_1_conv/kernel", "shape": [1, 1, 1024, 256], "dtype": "float32"}, {"name": "conv4_block2_1_conv/bias", "shape": [256], "dtype": "float32"}, {"name": "conv4_block2_1_bn/gamma", "shape": [256], "dtype": "float32"}, {"name": "conv4_block2_1_bn/beta", "shape": [256], "dtype": "float32"}, {"name": "conv4_block2_1_bn/moving_mean", "shape": [256], "dtype": "float32"}, {"name": "conv4_block2_1_bn/moving_variance", "shape": [256], "dtype": "float32"}, {"name": "conv4_block2_2_conv/kernel", "shape": [3, 3, 256, 256], "dtype": "float32"}, {"name": "conv4_block2_2_conv/bias", "shape": [256], "dtype": "float32"}, {"name": "conv4_block2_2_bn/gamma", "shape": [256], "dtype": "float32"}, {"name": "conv4_block2_2_bn/beta", "shape": [256], "dtype": "float32"}, {"name": "conv4_block2_2_bn/moving_mean", "shape": [256], "dtype": "float32"}, {"name": "conv4_block2_2_bn/moving_variance", "shape": [256], "dtype": "float32"}, {"name": "conv4_block2_3_conv/kernel", "shape": [1, 1, 256, 1024], "dtype": "float32"}, {"name": "conv4_block2_3_conv/bias", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block2_3_bn/gamma", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block2_3_bn/beta", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block2_3_bn/moving_mean", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block2_3_bn/moving_variance", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block3_1_conv/kernel", "shape": [1, 1, 1024, 256], "dtype": "float32"}, {"name": "conv4_block3_1_conv/bias", "shape": [256], "dtype": "float32"}, {"name": "conv4_block3_1_bn/gamma", "shape": [256], "dtype": "float32"}, {"name": "conv4_block3_1_bn/beta", "shape": [256], "dtype": "float32"}, {"name": "conv4_block3_1_bn/moving_mean", "shape": [256], "dtype": "float32"}, {"name": "conv4_block3_1_bn/moving_variance", "shape": [256], "dtype": "float32"}, {"name": "conv4_block3_2_conv/kernel", "shape": [3, 3, 256, 256], "dtype": "float32"}, {"name": "conv4_block3_2_conv/bias", "shape": [256], "dtype": "float32"}, {"name": "conv4_block3_2_bn/gamma", "shape": [256], "dtype": "float32"}, {"name": "conv4_block3_2_bn/beta", "shape": [256], "dtype": "float32"}, {"name": "conv4_block3_2_bn/moving_mean", "shape": [256], "dtype": "float32"}, {"name": "conv4_block3_2_bn/moving_variance", "shape": [256], "dtype": "float32"}, {"name": "conv4_block3_3_conv/kernel", "shape": [1, 1, 256, 1024], "dtype": "float32"}, {"name": "conv4_block3_3_conv/bias", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block3_3_bn/gamma", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block3_3_bn/beta", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block3_3_bn/moving_mean", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block3_3_bn/moving_variance", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block4_1_conv/kernel", "shape": [1, 1, 1024, 256], "dtype": "float32"}, {"name": "conv4_block4_1_conv/bias", "shape": [256], "dtype": "float32"}, {"name": "conv4_block4_1_bn/gamma", "shape": [256], "dtype": "float32"}, {"name": "conv4_block4_1_bn/beta", "shape": [256], "dtype": "float32"}, {"name": "conv4_block4_1_bn/moving_mean", "shape": [256], "dtype": "float32"}, {"name": "conv4_block4_1_bn/moving_variance", "shape": [256], "dtype": "float32"}, {"name": "conv4_block4_2_conv/kernel", "shape": [3, 3, 256, 256], "dtype": "float32"}, {"name": "conv4_block4_2_conv/bias", "shape": [256], "dtype": "float32"}, {"name": "conv4_block4_2_bn/gamma", "shape": [256], "dtype": "float32"}, {"name": "conv4_block4_2_bn/beta", "shape": [256], "dtype": "float32"}, {"name": "conv4_block4_2_bn/moving_mean", "shape": [256], "dtype": "float32"}, {"name": "conv4_block4_2_bn/moving_variance", "shape": [256], "dtype": "float32"}, {"name": "conv4_block4_3_conv/kernel", "shape": [1, 1, 256, 1024], "dtype": "float32"}, {"name": "conv4_block4_3_conv/bias", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block4_3_bn/gamma", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block4_3_bn/beta", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block4_3_bn/moving_mean", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block4_3_bn/moving_variance", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block5_1_conv/kernel", "shape": [1, 1, 1024, 256], "dtype": "float32"}, {"name": "conv4_block5_1_conv/bias", "shape": [256], "dtype": "float32"}, {"name": "conv4_block5_1_bn/gamma", "shape": [256], "dtype": "float32"}, {"name": "conv4_block5_1_bn/beta", "shape": [256], "dtype": "float32"}, {"name": "conv4_block5_1_bn/moving_mean", "shape": [256], "dtype": "float32"}, {"name": "conv4_block5_1_bn/moving_variance", "shape": [256], "dtype": "float32"}, {"name": "conv4_block5_2_conv/kernel", "shape": [3, 3, 256, 256], "dtype": "float32"}, {"name": "conv4_block5_2_conv/bias", "shape": [256], "dtype": "float32"}, {"name": "conv4_block5_2_bn/gamma", "shape": [256], "dtype": "float32"}, {"name": "conv4_block5_2_bn/beta", "shape": [256], "dtype": "float32"}, {"name": "conv4_block5_2_bn/moving_mean", "shape": [256], "dtype": "float32"}, {"name": "conv4_block5_2_bn/moving_variance", "shape": [256], "dtype": "float32"}, {"name": "conv4_block5_3_conv/kernel", "shape": [1, 1, 256, 1024], "dtype": "float32"}, {"name": "conv4_block5_3_conv/bias", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block5_3_bn/gamma", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block5_3_bn/beta", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block5_3_bn/moving_mean", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block5_3_bn/moving_variance", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block6_1_conv/kernel", "shape": [1, 1, 1024, 256], "dtype": "float32"}, {"name": "conv4_block6_1_conv/bias", "shape": [256], "dtype": "float32"}, {"name": "conv4_block6_1_bn/gamma", "shape": [256], "dtype": "float32"}, {"name": "conv4_block6_1_bn/beta", "shape": [256], "dtype": "float32"}, {"name": "conv4_block6_1_bn/moving_mean", "shape": [256], "dtype": "float32"}, {"name": "conv4_block6_1_bn/moving_variance", "shape": [256], "dtype": "float32"}, {"name": "conv4_block6_2_conv/kernel", "shape": [3, 3, 256, 256], "dtype": "float32"}, {"name": "conv4_block6_2_conv/bias", "shape": [256], "dtype": "float32"}, {"name": "conv4_block6_2_bn/gamma", "shape": [256], "dtype": "float32"}, {"name": "conv4_block6_2_bn/beta", "shape": [256], "dtype": "float32"}, {"name": "conv4_block6_2_bn/moving_mean", "shape": [256], "dtype": "float32"}, {"name": "conv4_block6_2_bn/moving_variance", "shape": [256], "dtype": "float32"}, {"name": "conv4_block6_3_conv/kernel", "shape": [1, 1, 256, 1024], "dtype": "float32"}, {"name": "conv4_block6_3_conv/bias", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block6_3_bn/gamma", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block6_3_bn/beta", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block6_3_bn/moving_mean", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block6_3_bn/moving_variance", "shape": [1024], "dtype": "float32"}, {"name": "conv5_block1_1_conv/kernel", "shape": [1, 1, 1024, 512], "dtype": "float32"}, {"name": "conv5_block1_1_conv/bias", "shape": [512], "dtype": "float32"}, {"name": "conv5_block1_1_bn/gamma", "shape": [512], "dtype": "float32"}, {"name": "conv5_block1_1_bn/beta", "shape": [512], "dtype": "float32"}, {"name": "conv5_block1_1_bn/moving_mean", "shape": [512], "dtype": "float32"}, {"name": "conv5_block1_1_bn/moving_variance", "shape": [512], "dtype": "float32"}, {"name": "conv5_block1_2_conv/kernel", "shape": [3, 3, 512, 512], "dtype": "float32"}, {"name": "conv5_block1_2_conv/bias", "shape": [512], "dtype": "float32"}, {"name": "conv5_block1_2_bn/gamma", "shape": [512], "dtype": "float32"}, {"name": "conv5_block1_2_bn/beta", "shape": [512], "dtype": "float32"}, {"name": "conv5_block1_2_bn/moving_mean", "shape": [512], "dtype": "float32"}, {"name": "conv5_block1_2_bn/moving_variance", "shape": [512], "dtype": "float32"}, {"name": "conv5_block1_0_conv/kernel", "shape": [1, 1, 1024, 2048], "dtype": "float32"}, {"name": "conv5_block1_0_conv/bias", "shape": [2048], "dtype": "float32"}, {"name": "conv5_block1_3_conv/kernel", "shape": [1, 1, 512, 2048], "dtype": "float32"}, {"name": "conv5_block1_3_conv/bias", "shape": [2048], "dtype": "float32"}, {"name": "conv5_block1_0_bn/gamma", "shape": [2048], "dtype": "float32"}, {"name": "conv5_block1_0_bn/beta", "shape": [2048], "dtype": "float32"}, {"name": "conv5_block1_0_bn/moving_mean", "shape": [2048], "dtype": "float32"}, {"name": "conv5_block1_0_bn/moving_variance", "shape": [2048], "dtype": "float32"}, {"name": "conv5_block1_3_bn/gamma", "shape": [2048], "dtype": "float32"}, {"name": "conv5_block1_3_bn/beta", "shape": [2048], "dtype": "float32"}, {"name": "conv5_block1_3_bn/moving_mean", "shape": [2048], "dtype": "float32"}, {"name": "conv5_block1_3_bn/moving_variance", "shape": [2048], "dtype": "float32"}, {"name": "conv5_block2_1_conv/kernel", "shape": [1, 1, 2048, 512], "dtype": "float32"}, {"name": "conv5_block2_1_conv/bias", "shape": [512], "dtype": "float32"}, {"name": "conv5_block2_1_bn/gamma", "shape": [512], "dtype": "float32"}, {"name": "conv5_block2_1_bn/beta", "shape": [512], "dtype": "float32"}, {"name": "conv5_block2_1_bn/moving_mean", "shape": [512], "dtype": "float32"}, {"name": "conv5_block2_1_bn/moving_variance", "shape": [512], "dtype": "float32"}, {"name": "conv5_block2_2_conv/kernel", "shape": [3, 3, 512, 512], "dtype": "float32"}, {"name": "conv5_block2_2_conv/bias", "shape": [512], "dtype": "float32"}, {"name": "conv5_block2_2_bn/gamma", "shape": [512], "dtype": "float32"}, {"name": "conv5_block2_2_bn/beta", "shape": [512], "dtype": "float32"}, {"name": "conv5_block2_2_bn/moving_mean", "shape": [512], "dtype": "float32"}, {"name": "conv5_block2_2_bn/moving_variance", "shape": [512], "dtype": "float32"}, {"name": "conv5_block2_3_conv/kernel", "shape": [1, 1, 512, 2048], "dtype": "float32"}, {"name": "conv5_block2_3_conv/bias", "shape": [2048], "dtype": "float32"}, {"name": "conv5_block2_3_bn/gamma", "shape": [2048], "dtype": "float32"}, {"name": "conv5_block2_3_bn/beta", "shape": [2048], "dtype": "float32"}, {"name": "conv5_block2_3_bn/moving_mean", "shape": [2048], "dtype": "float32"}, {"name": "conv5_block2_3_bn/moving_variance", "shape": [2048], "dtype": "float32"}, {"name": "conv5_block3_1_conv/kernel", "shape": [1, 1, 2048, 512], "dtype": "float32"}, {"name": "conv5_block3_1_conv/bias", "shape": [512], "dtype": "float32"}, {"name": "conv5_block3_1_bn/gamma", "shape": [512], "dtype": "float32"}, {"name": "conv5_block3_1_bn/beta", "shape": [512], "dtype": "float32"}, {"name": "conv5_block3_1_bn/moving_mean", "shape": [512], "dtype": "float32"}, {"name": "conv5_block3_1_bn/moving_variance", "shape": [512], "dtype": "float32"}, {"name": "conv5_block3_2_conv/kernel", "shape": [3, 3, 512, 512], "dtype": "float32"}, {"name": "conv5_block3_2_conv/bias", "shape": [512], "dtype": "float32"}, {"name": "conv5_block3_2_bn/gamma", "shape": [512], "dtype": "float32"}, {"name": "conv5_block3_2_bn/beta", "shape": [512], "dtype": "float32"}, {"name": "conv5_block3_2_bn/moving_mean", "shape": [512], "dtype": "float32"}, {"name": "conv5_block3_2_bn/moving_variance", "shape": [512], "dtype": "float32"}, {"name": "conv5_block3_3_conv/kernel", "shape": [1, 1, 512, 2048], "dtype": "float32"}, {"name": "conv5_block3_3_conv/bias", "shape": [2048], "dtype": "float32"}, {"name": "conv5_block3_3_bn/gamma", "shape": [2048], "dtype": "float32"}, {"name": "conv5_block3_3_bn/beta", "shape": [2048], "dtype": "float32"}, {"name": "conv5_block3_3_bn/moving_mean", "shape": [2048], "dtype": "float32"}, {"name": "conv5_block3_3_bn/moving_variance", "shape": [2048], "dtype": "float32"}]}]} \ No newline at end of file diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard10of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard10of23.bin new file mode 100644 index 0000000..e28aa12 Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard10of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard11of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard11of23.bin new file mode 100644 index 0000000..75ca936 Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard11of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard12of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard12of23.bin new file mode 100644 index 0000000..6b09d0d Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard12of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard13of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard13of23.bin new file mode 100644 index 0000000..3bd9934 Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard13of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard14of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard14of23.bin new file mode 100644 index 0000000..e566da1 Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard14of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard15of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard15of23.bin new file mode 100644 index 0000000..36508cf Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard15of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard16of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard16of23.bin new file mode 100644 index 0000000..20a1dc9 Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard16of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard17of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard17of23.bin new file mode 100644 index 0000000..fcf4b34 Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard17of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard18of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard18of23.bin new file mode 100644 index 0000000..b167003 Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard18of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard19of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard19of23.bin new file mode 100644 index 0000000..e3a1331 Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard19of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard1of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard1of23.bin new file mode 100644 index 0000000..d06c6a7 Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard1of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard20of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard20of23.bin new file mode 100644 index 0000000..c179d34 Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard20of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard21of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard21of23.bin new file mode 100644 index 0000000..73771ec Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard21of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard22of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard22of23.bin new file mode 100644 index 0000000..6f174cb Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard22of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard23of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard23of23.bin new file mode 100644 index 0000000..39d9ccf Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard23of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard2of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard2of23.bin new file mode 100644 index 0000000..835dc9d Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard2of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard3of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard3of23.bin new file mode 100644 index 0000000..e34749c Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard3of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard4of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard4of23.bin new file mode 100644 index 0000000..31e2002 Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard4of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard5of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard5of23.bin new file mode 100644 index 0000000..de0e410 Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard5of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard6of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard6of23.bin new file mode 100644 index 0000000..79e8c2d Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard6of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard7of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard7of23.bin new file mode 100644 index 0000000..a693c57 Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard7of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard8of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard8of23.bin new file mode 100644 index 0000000..d1c7097 Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard8of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard9of23.bin b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard9of23.bin new file mode 100644 index 0000000..be8ac68 Binary files /dev/null and b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/group1-shard9of23.bin differ diff --git a/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/model.json b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/model.json new file mode 100644 index 0000000..8ddca4f --- /dev/null +++ b/Server/resources/ResNet-50_tomato-leaf-disease-tfjs_v8/model.json @@ -0,0 +1 @@ +{"format": "layers-model", "generatedBy": "keras v2.15.0", "convertedBy": "TensorFlow.js Converter v4.22.0", "modelTopology": {"keras_version": "2.15.0", "backend": "tensorflow", "model_config": {"class_name": "Functional", "config": {"name": "model", "trainable": true, "layers": [{"class_name": "InputLayer", "config": {"batch_input_shape": [null, 224, 224, 3], "dtype": "float32", "sparse": false, "ragged": false, "name": "input_2"}, "name": "input_2", "inbound_nodes": []}, {"class_name": "Functional", "config": {"name": "resnet50", "trainable": false, "layers": [{"class_name": "InputLayer", "config": {"batch_input_shape": [null, null, null, 3], "dtype": "float32", "sparse": false, "ragged": false, "name": "input_1"}, "name": "input_1", "inbound_nodes": []}, {"class_name": "ZeroPadding2D", "config": {"name": "conv1_pad", "trainable": false, "dtype": "float32", "padding": [[3, 3], [3, 3]], "data_format": "channels_last"}, "name": "conv1_pad", "inbound_nodes": [[["input_1", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv1_conv", "trainable": false, "dtype": "float32", "filters": 64, "kernel_size": [7, 7], "strides": [2, 2], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv1_conv", "inbound_nodes": [[["conv1_pad", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv1_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv1_bn", "inbound_nodes": [[["conv1_conv", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv1_relu", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv1_relu", "inbound_nodes": [[["conv1_bn", 0, 0, {}]]]}, {"class_name": "ZeroPadding2D", "config": {"name": "pool1_pad", "trainable": false, "dtype": "float32", "padding": [[1, 1], [1, 1]], "data_format": "channels_last"}, "name": "pool1_pad", "inbound_nodes": [[["conv1_relu", 0, 0, {}]]]}, {"class_name": "MaxPooling2D", "config": {"name": "pool1_pool", "trainable": false, "dtype": "float32", "pool_size": [3, 3], "padding": "valid", "strides": [2, 2], "data_format": "channels_last"}, "name": "pool1_pool", "inbound_nodes": [[["pool1_pad", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv2_block1_1_conv", "trainable": false, "dtype": "float32", "filters": 64, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv2_block1_1_conv", "inbound_nodes": [[["pool1_pool", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv2_block1_1_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv2_block1_1_bn", "inbound_nodes": [[["conv2_block1_1_conv", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv2_block1_1_relu", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv2_block1_1_relu", "inbound_nodes": [[["conv2_block1_1_bn", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv2_block1_2_conv", "trainable": false, "dtype": "float32", "filters": 64, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv2_block1_2_conv", "inbound_nodes": [[["conv2_block1_1_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv2_block1_2_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv2_block1_2_bn", "inbound_nodes": [[["conv2_block1_2_conv", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv2_block1_2_relu", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv2_block1_2_relu", "inbound_nodes": [[["conv2_block1_2_bn", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv2_block1_0_conv", "trainable": false, "dtype": "float32", "filters": 256, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv2_block1_0_conv", "inbound_nodes": [[["pool1_pool", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv2_block1_3_conv", "trainable": false, "dtype": "float32", "filters": 256, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv2_block1_3_conv", "inbound_nodes": [[["conv2_block1_2_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv2_block1_0_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv2_block1_0_bn", "inbound_nodes": [[["conv2_block1_0_conv", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv2_block1_3_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv2_block1_3_bn", "inbound_nodes": [[["conv2_block1_3_conv", 0, 0, {}]]]}, {"class_name": "Add", "config": {"name": "conv2_block1_add", "trainable": false, "dtype": "float32"}, "name": "conv2_block1_add", "inbound_nodes": [[["conv2_block1_0_bn", 0, 0, {}], ["conv2_block1_3_bn", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv2_block1_out", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv2_block1_out", "inbound_nodes": [[["conv2_block1_add", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv2_block2_1_conv", "trainable": false, "dtype": "float32", "filters": 64, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv2_block2_1_conv", "inbound_nodes": [[["conv2_block1_out", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv2_block2_1_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv2_block2_1_bn", "inbound_nodes": [[["conv2_block2_1_conv", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv2_block2_1_relu", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv2_block2_1_relu", "inbound_nodes": [[["conv2_block2_1_bn", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv2_block2_2_conv", "trainable": false, "dtype": "float32", "filters": 64, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv2_block2_2_conv", "inbound_nodes": [[["conv2_block2_1_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv2_block2_2_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv2_block2_2_bn", "inbound_nodes": [[["conv2_block2_2_conv", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv2_block2_2_relu", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv2_block2_2_relu", "inbound_nodes": [[["conv2_block2_2_bn", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv2_block2_3_conv", "trainable": false, "dtype": "float32", "filters": 256, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv2_block2_3_conv", "inbound_nodes": [[["conv2_block2_2_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv2_block2_3_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv2_block2_3_bn", "inbound_nodes": [[["conv2_block2_3_conv", 0, 0, {}]]]}, {"class_name": "Add", "config": {"name": "conv2_block2_add", "trainable": false, "dtype": "float32"}, "name": "conv2_block2_add", "inbound_nodes": [[["conv2_block1_out", 0, 0, {}], ["conv2_block2_3_bn", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv2_block2_out", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv2_block2_out", "inbound_nodes": [[["conv2_block2_add", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv2_block3_1_conv", "trainable": false, "dtype": "float32", "filters": 64, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv2_block3_1_conv", "inbound_nodes": [[["conv2_block2_out", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv2_block3_1_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv2_block3_1_bn", "inbound_nodes": [[["conv2_block3_1_conv", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv2_block3_1_relu", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv2_block3_1_relu", "inbound_nodes": [[["conv2_block3_1_bn", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv2_block3_2_conv", "trainable": false, "dtype": "float32", "filters": 64, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv2_block3_2_conv", "inbound_nodes": [[["conv2_block3_1_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv2_block3_2_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv2_block3_2_bn", "inbound_nodes": [[["conv2_block3_2_conv", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv2_block3_2_relu", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv2_block3_2_relu", "inbound_nodes": [[["conv2_block3_2_bn", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv2_block3_3_conv", "trainable": false, "dtype": "float32", "filters": 256, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv2_block3_3_conv", "inbound_nodes": [[["conv2_block3_2_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv2_block3_3_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv2_block3_3_bn", "inbound_nodes": [[["conv2_block3_3_conv", 0, 0, {}]]]}, {"class_name": "Add", "config": {"name": "conv2_block3_add", "trainable": false, "dtype": "float32"}, "name": "conv2_block3_add", "inbound_nodes": [[["conv2_block2_out", 0, 0, {}], ["conv2_block3_3_bn", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv2_block3_out", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv2_block3_out", "inbound_nodes": [[["conv2_block3_add", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv3_block1_1_conv", "trainable": false, "dtype": "float32", "filters": 128, "kernel_size": [1, 1], "strides": [2, 2], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv3_block1_1_conv", "inbound_nodes": [[["conv2_block3_out", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv3_block1_1_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv3_block1_1_bn", "inbound_nodes": [[["conv3_block1_1_conv", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv3_block1_1_relu", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv3_block1_1_relu", "inbound_nodes": [[["conv3_block1_1_bn", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv3_block1_2_conv", "trainable": false, "dtype": "float32", "filters": 128, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv3_block1_2_conv", "inbound_nodes": [[["conv3_block1_1_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv3_block1_2_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv3_block1_2_bn", "inbound_nodes": [[["conv3_block1_2_conv", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv3_block1_2_relu", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv3_block1_2_relu", "inbound_nodes": [[["conv3_block1_2_bn", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv3_block1_0_conv", "trainable": false, "dtype": "float32", "filters": 512, "kernel_size": [1, 1], "strides": [2, 2], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv3_block1_0_conv", "inbound_nodes": [[["conv2_block3_out", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv3_block1_3_conv", "trainable": false, "dtype": "float32", "filters": 512, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv3_block1_3_conv", "inbound_nodes": [[["conv3_block1_2_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv3_block1_0_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv3_block1_0_bn", "inbound_nodes": [[["conv3_block1_0_conv", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv3_block1_3_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv3_block1_3_bn", "inbound_nodes": [[["conv3_block1_3_conv", 0, 0, {}]]]}, {"class_name": "Add", "config": {"name": "conv3_block1_add", "trainable": false, "dtype": "float32"}, "name": "conv3_block1_add", "inbound_nodes": [[["conv3_block1_0_bn", 0, 0, {}], ["conv3_block1_3_bn", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv3_block1_out", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv3_block1_out", "inbound_nodes": [[["conv3_block1_add", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv3_block2_1_conv", "trainable": false, "dtype": "float32", "filters": 128, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv3_block2_1_conv", "inbound_nodes": [[["conv3_block1_out", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv3_block2_1_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv3_block2_1_bn", "inbound_nodes": [[["conv3_block2_1_conv", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv3_block2_1_relu", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv3_block2_1_relu", "inbound_nodes": [[["conv3_block2_1_bn", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv3_block2_2_conv", "trainable": false, "dtype": "float32", "filters": 128, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv3_block2_2_conv", "inbound_nodes": [[["conv3_block2_1_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv3_block2_2_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv3_block2_2_bn", "inbound_nodes": [[["conv3_block2_2_conv", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv3_block2_2_relu", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv3_block2_2_relu", "inbound_nodes": [[["conv3_block2_2_bn", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv3_block2_3_conv", "trainable": false, "dtype": "float32", "filters": 512, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv3_block2_3_conv", "inbound_nodes": [[["conv3_block2_2_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv3_block2_3_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv3_block2_3_bn", "inbound_nodes": [[["conv3_block2_3_conv", 0, 0, {}]]]}, {"class_name": "Add", "config": {"name": "conv3_block2_add", "trainable": false, "dtype": "float32"}, "name": "conv3_block2_add", "inbound_nodes": [[["conv3_block1_out", 0, 0, {}], ["conv3_block2_3_bn", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv3_block2_out", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv3_block2_out", "inbound_nodes": [[["conv3_block2_add", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv3_block3_1_conv", "trainable": false, "dtype": "float32", "filters": 128, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv3_block3_1_conv", "inbound_nodes": [[["conv3_block2_out", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv3_block3_1_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv3_block3_1_bn", "inbound_nodes": [[["conv3_block3_1_conv", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv3_block3_1_relu", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv3_block3_1_relu", "inbound_nodes": [[["conv3_block3_1_bn", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv3_block3_2_conv", "trainable": false, "dtype": "float32", "filters": 128, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv3_block3_2_conv", "inbound_nodes": [[["conv3_block3_1_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv3_block3_2_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv3_block3_2_bn", "inbound_nodes": [[["conv3_block3_2_conv", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv3_block3_2_relu", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv3_block3_2_relu", "inbound_nodes": [[["conv3_block3_2_bn", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv3_block3_3_conv", "trainable": false, "dtype": "float32", "filters": 512, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv3_block3_3_conv", "inbound_nodes": [[["conv3_block3_2_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv3_block3_3_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv3_block3_3_bn", "inbound_nodes": [[["conv3_block3_3_conv", 0, 0, {}]]]}, {"class_name": "Add", "config": {"name": "conv3_block3_add", "trainable": false, "dtype": "float32"}, "name": "conv3_block3_add", "inbound_nodes": [[["conv3_block2_out", 0, 0, {}], ["conv3_block3_3_bn", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv3_block3_out", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv3_block3_out", "inbound_nodes": [[["conv3_block3_add", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv3_block4_1_conv", "trainable": false, "dtype": "float32", "filters": 128, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv3_block4_1_conv", "inbound_nodes": [[["conv3_block3_out", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv3_block4_1_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv3_block4_1_bn", "inbound_nodes": [[["conv3_block4_1_conv", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv3_block4_1_relu", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv3_block4_1_relu", "inbound_nodes": [[["conv3_block4_1_bn", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv3_block4_2_conv", "trainable": false, "dtype": "float32", "filters": 128, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv3_block4_2_conv", "inbound_nodes": [[["conv3_block4_1_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv3_block4_2_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv3_block4_2_bn", "inbound_nodes": [[["conv3_block4_2_conv", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv3_block4_2_relu", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv3_block4_2_relu", "inbound_nodes": [[["conv3_block4_2_bn", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv3_block4_3_conv", "trainable": false, "dtype": "float32", "filters": 512, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv3_block4_3_conv", "inbound_nodes": [[["conv3_block4_2_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv3_block4_3_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv3_block4_3_bn", "inbound_nodes": [[["conv3_block4_3_conv", 0, 0, {}]]]}, {"class_name": "Add", "config": {"name": "conv3_block4_add", "trainable": false, "dtype": "float32"}, "name": "conv3_block4_add", "inbound_nodes": [[["conv3_block3_out", 0, 0, {}], ["conv3_block4_3_bn", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv3_block4_out", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv3_block4_out", "inbound_nodes": [[["conv3_block4_add", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv4_block1_1_conv", "trainable": false, "dtype": "float32", "filters": 256, "kernel_size": [1, 1], "strides": [2, 2], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv4_block1_1_conv", "inbound_nodes": [[["conv3_block4_out", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv4_block1_1_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv4_block1_1_bn", "inbound_nodes": [[["conv4_block1_1_conv", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv4_block1_1_relu", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv4_block1_1_relu", "inbound_nodes": [[["conv4_block1_1_bn", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv4_block1_2_conv", "trainable": false, "dtype": "float32", "filters": 256, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv4_block1_2_conv", "inbound_nodes": [[["conv4_block1_1_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv4_block1_2_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv4_block1_2_bn", "inbound_nodes": [[["conv4_block1_2_conv", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv4_block1_2_relu", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv4_block1_2_relu", "inbound_nodes": [[["conv4_block1_2_bn", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv4_block1_0_conv", "trainable": false, "dtype": "float32", "filters": 1024, "kernel_size": [1, 1], "strides": [2, 2], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv4_block1_0_conv", "inbound_nodes": [[["conv3_block4_out", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv4_block1_3_conv", "trainable": false, "dtype": "float32", "filters": 1024, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv4_block1_3_conv", "inbound_nodes": [[["conv4_block1_2_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv4_block1_0_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv4_block1_0_bn", "inbound_nodes": [[["conv4_block1_0_conv", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv4_block1_3_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv4_block1_3_bn", "inbound_nodes": [[["conv4_block1_3_conv", 0, 0, {}]]]}, {"class_name": "Add", "config": {"name": "conv4_block1_add", "trainable": false, "dtype": "float32"}, "name": "conv4_block1_add", "inbound_nodes": [[["conv4_block1_0_bn", 0, 0, {}], ["conv4_block1_3_bn", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv4_block1_out", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv4_block1_out", "inbound_nodes": [[["conv4_block1_add", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv4_block2_1_conv", "trainable": false, "dtype": "float32", "filters": 256, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv4_block2_1_conv", "inbound_nodes": [[["conv4_block1_out", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv4_block2_1_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv4_block2_1_bn", "inbound_nodes": [[["conv4_block2_1_conv", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv4_block2_1_relu", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv4_block2_1_relu", "inbound_nodes": [[["conv4_block2_1_bn", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv4_block2_2_conv", "trainable": false, "dtype": "float32", "filters": 256, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv4_block2_2_conv", "inbound_nodes": [[["conv4_block2_1_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv4_block2_2_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv4_block2_2_bn", "inbound_nodes": [[["conv4_block2_2_conv", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv4_block2_2_relu", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv4_block2_2_relu", "inbound_nodes": [[["conv4_block2_2_bn", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv4_block2_3_conv", "trainable": false, "dtype": "float32", "filters": 1024, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv4_block2_3_conv", "inbound_nodes": [[["conv4_block2_2_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv4_block2_3_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv4_block2_3_bn", "inbound_nodes": [[["conv4_block2_3_conv", 0, 0, {}]]]}, {"class_name": "Add", "config": {"name": "conv4_block2_add", "trainable": false, "dtype": "float32"}, "name": "conv4_block2_add", "inbound_nodes": [[["conv4_block1_out", 0, 0, {}], ["conv4_block2_3_bn", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv4_block2_out", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv4_block2_out", "inbound_nodes": [[["conv4_block2_add", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv4_block3_1_conv", "trainable": false, "dtype": "float32", "filters": 256, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv4_block3_1_conv", "inbound_nodes": [[["conv4_block2_out", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv4_block3_1_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv4_block3_1_bn", "inbound_nodes": [[["conv4_block3_1_conv", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv4_block3_1_relu", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv4_block3_1_relu", "inbound_nodes": [[["conv4_block3_1_bn", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv4_block3_2_conv", "trainable": false, "dtype": "float32", "filters": 256, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv4_block3_2_conv", "inbound_nodes": [[["conv4_block3_1_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv4_block3_2_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv4_block3_2_bn", "inbound_nodes": [[["conv4_block3_2_conv", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv4_block3_2_relu", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv4_block3_2_relu", "inbound_nodes": [[["conv4_block3_2_bn", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv4_block3_3_conv", "trainable": false, "dtype": "float32", "filters": 1024, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv4_block3_3_conv", "inbound_nodes": [[["conv4_block3_2_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv4_block3_3_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv4_block3_3_bn", "inbound_nodes": [[["conv4_block3_3_conv", 0, 0, {}]]]}, {"class_name": "Add", "config": {"name": "conv4_block3_add", "trainable": false, "dtype": "float32"}, "name": "conv4_block3_add", "inbound_nodes": [[["conv4_block2_out", 0, 0, {}], ["conv4_block3_3_bn", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv4_block3_out", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv4_block3_out", "inbound_nodes": [[["conv4_block3_add", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv4_block4_1_conv", "trainable": false, "dtype": "float32", "filters": 256, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv4_block4_1_conv", "inbound_nodes": [[["conv4_block3_out", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv4_block4_1_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv4_block4_1_bn", "inbound_nodes": [[["conv4_block4_1_conv", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv4_block4_1_relu", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv4_block4_1_relu", "inbound_nodes": [[["conv4_block4_1_bn", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv4_block4_2_conv", "trainable": false, "dtype": "float32", "filters": 256, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv4_block4_2_conv", "inbound_nodes": [[["conv4_block4_1_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv4_block4_2_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv4_block4_2_bn", "inbound_nodes": [[["conv4_block4_2_conv", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv4_block4_2_relu", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv4_block4_2_relu", "inbound_nodes": [[["conv4_block4_2_bn", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv4_block4_3_conv", "trainable": false, "dtype": "float32", "filters": 1024, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv4_block4_3_conv", "inbound_nodes": [[["conv4_block4_2_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv4_block4_3_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv4_block4_3_bn", "inbound_nodes": [[["conv4_block4_3_conv", 0, 0, {}]]]}, {"class_name": "Add", "config": {"name": "conv4_block4_add", "trainable": false, "dtype": "float32"}, "name": "conv4_block4_add", "inbound_nodes": [[["conv4_block3_out", 0, 0, {}], ["conv4_block4_3_bn", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv4_block4_out", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv4_block4_out", "inbound_nodes": [[["conv4_block4_add", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv4_block5_1_conv", "trainable": false, "dtype": "float32", "filters": 256, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv4_block5_1_conv", "inbound_nodes": [[["conv4_block4_out", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv4_block5_1_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv4_block5_1_bn", "inbound_nodes": [[["conv4_block5_1_conv", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv4_block5_1_relu", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv4_block5_1_relu", "inbound_nodes": [[["conv4_block5_1_bn", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv4_block5_2_conv", "trainable": false, "dtype": "float32", "filters": 256, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv4_block5_2_conv", "inbound_nodes": [[["conv4_block5_1_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv4_block5_2_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv4_block5_2_bn", "inbound_nodes": [[["conv4_block5_2_conv", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv4_block5_2_relu", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv4_block5_2_relu", "inbound_nodes": [[["conv4_block5_2_bn", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv4_block5_3_conv", "trainable": false, "dtype": "float32", "filters": 1024, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv4_block5_3_conv", "inbound_nodes": [[["conv4_block5_2_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv4_block5_3_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv4_block5_3_bn", "inbound_nodes": [[["conv4_block5_3_conv", 0, 0, {}]]]}, {"class_name": "Add", "config": {"name": "conv4_block5_add", "trainable": false, "dtype": "float32"}, "name": "conv4_block5_add", "inbound_nodes": [[["conv4_block4_out", 0, 0, {}], ["conv4_block5_3_bn", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv4_block5_out", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv4_block5_out", "inbound_nodes": [[["conv4_block5_add", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv4_block6_1_conv", "trainable": false, "dtype": "float32", "filters": 256, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv4_block6_1_conv", "inbound_nodes": [[["conv4_block5_out", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv4_block6_1_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv4_block6_1_bn", "inbound_nodes": [[["conv4_block6_1_conv", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv4_block6_1_relu", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv4_block6_1_relu", "inbound_nodes": [[["conv4_block6_1_bn", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv4_block6_2_conv", "trainable": false, "dtype": "float32", "filters": 256, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv4_block6_2_conv", "inbound_nodes": [[["conv4_block6_1_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv4_block6_2_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv4_block6_2_bn", "inbound_nodes": [[["conv4_block6_2_conv", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv4_block6_2_relu", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv4_block6_2_relu", "inbound_nodes": [[["conv4_block6_2_bn", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv4_block6_3_conv", "trainable": false, "dtype": "float32", "filters": 1024, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv4_block6_3_conv", "inbound_nodes": [[["conv4_block6_2_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv4_block6_3_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv4_block6_3_bn", "inbound_nodes": [[["conv4_block6_3_conv", 0, 0, {}]]]}, {"class_name": "Add", "config": {"name": "conv4_block6_add", "trainable": false, "dtype": "float32"}, "name": "conv4_block6_add", "inbound_nodes": [[["conv4_block5_out", 0, 0, {}], ["conv4_block6_3_bn", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv4_block6_out", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv4_block6_out", "inbound_nodes": [[["conv4_block6_add", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv5_block1_1_conv", "trainable": false, "dtype": "float32", "filters": 512, "kernel_size": [1, 1], "strides": [2, 2], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv5_block1_1_conv", "inbound_nodes": [[["conv4_block6_out", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv5_block1_1_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv5_block1_1_bn", "inbound_nodes": [[["conv5_block1_1_conv", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv5_block1_1_relu", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv5_block1_1_relu", "inbound_nodes": [[["conv5_block1_1_bn", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv5_block1_2_conv", "trainable": false, "dtype": "float32", "filters": 512, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv5_block1_2_conv", "inbound_nodes": [[["conv5_block1_1_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv5_block1_2_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv5_block1_2_bn", "inbound_nodes": [[["conv5_block1_2_conv", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv5_block1_2_relu", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv5_block1_2_relu", "inbound_nodes": [[["conv5_block1_2_bn", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv5_block1_0_conv", "trainable": false, "dtype": "float32", "filters": 2048, "kernel_size": [1, 1], "strides": [2, 2], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv5_block1_0_conv", "inbound_nodes": [[["conv4_block6_out", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv5_block1_3_conv", "trainable": false, "dtype": "float32", "filters": 2048, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv5_block1_3_conv", "inbound_nodes": [[["conv5_block1_2_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv5_block1_0_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv5_block1_0_bn", "inbound_nodes": [[["conv5_block1_0_conv", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv5_block1_3_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv5_block1_3_bn", "inbound_nodes": [[["conv5_block1_3_conv", 0, 0, {}]]]}, {"class_name": "Add", "config": {"name": "conv5_block1_add", "trainable": false, "dtype": "float32"}, "name": "conv5_block1_add", "inbound_nodes": [[["conv5_block1_0_bn", 0, 0, {}], ["conv5_block1_3_bn", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv5_block1_out", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv5_block1_out", "inbound_nodes": [[["conv5_block1_add", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv5_block2_1_conv", "trainable": false, "dtype": "float32", "filters": 512, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv5_block2_1_conv", "inbound_nodes": [[["conv5_block1_out", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv5_block2_1_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv5_block2_1_bn", "inbound_nodes": [[["conv5_block2_1_conv", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv5_block2_1_relu", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv5_block2_1_relu", "inbound_nodes": [[["conv5_block2_1_bn", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv5_block2_2_conv", "trainable": false, "dtype": "float32", "filters": 512, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv5_block2_2_conv", "inbound_nodes": [[["conv5_block2_1_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv5_block2_2_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv5_block2_2_bn", "inbound_nodes": [[["conv5_block2_2_conv", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv5_block2_2_relu", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv5_block2_2_relu", "inbound_nodes": [[["conv5_block2_2_bn", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv5_block2_3_conv", "trainable": false, "dtype": "float32", "filters": 2048, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv5_block2_3_conv", "inbound_nodes": [[["conv5_block2_2_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv5_block2_3_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv5_block2_3_bn", "inbound_nodes": [[["conv5_block2_3_conv", 0, 0, {}]]]}, {"class_name": "Add", "config": {"name": "conv5_block2_add", "trainable": false, "dtype": "float32"}, "name": "conv5_block2_add", "inbound_nodes": [[["conv5_block1_out", 0, 0, {}], ["conv5_block2_3_bn", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv5_block2_out", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv5_block2_out", "inbound_nodes": [[["conv5_block2_add", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv5_block3_1_conv", "trainable": false, "dtype": "float32", "filters": 512, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv5_block3_1_conv", "inbound_nodes": [[["conv5_block2_out", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv5_block3_1_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv5_block3_1_bn", "inbound_nodes": [[["conv5_block3_1_conv", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv5_block3_1_relu", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv5_block3_1_relu", "inbound_nodes": [[["conv5_block3_1_bn", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv5_block3_2_conv", "trainable": false, "dtype": "float32", "filters": 512, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv5_block3_2_conv", "inbound_nodes": [[["conv5_block3_1_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv5_block3_2_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv5_block3_2_bn", "inbound_nodes": [[["conv5_block3_2_conv", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv5_block3_2_relu", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv5_block3_2_relu", "inbound_nodes": [[["conv5_block3_2_bn", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "conv5_block3_3_conv", "trainable": false, "dtype": "float32", "filters": 2048, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "conv5_block3_3_conv", "inbound_nodes": [[["conv5_block3_2_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "conv5_block3_3_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 1.001e-05, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "conv5_block3_3_bn", "inbound_nodes": [[["conv5_block3_3_conv", 0, 0, {}]]]}, {"class_name": "Add", "config": {"name": "conv5_block3_add", "trainable": false, "dtype": "float32"}, "name": "conv5_block3_add", "inbound_nodes": [[["conv5_block2_out", 0, 0, {}], ["conv5_block3_3_bn", 0, 0, {}]]]}, {"class_name": "Activation", "config": {"name": "conv5_block3_out", "trainable": false, "dtype": "float32", "activation": "relu"}, "name": "conv5_block3_out", "inbound_nodes": [[["conv5_block3_add", 0, 0, {}]]]}], "input_layers": [["input_1", 0, 0]], "output_layers": [["conv5_block3_out", 0, 0]]}, "name": "resnet50", "inbound_nodes": [[["input_2", 0, 0, {"training": false}]]]}, {"class_name": "GlobalAveragePooling2D", "config": {"name": "global_average_pooling2d", "trainable": true, "dtype": "float32", "data_format": "channels_last", "keepdims": false}, "name": "global_average_pooling2d", "inbound_nodes": [[["resnet50", 1, 0, {}]]]}, {"class_name": "Dense", "config": {"name": "dense", "trainable": true, "dtype": "float32", "units": 7, "activation": "softmax", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "dense", "inbound_nodes": [[["global_average_pooling2d", 0, 0, {}]]]}], "input_layers": [["input_2", 0, 0]], "output_layers": [["dense", 0, 0]]}}, "training_config": {"loss": {"class_name": "SparseCategoricalCrossentropy", "config": {"reduction": "auto", "name": "sparse_categorical_crossentropy", "from_logits": false, "ignore_class": null, "fn": "sparse_categorical_crossentropy"}}, "metrics": [[{"class_name": "SparseCategoricalAccuracy", "config": {"name": "accuracy", "dtype": "float32"}}]], "weighted_metrics": null, "loss_weights": null, "optimizer_config": {"class_name": "Custom>Adam", "config": {"name": "Adam", "weight_decay": null, "clipnorm": null, "global_clipnorm": null, "clipvalue": null, "use_ema": false, "ema_momentum": 0.99, "ema_overwrite_frequency": null, "jit_compile": true, "is_legacy_optimizer": false, "learning_rate": 1.0000001111620804e-06, "beta_1": 0.9, "beta_2": 0.999, "epsilon": 1e-07, "amsgrad": false}}}}, "weightsManifest": [{"paths": ["group1-shard1of23.bin", "group1-shard2of23.bin", "group1-shard3of23.bin", "group1-shard4of23.bin", "group1-shard5of23.bin", "group1-shard6of23.bin", "group1-shard7of23.bin", "group1-shard8of23.bin", "group1-shard9of23.bin", "group1-shard10of23.bin", "group1-shard11of23.bin", "group1-shard12of23.bin", "group1-shard13of23.bin", "group1-shard14of23.bin", "group1-shard15of23.bin", "group1-shard16of23.bin", "group1-shard17of23.bin", "group1-shard18of23.bin", "group1-shard19of23.bin", "group1-shard20of23.bin", "group1-shard21of23.bin", "group1-shard22of23.bin", "group1-shard23of23.bin"], "weights": [{"name": "dense/kernel", "shape": [2048, 7], "dtype": "float32"}, {"name": "dense/bias", "shape": [7], "dtype": "float32"}, {"name": "conv1_conv/kernel", "shape": [7, 7, 3, 64], "dtype": "float32"}, {"name": "conv1_conv/bias", "shape": [64], "dtype": "float32"}, {"name": "conv1_bn/gamma", "shape": [64], "dtype": "float32"}, {"name": "conv1_bn/beta", "shape": [64], "dtype": "float32"}, {"name": "conv1_bn/moving_mean", "shape": [64], "dtype": "float32"}, {"name": "conv1_bn/moving_variance", "shape": [64], "dtype": "float32"}, {"name": "conv2_block1_1_conv/kernel", "shape": [1, 1, 64, 64], "dtype": "float32"}, {"name": "conv2_block1_1_conv/bias", "shape": [64], "dtype": "float32"}, {"name": "conv2_block1_1_bn/gamma", "shape": [64], "dtype": "float32"}, {"name": "conv2_block1_1_bn/beta", "shape": [64], "dtype": "float32"}, {"name": "conv2_block1_1_bn/moving_mean", "shape": [64], "dtype": "float32"}, {"name": "conv2_block1_1_bn/moving_variance", "shape": [64], "dtype": "float32"}, {"name": "conv2_block1_2_conv/kernel", "shape": [3, 3, 64, 64], "dtype": "float32"}, {"name": "conv2_block1_2_conv/bias", "shape": [64], "dtype": "float32"}, {"name": "conv2_block1_2_bn/gamma", "shape": [64], "dtype": "float32"}, {"name": "conv2_block1_2_bn/beta", "shape": [64], "dtype": "float32"}, {"name": "conv2_block1_2_bn/moving_mean", "shape": [64], "dtype": "float32"}, {"name": "conv2_block1_2_bn/moving_variance", "shape": [64], "dtype": "float32"}, {"name": "conv2_block1_0_conv/kernel", "shape": [1, 1, 64, 256], "dtype": "float32"}, {"name": "conv2_block1_0_conv/bias", "shape": [256], "dtype": "float32"}, {"name": "conv2_block1_3_conv/kernel", "shape": [1, 1, 64, 256], "dtype": "float32"}, {"name": "conv2_block1_3_conv/bias", "shape": [256], "dtype": "float32"}, {"name": "conv2_block1_0_bn/gamma", "shape": [256], "dtype": "float32"}, {"name": "conv2_block1_0_bn/beta", "shape": [256], "dtype": "float32"}, {"name": "conv2_block1_0_bn/moving_mean", "shape": [256], "dtype": "float32"}, {"name": "conv2_block1_0_bn/moving_variance", "shape": [256], "dtype": "float32"}, {"name": "conv2_block1_3_bn/gamma", "shape": [256], "dtype": "float32"}, {"name": "conv2_block1_3_bn/beta", "shape": [256], "dtype": "float32"}, {"name": "conv2_block1_3_bn/moving_mean", "shape": [256], "dtype": "float32"}, {"name": "conv2_block1_3_bn/moving_variance", "shape": [256], "dtype": "float32"}, {"name": "conv2_block2_1_conv/kernel", "shape": [1, 1, 256, 64], "dtype": "float32"}, {"name": "conv2_block2_1_conv/bias", "shape": [64], "dtype": "float32"}, {"name": "conv2_block2_1_bn/gamma", "shape": [64], "dtype": "float32"}, {"name": "conv2_block2_1_bn/beta", "shape": [64], "dtype": "float32"}, {"name": "conv2_block2_1_bn/moving_mean", "shape": [64], "dtype": "float32"}, {"name": "conv2_block2_1_bn/moving_variance", "shape": [64], "dtype": "float32"}, {"name": "conv2_block2_2_conv/kernel", "shape": [3, 3, 64, 64], "dtype": "float32"}, {"name": "conv2_block2_2_conv/bias", "shape": [64], "dtype": "float32"}, {"name": "conv2_block2_2_bn/gamma", "shape": [64], "dtype": "float32"}, {"name": "conv2_block2_2_bn/beta", "shape": [64], "dtype": "float32"}, {"name": "conv2_block2_2_bn/moving_mean", "shape": [64], "dtype": "float32"}, {"name": "conv2_block2_2_bn/moving_variance", "shape": [64], "dtype": "float32"}, {"name": "conv2_block2_3_conv/kernel", "shape": [1, 1, 64, 256], "dtype": "float32"}, {"name": "conv2_block2_3_conv/bias", "shape": [256], "dtype": "float32"}, {"name": "conv2_block2_3_bn/gamma", "shape": [256], "dtype": "float32"}, {"name": "conv2_block2_3_bn/beta", "shape": [256], "dtype": "float32"}, {"name": "conv2_block2_3_bn/moving_mean", "shape": [256], "dtype": "float32"}, {"name": "conv2_block2_3_bn/moving_variance", "shape": [256], "dtype": "float32"}, {"name": "conv2_block3_1_conv/kernel", "shape": [1, 1, 256, 64], "dtype": "float32"}, {"name": "conv2_block3_1_conv/bias", "shape": [64], "dtype": "float32"}, {"name": "conv2_block3_1_bn/gamma", "shape": [64], "dtype": "float32"}, {"name": "conv2_block3_1_bn/beta", "shape": [64], "dtype": "float32"}, {"name": "conv2_block3_1_bn/moving_mean", "shape": [64], "dtype": "float32"}, {"name": "conv2_block3_1_bn/moving_variance", "shape": [64], "dtype": "float32"}, {"name": "conv2_block3_2_conv/kernel", "shape": [3, 3, 64, 64], "dtype": "float32"}, {"name": "conv2_block3_2_conv/bias", "shape": [64], "dtype": "float32"}, {"name": "conv2_block3_2_bn/gamma", "shape": [64], "dtype": "float32"}, {"name": "conv2_block3_2_bn/beta", "shape": [64], "dtype": "float32"}, {"name": "conv2_block3_2_bn/moving_mean", "shape": [64], "dtype": "float32"}, {"name": "conv2_block3_2_bn/moving_variance", "shape": [64], "dtype": "float32"}, {"name": "conv2_block3_3_conv/kernel", "shape": [1, 1, 64, 256], "dtype": "float32"}, {"name": "conv2_block3_3_conv/bias", "shape": [256], "dtype": "float32"}, {"name": "conv2_block3_3_bn/gamma", "shape": [256], "dtype": "float32"}, {"name": "conv2_block3_3_bn/beta", "shape": [256], "dtype": "float32"}, {"name": "conv2_block3_3_bn/moving_mean", "shape": [256], "dtype": "float32"}, {"name": "conv2_block3_3_bn/moving_variance", "shape": [256], "dtype": "float32"}, {"name": "conv3_block1_1_conv/kernel", "shape": [1, 1, 256, 128], "dtype": "float32"}, {"name": "conv3_block1_1_conv/bias", "shape": [128], "dtype": "float32"}, {"name": "conv3_block1_1_bn/gamma", "shape": [128], "dtype": "float32"}, {"name": "conv3_block1_1_bn/beta", "shape": [128], "dtype": "float32"}, {"name": "conv3_block1_1_bn/moving_mean", "shape": [128], "dtype": "float32"}, {"name": "conv3_block1_1_bn/moving_variance", "shape": [128], "dtype": "float32"}, {"name": "conv3_block1_2_conv/kernel", "shape": [3, 3, 128, 128], "dtype": "float32"}, {"name": "conv3_block1_2_conv/bias", "shape": [128], "dtype": "float32"}, {"name": "conv3_block1_2_bn/gamma", "shape": [128], "dtype": "float32"}, {"name": "conv3_block1_2_bn/beta", "shape": [128], "dtype": "float32"}, {"name": "conv3_block1_2_bn/moving_mean", "shape": [128], "dtype": "float32"}, {"name": "conv3_block1_2_bn/moving_variance", "shape": [128], "dtype": "float32"}, {"name": "conv3_block1_0_conv/kernel", "shape": [1, 1, 256, 512], "dtype": "float32"}, {"name": "conv3_block1_0_conv/bias", "shape": [512], "dtype": "float32"}, {"name": "conv3_block1_3_conv/kernel", "shape": [1, 1, 128, 512], "dtype": "float32"}, {"name": "conv3_block1_3_conv/bias", "shape": [512], "dtype": "float32"}, {"name": "conv3_block1_0_bn/gamma", "shape": [512], "dtype": "float32"}, {"name": "conv3_block1_0_bn/beta", "shape": [512], "dtype": "float32"}, {"name": "conv3_block1_0_bn/moving_mean", "shape": [512], "dtype": "float32"}, {"name": "conv3_block1_0_bn/moving_variance", "shape": [512], "dtype": "float32"}, {"name": "conv3_block1_3_bn/gamma", "shape": [512], "dtype": "float32"}, {"name": "conv3_block1_3_bn/beta", "shape": [512], "dtype": "float32"}, {"name": "conv3_block1_3_bn/moving_mean", "shape": [512], "dtype": "float32"}, {"name": "conv3_block1_3_bn/moving_variance", "shape": [512], "dtype": "float32"}, {"name": "conv3_block2_1_conv/kernel", "shape": [1, 1, 512, 128], "dtype": "float32"}, {"name": "conv3_block2_1_conv/bias", "shape": [128], "dtype": "float32"}, {"name": "conv3_block2_1_bn/gamma", "shape": [128], "dtype": "float32"}, {"name": "conv3_block2_1_bn/beta", "shape": [128], "dtype": "float32"}, {"name": "conv3_block2_1_bn/moving_mean", "shape": [128], "dtype": "float32"}, {"name": "conv3_block2_1_bn/moving_variance", "shape": [128], "dtype": "float32"}, {"name": "conv3_block2_2_conv/kernel", "shape": [3, 3, 128, 128], "dtype": "float32"}, {"name": "conv3_block2_2_conv/bias", "shape": [128], "dtype": "float32"}, {"name": "conv3_block2_2_bn/gamma", "shape": [128], "dtype": "float32"}, {"name": "conv3_block2_2_bn/beta", "shape": [128], "dtype": "float32"}, {"name": "conv3_block2_2_bn/moving_mean", "shape": [128], "dtype": "float32"}, {"name": "conv3_block2_2_bn/moving_variance", "shape": [128], "dtype": "float32"}, {"name": "conv3_block2_3_conv/kernel", "shape": [1, 1, 128, 512], "dtype": "float32"}, {"name": "conv3_block2_3_conv/bias", "shape": [512], "dtype": "float32"}, {"name": "conv3_block2_3_bn/gamma", "shape": [512], "dtype": "float32"}, {"name": "conv3_block2_3_bn/beta", "shape": [512], "dtype": "float32"}, {"name": "conv3_block2_3_bn/moving_mean", "shape": [512], "dtype": "float32"}, {"name": "conv3_block2_3_bn/moving_variance", "shape": [512], "dtype": "float32"}, {"name": "conv3_block3_1_conv/kernel", "shape": [1, 1, 512, 128], "dtype": "float32"}, {"name": "conv3_block3_1_conv/bias", "shape": [128], "dtype": "float32"}, {"name": "conv3_block3_1_bn/gamma", "shape": [128], "dtype": "float32"}, {"name": "conv3_block3_1_bn/beta", "shape": [128], "dtype": "float32"}, {"name": "conv3_block3_1_bn/moving_mean", "shape": [128], "dtype": "float32"}, {"name": "conv3_block3_1_bn/moving_variance", "shape": [128], "dtype": "float32"}, {"name": "conv3_block3_2_conv/kernel", "shape": [3, 3, 128, 128], "dtype": "float32"}, {"name": "conv3_block3_2_conv/bias", "shape": [128], "dtype": "float32"}, {"name": "conv3_block3_2_bn/gamma", "shape": [128], "dtype": "float32"}, {"name": "conv3_block3_2_bn/beta", "shape": [128], "dtype": "float32"}, {"name": "conv3_block3_2_bn/moving_mean", "shape": [128], "dtype": "float32"}, {"name": "conv3_block3_2_bn/moving_variance", "shape": [128], "dtype": "float32"}, {"name": "conv3_block3_3_conv/kernel", "shape": [1, 1, 128, 512], "dtype": "float32"}, {"name": "conv3_block3_3_conv/bias", "shape": [512], "dtype": "float32"}, {"name": "conv3_block3_3_bn/gamma", "shape": [512], "dtype": "float32"}, {"name": "conv3_block3_3_bn/beta", "shape": [512], "dtype": "float32"}, {"name": "conv3_block3_3_bn/moving_mean", "shape": [512], "dtype": "float32"}, {"name": "conv3_block3_3_bn/moving_variance", "shape": [512], "dtype": "float32"}, {"name": "conv3_block4_1_conv/kernel", "shape": [1, 1, 512, 128], "dtype": "float32"}, {"name": "conv3_block4_1_conv/bias", "shape": [128], "dtype": "float32"}, {"name": "conv3_block4_1_bn/gamma", "shape": [128], "dtype": "float32"}, {"name": "conv3_block4_1_bn/beta", "shape": [128], "dtype": "float32"}, {"name": "conv3_block4_1_bn/moving_mean", "shape": [128], "dtype": "float32"}, {"name": "conv3_block4_1_bn/moving_variance", "shape": [128], "dtype": "float32"}, {"name": "conv3_block4_2_conv/kernel", "shape": [3, 3, 128, 128], "dtype": "float32"}, {"name": "conv3_block4_2_conv/bias", "shape": [128], "dtype": "float32"}, {"name": "conv3_block4_2_bn/gamma", "shape": [128], "dtype": "float32"}, {"name": "conv3_block4_2_bn/beta", "shape": [128], "dtype": "float32"}, {"name": "conv3_block4_2_bn/moving_mean", "shape": [128], "dtype": "float32"}, {"name": "conv3_block4_2_bn/moving_variance", "shape": [128], "dtype": "float32"}, {"name": "conv3_block4_3_conv/kernel", "shape": [1, 1, 128, 512], "dtype": "float32"}, {"name": "conv3_block4_3_conv/bias", "shape": [512], "dtype": "float32"}, {"name": "conv3_block4_3_bn/gamma", "shape": [512], "dtype": "float32"}, {"name": "conv3_block4_3_bn/beta", "shape": [512], "dtype": "float32"}, {"name": "conv3_block4_3_bn/moving_mean", "shape": [512], "dtype": "float32"}, {"name": "conv3_block4_3_bn/moving_variance", "shape": [512], "dtype": "float32"}, {"name": "conv4_block1_1_conv/kernel", "shape": [1, 1, 512, 256], "dtype": "float32"}, {"name": "conv4_block1_1_conv/bias", "shape": [256], "dtype": "float32"}, {"name": "conv4_block1_1_bn/gamma", "shape": [256], "dtype": "float32"}, {"name": "conv4_block1_1_bn/beta", "shape": [256], "dtype": "float32"}, {"name": "conv4_block1_1_bn/moving_mean", "shape": [256], "dtype": "float32"}, {"name": "conv4_block1_1_bn/moving_variance", "shape": [256], "dtype": "float32"}, {"name": "conv4_block1_2_conv/kernel", "shape": [3, 3, 256, 256], "dtype": "float32"}, {"name": "conv4_block1_2_conv/bias", "shape": [256], "dtype": "float32"}, {"name": "conv4_block1_2_bn/gamma", "shape": [256], "dtype": "float32"}, {"name": "conv4_block1_2_bn/beta", "shape": [256], "dtype": "float32"}, {"name": "conv4_block1_2_bn/moving_mean", "shape": [256], "dtype": "float32"}, {"name": "conv4_block1_2_bn/moving_variance", "shape": [256], "dtype": "float32"}, {"name": "conv4_block1_0_conv/kernel", "shape": [1, 1, 512, 1024], "dtype": "float32"}, {"name": "conv4_block1_0_conv/bias", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block1_3_conv/kernel", "shape": [1, 1, 256, 1024], "dtype": "float32"}, {"name": "conv4_block1_3_conv/bias", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block1_0_bn/gamma", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block1_0_bn/beta", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block1_0_bn/moving_mean", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block1_0_bn/moving_variance", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block1_3_bn/gamma", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block1_3_bn/beta", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block1_3_bn/moving_mean", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block1_3_bn/moving_variance", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block2_1_conv/kernel", "shape": [1, 1, 1024, 256], "dtype": "float32"}, {"name": "conv4_block2_1_conv/bias", "shape": [256], "dtype": "float32"}, {"name": "conv4_block2_1_bn/gamma", "shape": [256], "dtype": "float32"}, {"name": "conv4_block2_1_bn/beta", "shape": [256], "dtype": "float32"}, {"name": "conv4_block2_1_bn/moving_mean", "shape": [256], "dtype": "float32"}, {"name": "conv4_block2_1_bn/moving_variance", "shape": [256], "dtype": "float32"}, {"name": "conv4_block2_2_conv/kernel", "shape": [3, 3, 256, 256], "dtype": "float32"}, {"name": "conv4_block2_2_conv/bias", "shape": [256], "dtype": "float32"}, {"name": "conv4_block2_2_bn/gamma", "shape": [256], "dtype": "float32"}, {"name": "conv4_block2_2_bn/beta", "shape": [256], "dtype": "float32"}, {"name": "conv4_block2_2_bn/moving_mean", "shape": [256], "dtype": "float32"}, {"name": "conv4_block2_2_bn/moving_variance", "shape": [256], "dtype": "float32"}, {"name": "conv4_block2_3_conv/kernel", "shape": [1, 1, 256, 1024], "dtype": "float32"}, {"name": "conv4_block2_3_conv/bias", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block2_3_bn/gamma", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block2_3_bn/beta", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block2_3_bn/moving_mean", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block2_3_bn/moving_variance", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block3_1_conv/kernel", "shape": [1, 1, 1024, 256], "dtype": "float32"}, {"name": "conv4_block3_1_conv/bias", "shape": [256], "dtype": "float32"}, {"name": "conv4_block3_1_bn/gamma", "shape": [256], "dtype": "float32"}, {"name": "conv4_block3_1_bn/beta", "shape": [256], "dtype": "float32"}, {"name": "conv4_block3_1_bn/moving_mean", "shape": [256], "dtype": "float32"}, {"name": "conv4_block3_1_bn/moving_variance", "shape": [256], "dtype": "float32"}, {"name": "conv4_block3_2_conv/kernel", "shape": [3, 3, 256, 256], "dtype": "float32"}, {"name": "conv4_block3_2_conv/bias", "shape": [256], "dtype": "float32"}, {"name": "conv4_block3_2_bn/gamma", "shape": [256], "dtype": "float32"}, {"name": "conv4_block3_2_bn/beta", "shape": [256], "dtype": "float32"}, {"name": "conv4_block3_2_bn/moving_mean", "shape": [256], "dtype": "float32"}, {"name": "conv4_block3_2_bn/moving_variance", "shape": [256], "dtype": "float32"}, {"name": "conv4_block3_3_conv/kernel", "shape": [1, 1, 256, 1024], "dtype": "float32"}, {"name": "conv4_block3_3_conv/bias", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block3_3_bn/gamma", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block3_3_bn/beta", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block3_3_bn/moving_mean", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block3_3_bn/moving_variance", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block4_1_conv/kernel", "shape": [1, 1, 1024, 256], "dtype": "float32"}, {"name": "conv4_block4_1_conv/bias", "shape": [256], "dtype": "float32"}, {"name": "conv4_block4_1_bn/gamma", "shape": [256], "dtype": "float32"}, {"name": "conv4_block4_1_bn/beta", "shape": [256], "dtype": "float32"}, {"name": "conv4_block4_1_bn/moving_mean", "shape": [256], "dtype": "float32"}, {"name": "conv4_block4_1_bn/moving_variance", "shape": [256], "dtype": "float32"}, {"name": "conv4_block4_2_conv/kernel", "shape": [3, 3, 256, 256], "dtype": "float32"}, {"name": "conv4_block4_2_conv/bias", "shape": [256], "dtype": "float32"}, {"name": "conv4_block4_2_bn/gamma", "shape": [256], "dtype": "float32"}, {"name": "conv4_block4_2_bn/beta", "shape": [256], "dtype": "float32"}, {"name": "conv4_block4_2_bn/moving_mean", "shape": [256], "dtype": "float32"}, {"name": "conv4_block4_2_bn/moving_variance", "shape": [256], "dtype": "float32"}, {"name": "conv4_block4_3_conv/kernel", "shape": [1, 1, 256, 1024], "dtype": "float32"}, {"name": "conv4_block4_3_conv/bias", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block4_3_bn/gamma", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block4_3_bn/beta", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block4_3_bn/moving_mean", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block4_3_bn/moving_variance", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block5_1_conv/kernel", "shape": [1, 1, 1024, 256], "dtype": "float32"}, {"name": "conv4_block5_1_conv/bias", "shape": [256], "dtype": "float32"}, {"name": "conv4_block5_1_bn/gamma", "shape": [256], "dtype": "float32"}, {"name": "conv4_block5_1_bn/beta", "shape": [256], "dtype": "float32"}, {"name": "conv4_block5_1_bn/moving_mean", "shape": [256], "dtype": "float32"}, {"name": "conv4_block5_1_bn/moving_variance", "shape": [256], "dtype": "float32"}, {"name": "conv4_block5_2_conv/kernel", "shape": [3, 3, 256, 256], "dtype": "float32"}, {"name": "conv4_block5_2_conv/bias", "shape": [256], "dtype": "float32"}, {"name": "conv4_block5_2_bn/gamma", "shape": [256], "dtype": "float32"}, {"name": "conv4_block5_2_bn/beta", "shape": [256], "dtype": "float32"}, {"name": "conv4_block5_2_bn/moving_mean", "shape": [256], "dtype": "float32"}, {"name": "conv4_block5_2_bn/moving_variance", "shape": [256], "dtype": "float32"}, {"name": "conv4_block5_3_conv/kernel", "shape": [1, 1, 256, 1024], "dtype": "float32"}, {"name": "conv4_block5_3_conv/bias", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block5_3_bn/gamma", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block5_3_bn/beta", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block5_3_bn/moving_mean", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block5_3_bn/moving_variance", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block6_1_conv/kernel", "shape": [1, 1, 1024, 256], "dtype": "float32"}, {"name": "conv4_block6_1_conv/bias", "shape": [256], "dtype": "float32"}, {"name": "conv4_block6_1_bn/gamma", "shape": [256], "dtype": "float32"}, {"name": "conv4_block6_1_bn/beta", "shape": [256], "dtype": "float32"}, {"name": "conv4_block6_1_bn/moving_mean", "shape": [256], "dtype": "float32"}, {"name": "conv4_block6_1_bn/moving_variance", "shape": [256], "dtype": "float32"}, {"name": "conv4_block6_2_conv/kernel", "shape": [3, 3, 256, 256], "dtype": "float32"}, {"name": "conv4_block6_2_conv/bias", "shape": [256], "dtype": "float32"}, {"name": "conv4_block6_2_bn/gamma", "shape": [256], "dtype": "float32"}, {"name": "conv4_block6_2_bn/beta", "shape": [256], "dtype": "float32"}, {"name": "conv4_block6_2_bn/moving_mean", "shape": [256], "dtype": "float32"}, {"name": "conv4_block6_2_bn/moving_variance", "shape": [256], "dtype": "float32"}, {"name": "conv4_block6_3_conv/kernel", "shape": [1, 1, 256, 1024], "dtype": "float32"}, {"name": "conv4_block6_3_conv/bias", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block6_3_bn/gamma", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block6_3_bn/beta", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block6_3_bn/moving_mean", "shape": [1024], "dtype": "float32"}, {"name": "conv4_block6_3_bn/moving_variance", "shape": [1024], "dtype": "float32"}, {"name": "conv5_block1_1_conv/kernel", "shape": [1, 1, 1024, 512], "dtype": "float32"}, {"name": "conv5_block1_1_conv/bias", "shape": [512], "dtype": "float32"}, {"name": "conv5_block1_1_bn/gamma", "shape": [512], "dtype": "float32"}, {"name": "conv5_block1_1_bn/beta", "shape": [512], "dtype": "float32"}, {"name": "conv5_block1_1_bn/moving_mean", "shape": [512], "dtype": "float32"}, {"name": "conv5_block1_1_bn/moving_variance", "shape": [512], "dtype": "float32"}, {"name": "conv5_block1_2_conv/kernel", "shape": [3, 3, 512, 512], "dtype": "float32"}, {"name": "conv5_block1_2_conv/bias", "shape": [512], "dtype": "float32"}, {"name": "conv5_block1_2_bn/gamma", "shape": [512], "dtype": "float32"}, {"name": "conv5_block1_2_bn/beta", "shape": [512], "dtype": "float32"}, {"name": "conv5_block1_2_bn/moving_mean", "shape": [512], "dtype": "float32"}, {"name": "conv5_block1_2_bn/moving_variance", "shape": [512], "dtype": "float32"}, {"name": "conv5_block1_0_conv/kernel", "shape": [1, 1, 1024, 2048], "dtype": "float32"}, {"name": "conv5_block1_0_conv/bias", "shape": [2048], "dtype": "float32"}, {"name": "conv5_block1_3_conv/kernel", "shape": [1, 1, 512, 2048], "dtype": "float32"}, {"name": "conv5_block1_3_conv/bias", "shape": [2048], "dtype": "float32"}, {"name": "conv5_block1_0_bn/gamma", "shape": [2048], "dtype": "float32"}, {"name": "conv5_block1_0_bn/beta", "shape": [2048], "dtype": "float32"}, {"name": "conv5_block1_0_bn/moving_mean", "shape": [2048], "dtype": "float32"}, {"name": "conv5_block1_0_bn/moving_variance", "shape": [2048], "dtype": "float32"}, {"name": "conv5_block1_3_bn/gamma", "shape": [2048], "dtype": "float32"}, {"name": "conv5_block1_3_bn/beta", "shape": [2048], "dtype": "float32"}, {"name": "conv5_block1_3_bn/moving_mean", "shape": [2048], "dtype": "float32"}, {"name": "conv5_block1_3_bn/moving_variance", "shape": [2048], "dtype": "float32"}, {"name": "conv5_block2_1_conv/kernel", "shape": [1, 1, 2048, 512], "dtype": "float32"}, {"name": "conv5_block2_1_conv/bias", "shape": [512], "dtype": "float32"}, {"name": "conv5_block2_1_bn/gamma", "shape": [512], "dtype": "float32"}, {"name": "conv5_block2_1_bn/beta", "shape": [512], "dtype": "float32"}, {"name": "conv5_block2_1_bn/moving_mean", "shape": [512], "dtype": "float32"}, {"name": "conv5_block2_1_bn/moving_variance", "shape": [512], "dtype": "float32"}, {"name": "conv5_block2_2_conv/kernel", "shape": [3, 3, 512, 512], "dtype": "float32"}, {"name": "conv5_block2_2_conv/bias", "shape": [512], "dtype": "float32"}, {"name": "conv5_block2_2_bn/gamma", "shape": [512], "dtype": "float32"}, {"name": "conv5_block2_2_bn/beta", "shape": [512], "dtype": "float32"}, {"name": "conv5_block2_2_bn/moving_mean", "shape": [512], "dtype": "float32"}, {"name": "conv5_block2_2_bn/moving_variance", "shape": [512], "dtype": "float32"}, {"name": "conv5_block2_3_conv/kernel", "shape": [1, 1, 512, 2048], "dtype": "float32"}, {"name": "conv5_block2_3_conv/bias", "shape": [2048], "dtype": "float32"}, {"name": "conv5_block2_3_bn/gamma", "shape": [2048], "dtype": "float32"}, {"name": "conv5_block2_3_bn/beta", "shape": [2048], "dtype": "float32"}, {"name": "conv5_block2_3_bn/moving_mean", "shape": [2048], "dtype": "float32"}, {"name": "conv5_block2_3_bn/moving_variance", "shape": [2048], "dtype": "float32"}, {"name": "conv5_block3_1_conv/kernel", "shape": [1, 1, 2048, 512], "dtype": "float32"}, {"name": "conv5_block3_1_conv/bias", "shape": [512], "dtype": "float32"}, {"name": "conv5_block3_1_bn/gamma", "shape": [512], "dtype": "float32"}, {"name": "conv5_block3_1_bn/beta", "shape": [512], "dtype": "float32"}, {"name": "conv5_block3_1_bn/moving_mean", "shape": [512], "dtype": "float32"}, {"name": "conv5_block3_1_bn/moving_variance", "shape": [512], "dtype": "float32"}, {"name": "conv5_block3_2_conv/kernel", "shape": [3, 3, 512, 512], "dtype": "float32"}, {"name": "conv5_block3_2_conv/bias", "shape": [512], "dtype": "float32"}, {"name": "conv5_block3_2_bn/gamma", "shape": [512], "dtype": "float32"}, {"name": "conv5_block3_2_bn/beta", "shape": [512], "dtype": "float32"}, {"name": "conv5_block3_2_bn/moving_mean", "shape": [512], "dtype": "float32"}, {"name": "conv5_block3_2_bn/moving_variance", "shape": [512], "dtype": "float32"}, {"name": "conv5_block3_3_conv/kernel", "shape": [1, 1, 512, 2048], "dtype": "float32"}, {"name": "conv5_block3_3_conv/bias", "shape": [2048], "dtype": "float32"}, {"name": "conv5_block3_3_bn/gamma", "shape": [2048], "dtype": "float32"}, {"name": "conv5_block3_3_bn/beta", "shape": [2048], "dtype": "float32"}, {"name": "conv5_block3_3_bn/moving_mean", "shape": [2048], "dtype": "float32"}, {"name": "conv5_block3_3_bn/moving_variance", "shape": [2048], "dtype": "float32"}]}]} \ No newline at end of file diff --git a/Server/routes/checkRoute.js b/Server/routes/checkRoute.js new file mode 100644 index 0000000..a17e900 --- /dev/null +++ b/Server/routes/checkRoute.js @@ -0,0 +1,13 @@ +const express = require('express'); +const router = express.Router(); + +router.get('/check', (req, res) => { + res.status(200).json({ + status: 'ok', + message: 'Server is up and running', + timestamp: new Date().toISOString() + }); +}); + +module.exports = router; + diff --git a/Server/routes/classificationRoute.js b/Server/routes/classificationRoute.js new file mode 100644 index 0000000..3abbcf6 --- /dev/null +++ b/Server/routes/classificationRoute.js @@ -0,0 +1,31 @@ +const express = require('express'); +const multer = require('multer'); +const fs = require('fs'); +const path = require('path'); +const { classifyImage } = require('../controllers/classificationController'); + +const router = express.Router(); +const upload = multer({ dest: 'uploads/' }); + +router.post('/classify', upload.single('image'), async (req, res) => { + try { + if (!req.file) { + return res.status(400).json({ error: 'No image file uploaded' }); + } + + const imagePath = path.join(__dirname, `../${req.file.path}`); + const predictedClass = await classifyImage(imagePath); + + fs.unlinkSync(imagePath); + + res.json({ + success: true, + predictedClass, + }); + } catch (err) { + res.status(500).json({ error: err.message }); + } +}); + +module.exports = router; + diff --git a/Server/server.js b/Server/server.js new file mode 100644 index 0000000..fc112b3 --- /dev/null +++ b/Server/server.js @@ -0,0 +1,28 @@ +const express = require("express"); +const fs = require("fs"); +const https = require("https"); + +const basicAuth = require("./middleware/authMiddleware") +const classificationRoutes = require("./routes/classificationRoute"); +const checkRoutes = require("./routes/checkRoute"); + +const app = express(); +const port = 8000; + +//const sslOptions = { +// key: fs.readFileSync("./ssl/server.key"), +// cert: fs.readFileSync("./ssl/server.crt") +//}; + +app.use("/tomatoleafcare", basicAuth, classificationRoutes); +app.use("/tomatoleafcare", basicAuth, checkRoutes); + +//https.createServer(sslOptions, app).listen(port, () => { +// console.log(`HTTPS Server is running on port ${port}...`); +//}); + +app.listen(port, () => { + console.log(`Server running on http://localhost:${port}`); +}); + + diff --git a/TomatoLeafCare/.gradle/8.6/checksums/checksums.lock b/TomatoLeafCare/.gradle/8.6/checksums/checksums.lock new file mode 100644 index 0000000..03cb60e Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/checksums/checksums.lock differ diff --git a/TomatoLeafCare/.gradle/8.6/checksums/md5-checksums.bin b/TomatoLeafCare/.gradle/8.6/checksums/md5-checksums.bin new file mode 100644 index 0000000..3266a0d Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/checksums/md5-checksums.bin differ diff --git a/TomatoLeafCare/.gradle/8.6/checksums/sha1-checksums.bin b/TomatoLeafCare/.gradle/8.6/checksums/sha1-checksums.bin new file mode 100644 index 0000000..88e49e3 Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/checksums/sha1-checksums.bin differ diff --git a/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidPluginAccessors.class b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidPluginAccessors.class new file mode 100644 index 0000000..63c0e05 Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidPluginAccessors.class differ diff --git a/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxActivityLibraryAccessors.class b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxActivityLibraryAccessors.class new file mode 100644 index 0000000..6343a7d Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxActivityLibraryAccessors.class differ diff --git a/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxComposeLibraryAccessors.class b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxComposeLibraryAccessors.class new file mode 100644 index 0000000..6398d9a Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxComposeLibraryAccessors.class differ diff --git a/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxCoreLibraryAccessors.class b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxCoreLibraryAccessors.class new file mode 100644 index 0000000..840a717 Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxCoreLibraryAccessors.class differ diff --git a/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxEspressoLibraryAccessors.class b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxEspressoLibraryAccessors.class new file mode 100644 index 0000000..2bd1707 Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxEspressoLibraryAccessors.class differ diff --git a/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxLibraryAccessors.class b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxLibraryAccessors.class new file mode 100644 index 0000000..6d8a8fa Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxLibraryAccessors.class differ diff --git a/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxLifecycleLibraryAccessors.class b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxLifecycleLibraryAccessors.class new file mode 100644 index 0000000..93ab1a9 Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxLifecycleLibraryAccessors.class differ diff --git a/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxLifecycleRuntimeLibraryAccessors.class b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxLifecycleRuntimeLibraryAccessors.class new file mode 100644 index 0000000..18ebcd9 Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxLifecycleRuntimeLibraryAccessors.class differ diff --git a/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxUiLibraryAccessors.class b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxUiLibraryAccessors.class new file mode 100644 index 0000000..2db0bd9 Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxUiLibraryAccessors.class differ diff --git a/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxUiTestLibraryAccessors.class b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxUiTestLibraryAccessors.class new file mode 100644 index 0000000..fdafa14 Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxUiTestLibraryAccessors.class differ diff --git a/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxUiToolingLibraryAccessors.class b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxUiToolingLibraryAccessors.class new file mode 100644 index 0000000..4a707e1 Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidxUiToolingLibraryAccessors.class differ diff --git a/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$BundleAccessors.class b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$BundleAccessors.class new file mode 100644 index 0000000..4fce8a6 Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$BundleAccessors.class differ diff --git a/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$JetbrainsKotlinPluginAccessors.class b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$JetbrainsKotlinPluginAccessors.class new file mode 100644 index 0000000..7e660e0 Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$JetbrainsKotlinPluginAccessors.class differ diff --git a/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$JetbrainsPluginAccessors.class b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$JetbrainsPluginAccessors.class new file mode 100644 index 0000000..0bbc31f Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$JetbrainsPluginAccessors.class differ diff --git a/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$PluginAccessors.class b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$PluginAccessors.class new file mode 100644 index 0000000..e10f88a Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$PluginAccessors.class differ diff --git a/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$VersionAccessors.class b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$VersionAccessors.class new file mode 100644 index 0000000..02e64c2 Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs$VersionAccessors.class differ diff --git a/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs.class b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs.class new file mode 100644 index 0000000..4772579 Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibs.class differ diff --git a/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidPluginAccessors.class b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidPluginAccessors.class new file mode 100644 index 0000000..419ea0c Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidPluginAccessors.class differ diff --git a/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxActivityLibraryAccessors.class b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxActivityLibraryAccessors.class new file mode 100644 index 0000000..bd592f5 Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxActivityLibraryAccessors.class differ diff --git a/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxComposeLibraryAccessors.class b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxComposeLibraryAccessors.class new file mode 100644 index 0000000..9551608 Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxComposeLibraryAccessors.class differ diff --git a/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxCoreLibraryAccessors.class b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxCoreLibraryAccessors.class new file mode 100644 index 0000000..0a60f04 Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxCoreLibraryAccessors.class differ diff --git a/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxEspressoLibraryAccessors.class b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxEspressoLibraryAccessors.class new file mode 100644 index 0000000..b75dd2f Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxEspressoLibraryAccessors.class differ diff --git a/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxLibraryAccessors.class b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxLibraryAccessors.class new file mode 100644 index 0000000..63d5cba Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxLibraryAccessors.class differ diff --git a/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxLifecycleLibraryAccessors.class b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxLifecycleLibraryAccessors.class new file mode 100644 index 0000000..5e65e9a Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxLifecycleLibraryAccessors.class differ diff --git a/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxLifecycleRuntimeLibraryAccessors.class b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxLifecycleRuntimeLibraryAccessors.class new file mode 100644 index 0000000..4ada38b Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxLifecycleRuntimeLibraryAccessors.class differ diff --git a/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxUiLibraryAccessors.class b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxUiLibraryAccessors.class new file mode 100644 index 0000000..5504540 Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxUiLibraryAccessors.class differ diff --git a/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxUiTestLibraryAccessors.class b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxUiTestLibraryAccessors.class new file mode 100644 index 0000000..03197de Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxUiTestLibraryAccessors.class differ diff --git a/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxUiToolingLibraryAccessors.class b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxUiToolingLibraryAccessors.class new file mode 100644 index 0000000..584862c Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidxUiToolingLibraryAccessors.class differ diff --git a/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$BundleAccessors.class b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$BundleAccessors.class new file mode 100644 index 0000000..b8ac4c3 Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$BundleAccessors.class differ diff --git a/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$JetbrainsKotlinPluginAccessors.class b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$JetbrainsKotlinPluginAccessors.class new file mode 100644 index 0000000..d2ab605 Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$JetbrainsKotlinPluginAccessors.class differ diff --git a/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$JetbrainsPluginAccessors.class b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$JetbrainsPluginAccessors.class new file mode 100644 index 0000000..bd79450 Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$JetbrainsPluginAccessors.class differ diff --git a/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$PluginAccessors.class b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$PluginAccessors.class new file mode 100644 index 0000000..4ae248b Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$PluginAccessors.class differ diff --git a/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$VersionAccessors.class b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$VersionAccessors.class new file mode 100644 index 0000000..9343c58 Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$VersionAccessors.class differ diff --git a/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock.class b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock.class new file mode 100644 index 0000000..46ddcc3 Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock.class differ diff --git a/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/metadata.bin b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/metadata.bin new file mode 100644 index 0000000..a58f679 --- /dev/null +++ b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/metadata.bin @@ -0,0 +1 @@ +›axfnd7xox5e4ton7ncyqiattau–ˆclassesP=+—7øø7ù›7~nØ`›ˆsourcesIÙiHÔ垢—H{ù¿&¡ \ No newline at end of file diff --git a/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/sources/org/gradle/accessors/dm/LibrariesForLibs.java b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/sources/org/gradle/accessors/dm/LibrariesForLibs.java new file mode 100644 index 0000000..16f8a1d --- /dev/null +++ b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/sources/org/gradle/accessors/dm/LibrariesForLibs.java @@ -0,0 +1,501 @@ +package org.gradle.accessors.dm; + +import org.gradle.api.NonNullApi; +import org.gradle.api.artifacts.MinimalExternalModuleDependency; +import org.gradle.plugin.use.PluginDependency; +import org.gradle.api.artifacts.ExternalModuleDependencyBundle; +import org.gradle.api.artifacts.MutableVersionConstraint; +import org.gradle.api.provider.Provider; +import org.gradle.api.model.ObjectFactory; +import org.gradle.api.provider.ProviderFactory; +import org.gradle.api.internal.catalog.AbstractExternalDependencyFactory; +import org.gradle.api.internal.catalog.DefaultVersionCatalog; +import java.util.Map; +import org.gradle.api.internal.attributes.ImmutableAttributesFactory; +import org.gradle.api.internal.artifacts.dsl.CapabilityNotationParser; +import javax.inject.Inject; + +/** + * A catalog of dependencies accessible via the {@code libs} extension. + */ +@NonNullApi +public class LibrariesForLibs extends AbstractExternalDependencyFactory { + + private final AbstractExternalDependencyFactory owner = this; + private final AndroidxLibraryAccessors laccForAndroidxLibraryAccessors = new AndroidxLibraryAccessors(owner); + private final VersionAccessors vaccForVersionAccessors = new VersionAccessors(providers, config); + private final BundleAccessors baccForBundleAccessors = new BundleAccessors(objects, providers, config, attributesFactory, capabilityNotationParser); + private final PluginAccessors paccForPluginAccessors = new PluginAccessors(providers, config); + + @Inject + public LibrariesForLibs(DefaultVersionCatalog config, ProviderFactory providers, ObjectFactory objects, ImmutableAttributesFactory attributesFactory, CapabilityNotationParser capabilityNotationParser) { + super(config, providers, objects, attributesFactory, capabilityNotationParser); + } + + /** + * Dependency provider for junit with junit:junit coordinates and + * with version reference junit + *

+ * This dependency was declared in catalog libs.versions.toml + */ + public Provider getJunit() { + return create("junit"); + } + + /** + * Group of libraries at androidx + */ + public AndroidxLibraryAccessors getAndroidx() { + return laccForAndroidxLibraryAccessors; + } + + /** + * Group of versions at versions + */ + public VersionAccessors getVersions() { + return vaccForVersionAccessors; + } + + /** + * Group of bundles at bundles + */ + public BundleAccessors getBundles() { + return baccForBundleAccessors; + } + + /** + * Group of plugins at plugins + */ + public PluginAccessors getPlugins() { + return paccForPluginAccessors; + } + + public static class AndroidxLibraryAccessors extends SubDependencyFactory { + private final AndroidxActivityLibraryAccessors laccForAndroidxActivityLibraryAccessors = new AndroidxActivityLibraryAccessors(owner); + private final AndroidxComposeLibraryAccessors laccForAndroidxComposeLibraryAccessors = new AndroidxComposeLibraryAccessors(owner); + private final AndroidxCoreLibraryAccessors laccForAndroidxCoreLibraryAccessors = new AndroidxCoreLibraryAccessors(owner); + private final AndroidxEspressoLibraryAccessors laccForAndroidxEspressoLibraryAccessors = new AndroidxEspressoLibraryAccessors(owner); + private final AndroidxLifecycleLibraryAccessors laccForAndroidxLifecycleLibraryAccessors = new AndroidxLifecycleLibraryAccessors(owner); + private final AndroidxUiLibraryAccessors laccForAndroidxUiLibraryAccessors = new AndroidxUiLibraryAccessors(owner); + + public AndroidxLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for junit with androidx.test.ext:junit coordinates and + * with version reference junitVersion + *

+ * This dependency was declared in catalog libs.versions.toml + */ + public Provider getJunit() { + return create("androidx.junit"); + } + + /** + * Dependency provider for material3 with androidx.compose.material3:material3 coordinates and + * with no version specified + *

+ * This dependency was declared in catalog libs.versions.toml + */ + public Provider getMaterial3() { + return create("androidx.material3"); + } + + /** + * Group of libraries at androidx.activity + */ + public AndroidxActivityLibraryAccessors getActivity() { + return laccForAndroidxActivityLibraryAccessors; + } + + /** + * Group of libraries at androidx.compose + */ + public AndroidxComposeLibraryAccessors getCompose() { + return laccForAndroidxComposeLibraryAccessors; + } + + /** + * Group of libraries at androidx.core + */ + public AndroidxCoreLibraryAccessors getCore() { + return laccForAndroidxCoreLibraryAccessors; + } + + /** + * Group of libraries at androidx.espresso + */ + public AndroidxEspressoLibraryAccessors getEspresso() { + return laccForAndroidxEspressoLibraryAccessors; + } + + /** + * Group of libraries at androidx.lifecycle + */ + public AndroidxLifecycleLibraryAccessors getLifecycle() { + return laccForAndroidxLifecycleLibraryAccessors; + } + + /** + * Group of libraries at androidx.ui + */ + public AndroidxUiLibraryAccessors getUi() { + return laccForAndroidxUiLibraryAccessors; + } + + } + + public static class AndroidxActivityLibraryAccessors extends SubDependencyFactory { + + public AndroidxActivityLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for compose with androidx.activity:activity-compose coordinates and + * with version reference activityCompose + *

+ * This dependency was declared in catalog libs.versions.toml + */ + public Provider getCompose() { + return create("androidx.activity.compose"); + } + + } + + public static class AndroidxComposeLibraryAccessors extends SubDependencyFactory { + + public AndroidxComposeLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for bom with androidx.compose:compose-bom coordinates and + * with version reference composeBom + *

+ * This dependency was declared in catalog libs.versions.toml + */ + public Provider getBom() { + return create("androidx.compose.bom"); + } + + } + + public static class AndroidxCoreLibraryAccessors extends SubDependencyFactory { + + public AndroidxCoreLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for ktx with androidx.core:core-ktx coordinates and + * with version reference coreKtx + *

+ * This dependency was declared in catalog libs.versions.toml + */ + public Provider getKtx() { + return create("androidx.core.ktx"); + } + + } + + public static class AndroidxEspressoLibraryAccessors extends SubDependencyFactory { + + public AndroidxEspressoLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for core with androidx.test.espresso:espresso-core coordinates and + * with version reference espressoCore + *

+ * This dependency was declared in catalog libs.versions.toml + */ + public Provider getCore() { + return create("androidx.espresso.core"); + } + + } + + public static class AndroidxLifecycleLibraryAccessors extends SubDependencyFactory { + private final AndroidxLifecycleRuntimeLibraryAccessors laccForAndroidxLifecycleRuntimeLibraryAccessors = new AndroidxLifecycleRuntimeLibraryAccessors(owner); + + public AndroidxLifecycleLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Group of libraries at androidx.lifecycle.runtime + */ + public AndroidxLifecycleRuntimeLibraryAccessors getRuntime() { + return laccForAndroidxLifecycleRuntimeLibraryAccessors; + } + + } + + public static class AndroidxLifecycleRuntimeLibraryAccessors extends SubDependencyFactory { + + public AndroidxLifecycleRuntimeLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for ktx with androidx.lifecycle:lifecycle-runtime-ktx coordinates and + * with version reference lifecycleRuntimeKtx + *

+ * This dependency was declared in catalog libs.versions.toml + */ + public Provider getKtx() { + return create("androidx.lifecycle.runtime.ktx"); + } + + } + + public static class AndroidxUiLibraryAccessors extends SubDependencyFactory implements DependencyNotationSupplier { + private final AndroidxUiTestLibraryAccessors laccForAndroidxUiTestLibraryAccessors = new AndroidxUiTestLibraryAccessors(owner); + private final AndroidxUiToolingLibraryAccessors laccForAndroidxUiToolingLibraryAccessors = new AndroidxUiToolingLibraryAccessors(owner); + + public AndroidxUiLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for ui with androidx.compose.ui:ui coordinates and + * with no version specified + *

+ * This dependency was declared in catalog libs.versions.toml + */ + public Provider asProvider() { + return create("androidx.ui"); + } + + /** + * Dependency provider for graphics with androidx.compose.ui:ui-graphics coordinates and + * with no version specified + *

+ * This dependency was declared in catalog libs.versions.toml + */ + public Provider getGraphics() { + return create("androidx.ui.graphics"); + } + + /** + * Group of libraries at androidx.ui.test + */ + public AndroidxUiTestLibraryAccessors getTest() { + return laccForAndroidxUiTestLibraryAccessors; + } + + /** + * Group of libraries at androidx.ui.tooling + */ + public AndroidxUiToolingLibraryAccessors getTooling() { + return laccForAndroidxUiToolingLibraryAccessors; + } + + } + + public static class AndroidxUiTestLibraryAccessors extends SubDependencyFactory { + + public AndroidxUiTestLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for junit4 with androidx.compose.ui:ui-test-junit4 coordinates and + * with no version specified + *

+ * This dependency was declared in catalog libs.versions.toml + */ + public Provider getJunit4() { + return create("androidx.ui.test.junit4"); + } + + /** + * Dependency provider for manifest with androidx.compose.ui:ui-test-manifest coordinates and + * with no version specified + *

+ * This dependency was declared in catalog libs.versions.toml + */ + public Provider getManifest() { + return create("androidx.ui.test.manifest"); + } + + } + + public static class AndroidxUiToolingLibraryAccessors extends SubDependencyFactory implements DependencyNotationSupplier { + + public AndroidxUiToolingLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for tooling with androidx.compose.ui:ui-tooling coordinates and + * with no version specified + *

+ * This dependency was declared in catalog libs.versions.toml + */ + public Provider asProvider() { + return create("androidx.ui.tooling"); + } + + /** + * Dependency provider for preview with androidx.compose.ui:ui-tooling-preview coordinates and + * with no version specified + *

+ * This dependency was declared in catalog libs.versions.toml + */ + public Provider getPreview() { + return create("androidx.ui.tooling.preview"); + } + + } + + public static class VersionAccessors extends VersionFactory { + + public VersionAccessors(ProviderFactory providers, DefaultVersionCatalog config) { super(providers, config); } + + /** + * Version alias activityCompose with value 1.10.1 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getActivityCompose() { return getVersion("activityCompose"); } + + /** + * Version alias agp with value 8.4.0 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getAgp() { return getVersion("agp"); } + + /** + * Version alias composeBom with value 2023.08.00 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getComposeBom() { return getVersion("composeBom"); } + + /** + * Version alias coreKtx with value 1.15.0 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getCoreKtx() { return getVersion("coreKtx"); } + + /** + * Version alias espressoCore with value 3.6.1 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getEspressoCore() { return getVersion("espressoCore"); } + + /** + * Version alias junit with value 4.13.2 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getJunit() { return getVersion("junit"); } + + /** + * Version alias junitVersion with value 1.2.1 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getJunitVersion() { return getVersion("junitVersion"); } + + /** + * Version alias kotlin with value 1.9.0 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getKotlin() { return getVersion("kotlin"); } + + /** + * Version alias lifecycleRuntimeKtx with value 2.8.7 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getLifecycleRuntimeKtx() { return getVersion("lifecycleRuntimeKtx"); } + + } + + public static class BundleAccessors extends BundleFactory { + + public BundleAccessors(ObjectFactory objects, ProviderFactory providers, DefaultVersionCatalog config, ImmutableAttributesFactory attributesFactory, CapabilityNotationParser capabilityNotationParser) { super(objects, providers, config, attributesFactory, capabilityNotationParser); } + + } + + public static class PluginAccessors extends PluginFactory { + private final AndroidPluginAccessors paccForAndroidPluginAccessors = new AndroidPluginAccessors(providers, config); + private final JetbrainsPluginAccessors paccForJetbrainsPluginAccessors = new JetbrainsPluginAccessors(providers, config); + + public PluginAccessors(ProviderFactory providers, DefaultVersionCatalog config) { super(providers, config); } + + /** + * Group of plugins at plugins.android + */ + public AndroidPluginAccessors getAndroid() { + return paccForAndroidPluginAccessors; + } + + /** + * Group of plugins at plugins.jetbrains + */ + public JetbrainsPluginAccessors getJetbrains() { + return paccForJetbrainsPluginAccessors; + } + + } + + public static class AndroidPluginAccessors extends PluginFactory { + + public AndroidPluginAccessors(ProviderFactory providers, DefaultVersionCatalog config) { super(providers, config); } + + /** + * Plugin provider for android.application with plugin id com.android.application and + * with version reference agp + *

+ * This plugin was declared in catalog libs.versions.toml + */ + public Provider getApplication() { return createPlugin("android.application"); } + + } + + public static class JetbrainsPluginAccessors extends PluginFactory { + private final JetbrainsKotlinPluginAccessors paccForJetbrainsKotlinPluginAccessors = new JetbrainsKotlinPluginAccessors(providers, config); + + public JetbrainsPluginAccessors(ProviderFactory providers, DefaultVersionCatalog config) { super(providers, config); } + + /** + * Group of plugins at plugins.jetbrains.kotlin + */ + public JetbrainsKotlinPluginAccessors getKotlin() { + return paccForJetbrainsKotlinPluginAccessors; + } + + } + + public static class JetbrainsKotlinPluginAccessors extends PluginFactory { + + public JetbrainsKotlinPluginAccessors(ProviderFactory providers, DefaultVersionCatalog config) { super(providers, config); } + + /** + * Plugin provider for jetbrains.kotlin.android with plugin id org.jetbrains.kotlin.android and + * with version reference kotlin + *

+ * This plugin was declared in catalog libs.versions.toml + */ + public Provider getAndroid() { return createPlugin("jetbrains.kotlin.android"); } + + } + +} diff --git a/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/sources/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock.java b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/sources/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock.java new file mode 100644 index 0000000..6604579 --- /dev/null +++ b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/dcbcd87108cec70bb467e05d5172bee8efb944af/sources/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock.java @@ -0,0 +1,645 @@ +package org.gradle.accessors.dm; + +import org.gradle.api.NonNullApi; +import org.gradle.api.artifacts.MinimalExternalModuleDependency; +import org.gradle.plugin.use.PluginDependency; +import org.gradle.api.artifacts.ExternalModuleDependencyBundle; +import org.gradle.api.artifacts.MutableVersionConstraint; +import org.gradle.api.provider.Provider; +import org.gradle.api.model.ObjectFactory; +import org.gradle.api.provider.ProviderFactory; +import org.gradle.api.internal.catalog.AbstractExternalDependencyFactory; +import org.gradle.api.internal.catalog.DefaultVersionCatalog; +import java.util.Map; +import org.gradle.api.internal.attributes.ImmutableAttributesFactory; +import org.gradle.api.internal.artifacts.dsl.CapabilityNotationParser; +import javax.inject.Inject; + +/** + * A catalog of dependencies accessible via the {@code libs} extension. + */ +@NonNullApi +public class LibrariesForLibsInPluginsBlock extends AbstractExternalDependencyFactory { + + private final AbstractExternalDependencyFactory owner = this; + private final AndroidxLibraryAccessors laccForAndroidxLibraryAccessors = new AndroidxLibraryAccessors(owner); + private final VersionAccessors vaccForVersionAccessors = new VersionAccessors(providers, config); + private final BundleAccessors baccForBundleAccessors = new BundleAccessors(objects, providers, config, attributesFactory, capabilityNotationParser); + private final PluginAccessors paccForPluginAccessors = new PluginAccessors(providers, config); + + @Inject + public LibrariesForLibsInPluginsBlock(DefaultVersionCatalog config, ProviderFactory providers, ObjectFactory objects, ImmutableAttributesFactory attributesFactory, CapabilityNotationParser capabilityNotationParser) { + super(config, providers, objects, attributesFactory, capabilityNotationParser); + } + + /** + * Dependency provider for junit with junit:junit coordinates and + * with version reference junit + *

+ * This dependency was declared in catalog libs.versions.toml + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public Provider getJunit() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return create("junit"); + } + + /** + * Group of libraries at androidx + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public AndroidxLibraryAccessors getAndroidx() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return laccForAndroidxLibraryAccessors; + } + + /** + * Group of versions at versions + */ + public VersionAccessors getVersions() { + return vaccForVersionAccessors; + } + + /** + * Group of bundles at bundles + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public BundleAccessors getBundles() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return baccForBundleAccessors; + } + + /** + * Group of plugins at plugins + */ + public PluginAccessors getPlugins() { + return paccForPluginAccessors; + } + + /** + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public static class AndroidxLibraryAccessors extends SubDependencyFactory { + private final AndroidxActivityLibraryAccessors laccForAndroidxActivityLibraryAccessors = new AndroidxActivityLibraryAccessors(owner); + private final AndroidxComposeLibraryAccessors laccForAndroidxComposeLibraryAccessors = new AndroidxComposeLibraryAccessors(owner); + private final AndroidxCoreLibraryAccessors laccForAndroidxCoreLibraryAccessors = new AndroidxCoreLibraryAccessors(owner); + private final AndroidxEspressoLibraryAccessors laccForAndroidxEspressoLibraryAccessors = new AndroidxEspressoLibraryAccessors(owner); + private final AndroidxLifecycleLibraryAccessors laccForAndroidxLifecycleLibraryAccessors = new AndroidxLifecycleLibraryAccessors(owner); + private final AndroidxUiLibraryAccessors laccForAndroidxUiLibraryAccessors = new AndroidxUiLibraryAccessors(owner); + + public AndroidxLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for junit with androidx.test.ext:junit coordinates and + * with version reference junitVersion + *

+ * This dependency was declared in catalog libs.versions.toml + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public Provider getJunit() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return create("androidx.junit"); + } + + /** + * Dependency provider for material3 with androidx.compose.material3:material3 coordinates and + * with no version specified + *

+ * This dependency was declared in catalog libs.versions.toml + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public Provider getMaterial3() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return create("androidx.material3"); + } + + /** + * Group of libraries at androidx.activity + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public AndroidxActivityLibraryAccessors getActivity() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return laccForAndroidxActivityLibraryAccessors; + } + + /** + * Group of libraries at androidx.compose + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public AndroidxComposeLibraryAccessors getCompose() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return laccForAndroidxComposeLibraryAccessors; + } + + /** + * Group of libraries at androidx.core + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public AndroidxCoreLibraryAccessors getCore() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return laccForAndroidxCoreLibraryAccessors; + } + + /** + * Group of libraries at androidx.espresso + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public AndroidxEspressoLibraryAccessors getEspresso() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return laccForAndroidxEspressoLibraryAccessors; + } + + /** + * Group of libraries at androidx.lifecycle + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public AndroidxLifecycleLibraryAccessors getLifecycle() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return laccForAndroidxLifecycleLibraryAccessors; + } + + /** + * Group of libraries at androidx.ui + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public AndroidxUiLibraryAccessors getUi() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return laccForAndroidxUiLibraryAccessors; + } + + } + + /** + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public static class AndroidxActivityLibraryAccessors extends SubDependencyFactory { + + public AndroidxActivityLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for compose with androidx.activity:activity-compose coordinates and + * with version reference activityCompose + *

+ * This dependency was declared in catalog libs.versions.toml + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public Provider getCompose() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return create("androidx.activity.compose"); + } + + } + + /** + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public static class AndroidxComposeLibraryAccessors extends SubDependencyFactory { + + public AndroidxComposeLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for bom with androidx.compose:compose-bom coordinates and + * with version reference composeBom + *

+ * This dependency was declared in catalog libs.versions.toml + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public Provider getBom() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return create("androidx.compose.bom"); + } + + } + + /** + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public static class AndroidxCoreLibraryAccessors extends SubDependencyFactory { + + public AndroidxCoreLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for ktx with androidx.core:core-ktx coordinates and + * with version reference coreKtx + *

+ * This dependency was declared in catalog libs.versions.toml + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public Provider getKtx() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return create("androidx.core.ktx"); + } + + } + + /** + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public static class AndroidxEspressoLibraryAccessors extends SubDependencyFactory { + + public AndroidxEspressoLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for core with androidx.test.espresso:espresso-core coordinates and + * with version reference espressoCore + *

+ * This dependency was declared in catalog libs.versions.toml + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public Provider getCore() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return create("androidx.espresso.core"); + } + + } + + /** + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public static class AndroidxLifecycleLibraryAccessors extends SubDependencyFactory { + private final AndroidxLifecycleRuntimeLibraryAccessors laccForAndroidxLifecycleRuntimeLibraryAccessors = new AndroidxLifecycleRuntimeLibraryAccessors(owner); + + public AndroidxLifecycleLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Group of libraries at androidx.lifecycle.runtime + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public AndroidxLifecycleRuntimeLibraryAccessors getRuntime() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return laccForAndroidxLifecycleRuntimeLibraryAccessors; + } + + } + + /** + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public static class AndroidxLifecycleRuntimeLibraryAccessors extends SubDependencyFactory { + + public AndroidxLifecycleRuntimeLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for ktx with androidx.lifecycle:lifecycle-runtime-ktx coordinates and + * with version reference lifecycleRuntimeKtx + *

+ * This dependency was declared in catalog libs.versions.toml + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public Provider getKtx() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return create("androidx.lifecycle.runtime.ktx"); + } + + } + + /** + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public static class AndroidxUiLibraryAccessors extends SubDependencyFactory implements DependencyNotationSupplier { + private final AndroidxUiTestLibraryAccessors laccForAndroidxUiTestLibraryAccessors = new AndroidxUiTestLibraryAccessors(owner); + private final AndroidxUiToolingLibraryAccessors laccForAndroidxUiToolingLibraryAccessors = new AndroidxUiToolingLibraryAccessors(owner); + + public AndroidxUiLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for ui with androidx.compose.ui:ui coordinates and + * with no version specified + *

+ * This dependency was declared in catalog libs.versions.toml + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public Provider asProvider() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return create("androidx.ui"); + } + + /** + * Dependency provider for graphics with androidx.compose.ui:ui-graphics coordinates and + * with no version specified + *

+ * This dependency was declared in catalog libs.versions.toml + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public Provider getGraphics() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return create("androidx.ui.graphics"); + } + + /** + * Group of libraries at androidx.ui.test + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public AndroidxUiTestLibraryAccessors getTest() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return laccForAndroidxUiTestLibraryAccessors; + } + + /** + * Group of libraries at androidx.ui.tooling + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public AndroidxUiToolingLibraryAccessors getTooling() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return laccForAndroidxUiToolingLibraryAccessors; + } + + } + + /** + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public static class AndroidxUiTestLibraryAccessors extends SubDependencyFactory { + + public AndroidxUiTestLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for junit4 with androidx.compose.ui:ui-test-junit4 coordinates and + * with no version specified + *

+ * This dependency was declared in catalog libs.versions.toml + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public Provider getJunit4() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return create("androidx.ui.test.junit4"); + } + + /** + * Dependency provider for manifest with androidx.compose.ui:ui-test-manifest coordinates and + * with no version specified + *

+ * This dependency was declared in catalog libs.versions.toml + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public Provider getManifest() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return create("androidx.ui.test.manifest"); + } + + } + + /** + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public static class AndroidxUiToolingLibraryAccessors extends SubDependencyFactory implements DependencyNotationSupplier { + + public AndroidxUiToolingLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); } + + /** + * Dependency provider for tooling with androidx.compose.ui:ui-tooling coordinates and + * with no version specified + *

+ * This dependency was declared in catalog libs.versions.toml + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public Provider asProvider() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return create("androidx.ui.tooling"); + } + + /** + * Dependency provider for preview with androidx.compose.ui:ui-tooling-preview coordinates and + * with no version specified + *

+ * This dependency was declared in catalog libs.versions.toml + * + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public Provider getPreview() { + org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser(); + return create("androidx.ui.tooling.preview"); + } + + } + + public static class VersionAccessors extends VersionFactory { + + public VersionAccessors(ProviderFactory providers, DefaultVersionCatalog config) { super(providers, config); } + + /** + * Version alias activityCompose with value 1.10.1 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getActivityCompose() { return getVersion("activityCompose"); } + + /** + * Version alias agp with value 8.4.0 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getAgp() { return getVersion("agp"); } + + /** + * Version alias composeBom with value 2023.08.00 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getComposeBom() { return getVersion("composeBom"); } + + /** + * Version alias coreKtx with value 1.15.0 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getCoreKtx() { return getVersion("coreKtx"); } + + /** + * Version alias espressoCore with value 3.6.1 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getEspressoCore() { return getVersion("espressoCore"); } + + /** + * Version alias junit with value 4.13.2 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getJunit() { return getVersion("junit"); } + + /** + * Version alias junitVersion with value 1.2.1 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getJunitVersion() { return getVersion("junitVersion"); } + + /** + * Version alias kotlin with value 1.9.0 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getKotlin() { return getVersion("kotlin"); } + + /** + * Version alias lifecycleRuntimeKtx with value 2.8.7 + *

+ * If the version is a rich version and cannot be represented as a + * single version string, an empty string is returned. + *

+ * This version was declared in catalog libs.versions.toml + */ + public Provider getLifecycleRuntimeKtx() { return getVersion("lifecycleRuntimeKtx"); } + + } + + /** + * @deprecated Will be removed in Gradle 9.0. + */ + @Deprecated + public static class BundleAccessors extends BundleFactory { + + public BundleAccessors(ObjectFactory objects, ProviderFactory providers, DefaultVersionCatalog config, ImmutableAttributesFactory attributesFactory, CapabilityNotationParser capabilityNotationParser) { super(objects, providers, config, attributesFactory, capabilityNotationParser); } + + } + + public static class PluginAccessors extends PluginFactory { + private final AndroidPluginAccessors paccForAndroidPluginAccessors = new AndroidPluginAccessors(providers, config); + private final JetbrainsPluginAccessors paccForJetbrainsPluginAccessors = new JetbrainsPluginAccessors(providers, config); + + public PluginAccessors(ProviderFactory providers, DefaultVersionCatalog config) { super(providers, config); } + + /** + * Group of plugins at plugins.android + */ + public AndroidPluginAccessors getAndroid() { + return paccForAndroidPluginAccessors; + } + + /** + * Group of plugins at plugins.jetbrains + */ + public JetbrainsPluginAccessors getJetbrains() { + return paccForJetbrainsPluginAccessors; + } + + } + + public static class AndroidPluginAccessors extends PluginFactory { + + public AndroidPluginAccessors(ProviderFactory providers, DefaultVersionCatalog config) { super(providers, config); } + + /** + * Plugin provider for android.application with plugin id com.android.application and + * with version reference agp + *

+ * This plugin was declared in catalog libs.versions.toml + */ + public Provider getApplication() { return createPlugin("android.application"); } + + } + + public static class JetbrainsPluginAccessors extends PluginFactory { + private final JetbrainsKotlinPluginAccessors paccForJetbrainsKotlinPluginAccessors = new JetbrainsKotlinPluginAccessors(providers, config); + + public JetbrainsPluginAccessors(ProviderFactory providers, DefaultVersionCatalog config) { super(providers, config); } + + /** + * Group of plugins at plugins.jetbrains.kotlin + */ + public JetbrainsKotlinPluginAccessors getKotlin() { + return paccForJetbrainsKotlinPluginAccessors; + } + + } + + public static class JetbrainsKotlinPluginAccessors extends PluginFactory { + + public JetbrainsKotlinPluginAccessors(ProviderFactory providers, DefaultVersionCatalog config) { super(providers, config); } + + /** + * Plugin provider for jetbrains.kotlin.android with plugin id org.jetbrains.kotlin.android and + * with version reference kotlin + *

+ * This plugin was declared in catalog libs.versions.toml + */ + public Provider getAndroid() { return createPlugin("jetbrains.kotlin.android"); } + + } + +} diff --git a/TomatoLeafCare/.gradle/8.6/dependencies-accessors/gc.properties b/TomatoLeafCare/.gradle/8.6/dependencies-accessors/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/TomatoLeafCare/.gradle/8.6/executionHistory/executionHistory.bin b/TomatoLeafCare/.gradle/8.6/executionHistory/executionHistory.bin new file mode 100644 index 0000000..a19ba0e Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/executionHistory/executionHistory.bin differ diff --git a/TomatoLeafCare/.gradle/8.6/executionHistory/executionHistory.lock b/TomatoLeafCare/.gradle/8.6/executionHistory/executionHistory.lock new file mode 100644 index 0000000..59227d4 Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/executionHistory/executionHistory.lock differ diff --git a/TomatoLeafCare/.gradle/8.6/fileChanges/last-build.bin b/TomatoLeafCare/.gradle/8.6/fileChanges/last-build.bin new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/fileChanges/last-build.bin differ diff --git a/TomatoLeafCare/.gradle/8.6/fileHashes/fileHashes.bin b/TomatoLeafCare/.gradle/8.6/fileHashes/fileHashes.bin new file mode 100644 index 0000000..ff9a079 Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/fileHashes/fileHashes.bin differ diff --git a/TomatoLeafCare/.gradle/8.6/fileHashes/fileHashes.lock b/TomatoLeafCare/.gradle/8.6/fileHashes/fileHashes.lock new file mode 100644 index 0000000..9a9d9cc Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/fileHashes/fileHashes.lock differ diff --git a/TomatoLeafCare/.gradle/8.6/fileHashes/resourceHashesCache.bin b/TomatoLeafCare/.gradle/8.6/fileHashes/resourceHashesCache.bin new file mode 100644 index 0000000..77dc5ba Binary files /dev/null and b/TomatoLeafCare/.gradle/8.6/fileHashes/resourceHashesCache.bin differ diff --git a/TomatoLeafCare/.gradle/8.6/gc.properties b/TomatoLeafCare/.gradle/8.6/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/TomatoLeafCare/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/TomatoLeafCare/.gradle/buildOutputCleanup/buildOutputCleanup.lock new file mode 100644 index 0000000..b85e976 Binary files /dev/null and b/TomatoLeafCare/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/TomatoLeafCare/.gradle/buildOutputCleanup/cache.properties b/TomatoLeafCare/.gradle/buildOutputCleanup/cache.properties new file mode 100644 index 0000000..55d5d37 --- /dev/null +++ b/TomatoLeafCare/.gradle/buildOutputCleanup/cache.properties @@ -0,0 +1,2 @@ +#Wed Mar 12 13:52:02 WIB 2025 +gradle.version=8.6 diff --git a/TomatoLeafCare/.gradle/buildOutputCleanup/outputFiles.bin b/TomatoLeafCare/.gradle/buildOutputCleanup/outputFiles.bin new file mode 100644 index 0000000..9deabd4 Binary files /dev/null and b/TomatoLeafCare/.gradle/buildOutputCleanup/outputFiles.bin differ diff --git a/TomatoLeafCare/.gradle/config.properties b/TomatoLeafCare/.gradle/config.properties new file mode 100644 index 0000000..679132a --- /dev/null +++ b/TomatoLeafCare/.gradle/config.properties @@ -0,0 +1,2 @@ +#Wed Mar 12 13:51:48 WIB 2025 +java.home=C\:\\Program Files\\Android\\Android Studio\\jbr diff --git a/TomatoLeafCare/.gradle/file-system.probe b/TomatoLeafCare/.gradle/file-system.probe new file mode 100644 index 0000000..0e8edb3 Binary files /dev/null and b/TomatoLeafCare/.gradle/file-system.probe differ diff --git a/TomatoLeafCare/.gradle/vcs-1/gc.properties b/TomatoLeafCare/.gradle/vcs-1/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/TomatoLeafCare/.idea/.gitignore b/TomatoLeafCare/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/TomatoLeafCare/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/TomatoLeafCare/.idea/.name b/TomatoLeafCare/.idea/.name new file mode 100644 index 0000000..23fc3e8 --- /dev/null +++ b/TomatoLeafCare/.idea/.name @@ -0,0 +1 @@ +Tomato Leaf Care \ No newline at end of file diff --git a/TomatoLeafCare/.idea/assetWizardSettings.xml b/TomatoLeafCare/.idea/assetWizardSettings.xml new file mode 100644 index 0000000..7d678d0 --- /dev/null +++ b/TomatoLeafCare/.idea/assetWizardSettings.xml @@ -0,0 +1,291 @@ + + + + + + \ No newline at end of file diff --git a/TomatoLeafCare/.idea/compiler.xml b/TomatoLeafCare/.idea/compiler.xml new file mode 100644 index 0000000..b589d56 --- /dev/null +++ b/TomatoLeafCare/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/TomatoLeafCare/.idea/deploymentTargetSelector.xml b/TomatoLeafCare/.idea/deploymentTargetSelector.xml new file mode 100644 index 0000000..626b8fc --- /dev/null +++ b/TomatoLeafCare/.idea/deploymentTargetSelector.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/TomatoLeafCare/.idea/gradle.xml b/TomatoLeafCare/.idea/gradle.xml new file mode 100644 index 0000000..0897082 --- /dev/null +++ b/TomatoLeafCare/.idea/gradle.xml @@ -0,0 +1,19 @@ + + + + + + + \ No newline at end of file diff --git a/TomatoLeafCare/.idea/inspectionProfiles/Project_Default.xml b/TomatoLeafCare/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..44ca2d9 --- /dev/null +++ b/TomatoLeafCare/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,41 @@ + + + + \ No newline at end of file diff --git a/TomatoLeafCare/.idea/kotlinc.xml b/TomatoLeafCare/.idea/kotlinc.xml new file mode 100644 index 0000000..fdf8d99 --- /dev/null +++ b/TomatoLeafCare/.idea/kotlinc.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/TomatoLeafCare/.idea/migrations.xml b/TomatoLeafCare/.idea/migrations.xml new file mode 100644 index 0000000..f8051a6 --- /dev/null +++ b/TomatoLeafCare/.idea/migrations.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/TomatoLeafCare/.idea/misc.xml b/TomatoLeafCare/.idea/misc.xml new file mode 100644 index 0000000..8978d23 --- /dev/null +++ b/TomatoLeafCare/.idea/misc.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/TomatoLeafCare/.idea/other.xml b/TomatoLeafCare/.idea/other.xml new file mode 100644 index 0000000..f3d4a2e --- /dev/null +++ b/TomatoLeafCare/.idea/other.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/TomatoLeafCare/.idea/vcs.xml b/TomatoLeafCare/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/TomatoLeafCare/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/TomatoLeafCare/Screenshot_20250508_003738.png b/TomatoLeafCare/Screenshot_20250508_003738.png new file mode 100644 index 0000000..e60a3b5 Binary files /dev/null and b/TomatoLeafCare/Screenshot_20250508_003738.png differ diff --git a/TomatoLeafCare/app/.gitignore b/TomatoLeafCare/app/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/TomatoLeafCare/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/TomatoLeafCare/app/build.gradle.kts b/TomatoLeafCare/app/build.gradle.kts new file mode 100644 index 0000000..b7dac10 --- /dev/null +++ b/TomatoLeafCare/app/build.gradle.kts @@ -0,0 +1,100 @@ +plugins { + alias(libs.plugins.android.application) + alias(libs.plugins.jetbrains.kotlin.android) + id("kotlin-parcelize") +} + + +android { + namespace = "com.example.tomatoleafcare" + compileSdk = 35 + + defaultConfig { + applicationId = "com.example.tomatoleafcare" + minSdk = 24 + targetSdk = 35 + versionCode = 1 + versionName = "1.0" + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + vectorDrawables { + useSupportLibrary = true + } + } + + buildTypes { + release { + isMinifyEnabled = false + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + } + + aaptOptions { + noCompress += "tflite" + } + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + } + kotlinOptions { + jvmTarget = "1.8" + } + buildFeatures { + compose = true + } + composeOptions { + kotlinCompilerExtensionVersion = "1.5.1" + } + packaging { + resources { + excludes += "/META-INF/{AL2.0,LGPL2.1}" + } + } + + buildFeatures { + viewBinding = true + dataBinding = true + } +} + +dependencies { + implementation(libs.androidx.core.ktx) + implementation(libs.androidx.lifecycle.runtime.ktx) + implementation(libs.androidx.activity.compose) + implementation(platform(libs.androidx.compose.bom)) + implementation(libs.androidx.ui) + implementation(libs.androidx.ui.graphics) + implementation(libs.androidx.ui.tooling.preview) + implementation(libs.androidx.material3) + testImplementation(libs.junit) + androidTestImplementation(libs.androidx.junit) + androidTestImplementation(libs.androidx.espresso.core) + androidTestImplementation(platform(libs.androidx.compose.bom)) + androidTestImplementation(libs.androidx.ui.test.junit4) + debugImplementation(libs.androidx.ui.tooling) + debugImplementation(libs.androidx.ui.test.manifest) + + implementation("androidx.cardview:cardview:1.0.0") + implementation("androidx.recyclerview:recyclerview:1.2.1") + implementation("androidx.navigation:navigation-fragment-ktx:2.7.2") + implementation("androidx.navigation:navigation-ui-ktx:2.7.2") + + implementation("androidx.camera:camera-core:1.3.0") + implementation("androidx.camera:camera-camera2:1.3.0") + implementation("androidx.camera:camera-lifecycle:1.3.0") + implementation("androidx.camera:camera-view:1.3.0") + implementation("com.google.android.material:material:1.9.0") + + implementation ("org.tensorflow:tensorflow-lite:2.13.0") + implementation ("org.tensorflow:tensorflow-lite-support:0.3.1") + implementation ("com.squareup.okhttp3:okhttp:4.12.0") + + implementation ("com.squareup.picasso:picasso:2.8") + implementation ("androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2") + implementation ("androidx.lifecycle:lifecycle-livedata-ktx:2.6.2") + +} \ No newline at end of file diff --git a/TomatoLeafCare/app/proguard-rules.pro b/TomatoLeafCare/app/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/TomatoLeafCare/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/TomatoLeafCare/app/src/androidTest/java/com/example/tomatoleafcare/ExampleInstrumentedTest.kt b/TomatoLeafCare/app/src/androidTest/java/com/example/tomatoleafcare/ExampleInstrumentedTest.kt new file mode 100644 index 0000000..ae6e713 --- /dev/null +++ b/TomatoLeafCare/app/src/androidTest/java/com/example/tomatoleafcare/ExampleInstrumentedTest.kt @@ -0,0 +1,24 @@ +package com.example.tomatoleafcare + +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.ext.junit.runners.AndroidJUnit4 + +import org.junit.Test +import org.junit.runner.RunWith + +import org.junit.Assert.* + +/** + * Instrumented test, which will execute on an Android device. + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +@RunWith(AndroidJUnit4::class) +class ExampleInstrumentedTest { + @Test + fun useAppContext() { + // Context of the app under test. + val appContext = InstrumentationRegistry.getInstrumentation().targetContext + assertEquals("com.example.tomatoleafcare", appContext.packageName) + } +} \ No newline at end of file diff --git a/TomatoLeafCare/app/src/main/AndroidManifest.xml b/TomatoLeafCare/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..bd9fecb --- /dev/null +++ b/TomatoLeafCare/app/src/main/AndroidManifest.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TomatoLeafCare/app/src/main/assets/ResNet-50_tomato-leaf-disease.tflite b/TomatoLeafCare/app/src/main/assets/ResNet-50_tomato-leaf-disease.tflite new file mode 100644 index 0000000..aad08c0 Binary files /dev/null and b/TomatoLeafCare/app/src/main/assets/ResNet-50_tomato-leaf-disease.tflite differ diff --git a/TomatoLeafCare/app/src/main/ic_launcher-playstore.png b/TomatoLeafCare/app/src/main/ic_launcher-playstore.png new file mode 100644 index 0000000..15a9962 Binary files /dev/null and b/TomatoLeafCare/app/src/main/ic_launcher-playstore.png differ diff --git a/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/adapter/DiseaseAdapter.kt b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/adapter/DiseaseAdapter.kt new file mode 100644 index 0000000..3187f0a --- /dev/null +++ b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/adapter/DiseaseAdapter.kt @@ -0,0 +1,48 @@ +package com.example.tomatoleafcare.adapter + +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.example.tomatoleafcare.R +import com.example.tomatoleafcare.model.Disease + +class DiseaseAdapter( + private val diseases: List, + private val listener: OnItemClickListener +) : RecyclerView.Adapter() { + + interface OnItemClickListener { + fun onItemClick(disease: Disease) + } + + inner class DiseaseViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + private val diseaseName: TextView = itemView.findViewById(R.id.diseaseName) + private val diseaseImage: ImageView = itemView.findViewById(R.id.diseaseImage) + private val diseaseDescription: TextView = itemView.findViewById((R.id.diseaseDescription)) + + fun bind(disease: Disease) { + diseaseName.text = disease.name + diseaseImage.setImageResource(disease.imageResId) + diseaseDescription.text = disease.description + + itemView.setOnClickListener { + listener.onItemClick(disease) + } + } + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): DiseaseViewHolder { + val view = LayoutInflater.from(parent.context) + .inflate(R.layout.disease_item, parent, false) + return DiseaseViewHolder(view) + } + + override fun onBindViewHolder(holder: DiseaseViewHolder, position: Int) { + holder.bind(diseases[position]) + } + + override fun getItemCount(): Int = diseases.size +} diff --git a/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/adapter/HistoryAdapter.kt b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/adapter/HistoryAdapter.kt new file mode 100644 index 0000000..8e530b6 --- /dev/null +++ b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/adapter/HistoryAdapter.kt @@ -0,0 +1,59 @@ +package com.example.tomatoleafcare.ui.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.* +import androidx.recyclerview.widget.RecyclerView +import com.example.tomatoleafcare.R +import com.example.tomatoleafcare.model.History +import com.squareup.picasso.Picasso + +class HistoryAdapter( + private val context: Context, + private var historyList: List, + private val onItemClick: (History) -> Unit, + private val onDeleteClick: (History) -> Unit +) : RecyclerView.Adapter() { + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): HistoryViewHolder { + val view = LayoutInflater.from(context).inflate(R.layout.history_item, parent, false) + return HistoryViewHolder(view) + } + + override fun onBindViewHolder(holder: HistoryViewHolder, position: Int) { + val history = historyList[position] + holder.bind(history) + + holder.itemView.setOnClickListener { + onItemClick(history) + } + + holder.btnDelete.setOnClickListener { + onDeleteClick(history) + } + } + + override fun getItemCount(): Int = historyList.size + + fun updateData(newList: List) { + historyList = newList + notifyDataSetChanged() + } + + inner class HistoryViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + private val diseaseName: TextView = itemView.findViewById(R.id.txtDiseaseName) + private val date: TextView = itemView.findViewById(R.id.txtDate) + private val image: ImageView = itemView.findViewById(R.id.imageHistory) + val btnDelete: ImageButton = itemView.findViewById(R.id.btnDelete) + + fun bind(history: History) { + diseaseName.text = history.diseaseName + date.text = history.date + Picasso.get().load(history.imagePath) + .placeholder(R.drawable.placeholder) + .into(image) + } + } +} diff --git a/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/adapter/SliderAdapter.kt b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/adapter/SliderAdapter.kt new file mode 100644 index 0000000..9ea059c --- /dev/null +++ b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/adapter/SliderAdapter.kt @@ -0,0 +1,18 @@ +package com.example.tomatoleafcare.adapter + +import androidx.fragment.app.Fragment +import androidx.viewpager2.adapter.FragmentStateAdapter +import com.example.tomatoleafcare.ui.home.CardSlide1Fragment +import com.example.tomatoleafcare.ui.home.CardSlide2Fragment + +class SliderAdapter(fragment: Fragment) : FragmentStateAdapter(fragment) { + override fun getItemCount(): Int = 2 + + override fun createFragment(position: Int): Fragment { + return when (position) { + 0 -> CardSlide1Fragment() + 1 -> CardSlide2Fragment() + else -> CardSlide1Fragment() + } + } +} diff --git a/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/helper/HistoryDatabaseHelper.kt b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/helper/HistoryDatabaseHelper.kt new file mode 100644 index 0000000..80cf1ad --- /dev/null +++ b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/helper/HistoryDatabaseHelper.kt @@ -0,0 +1,66 @@ +package com.example.tomatoleafcare.helper + +import android.content.ContentValues +import android.content.Context +import android.database.sqlite.SQLiteDatabase +import android.database.sqlite.SQLiteOpenHelper +import com.example.tomatoleafcare.model.History + +class HistoryDatabaseHelper(context: Context) : + SQLiteOpenHelper(context, "history.db", null, 1) { + + override fun onCreate(db: SQLiteDatabase) { + val createTable = """ + CREATE TABLE history ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + diseaseName TEXT, + date TEXT, + imagePath TEXT + ) + """.trimIndent() + db.execSQL(createTable) + } + + override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) { + db.execSQL("DROP TABLE IF EXISTS history") + onCreate(db) + } + + fun insertHistory(item: History): Long { + val db = writableDatabase + val values = ContentValues().apply { + put("diseaseName", item.diseaseName) + put("date", item.date) + put("imagePath", item.imagePath) + } + return db.insert("history", null, values) + } + + fun getAllHistory(): List { + val db = readableDatabase + val cursor = db.rawQuery("SELECT * FROM history ORDER BY id DESC", null) + val items = mutableListOf() + + while (cursor.moveToNext()) { + items.add( + History( + id = cursor.getLong(cursor.getColumnIndexOrThrow("id")), + diseaseName = cursor.getString(cursor.getColumnIndexOrThrow("diseaseName")), + date = cursor.getString(cursor.getColumnIndexOrThrow("date")), + imagePath = cursor.getString(cursor.getColumnIndexOrThrow("imagePath")) + ) + ) + } + + cursor.close() + return items + } + + fun deleteHistory(id: Long): Boolean { + val db = this.writableDatabase + val result = db.delete("history", "id=?", arrayOf(id.toString())) + db.close() + return result > 0 + } + +} diff --git a/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/model/Disease.kt b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/model/Disease.kt new file mode 100644 index 0000000..95ac0ea --- /dev/null +++ b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/model/Disease.kt @@ -0,0 +1,15 @@ +package com.example.tomatoleafcare.model +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize + +data class Disease( + val name: String, + val description: String, + val cause: String, + val symptoms: String, + val impact: String, + val solution: String, + val imageResId: Int +): Parcelable diff --git a/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/model/History.kt b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/model/History.kt new file mode 100644 index 0000000..62804cb --- /dev/null +++ b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/model/History.kt @@ -0,0 +1,11 @@ +package com.example.tomatoleafcare.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize +@Parcelize +data class History( + val id: Long = 0, + val diseaseName: String, + val date: String, + val imagePath: String +) : Parcelable \ No newline at end of file diff --git a/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/repository/DiseaseRepository.kt b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/repository/DiseaseRepository.kt new file mode 100644 index 0000000..6a9bf58 --- /dev/null +++ b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/repository/DiseaseRepository.kt @@ -0,0 +1,99 @@ +package com.example.tomatoleafcare.repository + +import com.example.tomatoleafcare.R +import com.example.tomatoleafcare.model.Disease + +object DiseaseRepository { + val classList = listOf( + Disease( + "Bercak Daun Septoria", + "Menyebabkan bercak coklat pada daun, pencegahan dengan fungisida dan sirkulasi udara yang baik.", + "Jamur Septoria lycopersici, jamur ini sering ditemukan di tanah yang basah dan menyebar melalui percikan air.", + "Bercak-bercak kecil berwarna coklat tua atau hitam pada daun yang dimulai dari bagian bawah dan dapat membesar.", + "Daun menguning dan rontok., mengurangi produktivitas buah, dan membuat tanaman rentan terhadap penyakit lain.", + "Penggunaan fungisida, memastikan sirkulasi udara yang baik, dan menghindari penyiraman berlebihan.", + R.drawable.bercakdaunseptoria + ), + Disease( + "Virus Mozaik", + "Menyebabkan daun terdistorsi dan mosaik, cegah dengan benih sehat dan menghapus tanaman terinfeksi.", + "Tomato Mosaic Virus (ToMV) yang menyebar melalui kontak tanaman terinfeksi, alat pertanian, dan serangga.", + "Pola mosaik bercak hijau muda dan gelap pada daun, daun menjadi keriput atau terdistorsi", + "Menghambat fotosintesis, menyebabkan pertumbuhan yang tidak optimal, serta menurunkan kualitas dan kuantitas buah.", + "Menggunakan benih sehat, menjaga kebersihan alat, dan menghilangkan tanaman yang terinfeksi.", + R.drawable.virusmozaik + ), + Disease( + "Jamur Daun", + "Menyebabkan bercak kuning dan lapisan beludru di bawah daun, cegah dengan kelembapan rendah dan fungisida.", + "Jamur Cladosporium fulvum yang berkembang di lingkungan lembap dan sirkulasi udara buruk.", + "Bercak kuning pada bagian atas daun dan lapisan beludru hijau atau coklat pada bagian bawah daun", + "Mengurangi kemampuan fotosintesis, dapat menyebabkan daun mengering dan rontok.", + "Menjaga kelembapan rendah, meningkatkan sirkulasi udara, menghindari penyiraman langsung pada daun, dan menggunakan fungisida.", + R.drawable.jamurdaun + ), + Disease( + "Virus Keriting Daun", + "Menyebabkan daun keriting dan menguning, cegah dengan insektisida dan penghapusan tanaman terinfeksi.", + "Virus yang ditularkan oleh kutu kebul (Bemisia tabaci).", + "Daun menjadi keriting, tebal, dan berubah warna menjadi kuning.", + "Menghambat pertumbuhan tanaman, menurunkan kualitas dan kuantitas buah.", + "Menggunakan insektisida, dan segera hapus tanaman yang terinfeksi.", + R.drawable.viruskeriting + ), + Disease( + "Hawar Daun", + "Menyebabkan bercak hitam, pembusukan buah, cegah dengan fungisida dan rotasi tanaman.", + "Jamur Phytophthora infestans, yang menyebar cepat dalam kondisi lembap dan dingin.", + "Bercak coklat gelap atau hitam menyebar cepat pada daun, dengan lapisan putih pada bagian bawah daun.", + "Bisa dengan cepat menghancurkan seluruh tanaman jika tidak segera diatasi, buah juga bisa membusuk.", + "Gunakan fungisida terutama saat musim hujan, dan lakukan rotasi tanaman untuk mencegah infeksi ulang", + R.drawable.lateblight + ), + Disease( + "Bercak Bakteri", + "Menyebabkan bercak hitam pada daun dan buah, cegah dengan benih sehat dan sanitasi.", + "Bakteri Xanthomonas campestris pv. vesicatoria, yang menyebar melalui air, angin, dan alat pertanian.", + "Bercak hitam kecil muncul pada daun, batang, dan buah.", + "Merusak jaringan daun, Menghambat fotositesis dan Menurunkan kualitas buah,", + "Gunakan benih sehat, jaga sanitasi, dan gunakan bakterisida.", + R.drawable.bercakbakteri + ), + Disease( + "Tanaman Sehat", + "Tidak ditemukan penyakit pada daun ini.", + "tidak ada", + "tidak ada", + "tidak ada", + "tidak ada", + R.drawable.sehat + ) + + ) + + fun getData(): List { + return classList + } + + fun findDiseaseByName(name: String): Disease? { + return classList.find { it.name.equals(name, ignoreCase = true) } + } + +} + +object DiseaseMatcher { + fun matchDisease(className: String): Disease? { + return when (className) { + "bacterial_spot" -> DiseaseRepository.classList.find { it.name.contains("Bercak Bakteri", ignoreCase = true) } + "healthy" -> DiseaseRepository.classList.find { it.name.contains("Tanaman Sehat", ignoreCase = true) } + "late_blight" -> DiseaseRepository.classList.find { it.name.contains("Hawar Daun", ignoreCase = true) } + "leaf_curl_virus" -> DiseaseRepository.classList.find { it.name.contains("Virus Keriting Daun", ignoreCase = true) } + "leaf_mold" -> DiseaseRepository.classList.find { it.name.contains("Jamur Daun", ignoreCase = true) } + "mosaic_virus" -> DiseaseRepository.classList.find { it.name.contains("Virus Mozaik", ignoreCase = true) } + "septoria_leaf_spot" -> DiseaseRepository.classList.find { it.name.contains("Bercak Daun Septoria", ignoreCase = true) } + else -> null + } + } +} + + diff --git a/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/ui/camera/CameraFragment.kt b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/ui/camera/CameraFragment.kt new file mode 100644 index 0000000..31afd8d --- /dev/null +++ b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/ui/camera/CameraFragment.kt @@ -0,0 +1,431 @@ +package com.example.tomatoleafcare.ui.camera + +import android.content.Context +import android.graphics.Bitmap +import android.graphics.BitmapFactory +import android.graphics.Color +import android.net.Uri +import android.os.Bundle +import android.os.Debug +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.Toast +import androidx.activity.result.contract.ActivityResultContracts +import androidx.core.content.FileProvider +import androidx.fragment.app.Fragment +import com.example.tomatoleafcare.DiseaseDetailFragment +import com.example.tomatoleafcare.R +import com.example.tomatoleafcare.repository.DiseaseMatcher +import com.example.tomatoleafcare.model.History +import com.example.tomatoleafcare.databinding.CameraFragmentBinding +import com.example.tomatoleafcare.helper.HistoryDatabaseHelper +import okhttp3.* +import org.json.JSONObject +import java.io.* +import java.nio.channels.FileChannel +import okhttp3.MediaType.Companion.toMediaTypeOrNull +import java.text.SimpleDateFormat +import java.util.Date +import java.util.Locale +import android.os.Handler +import android.os.Looper +import androidx.core.content.ContextCompat +import android.util.Base64 +import android.util.Log +import okhttp3.RequestBody.Companion.toRequestBody +import org.tensorflow.lite.Interpreter +import java.nio.MappedByteBuffer +import kotlin.math.roundToInt + + +class CameraFragment : Fragment() { + + private var _binding: CameraFragmentBinding? = null + + private val binding get() = _binding ?: throw IllegalStateException("Binding belum diinisialisasi") + + private lateinit var imageUri: Uri + private lateinit var photoFile: File + + private val classLabels = arrayOf( + "bacterial_spot", + "healthy", + "late_blight", + "leaf_curl_virus", + "leaf_mold", + "mosaic_virus", + "septoria_leaf_spot" + ) + + private val labelKelas = arrayOf( + "Bercak Bakteri", + "Daun Sehat", + "Hawar Daun", + "Virus Keriting", + "Jamur Daun", + "Virus Mozaik", + "Bercak Daun Septoria" + ) + + private var apiAvailable = false + private val credentials = "rahasia:tomat" + private val basicAuth = "Basic " + Base64.encodeToString(credentials.toByteArray(), Base64.NO_WRAP) + + private val galleryLauncher = registerForActivityResult(ActivityResultContracts.GetContent()) { uri: Uri? -> + uri?.let { + try { + val inputStream = requireContext().contentResolver.openInputStream(it) + val tempFile = File.createTempFile("gallery_", ".jpg", requireContext().cacheDir) + val outputStream = FileOutputStream(tempFile) + + inputStream?.copyTo(outputStream) + inputStream?.close() + outputStream.close() + + imageUri = Uri.fromFile(tempFile) + binding.imageView.setImageURI(imageUri) + + } catch (e: Exception) { + e.printStackTrace() + Toast.makeText(requireContext(), "Gagal memuat gambar dari galeri", Toast.LENGTH_SHORT).show() + } + } + } + + + private val cameraLauncher = registerForActivityResult(ActivityResultContracts.TakePicture()) { success -> + if (success) { + binding.imageView.setImageURI(imageUri) + } + } + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { + _binding = CameraFragmentBinding.inflate(inflater, container, false) + + binding.btnKamera.setOnClickListener { + requestCameraPermissionLauncher.launch(android.Manifest.permission.CAMERA) + } + + binding.btnGaleri.setOnClickListener { + openGallery() + } + + binding.btnPindai.setOnClickListener { + if (::imageUri.isInitialized) { + if (apiAvailable) { + sendImageToApi(imageUri) + } else { + runLocalModel(imageUri, requireContext()) + } + } else { + Toast.makeText(requireContext(), "Silakan pilih gambar terlebih dahulu", Toast.LENGTH_SHORT).show() + } + } + handler.post(updateNetworkStatusRunnable) + return binding.root + } + + private fun openGallery() { + galleryLauncher.launch("image/*") + } + + private fun openCamera() { + try { + photoFile = File.createTempFile("photo_", ".jpg", requireContext().cacheDir) + imageUri = FileProvider.getUriForFile(requireContext(), "${requireContext().packageName}.fileprovider", photoFile) + cameraLauncher.launch(imageUri) + } catch (e: IOException) { + Toast.makeText(requireContext(), "Gagal membuat file foto", Toast.LENGTH_SHORT).show() + e.printStackTrace() + } + } + + + private val requestCameraPermissionLauncher = registerForActivityResult( + ActivityResultContracts.RequestPermission() + ) { isGranted -> + if (isGranted) { + openCamera() + } else { + Toast.makeText(requireContext(), "Izin kamera diperlukan untuk fitur ini", Toast.LENGTH_SHORT).show() + } + } + + private fun runLocalModel(uri: Uri, context: Context) { +// val startTime = System.currentTimeMillis() +// val beforeMemory = Debug.getNativeHeapAllocatedSize() / 1024.0 + + val model = Interpreter(loadModelFile("ResNet-50_tomato-leaf-disease.tflite", context)) + val inputStream = context.contentResolver.openInputStream(uri) + val bitmap = BitmapFactory.decodeStream(inputStream) + val resizedBitmap = Bitmap.createScaledBitmap(bitmap, 224, 224, true) + + val input = Array(1) { Array(224) { Array(224) { FloatArray(3) } } } + for (y in 0 until 224) { + for (x in 0 until 224) { + val pixel = resizedBitmap.getPixel(x, y) + input[0][y][x][0] = Color.red(pixel).toFloat() + input[0][y][x][1] = Color.green(pixel).toFloat() + input[0][y][x][2] = Color.blue(pixel).toFloat() + } + } + + val output = Array(1) { FloatArray(classLabels.size) } + model.run(input, output) + + val probabilities = output[0] + + // Softmax normalization (optional, if model doesn't do it) + val expValues = probabilities.map { Math.exp(it.toDouble()) } + val sumExp = expValues.sum() + val softmax = expValues.map { (it / sumExp).toFloat() } + + val predictedIndex = probabilities.indices.maxByOrNull { probabilities[it] } ?: -1 + val prediction = classLabels[predictedIndex] + + val resultBuilder = StringBuilder() + resultBuilder.append("Confidence:\n") + for (i in labelKelas.indices) { + val label = labelKelas[i] + val confidence = softmax[i] * 100 + resultBuilder.append("$label: ${"%.2f".format(confidence)}%\n") + } + +// val endTime = System.currentTimeMillis() +// val afterMemory = Debug.getNativeHeapAllocatedSize() / 1024.0 +// val duration = endTime - startTime +// val memoryUsed = (afterMemory - beforeMemory).roundToInt() +// Log.d("MODEL_RESULT", resultBuilder.toString()) + val confidenceText = resultBuilder.toString() + + //Toast.makeText(context, "Local: $prediction\nTime: $duration ms\nMemory: $memoryUsed KB", Toast.LENGTH_LONG).show() +// Toast.makeText(context, "Local: $prediction", Toast.LENGTH_LONG).show() +// Log.d("MODEL_METRICS", "Local - Time: $duration ms, Memory: $memoryUsed KB") + + navigateToNoteFragment(prediction, uri, confidenceText) + } + + private fun loadModelFile(modelName: String, context: Context): MappedByteBuffer { + val fileDescriptor = context.assets.openFd(modelName) + val inputStream = FileInputStream(fileDescriptor.fileDescriptor) + val fileChannel = inputStream.channel + val startOffset = fileDescriptor.startOffset + val declaredLength = fileDescriptor.declaredLength + return fileChannel.map(FileChannel.MapMode.READ_ONLY, startOffset, declaredLength) + } + + private fun sendImageToApi(uri: Uri) { +// val startTime = System.currentTimeMillis() +// val beforeMemory = Debug.getNativeHeapAllocatedSize() / 1024.0 + + val contentResolver = requireContext().contentResolver + val inputStream = contentResolver.openInputStream(uri) ?: return + val imageBytes = inputStream.readBytes() + val requestBody = imageBytes.toRequestBody("image/*".toMediaTypeOrNull(), 0) + val body = MultipartBody.Part.createFormData("image", "image.jpg", requestBody) + + val requestBodyMultipart = MultipartBody.Builder() + .setType(MultipartBody.FORM) + .addPart(body) + .build() + + val client = OkHttpClient() + val request = Request.Builder() + .url("http://robotika.upnvj.ac.id:8000/tomatoleafcare/classify") +// .url("http://api.simdoks.web.id:5000/tomatoleafcare/classify") + .post(requestBodyMultipart) + .addHeader("Authorization", basicAuth) + .build() + + client.newCall(request).enqueue(object : Callback { + override fun onFailure(call: Call, e: IOException) { + requireActivity().runOnUiThread { + Toast.makeText(requireContext(), "Gagal terhubung ke server", Toast.LENGTH_SHORT).show() + } + } + + override fun onResponse(call: Call, response: Response) { + val responseBody = response.body?.string() + if (!response.isSuccessful || responseBody == null) { + requireActivity().runOnUiThread { + Toast.makeText(requireContext(), "Respons tidak valid dari server", Toast.LENGTH_SHORT).show() + } + return + } + try { + val jsonObject = JSONObject(responseBody) + + val predictedClassObj = jsonObject.getJSONObject("predictedClass") + val prediction = predictedClassObj.getString("class") + + val confidencesArray = predictedClassObj.getJSONArray("confidences") + val confidenceTextBuilder = StringBuilder() + confidenceTextBuilder.append("\nConfidence:\n") + + for (i in 0 until confidencesArray.length()) { + val item = confidencesArray.getJSONObject(i) + val className = item.getString("class") + val confidence = item.getDouble("confidence") + confidenceTextBuilder.append("$className: ${"%.2f".format(confidence)}%\n") + } + + val confidenceText = confidenceTextBuilder.toString() + +// val endTime = System.currentTimeMillis() +// val duration = endTime - startTime +// val afterMemory = Debug.getNativeHeapAllocatedSize() / 1024.0 +// val memoryUsed = (afterMemory - beforeMemory).roundToInt() + + requireActivity().runOnUiThread { +// Toast.makeText(requireContext(), "Online: $prediction\nTime: $duration ms\nMemory: $memoryUsed KB", Toast.LENGTH_LONG).show() +// Toast.makeText(requireContext(), "Online: $prediction", Toast.LENGTH_LONG).show() +// Log.d("MODEL_METRICS", "Online - Time: $duration ms, Memory: $memoryUsed KB") + navigateToNoteFragment(prediction, uri, confidenceText) + } + + } catch (e: Exception) { + Log.e("PARSE_ERROR", e.message ?: "Unknown error") + Log.e("RAW_JSON", responseBody ?: "No body") + e.printStackTrace() + requireActivity().runOnUiThread { + Toast.makeText(requireContext(), "Gagal parsing data", Toast.LENGTH_SHORT).show() + } + } + } + + }) + } + + private val handler = Handler(Looper.getMainLooper()) + private val updateInterval: Long = 1000 + + private val updateNetworkStatusRunnable = object : Runnable { + override fun run() { + checkApiAvailability() + handler.postDelayed(this, updateInterval) + } + } + + private fun checkApiAvailability() { + val client = OkHttpClient() + val request = Request.Builder() + .url("http://robotika.upnvj.ac.id:8000/tomatoleafcare/check") +// .url("http://api.simdoks.web.id:5000/tomatoleafcare/check") + .get() + .addHeader("Authorization", basicAuth) + .build() + + client.newCall(request).enqueue(object : Callback { + override fun onFailure(call: Call, e: IOException) { + apiAvailable = false + updateApiStatus() + Log.e("API_RESPONSE", "Request failed: ${e.message}") + } + + override fun onResponse(call: Call, response: Response) { + apiAvailable = response.isSuccessful + updateApiStatus() + } + }) + } + + private fun updateApiStatus() { + if (_binding == null || !isAdded) return + + requireActivity().runOnUiThread { + _binding?.let { binding -> + if (apiAvailable) { + binding.textStatus.text = getString(R.string.online) + binding.textStatus.setTextColor(ContextCompat.getColor(requireContext(), R.color.green)) + binding.ledStatus.setBackgroundResource(R.drawable.bg_led_online) + } else { + binding.textStatus.text = getString(R.string.offline) + binding.textStatus.setTextColor(ContextCompat.getColor(requireContext(), R.color.blue)) + binding.ledStatus.setBackgroundResource(R.drawable.bg_led_offline) + } + } + } + } + + private fun navigateToNoteFragment( + className: String, + imageUri: Uri, + confidenceText: String + ) { + confidenceText.lines().forEachIndexed { index, line -> + Log.d("CONFIDENCE_LINE", "[$index] $line") + } + + val maxConfidence = confidenceText.lines() + .mapNotNull { line -> + Regex("[a-zA-Z_]+:\\s*([\\d.,]+)%").find(line) + ?.groupValues?.get(1) + ?.replace(",", ".") + ?.toFloatOrNull() + } + .maxOrNull() ?: 0f + + + val isConfident = maxConfidence >= 70f + Log.d("ParsedConfidence", "confidence: $confidenceText") + Log.d("ParsedConfidence", "Max confidence: $maxConfidence") + + + // matchedDisease hanya dipakai jika confidence cukup + val matchedDisease = if (isConfident) DiseaseMatcher.matchDisease(className) else null + + // Simpan ke database hanya jika confidence >= 70% + if (isConfident) { + val dbHelper = HistoryDatabaseHelper(requireContext()) + val formatter = SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.getDefault()) + val now = formatter.format(Date()) + + val historyItem = History( + diseaseName = matchedDisease?.name ?: "Unknown", + date = now, + imagePath = imageUri.toString() + ) + dbHelper.insertHistory(historyItem) + } + + // Siapkan Bundle untuk dikirim ke DiseaseDetailFragment + val bundle = Bundle().apply { + if (isConfident) { + putString("disease_name", matchedDisease?.name) + putString("disease_description", matchedDisease?.description) + putString("disease_symptoms", matchedDisease?.symptoms) + putString("disease_causes", matchedDisease?.cause) + putString("disease_impact", matchedDisease?.impact) + putString("disease_solution", matchedDisease?.solution) + } else { + putString("disease_name", "Penyakit daun tidak terdeteksi") + putString("disease_description", "-") + putString("disease_symptoms", "-") + putString("disease_causes", "-") + putString("disease_impact", "-") + putString("disease_solution", "-") + } + + putString("image_uri", imageUri.toString()) + putString("confidence_text", confidenceText) + } + + // Navigasi ke DiseaseDetailFragment + val noteFragment = DiseaseDetailFragment().apply { + arguments = bundle + } + + requireActivity().supportFragmentManager.beginTransaction() + .replace(R.id.fragment_container, noteFragment) + .addToBackStack(null) + .commit() + } + + + override fun onDestroyView() { + super.onDestroyView() + handler.removeCallbacks(updateNetworkStatusRunnable) + _binding = null + } +} diff --git a/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/ui/history/HistoryDetailFragment.kt b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/ui/history/HistoryDetailFragment.kt new file mode 100644 index 0000000..e8b1d19 --- /dev/null +++ b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/ui/history/HistoryDetailFragment.kt @@ -0,0 +1,73 @@ +package com.example.tomatoleafcare.ui.history + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.fragment.app.Fragment +import com.example.tomatoleafcare.R +import com.example.tomatoleafcare.repository.DiseaseRepository +import com.example.tomatoleafcare.model.History +import com.example.tomatoleafcare.ui.home.MainActivity +import com.squareup.picasso.Picasso + +class HistoryDetailFragment : Fragment() { + + private var history: History? = null + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + val view = inflater.inflate(R.layout.history_detail_fragment, container, false) + + (activity as? MainActivity)?.showBottomNav(false) + + val btnBack = view.findViewById(R.id.btnBack) + btnBack.setOnClickListener { + requireActivity().onBackPressedDispatcher.onBackPressed() + } + + history = arguments?.getParcelable("history") as? History + + + history?.let { + showDetails(view, it) + } + + return view + } + + private fun showDetails(view: View, history: History) { + val detailDiseaseName = view.findViewById(R.id.detailDiseaseName) + val detailDiseaseCauses = view.findViewById(R.id.detailDiseaseCauses) + val detailDiseaseSymptoms = view.findViewById(R.id.detailDiseaseSymptoms) + val detailDiseaseImpact = view.findViewById(R.id.detailDiseaseImpact) + val detailDiseaseSolution = view.findViewById(R.id.detailDiseaseSolution) + val detailDiseaseImage = view.findViewById(R.id.detailDiseaseImage) + + Picasso.get().load(history.imagePath).into(detailDiseaseImage) + detailDiseaseName.text = history.diseaseName + + val matchedDisease = DiseaseRepository.findDiseaseByName(history.diseaseName) + + matchedDisease?.let { + detailDiseaseCauses.text = it.cause + detailDiseaseSymptoms.text = it.symptoms + detailDiseaseImpact.text = it.impact + detailDiseaseSolution.text = it.solution + } ?: run { + detailDiseaseCauses.text = "-" + detailDiseaseSymptoms.text = "-" + detailDiseaseImpact.text = "-" + detailDiseaseSolution.text = "-" + } + } + override fun onDestroyView() { + super.onDestroyView() + (activity as? MainActivity)?.showBottomNav(true) + } + +} diff --git a/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/ui/history/HistoryFragment.kt b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/ui/history/HistoryFragment.kt new file mode 100644 index 0000000..da63d37 --- /dev/null +++ b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/ui/history/HistoryFragment.kt @@ -0,0 +1,64 @@ +package com.example.tomatoleafcare.ui.history + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import androidx.fragment.app.viewModels +import androidx.lifecycle.Observer +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.example.tomatoleafcare.R +import com.example.tomatoleafcare.ui.adapter.HistoryAdapter +import com.example.tomatoleafcare.viewmodel.HistoryViewModel + +class HistoryFragment : Fragment() { + + private lateinit var recyclerView: RecyclerView + private lateinit var historyAdapter: HistoryAdapter + private val viewModel: HistoryViewModel by viewModels() + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + val view = inflater.inflate(R.layout.history_fragment, container, false) + + recyclerView = view.findViewById(R.id.recyclerViewHistory) + recyclerView.layoutManager = LinearLayoutManager(requireContext()) + + historyAdapter = HistoryAdapter( + context = requireContext(), + historyList = listOf(), + onItemClick = { history -> + val bundle = Bundle() + bundle.putParcelable("history", history) + + val detailFragment = HistoryDetailFragment().apply { + arguments = bundle + } + + requireActivity().supportFragmentManager.beginTransaction() + .replace(R.id.fragment_container, detailFragment) + .addToBackStack(null) + .commit() + }, + onDeleteClick = { item -> + viewModel.deleteHistoryById(item.id.toInt()) + } + ) + + recyclerView.adapter = historyAdapter + + observeViewModel() + + return view + } + + private fun observeViewModel() { + viewModel.historyList.observe(viewLifecycleOwner, Observer { list -> + historyAdapter.updateData(list) + }) + } +} diff --git a/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/ui/home/CardSlider1Fragment.kt b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/ui/home/CardSlider1Fragment.kt new file mode 100644 index 0000000..e7f7ed4 --- /dev/null +++ b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/ui/home/CardSlider1Fragment.kt @@ -0,0 +1,14 @@ +package com.example.tomatoleafcare.ui.home + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import com.example.tomatoleafcare.R + +class CardSlide1Fragment : Fragment() { + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + return inflater.inflate(R.layout.card_slide_1, container, false) + } +} diff --git a/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/ui/home/CardSlider2Fragment.kt b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/ui/home/CardSlider2Fragment.kt new file mode 100644 index 0000000..d545b3f --- /dev/null +++ b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/ui/home/CardSlider2Fragment.kt @@ -0,0 +1,14 @@ +package com.example.tomatoleafcare.ui.home + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import com.example.tomatoleafcare.R + +class CardSlide2Fragment : Fragment() { + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + return inflater.inflate(R.layout.card_slide_2, container, false) + } +} diff --git a/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/ui/home/HomeFragment.kt b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/ui/home/HomeFragment.kt new file mode 100644 index 0000000..db496be --- /dev/null +++ b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/ui/home/HomeFragment.kt @@ -0,0 +1,123 @@ +package com.example.tomatoleafcare.ui.home + +import android.graphics.Paint +import android.graphics.Rect +import android.os.Bundle +import android.os.Handler +import android.os.Looper +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.fragment.app.Fragment +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import androidx.viewpager2.widget.ViewPager2 +import com.example.tomatoleafcare.DiseaseDetailFragment +import com.example.tomatoleafcare.R +import com.example.tomatoleafcare.adapter.DiseaseAdapter +import com.example.tomatoleafcare.adapter.SliderAdapter +import com.example.tomatoleafcare.model.Disease +import com.example.tomatoleafcare.repository.DiseaseRepository +import com.example.tomatoleafcare.ui.note.NoteFragment +import com.google.android.material.bottomnavigation.BottomNavigationView + +class HomeFragment : Fragment() { + + private lateinit var recyclerView: RecyclerView + private lateinit var adapter: DiseaseAdapter + private lateinit var viewPager: ViewPager2 + private val sliderHandler = Handler(Looper.getMainLooper()) + + private val sliderRunnable = object : Runnable { + override fun run() { + val itemCount = viewPager.adapter?.itemCount ?: 0 + if (itemCount > 0) { + val nextItem = (viewPager.currentItem + 1) % itemCount + viewPager.setCurrentItem(nextItem, true) + sliderHandler.postDelayed(this, 10000) + } + } + } + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + val view = inflater.inflate(R.layout.home_fragment, container, false) + + val classList = DiseaseRepository.classList.filter { it.name != "Tanaman Sehat" } + val topThreeDiseases = classList.take(3) + + viewPager = view.findViewById(R.id.viewPager) + viewPager.adapter = SliderAdapter(this) + + val space = resources.getDimensionPixelSize(R.dimen.slider_gap) + viewPager.addItemDecoration(SliderItemDecoration(space)) + + recyclerView = view.findViewById(R.id.recyclerView) + recyclerView.layoutManager = LinearLayoutManager(requireContext()) + + val seeMoreText: TextView = view.findViewById(R.id.seeMoreText) + seeMoreText.paintFlags = seeMoreText.paintFlags or Paint.UNDERLINE_TEXT_FLAG + + seeMoreText.setOnClickListener { + val noteFragment = NoteFragment() + requireActivity().supportFragmentManager.beginTransaction() + .replace(R.id.fragment_container, noteFragment) + .addToBackStack(null) + .commit() + + val bottomNavigationView = requireActivity().findViewById(R.id.bottomNavigationView) + bottomNavigationView.selectedItemId = R.id.navigation_note + } + + adapter = DiseaseAdapter(topThreeDiseases, object : DiseaseAdapter.OnItemClickListener { + override fun onItemClick(disease: Disease) { + val detailFragment = DiseaseDetailFragment().apply { + arguments = Bundle().apply { + putString("disease_name", disease.name) + putString("disease_description", disease.description) + putString("disease_symptoms", disease.symptoms) + putString("disease_causes", disease.cause) + putString("disease_impact", disease.impact) + putString("disease_solution", disease.solution) + putInt("disease_image", disease.imageResId) + } + } + + requireActivity().supportFragmentManager.beginTransaction() + .replace(R.id.fragment_container, detailFragment) + .addToBackStack(null) + .commit() + } + }) + + recyclerView.adapter = adapter + + return view + } + + override fun onResume() { + super.onResume() + sliderHandler.postDelayed(sliderRunnable, 1000) + } + + override fun onPause() { + super.onPause() + sliderHandler.removeCallbacks(sliderRunnable) + } + + class SliderItemDecoration(private val space: Int) : RecyclerView.ItemDecoration() { + override fun getItemOffsets( + outRect: Rect, + view: View, + parent: RecyclerView, + state: RecyclerView.State + ) { + super.getItemOffsets(outRect, view, parent, state) + outRect.left = space + outRect.right = space + } + } +} diff --git a/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/ui/home/MainActivity.kt b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/ui/home/MainActivity.kt new file mode 100644 index 0000000..e8bc626 --- /dev/null +++ b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/ui/home/MainActivity.kt @@ -0,0 +1,49 @@ +package com.example.tomatoleafcare.ui.home + +import android.os.Bundle +import android.view.View +import androidx.appcompat.app.AppCompatActivity +import androidx.fragment.app.Fragment +import com.example.tomatoleafcare.R +import com.example.tomatoleafcare.databinding.ActivityMainBinding +import com.example.tomatoleafcare.ui.note.NoteFragment +import com.example.tomatoleafcare.ui.camera.CameraFragment +import com.example.tomatoleafcare.ui.history.HistoryFragment + +class MainActivity : AppCompatActivity() { + + private lateinit var binding: ActivityMainBinding + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + binding = ActivityMainBinding.inflate(layoutInflater) + setContentView(binding.root) + + if (savedInstanceState == null) { + replaceFragment(HomeFragment()) + } + + binding.bottomNavigationView.setOnItemSelectedListener { item -> + when (item.itemId) { + R.id.navigation_home -> replaceFragment(HomeFragment()) + R.id.navigation_camera -> replaceFragment(CameraFragment()) + R.id.navigation_note -> replaceFragment(NoteFragment()) + R.id.navigation_history -> replaceFragment(HistoryFragment()) + } + true + } + } + + fun showBottomNav(show: Boolean) { + val bottomNav = findViewById(R.id.bottomNavigationView) + bottomNav.visibility = if (show) View.VISIBLE else View.GONE + } + + + private fun replaceFragment(fragment: Fragment) { + supportFragmentManager.beginTransaction() + .replace(R.id.fragment_container, fragment) + .commit() + } +} diff --git a/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/ui/note/DiseaseDetailFragment.kt b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/ui/note/DiseaseDetailFragment.kt new file mode 100644 index 0000000..b4f5d0b --- /dev/null +++ b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/ui/note/DiseaseDetailFragment.kt @@ -0,0 +1,104 @@ +package com.example.tomatoleafcare + +import android.app.AlertDialog +import android.net.Uri +import android.os.Bundle +import android.util.Log +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageButton +import android.widget.TextView +import androidx.fragment.app.Fragment +import androidx.fragment.app.activityViewModels +import androidx.lifecycle.Observer +import com.example.tomatoleafcare.ui.home.MainActivity +import com.example.tomatoleafcare.viewmodel.DiseaseViewModel +import com.google.android.material.imageview.ShapeableImageView + +class DiseaseDetailFragment : Fragment() { + + private val diseaseViewModel: DiseaseViewModel by activityViewModels() + + private lateinit var imageView: ShapeableImageView + private lateinit var nameTextView: TextView + private lateinit var causesTextView: TextView + private lateinit var symptomsTextView: TextView + private lateinit var impactTextView: TextView + private lateinit var solutionTextView: TextView + private lateinit var backButton: ImageButton + private lateinit var infoConfidenceButton: ImageButton + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + val view = inflater.inflate(R.layout.disease_detail_fragment, container, false) + + (activity as? MainActivity)?.showBottomNav(false) + + imageView = view.findViewById(R.id.detailDiseaseImage) + nameTextView = view.findViewById(R.id.detailDiseaseName) + causesTextView = view.findViewById(R.id.detailDiseaseCauses) + symptomsTextView = view.findViewById(R.id.detailDiseaseSymptoms) + impactTextView = view.findViewById(R.id.detailDiseaseImpact) + solutionTextView = view.findViewById(R.id.detailDiseaseSolution) + backButton = view.findViewById(R.id.btnBack) + infoConfidenceButton = view.findViewById(R.id.infoConfidenceButton) + + val diseaseName = arguments?.getString("disease_name") + val imageUriString = arguments?.getString("image_uri") + val confidenceText = arguments?.getString("confidence_text") + + if (!imageUriString.isNullOrEmpty()) { + val imageUri = Uri.parse(imageUriString) + imageView.setImageURI(imageUri) + } + + if (diseaseName?.trim()?.lowercase() == "penyakit daun tidak terdeteksi") { + // Jangan load data dari ViewModel + nameTextView.text = "Tidak terdeteksi" + causesTextView.text = "-" + symptomsTextView.text = "-" + impactTextView.text = "-" + solutionTextView.text = "-" + } else { + // Load dan tampilkan data penyakit + diseaseViewModel.loadDiseaseByName(diseaseName ?: "") + diseaseViewModel.disease.observe(viewLifecycleOwner, Observer { disease -> + if (disease != null) { + nameTextView.text = disease.name + causesTextView.text = disease.cause + symptomsTextView.text = disease.symptoms + impactTextView.text = disease.impact + solutionTextView.text = disease.solution + + if (imageUriString.isNullOrEmpty()) { + imageView.setImageResource(disease.imageResId) + } + } + }) + } + + + infoConfidenceButton.setOnClickListener { + AlertDialog.Builder(requireContext()) + .setTitle("Confidence per Label") + .setMessage(confidenceText ?: "Confidence tidak tersedia.") + .show() + } + + backButton.setOnClickListener { + requireActivity().supportFragmentManager.popBackStack() + } + + return view + } + + + override fun onDestroyView() { + super.onDestroyView() + (activity as? MainActivity)?.showBottomNav(true) + diseaseViewModel.clearDisease() + } +} \ No newline at end of file diff --git a/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/ui/note/NoteFragment.kt b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/ui/note/NoteFragment.kt new file mode 100644 index 0000000..dc74e8c --- /dev/null +++ b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/ui/note/NoteFragment.kt @@ -0,0 +1,50 @@ +package com.example.tomatoleafcare.ui.note + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import androidx.fragment.app.activityViewModels +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.example.tomatoleafcare.DiseaseDetailFragment +import com.example.tomatoleafcare.R +import com.example.tomatoleafcare.adapter.DiseaseAdapter +import com.example.tomatoleafcare.repository.DiseaseRepository +import com.example.tomatoleafcare.model.Disease +import com.example.tomatoleafcare.viewmodel.DiseaseViewModel + +class NoteFragment : Fragment() { + + private lateinit var recyclerView: RecyclerView + private lateinit var adapter: DiseaseAdapter + private val viewModel: DiseaseViewModel by activityViewModels() + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + val view = inflater.inflate(R.layout.note_fragment, container, false) + + val classList = DiseaseRepository.classList.filter { it.name != "Tanaman Sehat" } + + recyclerView = view.findViewById(R.id.recyclerViewNote) + recyclerView.layoutManager = LinearLayoutManager(requireContext()) + + adapter = DiseaseAdapter(classList, object : DiseaseAdapter.OnItemClickListener { + override fun onItemClick(disease: Disease) { + viewModel.loadDiseaseByName(disease.name) + + requireActivity().supportFragmentManager.beginTransaction() + .replace(R.id.fragment_container, DiseaseDetailFragment()) + .addToBackStack(null) + .commit() + } + }) + + recyclerView.adapter = adapter + + return view + } +} diff --git a/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/ui/splash/SplashActivity.kt b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/ui/splash/SplashActivity.kt new file mode 100644 index 0000000..d82d28c --- /dev/null +++ b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/ui/splash/SplashActivity.kt @@ -0,0 +1,21 @@ +package com.example.tomatoleafcare.ui.splash + +import android.content.Intent +import android.os.Bundle +import android.os.Handler +import android.os.Looper +import androidx.appcompat.app.AppCompatActivity +import com.example.tomatoleafcare.R +import com.example.tomatoleafcare.ui.home.MainActivity + +class SplashActivity : AppCompatActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.splash_screen) + + Handler(Looper.getMainLooper()).postDelayed({ + startActivity(Intent(this, MainActivity::class.java)) + finish() + }, 2000) + } +} diff --git a/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/ui/theme/Color.kt b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/ui/theme/Color.kt new file mode 100644 index 0000000..389ec59 --- /dev/null +++ b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/ui/theme/Color.kt @@ -0,0 +1,11 @@ +package com.example.tomatoleafcare.ui.theme + +import androidx.compose.ui.graphics.Color + +val Purple80 = Color(0xFFD0BCFF) +val PurpleGrey80 = Color(0xFFCCC2DC) +val Pink80 = Color(0xFFEFB8C8) + +val Purple40 = Color(0xFF6650a4) +val PurpleGrey40 = Color(0xFF625b71) +val Pink40 = Color(0xFF7D5260) \ No newline at end of file diff --git a/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/ui/theme/Theme.kt b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/ui/theme/Theme.kt new file mode 100644 index 0000000..011a9a1 --- /dev/null +++ b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/ui/theme/Theme.kt @@ -0,0 +1,58 @@ +package com.example.tomatoleafcare.ui.theme + +import android.app.Activity +import android.os.Build +import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.darkColorScheme +import androidx.compose.material3.dynamicDarkColorScheme +import androidx.compose.material3.dynamicLightColorScheme +import androidx.compose.material3.lightColorScheme +import androidx.compose.runtime.Composable +import androidx.compose.ui.platform.LocalContext + +private val DarkColorScheme = darkColorScheme( + primary = Purple80, + secondary = PurpleGrey80, + tertiary = Pink80 +) + +private val LightColorScheme = lightColorScheme( + primary = Purple40, + secondary = PurpleGrey40, + tertiary = Pink40 + + /* Other default colors to override + background = Color(0xFFFFFBFE), + surface = Color(0xFFFFFBFE), + onPrimary = Color.White, + onSecondary = Color.White, + onTertiary = Color.White, + onBackground = Color(0xFF1C1B1F), + onSurface = Color(0xFF1C1B1F), + */ +) + +@Composable +fun TomatoLeafCareTheme( + darkTheme: Boolean = isSystemInDarkTheme(), + // Dynamic color is available on Android 12+ + dynamicColor: Boolean = true, + content: @Composable () -> Unit +) { + val colorScheme = when { + dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> { + val context = LocalContext.current + if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context) + } + + darkTheme -> DarkColorScheme + else -> LightColorScheme + } + + MaterialTheme( + colorScheme = colorScheme, + typography = Typography, + content = content + ) +} \ No newline at end of file diff --git a/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/ui/theme/Type.kt b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/ui/theme/Type.kt new file mode 100644 index 0000000..dbd1d76 --- /dev/null +++ b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/ui/theme/Type.kt @@ -0,0 +1,34 @@ +package com.example.tomatoleafcare.ui.theme + +import androidx.compose.material3.Typography +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.sp + +// Set of Material typography styles to start with +val Typography = Typography( + bodyLarge = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Normal, + fontSize = 16.sp, + lineHeight = 24.sp, + letterSpacing = 0.5.sp + ) + /* Other default text styles to override + titleLarge = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Normal, + fontSize = 22.sp, + lineHeight = 28.sp, + letterSpacing = 0.sp + ), + labelSmall = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Medium, + fontSize = 11.sp, + lineHeight = 16.sp, + letterSpacing = 0.5.sp + ) + */ +) \ No newline at end of file diff --git a/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/viewmodel/DiseaseViewModel.kt b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/viewmodel/DiseaseViewModel.kt new file mode 100644 index 0000000..dba4489 --- /dev/null +++ b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/viewmodel/DiseaseViewModel.kt @@ -0,0 +1,25 @@ +package com.example.tomatoleafcare.viewmodel + +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import com.example.tomatoleafcare.model.Disease +import com.example.tomatoleafcare.repository.DiseaseRepository + +class DiseaseViewModel : ViewModel() { + + private val _disease = MutableLiveData() + val disease: MutableLiveData get() = _disease + + fun loadDiseaseByName(name: String) { + val result = DiseaseRepository.findDiseaseByName(name) + result?.let { + _disease.value = it + } + } + + fun clearDisease() { + _disease.value = null + } + +} diff --git a/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/viewmodel/HistoryViewModel.kt b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/viewmodel/HistoryViewModel.kt new file mode 100644 index 0000000..8927ba4 --- /dev/null +++ b/TomatoLeafCare/app/src/main/java/com/example/tomatoleafcare/viewmodel/HistoryViewModel.kt @@ -0,0 +1,37 @@ +package com.example.tomatoleafcare.viewmodel + +import android.app.Application +import androidx.lifecycle.AndroidViewModel +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import com.example.tomatoleafcare.helper.HistoryDatabaseHelper +import com.example.tomatoleafcare.model.History + +class HistoryViewModel(application: Application) : AndroidViewModel(application) { + + private val dbHelper = HistoryDatabaseHelper(application) + + private val _historyList = MutableLiveData>() + val historyList: LiveData> get() = _historyList + + init { + loadAllHistory() + } + + fun loadAllHistory() { + val allHistory = dbHelper.getAllHistory() + _historyList.postValue(allHistory) + } + + fun deleteHistoryById(id: Int) { + val success = dbHelper.deleteHistory(id.toLong()) + if (success) { + loadAllHistory() + } + } + + fun insertHistory(item: History) { + dbHelper.insertHistory(item) + loadAllHistory() + } +} diff --git a/TomatoLeafCare/app/src/main/res/color/nav_item_color.xml b/TomatoLeafCare/app/src/main/res/color/nav_item_color.xml new file mode 100644 index 0000000..8054782 --- /dev/null +++ b/TomatoLeafCare/app/src/main/res/color/nav_item_color.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/TomatoLeafCare/app/src/main/res/drawable/bercakbakteri.jpg b/TomatoLeafCare/app/src/main/res/drawable/bercakbakteri.jpg new file mode 100644 index 0000000..479571b Binary files /dev/null and b/TomatoLeafCare/app/src/main/res/drawable/bercakbakteri.jpg differ diff --git a/TomatoLeafCare/app/src/main/res/drawable/bercakdaunseptoria.jpg b/TomatoLeafCare/app/src/main/res/drawable/bercakdaunseptoria.jpg new file mode 100644 index 0000000..9ba02a9 Binary files /dev/null and b/TomatoLeafCare/app/src/main/res/drawable/bercakdaunseptoria.jpg differ diff --git a/TomatoLeafCare/app/src/main/res/drawable/bg_led_offline.xml b/TomatoLeafCare/app/src/main/res/drawable/bg_led_offline.xml new file mode 100644 index 0000000..f1439f4 --- /dev/null +++ b/TomatoLeafCare/app/src/main/res/drawable/bg_led_offline.xml @@ -0,0 +1,4 @@ + + + + diff --git a/TomatoLeafCare/app/src/main/res/drawable/bg_led_online.xml b/TomatoLeafCare/app/src/main/res/drawable/bg_led_online.xml new file mode 100644 index 0000000..8c2551b --- /dev/null +++ b/TomatoLeafCare/app/src/main/res/drawable/bg_led_online.xml @@ -0,0 +1,4 @@ + + + + diff --git a/TomatoLeafCare/app/src/main/res/drawable/healthy.jpg b/TomatoLeafCare/app/src/main/res/drawable/healthy.jpg new file mode 100644 index 0000000..adc9253 Binary files /dev/null and b/TomatoLeafCare/app/src/main/res/drawable/healthy.jpg differ diff --git a/TomatoLeafCare/app/src/main/res/drawable/ic_camera.png b/TomatoLeafCare/app/src/main/res/drawable/ic_camera.png new file mode 100644 index 0000000..2bef93e Binary files /dev/null and b/TomatoLeafCare/app/src/main/res/drawable/ic_camera.png differ diff --git a/TomatoLeafCare/app/src/main/res/drawable/ic_circle_background.xml b/TomatoLeafCare/app/src/main/res/drawable/ic_circle_background.xml new file mode 100644 index 0000000..232c877 --- /dev/null +++ b/TomatoLeafCare/app/src/main/res/drawable/ic_circle_background.xml @@ -0,0 +1,7 @@ + + + + diff --git a/TomatoLeafCare/app/src/main/res/drawable/ic_close.png b/TomatoLeafCare/app/src/main/res/drawable/ic_close.png new file mode 100644 index 0000000..0ad89dd Binary files /dev/null and b/TomatoLeafCare/app/src/main/res/drawable/ic_close.png differ diff --git a/TomatoLeafCare/app/src/main/res/drawable/ic_delete.png b/TomatoLeafCare/app/src/main/res/drawable/ic_delete.png new file mode 100644 index 0000000..9b1d64d Binary files /dev/null and b/TomatoLeafCare/app/src/main/res/drawable/ic_delete.png differ diff --git a/TomatoLeafCare/app/src/main/res/drawable/ic_galeri.png b/TomatoLeafCare/app/src/main/res/drawable/ic_galeri.png new file mode 100644 index 0000000..110ceb1 Binary files /dev/null and b/TomatoLeafCare/app/src/main/res/drawable/ic_galeri.png differ diff --git a/TomatoLeafCare/app/src/main/res/drawable/ic_history.png b/TomatoLeafCare/app/src/main/res/drawable/ic_history.png new file mode 100644 index 0000000..922952f Binary files /dev/null and b/TomatoLeafCare/app/src/main/res/drawable/ic_history.png differ diff --git a/TomatoLeafCare/app/src/main/res/drawable/ic_home.png b/TomatoLeafCare/app/src/main/res/drawable/ic_home.png new file mode 100644 index 0000000..a5c0b12 Binary files /dev/null and b/TomatoLeafCare/app/src/main/res/drawable/ic_home.png differ diff --git a/TomatoLeafCare/app/src/main/res/drawable/ic_info.png b/TomatoLeafCare/app/src/main/res/drawable/ic_info.png new file mode 100644 index 0000000..004ef59 Binary files /dev/null and b/TomatoLeafCare/app/src/main/res/drawable/ic_info.png differ diff --git a/TomatoLeafCare/app/src/main/res/drawable/ic_launcher_background.xml b/TomatoLeafCare/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..ca3826a --- /dev/null +++ b/TomatoLeafCare/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TomatoLeafCare/app/src/main/res/drawable/ic_launcher_foreground.xml b/TomatoLeafCare/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 0000000..2b068d1 --- /dev/null +++ b/TomatoLeafCare/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/TomatoLeafCare/app/src/main/res/drawable/ic_note.png b/TomatoLeafCare/app/src/main/res/drawable/ic_note.png new file mode 100644 index 0000000..0c7aa5c Binary files /dev/null and b/TomatoLeafCare/app/src/main/res/drawable/ic_note.png differ diff --git a/TomatoLeafCare/app/src/main/res/drawable/ic_pindai.png b/TomatoLeafCare/app/src/main/res/drawable/ic_pindai.png new file mode 100644 index 0000000..e090579 Binary files /dev/null and b/TomatoLeafCare/app/src/main/res/drawable/ic_pindai.png differ diff --git a/TomatoLeafCare/app/src/main/res/drawable/icon.png b/TomatoLeafCare/app/src/main/res/drawable/icon.png new file mode 100644 index 0000000..8b8473a Binary files /dev/null and b/TomatoLeafCare/app/src/main/res/drawable/icon.png differ diff --git a/TomatoLeafCare/app/src/main/res/drawable/jamurdaun.jpeg b/TomatoLeafCare/app/src/main/res/drawable/jamurdaun.jpeg new file mode 100644 index 0000000..0580820 Binary files /dev/null and b/TomatoLeafCare/app/src/main/res/drawable/jamurdaun.jpeg differ diff --git a/TomatoLeafCare/app/src/main/res/drawable/lateblight.jpg b/TomatoLeafCare/app/src/main/res/drawable/lateblight.jpg new file mode 100644 index 0000000..1f41ac9 Binary files /dev/null and b/TomatoLeafCare/app/src/main/res/drawable/lateblight.jpg differ diff --git a/TomatoLeafCare/app/src/main/res/drawable/logo.png b/TomatoLeafCare/app/src/main/res/drawable/logo.png new file mode 100644 index 0000000..e9d5573 Binary files /dev/null and b/TomatoLeafCare/app/src/main/res/drawable/logo.png differ diff --git a/TomatoLeafCare/app/src/main/res/drawable/placeholder.png b/TomatoLeafCare/app/src/main/res/drawable/placeholder.png new file mode 100644 index 0000000..2f605df Binary files /dev/null and b/TomatoLeafCare/app/src/main/res/drawable/placeholder.png differ diff --git a/TomatoLeafCare/app/src/main/res/drawable/rounded_corner_bg.xml b/TomatoLeafCare/app/src/main/res/drawable/rounded_corner_bg.xml new file mode 100644 index 0000000..7b16e84 --- /dev/null +++ b/TomatoLeafCare/app/src/main/res/drawable/rounded_corner_bg.xml @@ -0,0 +1,6 @@ + + + + + diff --git a/TomatoLeafCare/app/src/main/res/drawable/sehat.jpg b/TomatoLeafCare/app/src/main/res/drawable/sehat.jpg new file mode 100644 index 0000000..adc9253 Binary files /dev/null and b/TomatoLeafCare/app/src/main/res/drawable/sehat.jpg differ diff --git a/TomatoLeafCare/app/src/main/res/drawable/tomato.png b/TomatoLeafCare/app/src/main/res/drawable/tomato.png new file mode 100644 index 0000000..c4c5279 Binary files /dev/null and b/TomatoLeafCare/app/src/main/res/drawable/tomato.png differ diff --git a/TomatoLeafCare/app/src/main/res/drawable/tomatoleafcare.png b/TomatoLeafCare/app/src/main/res/drawable/tomatoleafcare.png new file mode 100644 index 0000000..8ffcd69 Binary files /dev/null and b/TomatoLeafCare/app/src/main/res/drawable/tomatoleafcare.png differ diff --git a/TomatoLeafCare/app/src/main/res/drawable/viruskeriting.jpg b/TomatoLeafCare/app/src/main/res/drawable/viruskeriting.jpg new file mode 100644 index 0000000..c304119 Binary files /dev/null and b/TomatoLeafCare/app/src/main/res/drawable/viruskeriting.jpg differ diff --git a/TomatoLeafCare/app/src/main/res/drawable/virusmozaik.jpg b/TomatoLeafCare/app/src/main/res/drawable/virusmozaik.jpg new file mode 100644 index 0000000..02e55f6 Binary files /dev/null and b/TomatoLeafCare/app/src/main/res/drawable/virusmozaik.jpg differ diff --git a/TomatoLeafCare/app/src/main/res/layout/activity_main.xml b/TomatoLeafCare/app/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..4e93fd2 --- /dev/null +++ b/TomatoLeafCare/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,24 @@ + + + + + + + + diff --git a/TomatoLeafCare/app/src/main/res/layout/camera_fragment.xml b/TomatoLeafCare/app/src/main/res/layout/camera_fragment.xml new file mode 100644 index 0000000..7dda6a6 --- /dev/null +++ b/TomatoLeafCare/app/src/main/res/layout/camera_fragment.xml @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TomatoLeafCare/app/src/main/res/layout/card_slide_1.xml b/TomatoLeafCare/app/src/main/res/layout/card_slide_1.xml new file mode 100644 index 0000000..f0e53c9 --- /dev/null +++ b/TomatoLeafCare/app/src/main/res/layout/card_slide_1.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/TomatoLeafCare/app/src/main/res/layout/card_slide_2.xml b/TomatoLeafCare/app/src/main/res/layout/card_slide_2.xml new file mode 100644 index 0000000..00a0a37 --- /dev/null +++ b/TomatoLeafCare/app/src/main/res/layout/card_slide_2.xml @@ -0,0 +1,155 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TomatoLeafCare/app/src/main/res/layout/disease_detail_fragment.xml b/TomatoLeafCare/app/src/main/res/layout/disease_detail_fragment.xml new file mode 100644 index 0000000..883dd17 --- /dev/null +++ b/TomatoLeafCare/app/src/main/res/layout/disease_detail_fragment.xml @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TomatoLeafCare/app/src/main/res/layout/disease_item.xml b/TomatoLeafCare/app/src/main/res/layout/disease_item.xml new file mode 100644 index 0000000..93a90f3 --- /dev/null +++ b/TomatoLeafCare/app/src/main/res/layout/disease_item.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + diff --git a/TomatoLeafCare/app/src/main/res/layout/history_detail_fragment.xml b/TomatoLeafCare/app/src/main/res/layout/history_detail_fragment.xml new file mode 100644 index 0000000..7d0d44b --- /dev/null +++ b/TomatoLeafCare/app/src/main/res/layout/history_detail_fragment.xml @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TomatoLeafCare/app/src/main/res/layout/history_fragment.xml b/TomatoLeafCare/app/src/main/res/layout/history_fragment.xml new file mode 100644 index 0000000..db3b19e --- /dev/null +++ b/TomatoLeafCare/app/src/main/res/layout/history_fragment.xml @@ -0,0 +1,28 @@ + + + + + + + + + + diff --git a/TomatoLeafCare/app/src/main/res/layout/history_item.xml b/TomatoLeafCare/app/src/main/res/layout/history_item.xml new file mode 100644 index 0000000..a9b3ff3 --- /dev/null +++ b/TomatoLeafCare/app/src/main/res/layout/history_item.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + diff --git a/TomatoLeafCare/app/src/main/res/layout/home_fragment.xml b/TomatoLeafCare/app/src/main/res/layout/home_fragment.xml new file mode 100644 index 0000000..1c8e167 --- /dev/null +++ b/TomatoLeafCare/app/src/main/res/layout/home_fragment.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TomatoLeafCare/app/src/main/res/layout/note_fragment.xml b/TomatoLeafCare/app/src/main/res/layout/note_fragment.xml new file mode 100644 index 0000000..37eb470 --- /dev/null +++ b/TomatoLeafCare/app/src/main/res/layout/note_fragment.xml @@ -0,0 +1,27 @@ + + + + + + + + + + diff --git a/TomatoLeafCare/app/src/main/res/layout/splash_screen.xml b/TomatoLeafCare/app/src/main/res/layout/splash_screen.xml new file mode 100644 index 0000000..6f755e3 --- /dev/null +++ b/TomatoLeafCare/app/src/main/res/layout/splash_screen.xml @@ -0,0 +1,25 @@ + + + + + + + diff --git a/TomatoLeafCare/app/src/main/res/menu/nav_menu.xml b/TomatoLeafCare/app/src/main/res/menu/nav_menu.xml new file mode 100644 index 0000000..e9accfd --- /dev/null +++ b/TomatoLeafCare/app/src/main/res/menu/nav_menu.xml @@ -0,0 +1,21 @@ +

+ + + + + + + + diff --git a/TomatoLeafCare/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/TomatoLeafCare/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..c4a603d --- /dev/null +++ b/TomatoLeafCare/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/TomatoLeafCare/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/TomatoLeafCare/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..c4a603d --- /dev/null +++ b/TomatoLeafCare/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/TomatoLeafCare/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/TomatoLeafCare/app/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000..ee0775d Binary files /dev/null and b/TomatoLeafCare/app/src/main/res/mipmap-hdpi/ic_launcher.webp differ diff --git a/TomatoLeafCare/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp b/TomatoLeafCare/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000..cd48dfb Binary files /dev/null and b/TomatoLeafCare/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp differ diff --git a/TomatoLeafCare/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/TomatoLeafCare/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp new file mode 100644 index 0000000..93bfbd5 Binary files /dev/null and b/TomatoLeafCare/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp differ diff --git a/TomatoLeafCare/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/TomatoLeafCare/app/src/main/res/mipmap-mdpi/ic_launcher.webp new file mode 100644 index 0000000..95e8fd4 Binary files /dev/null and b/TomatoLeafCare/app/src/main/res/mipmap-mdpi/ic_launcher.webp differ diff --git a/TomatoLeafCare/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp b/TomatoLeafCare/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000..e26971b Binary files /dev/null and b/TomatoLeafCare/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp differ diff --git a/TomatoLeafCare/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/TomatoLeafCare/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp new file mode 100644 index 0000000..f550120 Binary files /dev/null and b/TomatoLeafCare/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp differ diff --git a/TomatoLeafCare/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/TomatoLeafCare/app/src/main/res/mipmap-xhdpi/ic_launcher.webp new file mode 100644 index 0000000..8b3e72d Binary files /dev/null and b/TomatoLeafCare/app/src/main/res/mipmap-xhdpi/ic_launcher.webp differ diff --git a/TomatoLeafCare/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp b/TomatoLeafCare/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000..6990e74 Binary files /dev/null and b/TomatoLeafCare/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp differ diff --git a/TomatoLeafCare/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/TomatoLeafCare/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp new file mode 100644 index 0000000..3900cdd Binary files /dev/null and b/TomatoLeafCare/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp differ diff --git a/TomatoLeafCare/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/TomatoLeafCare/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp new file mode 100644 index 0000000..61a85d6 Binary files /dev/null and b/TomatoLeafCare/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp differ diff --git a/TomatoLeafCare/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp b/TomatoLeafCare/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000..2b6a728 Binary files /dev/null and b/TomatoLeafCare/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp differ diff --git a/TomatoLeafCare/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/TomatoLeafCare/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000..cc073d6 Binary files /dev/null and b/TomatoLeafCare/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp differ diff --git a/TomatoLeafCare/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/TomatoLeafCare/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp new file mode 100644 index 0000000..c27e430 Binary files /dev/null and b/TomatoLeafCare/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ diff --git a/TomatoLeafCare/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp b/TomatoLeafCare/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000..d4e9d11 Binary files /dev/null and b/TomatoLeafCare/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp differ diff --git a/TomatoLeafCare/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/TomatoLeafCare/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000..1763c5f Binary files /dev/null and b/TomatoLeafCare/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp differ diff --git a/TomatoLeafCare/app/src/main/res/values/colors.xml b/TomatoLeafCare/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..04d5c5f --- /dev/null +++ b/TomatoLeafCare/app/src/main/res/values/colors.xml @@ -0,0 +1,23 @@ + + + #FFBB86FC + #FF6200EE + #FF3700B3 + #FF03DAC5 + #FF018786 + #FF000000 + #FFFFFFFF + + #626F47 + #A4B465 + #FFCF50 + #FEFAE0 + + #FFCF50 + #626F47 + #00FF00 + #FF0000 + #0000FF + + + \ No newline at end of file diff --git a/TomatoLeafCare/app/src/main/res/values/dimens.xml b/TomatoLeafCare/app/src/main/res/values/dimens.xml new file mode 100644 index 0000000..28178e7 --- /dev/null +++ b/TomatoLeafCare/app/src/main/res/values/dimens.xml @@ -0,0 +1,4 @@ + + + 16dp + diff --git a/TomatoLeafCare/app/src/main/res/values/strings.xml b/TomatoLeafCare/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..c7e4053 --- /dev/null +++ b/TomatoLeafCare/app/src/main/res/values/strings.xml @@ -0,0 +1,32 @@ + + Tomato Leaf Care + Placeholder gambar + Pastikan foto yang anda kirimkan memiliki kualitas yang cukup jelas dan hindari foto yang buram, terpotong atau terlalu gelap sehingga sulit untuk mengidentifikasi penyakit daun dengan jelas. + Kamera + Galeri + Logo + Masukkan gambar penyakit daun\nyang ingin dideteksi + Pindai + LogoTomatoLeafCare + Disease Image + Nama Penyakit + Penyebab + Gejala + Dampak + Solusi + gambar penyakit daun + Deskripsi singkat penyakit + Gambar riwayat penyakit + Tanggal + Hapus riwayat + 🌱 Tanam, Rawat, Nikmati! 🅠+ 🌱 Tanam, Rawat, Panen! 🅠+ Rawat tanaman tomatmu dan panen hasil terbaik! + Jenis Penyakit Daun Tomat + Online + Offline + backbutton + gambar-tomat + Lihat lebih banyak + selengkapnya + \ No newline at end of file diff --git a/TomatoLeafCare/app/src/main/res/values/styles.xml b/TomatoLeafCare/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..90e3b96 --- /dev/null +++ b/TomatoLeafCare/app/src/main/res/values/styles.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/TomatoLeafCare/app/src/main/res/values/themes.xml b/TomatoLeafCare/app/src/main/res/values/themes.xml new file mode 100644 index 0000000..be5d554 --- /dev/null +++ b/TomatoLeafCare/app/src/main/res/values/themes.xml @@ -0,0 +1,14 @@ + + + + + + + diff --git a/TomatoLeafCare/app/src/main/res/xml/backup_rules.xml b/TomatoLeafCare/app/src/main/res/xml/backup_rules.xml new file mode 100644 index 0000000..fa0f996 --- /dev/null +++ b/TomatoLeafCare/app/src/main/res/xml/backup_rules.xml @@ -0,0 +1,13 @@ + + + + \ No newline at end of file diff --git a/TomatoLeafCare/app/src/main/res/xml/data_extraction_rules.xml b/TomatoLeafCare/app/src/main/res/xml/data_extraction_rules.xml new file mode 100644 index 0000000..9ee9997 --- /dev/null +++ b/TomatoLeafCare/app/src/main/res/xml/data_extraction_rules.xml @@ -0,0 +1,19 @@ + + + + + + + \ No newline at end of file diff --git a/TomatoLeafCare/app/src/main/res/xml/file_paths.xml b/TomatoLeafCare/app/src/main/res/xml/file_paths.xml new file mode 100644 index 0000000..da52945 --- /dev/null +++ b/TomatoLeafCare/app/src/main/res/xml/file_paths.xml @@ -0,0 +1,6 @@ + + + + diff --git a/TomatoLeafCare/app/src/main/res/xml/network_security_config.xml b/TomatoLeafCare/app/src/main/res/xml/network_security_config.xml new file mode 100644 index 0000000..cfa6a05 --- /dev/null +++ b/TomatoLeafCare/app/src/main/res/xml/network_security_config.xml @@ -0,0 +1,6 @@ + + + + robotika.upnvj.ac.id + + diff --git a/TomatoLeafCare/app/src/test/java/com/example/tomatoleafcare/ExampleUnitTest.kt b/TomatoLeafCare/app/src/test/java/com/example/tomatoleafcare/ExampleUnitTest.kt new file mode 100644 index 0000000..0a3a79f --- /dev/null +++ b/TomatoLeafCare/app/src/test/java/com/example/tomatoleafcare/ExampleUnitTest.kt @@ -0,0 +1,17 @@ +package com.example.tomatoleafcare + +import org.junit.Test + +import org.junit.Assert.* + +/** + * Example local unit test, which will execute on the development machine (host). + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +class ExampleUnitTest { + @Test + fun addition_isCorrect() { + assertEquals(4, 2 + 2) + } +} \ No newline at end of file diff --git a/TomatoLeafCare/build.gradle.kts b/TomatoLeafCare/build.gradle.kts new file mode 100644 index 0000000..f74b04b --- /dev/null +++ b/TomatoLeafCare/build.gradle.kts @@ -0,0 +1,5 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +plugins { + alias(libs.plugins.android.application) apply false + alias(libs.plugins.jetbrains.kotlin.android) apply false +} \ No newline at end of file diff --git a/TomatoLeafCare/gradle.properties b/TomatoLeafCare/gradle.properties new file mode 100644 index 0000000..20e2a01 --- /dev/null +++ b/TomatoLeafCare/gradle.properties @@ -0,0 +1,23 @@ +# Project-wide Gradle settings. +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. For more details, visit +# https://developer.android.com/r/tools/gradle-multi-project-decoupled-projects +# org.gradle.parallel=true +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app's APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +android.useAndroidX=true +# Kotlin code style for this project: "official" or "obsolete": +kotlin.code.style=official +# Enables namespacing of each library's R class so that its R class includes only the +# resources declared in the library itself and none from the library's dependencies, +# thereby reducing the size of the R class for that library +android.nonTransitiveRClass=true \ No newline at end of file diff --git a/TomatoLeafCare/gradle/libs.versions.toml b/TomatoLeafCare/gradle/libs.versions.toml new file mode 100644 index 0000000..1484d35 --- /dev/null +++ b/TomatoLeafCare/gradle/libs.versions.toml @@ -0,0 +1,31 @@ +[versions] +agp = "8.4.0" +kotlin = "1.9.0" +coreKtx = "1.15.0" +junit = "4.13.2" +junitVersion = "1.2.1" +espressoCore = "3.6.1" +lifecycleRuntimeKtx = "2.8.7" +activityCompose = "1.10.1" +composeBom = "2023.08.00" + +[libraries] +androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } +junit = { group = "junit", name = "junit", version.ref = "junit" } +androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" } +androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" } +androidx-lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "lifecycleRuntimeKtx" } +androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "activityCompose" } +androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "composeBom" } +androidx-ui = { group = "androidx.compose.ui", name = "ui" } +androidx-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics" } +androidx-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" } +androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" } +androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" } +androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" } +androidx-material3 = { group = "androidx.compose.material3", name = "material3" } + +[plugins] +android-application = { id = "com.android.application", version.ref = "agp" } +jetbrains-kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } + diff --git a/TomatoLeafCare/gradle/wrapper/gradle-wrapper.jar b/TomatoLeafCare/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..e708b1c Binary files /dev/null and b/TomatoLeafCare/gradle/wrapper/gradle-wrapper.jar differ diff --git a/TomatoLeafCare/gradle/wrapper/gradle-wrapper.properties b/TomatoLeafCare/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..fbca850 --- /dev/null +++ b/TomatoLeafCare/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Wed Mar 12 13:51:49 WIB 2025 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/TomatoLeafCare/gradlew b/TomatoLeafCare/gradlew new file mode 100644 index 0000000..4f906e0 --- /dev/null +++ b/TomatoLeafCare/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/TomatoLeafCare/gradlew.bat b/TomatoLeafCare/gradlew.bat new file mode 100644 index 0000000..107acd3 --- /dev/null +++ b/TomatoLeafCare/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/TomatoLeafCare/local.properties b/TomatoLeafCare/local.properties new file mode 100644 index 0000000..e03a9d1 --- /dev/null +++ b/TomatoLeafCare/local.properties @@ -0,0 +1,10 @@ +## This file is automatically generated by Android Studio. +# Do not modify this file -- YOUR CHANGES WILL BE ERASED! +# +# This file should *NOT* be checked into Version Control Systems, +# as it contains information specific to your local configuration. +# +# Location of the SDK. This is only used by Gradle. +# For customization when using a Version Control System, please read the +# header note. +sdk.dir=C\:\\Users\\Lenovo\\AppData\\Local\\Android\\Sdk \ No newline at end of file diff --git a/TomatoLeafCare/settings.gradle.kts b/TomatoLeafCare/settings.gradle.kts new file mode 100644 index 0000000..a9ce495 --- /dev/null +++ b/TomatoLeafCare/settings.gradle.kts @@ -0,0 +1,24 @@ +pluginManagement { + repositories { + google { + content { + includeGroupByRegex("com\\.android.*") + includeGroupByRegex("com\\.google.*") + includeGroupByRegex("androidx.*") + } + } + mavenCentral() + gradlePluginPortal() + } +} +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { + google() + mavenCentral() + } +} + +rootProject.name = "Tomato Leaf Care" +include(":app") + \ No newline at end of file