• Categories
  • Recent
  • Popular
  • Tags
  • Users
  • Groups
  • Register
  • Login
MakerGram Logo

MakerGram

  • Register
  • Login
  • Search
  • Categories
  • Recent
  • Popular
  • Tags
  • Users
  • Groups

[Solved] leaf disease detection using keras

General Discussion
4
18
4.3k
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A
    arunksoman @sreu13 last edited by 14 Mar 2020, 06:38

    @sreu13 I didn't mean that. I said if you are trying to run your code on RasPi4 or any other version of RasPi, you have to do some optimization on the code for better performance. Then Multiprocessing and threading Module comes into the picture.

    1 Reply Last reply Reply Quote 0
    • S
      sreu13 @arunksoman last edited by 14 Mar 2020, 07:12

      @arunksoman
      i followed your proceedure to and installed the requirements.txt file
      after running the code, I got the following error

      File "C:\Users\admin\Anaconda3\envs\test2\lib\site-packages\scipy\special\basic.py", line 15, in <module>
      from ._ufuncs import (ellipkm1, mathieu_a, mathieu_b, iv, jv, gamma,

      ImportError: cannot import name 'ellipkm1'

      A 1 Reply Last reply 14 Mar 2020, 07:35 Reply Quote 0
      • A
        arunksoman @sreu13 last edited by arunksoman 14 Mar 2020, 08:02 14 Mar 2020, 07:35

        @sreu13 I didn't tell you to install anything via anaconda package manager. You have to uninstall those things first and install python 3.6.5. It was the first step.You have to read things carefully before executing anything.

        1 Reply Last reply Reply Quote 0
        • salmanfaris
          salmanfaris last edited by 16 Mar 2020, 15:26

          @sreu13 how is the progress?

          S 1 Reply Last reply 29 Mar 2020, 11:11 Reply Quote 0
          • 13 days later
          • S
            sreu13 @salmanfaris last edited by 29 Mar 2020, 11:11

            @salmanfaris i know there was a delay in replies, i thought of finishing the project and replying here!....
            i ddnt get the exact reason, but the problem was solved

            what i did was , label binarized was working fine when i did created the training model. So i loaded my training model and deleted the script for the training procedure. i ended up with the code given below. and it worked up fine.

            import numpy as np
            import pickle
            import cv2
            from os import listdir
            from sklearn.preprocessing import LabelBinarizer
            from keras.models import Sequential
            from keras.layers.normalization import BatchNormalization
            from keras.layers.convolutional import Conv2D
            from keras.layers.convolutional import MaxPooling2D
            from keras.layers.core import Activation, Flatten, Dropout, Dense
            from keras import backend as K
            from keras.preprocessing.image import ImageDataGenerator
            from keras.optimizers import Adam
            from keras.preprocessing import image
            from keras.preprocessing.image import img_to_array
            from sklearn.preprocessing import MultiLabelBinarizer
            from sklearn.model_selection import train_test_split
            import matplotlib.pyplot as plt
            
            EPOCHS = 25
            INIT_LR = 1e-3
            BS = 32
            default_image_size = tuple((256, 256))
            image_size = 0
            directory_root = 'PlantVillage'
            width=256
            height=256
            depth=3
            
            #Function to convert images to array
            def convert_image_to_array(image_dir):
                try:
                    image = cv2.imread(image_dir)
                    if image is not None :
                        image = cv2.resize(image, default_image_size)   
                        return img_to_array(image)
                    else :
                        return np.array([])
                except Exception as e:
                    print(f"Error : {e}")
                    return None
            
            listdir(directory_root)
            
            image_list, label_list = [], []
            try:
                print("[INFO] Loading images ...")
                root_dir = listdir(directory_root)
                for directory in root_dir :
                    # remove .DS_Store from list
                    if directory == ".DS_Store" :
                        root_dir.remove(directory)
            
                for plant_folder in root_dir :
                    plant_disease_folder_list = listdir(f"{directory_root}/{plant_folder}")
                    
                    for disease_folder in plant_disease_folder_list :
                        # remove .DS_Store from list
                        if disease_folder == ".DS_Store" :
                            plant_disease_folder_list.remove(disease_folder)
            
                    for plant_disease_folder in plant_disease_folder_list:
                        print(f"[INFO] Processing {plant_disease_folder} ...")
                        plant_disease_image_list = listdir(f"{directory_root}/{plant_folder}/{plant_disease_folder}")
                       
                            
                        for single_plant_disease_image in plant_disease_image_list :
                            if single_plant_disease_image == ".DS_Store" :
                                plant_disease_image_list.remove(single_plant_disease_image)
            
                        for image in plant_disease_image_list[:200]:
                            image_directory = f"{directory_root}/{plant_folder}/{plant_disease_folder}/{image}"
                            if image_directory.endswith(".jpg") == True or image_directory.endswith(".JPG") == True:
                                image_list.append(convert_image_to_array(image_directory))
                                label_list.append(plant_disease_folder)
                print("[INFO] Image loading completed")  
            except Exception as e:
                print(f"Error : {e}")
            
            image_size = len(image_list)
            
            #Transform Image Labels uisng Scikit Learn's LabelBinarizer
            label_binarizer = LabelBinarizer()
            image_labels = label_binarizer.fit_transform(label_list)
            pickle.dump(label_binarizer,open('label_transform.pkl', 'wb'))
            n_classes = len(label_binarizer.classes_)
            
            #Print the classes
            print(label_binarizer.classes_)
            
            #load saved pickle model
            loaded_model = pickle.load(open('cnn_model.pkl', 'rb'))
            model_disease=loaded_model
            
            
            #load plant leaf image
            image_dir="plantdisease/Validation_Set/Potato___Early_blight/1d301622-e359-49d5-b4ca-6837f254fd1b___RS_Early.B 6719.JPG"
            
            #convert leaf image to arrays
            im=convert_image_to_array(image_dir)
            np_image_li = np.array(im, dtype=np.float16) / 225.0
            npp_image = np.expand_dims(np_image_li, axis=0)
            
            result=model_disease.predict(npp_image)
            print(result)
            
            #printing result
            itemindex = np.where(result==np.max(result))
            print("probability:"+str(np.max(result))+"\n"+label_binarizer.classes_[itemindex[1][0]])
            
            1 Reply Last reply Reply Quote 1
            15 out of 18
            • First post
              15/18
              Last post

            Recent Posts

            • D

              Signal Hunt: An ESP-NOW Workshop & Treasure Hunt

              Hello everyone! We’re planning on organizing a two-phase event that explores device-to-device communication using ESP-NOW protocol :

              Workshop: Participants learn to build and program ESP32-based receivers with a web interface that directly exchange signal data using ESP-NOW for RSSI-based distance approximation.

              Signal Hunt Competition: Equipped with these receivers, participants will track hidden ESP32 transmitters scattered around the campus, each with distinct point values.

              Current hardware setup:
              Reciever(one per team):
              Esp32 ~ 360rs
              9v battery = 20rs
              9v battery clip= 5rs
              buck converter (MP1584 or LM2596) ~ 45rs
              Perfboard + male to female berg strip ~30rs
              Total per reciever ~ 460rs
              Transmitters :6
              Components same as recievers = 460*6~2760rs

              (using non-rechargeable batteries to reduce cost,
              will using a 7805 voltage regulator IC be a viable way to reduce cost further?)

              We’d love your suggestions on ways to simplify hardware, reducing the cost, secure partnerships and funding, or enhance the interactive elements. Thank you, looking forward to any ideas that can help make the event engaging and successful!

              5 Jul 2025, 17:54 • read more
            • R

              I am trying to set up a janus webrtc to stream an RTSP to an HTML page.
              I have followed the getting-started steps by Janus-gateway official github repo.

              Since I am new to web development. I do not understand how to host the Webrtc server. can anyone guide me to set up an HTML page that can display a video stream from an RTSP server using janus webrtc?

              5 Jun 2024, 12:06 • read more
            • @zainmuhammed Can try capturing the GPS when the device is starting the loop instead after joining the LoRaWAN and see?

              You can put the GPS value on top of the loop or setup function.

              Also, what kind of gateway are you using? Is it configured okay, OTA is done?

              12 Apr 2024, 09:18 • read more
            • @salmanfaris Today I tried after connecting a 18650 cell,
              WhatsApp Image 2024-04-12 at 10.40.06_c7d1947e.jpg WhatsApp Image 2024-04-12 at 10.40.05_897b8bb6.jpg
              Data getting in console after integration of both lora and gps.
              3f45cfe7-0061-4328-8c55-ef0a73385203-image.png
              here you can see that GPS value is 0,0. also in my previous post you can see that GPS value is not reading.
              Also the status LED is active after it is connected to the satellite.

              12 Apr 2024, 05:25 • read more
            • Hi @zainmuhammed ,

              Can you share the GPS and LoRa output when it’s working?

              Also can try capturing the GPS when the device is starting the loop instead after joining the LoRaWAN and see?

              Also make sure the device provides have enough to modules. The GPS need more power when you cold start.

              11 Apr 2024, 16:05 • read more
            By MakerGram | A XiStart Initiative | Built with ♥ NodeBB
            Copyright © 2023 MakerGram, All rights reserved.
            Privacy Policy | Terms & Conditions | Disclaimer | Code of Conduct