Professional Documents
Culture Documents
DISEASE DETECTION
INTRODUCTION
The rice leaf suffers from several bacterial, viral, or fungal diseases and these diseases reduce
rice production significantly. To sustain rice demand for a vast population globally.The rice
leaves related diseases often pose threats to the sustainable production of rice affecting many
farmers around the world. Early diagnosis and appropriate remedy of the rice leaf infection is
crucial in facilitating healthy growth of the rice plants to ensure adequate supply and food
security to the rapidly increasing population.
Classes
• Leaf smut
• Brown spot
• Bacterial leaf blight
PYTHON IMPLIMENTATION
IMPORTING NECESSARY LIBRARY
import numpy as np
import keras
from tensorflow import keras
import tensorflow as tf
from tensorflow.keras import layers
from keras.preprocessing.image import ImageDataGenerator
from keras.preprocessing.image import img_to_array
import matplotlib.pyplot as plt
%matplotlib inline
import random
import cv2
import os
from PIL import Image
import warnings
warnings.filterwarnings('ignore')
Mounted at /content/drive
val_datagen = ImageDataGenerator(rescale=(1./255))
train_generator = train_datagen.flow_from_directory(
train_dir,
target_size=(180,180),
batch_size=16,
color_mode='rgb',
class_mode='categorical')
val_generator = val_datagen.flow_from_directory(
validation_dir,
target_size=(180,180),
batch_size=16,
color_mode='rgb',
class_mode='categorical')
sp.set_title(class_names[title[i].tolist().index(1)],fontsize=16)
plt.imshow(ims[i])
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d (Conv2D) (None, 178, 178, 32) 896
=================================================================
Total params: 450,627
Trainable params: 450,627
Non-trainable params: 0
_________________________________________________________________
COMPILE MODEL
from tensorflow.keras import optimizers
model.compile(
loss='categorical_crossentropy',
optimizer='adam',
metrics=['accuracy']
)
TRAIN MODEL
# Fitting the data
history = model.fit_generator(train_generator,
epochs=30, # epochs used to how many itertion (1fp + loss + 1bp)
validation_data = val_generator,
)
Epoch 1/30
6/6 [==============================] - 4s 669ms/step - loss: 0.6364 -
accuracy: 0.6667 - val_loss: 0.4493 - val_accuracy: 0.8333
Epoch 2/30
6/6 [==============================] - 4s 618ms/step - loss: 0.5945 -
accuracy: 0.6875 - val_loss: 0.3712 - val_accuracy: 0.9167
Epoch 3/30
6/6 [==============================] - 4s 601ms/step - loss: 0.5315 -
accuracy: 0.7812 - val_loss: 0.3293 - val_accuracy: 1.0000
Epoch 4/30
6/6 [==============================] - 4s 614ms/step - loss: 0.5108 -
accuracy: 0.7604 - val_loss: 0.5318 - val_accuracy: 0.6667
Epoch 5/30
6/6 [==============================] - 4s 621ms/step - loss: 0.7039 -
accuracy: 0.7500 - val_loss: 0.5219 - val_accuracy: 0.7500
Epoch 6/30
6/6 [==============================] - 4s 622ms/step - loss: 0.6213 -
accuracy: 0.7292 - val_loss: 1.1733 - val_accuracy: 0.6667
Epoch 7/30
6/6 [==============================] - 4s 614ms/step - loss: 0.5475 -
accuracy: 0.7500 - val_loss: 0.3977 - val_accuracy: 0.7500
Epoch 8/30
6/6 [==============================] - 4s 624ms/step - loss: 0.5748 -
accuracy: 0.7188 - val_loss: 0.3949 - val_accuracy: 0.9167
Epoch 9/30
6/6 [==============================] - 4s 618ms/step - loss: 0.5453 -
accuracy: 0.7500 - val_loss: 0.6492 - val_accuracy: 0.5833
Epoch 10/30
6/6 [==============================] - 4s 627ms/step - loss: 0.5564 -
accuracy: 0.7812 - val_loss: 0.8423 - val_accuracy: 0.8333
Epoch 11/30
6/6 [==============================] - 4s 617ms/step - loss: 0.4903 -
accuracy: 0.7812 - val_loss: 0.8719 - val_accuracy: 0.6667
Epoch 12/30
6/6 [==============================] - 4s 597ms/step - loss: 0.4593 -
accuracy: 0.7604 - val_loss: 1.3835 - val_accuracy: 0.7500
Epoch 13/30
6/6 [==============================] - 4s 603ms/step - loss: 0.3947 -
accuracy: 0.8021 - val_loss: 0.7953 - val_accuracy: 0.8333
Epoch 14/30
6/6 [==============================] - 4s 611ms/step - loss: 0.3515 -
accuracy: 0.8333 - val_loss: 0.3332 - val_accuracy: 0.8333
Epoch 15/30
6/6 [==============================] - 4s 597ms/step - loss: 0.3721 -
accuracy: 0.8125 - val_loss: 0.7977 - val_accuracy: 0.8333
Epoch 16/30
6/6 [==============================] - 4s 621ms/step - loss: 0.4631 -
accuracy: 0.8021 - val_loss: 0.7034 - val_accuracy: 0.8333
Epoch 17/30
6/6 [==============================] - 4s 634ms/step - loss: 0.3942 -
accuracy: 0.8125 - val_loss: 0.2659 - val_accuracy: 0.9167
Epoch 18/30
6/6 [==============================] - 4s 623ms/step - loss: 0.3746 -
accuracy: 0.8229 - val_loss: 0.2807 - val_accuracy: 0.8333
Epoch 19/30
6/6 [==============================] - 4s 620ms/step - loss: 0.3677 -
accuracy: 0.8438 - val_loss: 0.6246 - val_accuracy: 0.7500
Epoch 20/30
6/6 [==============================] - 4s 617ms/step - loss: 0.4460 -
accuracy: 0.7812 - val_loss: 0.2445 - val_accuracy: 0.9167
Epoch 21/30
6/6 [==============================] - 4s 623ms/step - loss: 0.3715 -
accuracy: 0.8333 - val_loss: 0.2997 - val_accuracy: 0.8333
Epoch 22/30
6/6 [==============================] - 4s 616ms/step - loss: 0.3389 -
accuracy: 0.8646 - val_loss: 0.2974 - val_accuracy: 0.8333
Epoch 23/30
6/6 [==============================] - 4s 614ms/step - loss: 0.3231 -
accuracy: 0.8542 - val_loss: 1.9464 - val_accuracy: 0.5833
Epoch 24/30
6/6 [==============================] - 4s 620ms/step - loss: 0.3299 -
accuracy: 0.8646 - val_loss: 0.1750 - val_accuracy: 0.9167
Epoch 25/30
6/6 [==============================] - 4s 603ms/step - loss: 0.3549 -
accuracy: 0.8646 - val_loss: 0.3840 - val_accuracy: 0.8333
Epoch 26/30
6/6 [==============================] - 4s 622ms/step - loss: 0.4918 -
accuracy: 0.7917 - val_loss: 0.4623 - val_accuracy: 0.8333
Epoch 27/30
6/6 [==============================] - 4s 606ms/step - loss: 0.4032 -
accuracy: 0.8333 - val_loss: 0.4246 - val_accuracy: 0.7500
Epoch 28/30
6/6 [==============================] - 4s 630ms/step - loss: 0.4361 -
accuracy: 0.8750 - val_loss: 2.5044 - val_accuracy: 0.8333
Epoch 29/30
6/6 [==============================] - 4s 621ms/step - loss: 0.3579 -
accuracy: 0.8750 - val_loss: 0.3632 - val_accuracy: 0.8333
Epoch 30/30
6/6 [==============================] - 4s 615ms/step - loss: 0.3510 -
accuracy: 0.8438 - val_loss: 0.2692 - val_accuracy: 0.9167
AFTER TRAINING
• Validation accuracy.91.67%
• Training accuracy.84.38%
MODEL SAVING
model.save("model.h5")
=================================================================
Total params: 5,697,859
Trainable params: 5,697,859
Non-trainable params: 0
_________________________________________________________________
test_generator = test_datagen.flow_from_directory(
test_dir,
target_size=(180,180),
batch_size=16,
color_mode='rgb',
class_mode='categorical')
model.evaluate(test_generator)
[0.5340743660926819, 0.9166666865348816]
• Here the loss is 0.53 and the accuracy of the model is 0.91 percent means 91%.