MakerGram Logo

    MakerGram

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

    [Solved] leaf disease detection using keras

    General Discussion
    4
    18
    3386
    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 last edited by

      Could you please follow my steps:

      1. Uninstall your current Python 3.7 version
      2. Install Python 3.6.5
      3. If you are using spyder editor make a change to vscode.
      4. Go to integrated terminal of vscode and create a virtual environment
      python -m venv venv
      
      1. Activate your virtual environment
      .\venv\Scripts\activate
      
      1. Create a requirements.txt over your current working directory. Contents for requirements.txt given below:
      h5py==2.8.0
      imutils==0.5.1
      Keras==2.2.4
      Keras-Applications==1.0.6
      Keras-Preprocessing==1.0.5
      kiwisolver==1.0.1
      matplotlib==3.0.2
      numpy==1.15.3
      opencv-contrib-python==3.4.3.18
      Pillow==5.3.0
      PyWavelets==1.0.1
      scikit-image==0.14.1
      scikit-learn==0.20.0
      scipy==1.1.0
      six==1.11.0
      sklearn==0.0
      tensorboard==1.12.0
      tensorflow==1.12.0
      termcolor==1.1.0
      toolz==0.9.0
      
      1. Then install necessary packages using requirements.txt file
      pip install -r requirements.txt
      
      1. Then run your code within this venv and say what happened as reply here.
      S 2 Replies Last reply Reply Quote 0
      • S
        sreu13 @SuperGops last edited by

        @SuperGops
        i also have another pickle file "label_transform", which I got as an output from referring the initial code from gaggle, is there any use of this file?

        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_)
        

        Kaggle >https://www.kaggle.com/emmarex/plant-disease-detection-using-keras/data

        1 Reply Last reply Reply Quote 0
        • S
          sreu13 @arunksoman last edited by

          @arunksoman
          i'll follow this proceedure, but would I be able to deploy this code in raspberry pi 4?

          A 1 Reply Last reply Reply Quote 0
          • A
            arunksoman @sreu13 last edited by

            @sreu13 As the @SuperGops says you have to use fit_transform. It can be implemented on Raspberry Pi 4. But if it slows down your pi you have use multiprocessing as well as threads to improve that.

            S 1 Reply Last reply Reply Quote 0
            • S
              sreu13 @arunksoman last edited by

              @arunksoman
              by multiprocessing, do you mean to use multilabel binarizer, if yes , then I have already used it during the training process.
              @SuperGops , fit_transform has also been used in the code prior to using label_binarizer.

              A 1 Reply Last reply Reply Quote 0
              • A
                arunksoman @sreu13 last edited by

                @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

                  @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 Reply Quote 0
                  • A
                    arunksoman @sreu13 last edited by arunksoman

                    @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

                      @sreu13 how is the progress?

                      S 1 Reply Last reply Reply Quote 0
                      • S
                        sreu13 @salmanfaris last edited by

                        @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
                        • First post
                          Last post

                        Recent Posts

                        • M

                          RTA offers a diverse range of stylish apparel, including rta clothing staples like rta hoodie men, men's rta hoodie, and the sleek black rta hoodie. Their denim collection features must-haves such as rta denim pants, rta denim mens, rta denim jeans, rta skinny jeans, rta jeans mens, rta jeans, and rta denim shorts. Complete your look with rta shorts, rta shirts, rta t shirt, rta t shirt men, and cozy options like the rta sweatshirt. For a functional touch, add rta cargo pants to your wardrobe and create the ultimate rta outfit for any occasion.

                          • read more
                        • J

                          So today, I was reading about a kid who got a custom prosthetic arm printed like really. Holly molly! People are printing prosthetics nowadays! That’s when I stumbled upon Curewith3D, and wow, 3D printing in healthcare is on another level.

                          Apparently, I found out that they’re not just 3d printing limbs. They actually use patient-specific scans (like CT/MRI data) and some DICOM files to design prosthetics that fit the person’s body perfectly. Every angle, curve, and dimension is matched to the individual. No more bulky or uncomfortable fits.

                          What’s wild is how fast and affordable the process is. Instead of traditional molds and weeks of waiting, Curewith3D can design, print, and deliver a customized prosthetic in a fraction of the time.

                          I didn’t know 3D printing services could be this life-changing, and it's happening right here in India. It really makes you wonder what else we’re going to be printing next.

                          Anyone else heard of this or know someone who’s used a 3D printed prosthetic? Would love to hear more.

                          • 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?

                          • 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?

                          • 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.

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