Source Code
Source Code
import os
import cv2
import numpy as np
import tensorflow as tf
drive.mount('/content/drive')
# Define categories
def preprocess_image(img_path):
# Apply GrabCut
# Apply CLAHE
# Normalize
return img_final
X, y = [], []
processed_img = preprocess_image(img_path)
X.append(processed_img)
y.append(label)
X = np.array(X)
y = np.array(y)
y = to_categorical(y, num_classes=len(categories))
# Split dataset
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2,
random_state=42)
# Feature extraction
x = base_model.output
x = GlobalAveragePooling2D()(x)
# Extract features
X_train_features = feature_extractor.predict(X_train)
X_test_features = feature_extractor.predict(X_test)
efficientnet_model.trainable = False
mobilenet_model.trainable = False
# Function to build the ensemble model
def build_ensemble():
inputs = tf.keras.Input(shape=(X_train_features.shape[1],))
# EfficientNet branch
eff_x = Dropout(0.3)(eff_x)
# MobileNet branch
mob_x = Dropout(0.3)(mob_x)
# Combine predictions
return model
ensemble_model = build_ensemble()
# Compile model
ensemble_model.compile(optimizer='adam', loss='categorical_crossentropy',
metrics=['accuracy'])
# Train model
history = ensemble_model.fit(X_train_features, y_train, epochs=20,
validation_data=(X_test_features, y_test), batch_size=8)
# Imports
import cv2
import numpy as np
import tensorflow as tf
import os
import skfuzzy as fuzz
drive.mount('/content/drive')
# Class labels
pesticide_mapping = {
'Aphids': {
'moderate': ('Imidacloprid 17.8% SL', '3 ml/liter', 'Apply once every 7 days'),
'severe': ('Thiamethoxam 25% WG', '4 ml/liter', 'Apply once every 5 days')
},
'Bacterial Blight': {
},
'Leaf Spot': {
'mild': ('Mancozeb 75% WP', '2.5 g/liter', 'Apply once every 10 days'),
},
'Healthy': {
def preprocess_image(image_path):
image = cv2.imread(image_path)
return image
# Feature extraction
def extract_features(image):
resnet_features = resnet_model.predict(image)
efficientnet_features = efficientnet_model.predict(image)
mobilenet_features = mobilenet_model.predict(image)
def build_model():
resnet_flatten = Flatten()(resnet_model.output)
efficientnet_flatten = Flatten()(efficientnet_model.output)
mobilenet_flatten = Flatten()(mobilenet_model.output)
model.compile(optimizer="adam", loss="categorical_crossentropy",
metrics=["accuracy"])
return model
severity_input