[Solved] leaf disease detection using keras

  • 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):
            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

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

  • @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,

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


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

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

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

  • @sreu13 Yup

  • 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
    1. Create a requirements.txt over your current working directory. Contents for requirements.txt given below:
    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.

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

Log in to reply

Recent Posts

  • WhatsApp Image 2020-09-26 at 9.28.51 PM.jpeg

    Hey guys, we are thrilled to announce the speaker Mr. Brian Douglas for our upcoming event organised by HackClub TIST as part of Hacktoberfest 2020. He will guide you through GitHub and the importance of Open Source contributions.

    Mr. Brian Douglas has been working as a Staff Developer Advocate at GitHub for the past three years and was fully on-board with us when we contacted him about the event.

    We at Hackclub TIST strongly believe in the power of collaboration and how even the smallest guidance can have a huge impact in the long run.

    So register now at http://hackclubtist.tech/hacktoberfest and lets git learning (pun intended).

    Friday October 2, 2020
    7:00 pm -9:30 pm IST

    read more
  • P

    @Anudeep Thanks a lot m8, I actually made a very silly mistake of including the https:// while entering FIREBASE_HOST, where I must have entered the Domain name alone and removed the https:// extension.

    Thanks again for replying that quick. Cheers.

    read more
  • A

    Hello @Palani, In the Firebase, there are two types of storage,

    Cloud Firestore (Very recent one & NoSQL database) Realtime Database (To which we upload the data using NodeMCU)

    In the Arduino Code, you can see that there is a variable named FIREBASE_AUTH.

    This variable should be assigned to the Database secret. This you can find in Project Settings -> Service accounts -> Database Secrets.

    My mistake is, i have mistakenly assigned thay to Web API key. This is found at Project Settings -> General.

    The error can also occur when u don't initialise a proper realtime database in Firebase. (This is not my case).

    read more
  • P

    @Anudeep Hello Anudeep could you please help me out by elaborating the fix to get rid of that error?
    Thanks in advance.

    read more
  • At Adobe, weโ€™re focused on bringing together the most intelligent, driven, diverse set of individuals and give them the freedom to nurture their intellectual curiosity. We provide them with the necessary resources and support to shape their ideas into tangible results.
    Through the Adobe India Women-in-Technology Scholarship, we are striving towards creating gender equality in science, technology and engineering domains by encouraging women to showcase their excellence in computing and technology and become future leaders and role models in the field.

    ๐—›๐—ผ๐˜„ ๐˜๐—ผ ๐—ฎ๐—ฝ๐—ฝ๐—น๐˜†?

    Applications must be submitted through their dedicated application portal which opens on August 20th, 2020 and will close on September 20th, 2020, 5 pm India time.

    ๐—”๐—ฝ๐—ฝ๐—น๐—ถ๐—ฐ๐—ฎ๐˜๐—ถ๐—ผ๐—ป ๐—ฑ๐—ฒ๐—ฎ๐—ฑ๐—น๐—ถ๐—ป๐—ฒ:

    Application deadline: September 20th, 2020, 5 pm India time.

    Visit:- https://research.adobe.com/adobe-india-women-in-technology-scholarship/

    read more