MakerGram Logo

    MakerGram

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

    [Solved] leaf disease detection using keras

    General Discussion
    4
    18
    1547
    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.
    • S
      sreu13 last edited by salmanfaris

      The code given below is for image classification, it seems to be running well until the last iteration which gives the following error >
      "C:/Users/admin/Desktop/plant_disease_classification/plant_disease_classification/untitled1.py", line 45, in <module>
      print (label_binarizer.classes_[predict1])

      AttributeError: 'LabelBinarizer' object has no attribute 'classes_'

      import numpy as np
      import pickle
      import cv2
      from os import listdir
      from sklearn.preprocessing import LabelBinarizer
      from keras.models import load_model
      from keras.models import Sequential
      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
      import tensorflow
      
      default_image_size = tuple((256, 256))
      
      #load the pickle file 
      file_object = open(r'C:\Users\admin\Desktop\pr3\cnn_model.pkl', 'rb')
      model = pickle.load(file_object)
      
      #load the leaf image that is to be classified
      imgpath=r'C:\Users\admin\Desktop\pr1\PlantVillage\diseases\Pepper__bell___healthy\0a3f2927-4410-46a3-bfda-5f4769a5aaf8___JR_HL 8275.JPG'
      
      
      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
      
      imar = convert_image_to_array(imgpath) 
      np_image_list = np.array([imar], dtype=np.float16) / 225.0 
      
      label_binarizer = LabelBinarizer()
      
      predict1 = model.predict(np_image_list) 
      
      print (label_binarizer.classes_[predict1])
      

      the screenshot of the above complied code and error is uploaded for reference.

      Screenshot (142).png

      1 Reply Last reply Reply Quote 0
      • salmanfaris
        salmanfaris last edited by salmanfaris

        @sreu13 said in leaf disease detection using keras:

        AttributeError: 'LabelBinarizer' object has no attribute 'classes_'

        Hi, Can you try downgrade the scikit by typing

        pip install scikit-learn==0.15.2
        

        and are you following any guide or something, if yes can you share that also?

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

          @salmanfaris said in leaf disease detection using keras:

          pip install scikit-learn==0.15.2

          tried downgrading, but came up with this error.

          ERROR: Failed building wheel for scikit-learn

          and I've been following Kaggle kernel,
          link-https://www.kaggle.com/emmarex/plant-disease-detection-using-keras

          1 Reply Last reply Reply Quote 0
          • S
            SuperGops last edited by

            I think you need to use the fit or fit_transform function before you predict the classes and use the Binarizer. Have a look at scikit's official documentation for the same.

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

              @SuperGops

              i've entered this code,

              def fit_transform(self, n_classes):

              but as I run it, I get the indentation Error given below
              File"C:/Users/admin/Desktop/plant_disease_classification/plant_disease_classification/untitled1.py", line 42
              label_binarizer = LabelBinarizer()
              ^
              IndentationError: expected an indented block

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

                @sreu13
                fit and fit_transform are actually inbuilt functions found in the scikit-learn library. So I'd suggest you fit your model with the available data using those functions whose application can be found on scikit-learn's documentation and then proceed with the Binarizer.

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

                  @SuperGops
                  so basically ,i'll have to restart and retrain the model with fit_transform?

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

                    @sreu13 Yup

                    S 1 Reply Last reply Reply Quote 0
                    • 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
                        • First post
                          Last post

                        Recent Posts

                        • Hi team,

                          Any one have experience in Altium schematic designing.
                          I am facing some issue in Hierarchy->harness in Schematic.
                          The offpage number for harness is not showing, and while generation the smart PDF if we click the harness port /green box the page want to go there automatically, but that also not working.

                          • read more
                        • D

                          @salmanfaris thank you so much man, I'll try this and update you shortly. Thank you once again.

                          Best,
                          Dipu

                          • read more
                        • Hi @dipu_varghese ,

                          Here is the sample input from the binary edge impulse inference,

                          Predictions (DSP: 16 ms., Classification: 1 ms., Anomaly: 2 ms.): idle: 0.91016 snake: 0.08203 updown: 0.00391 wave: 0.00391 anomaly score: -0.067”

                          And from here for example we can try to get the updown values only by attaching the device to another controller and read the Serial string directly.

                          void setup() { // Start serial communication at 9600 baud Serial.begin(9600); } void loop() { // Wait until there is data available on the serial port while (!Serial.available()) { // Do nothing } // Read the input string from the serial port String inputString = Serial.readStringUntil('\n'); // Find the position of the "updown" value in the input string int updownPos = inputString.indexOf("updown:"); // If the "updown" value was found in the input string if (updownPos >= 0) { // Extract the "updown" value from the input string String updownString = inputString.substring(updownPos + 8, inputString.indexOf('\n', updownPos)); // Convert the "updown" value to a float float updownValue = updownString.toFloat(); // Output the "updown" value Serial.println(updownValue); } }

                          The sketch should then output the "updown" value, which is 0.08203.

                          Hope this will be helpful, let me know if you need more clarification.

                          • read more
                        • D

                          @salmanfaris any updates?

                          Best,
                          Dipu

                          • read more
                        • D

                          @salmanfaris Hope you're doing well, did you get sometime to work on this?

                          Best,
                          Dipu

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