MakerGram Logo

    MakerGram

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

    [Solved] leaf disease detection using keras

    General Discussion
    4
    18
    3403
    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

      @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

                  • J

                    Hi everyone,

                    I recently left my 9-to-5 corporate job after almost a decade to chase something I’ve always dreamed about—starting my own food business. It started small: just a cloud kitchen running out of a rented space, late nights testing recipes, early mornings handling orders, and zero regrets so far.

                    Now, with some loyal customers, decent growth, and a lot of love from the community, I’m slowly working toward turning this little kitchen into a walk-in café. It’s a scary, exciting step—but I want to do it right.

                    That brings me to this post. As we grow, I want our team to look as professional as we feel. We’re in the market for good-quality chef coats for kitchen staff—something that’s breathable, durable, easy to wash, and doesn't look sloppy after a long day. Style matters too, since we’ll be customer-facing soon.I found a brand called Lintex online. They seem pretty legit, offer kitchen uniforms, long sleeve chef coats, and even frontdesk uniforms (which could be useful later). Their site looks solid, but I’ve never ordered uniforms before, and I’m a little nervous about fabric quality and fit.

                    Has anyone here ordered from Lintex before? Would love to hear your suggestions. Thanks in advance!

                    • read more
                  • J

                    At Lintex, we understand that being a doctor means more than long hours and tough calls; it also means showing up every day ready to move, think, and care with confidence. That’s why we design scrubs for doctors that are built for real-life performance without compromising on comfort or style.

                    Our collection of doctor scrubs is crafted with breathable fabrics, smart tailoring, and functional features like strategically placed pockets, wrinkle resistance, and movement-friendly cuts. Whether you're making rounds, managing emergencies, or staying on your feet during surgeries, Lintex scrubs are made to support your every move.

                    We don't believe in one-size-fits-all. From classic V-necks to modern fits, we offer options that let you choose what works best for your body and your role. If you're looking for the best scrubs for doctors, you’re in the right place.

                    Join the Lintex community and discover the best scrubs for doctors that work as hard as you do.

                    Explore more at www.lintex.in or drop us a line at reachus@anvka.com

                    • read more
                  • J

                    I'm an Oral-Maxillofacial Surgeon working with a trauma hospital and academic setup in Delhi. We get our 3D models, from Curewith3D, a dedicated 3D lab equipped with FDM and SLA 3D printers, focused on presurgical planning and patient-specific modeling.

                    We routinely use 3D printed anatomical models, especially for complex facial reconstructions, TMJ cases, and orthognathic surgeries. They’re invaluable for surgical rehearsals, resident training, and most importantly, patient education. When patients can physically hold their jaw model and understand the procedure, consent becomes more informed and anxiety levels drop.

                    As for printing surgical instruments or implants, we’re cautious. While the 3D orthopedic implants we design are precise and patient-specific, their final manufacturing still goes through standard biocompatible grade processes. Like in most regions, concerns about sterilization, structural integrity, and litigation prevent experimental tools from entering the OR directly. That said, the potential for custom joint replacement implants and 3D knee replacement implants in underserved areas is enormous. We see 3D printing as a huge enabler in low-resource and humanitarian settings.

                    • read more
                  • 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!

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