Tarım ve Derin Öğrenme: Toprak ve Ürün Veriminin Artırılması

Tarım ve Derin Öğrenme: Toprak ve Ürün Veriminin Artırılması

Kaynak Düğüm: 3066255

Giriş

Tarım pek çok Hintli için bir işten daha fazlasıdır; bu bir yaşam biçimidir. Bu onların geçimlerini sağlamanın ve Hindistan ekonomisine büyük katkı sağlamanın yoludur. Kil, kum ve silt parçacıklarının ilgili oranlarda bulunduğu toprak tipinin belirlenmesi, uygun ürün seçimi ve yabancı ot gelişiminin belirlenmesi açısından önemlidir. Tarımda Derin Öğrenmenin potansiyelini keşfedin. Hindistan için toprak türlerinin ve yabani ot tespitinin önemini anlayın.

Derin öğrenme her alanda yardımcı olan yeni gelişen bir teknolojidir. Derin öğrenme, akıllı tarımda tarla izleme, tarla operasyonu, robot teknolojisi, toprak, su, iklim koşullarının tahmin edilmesi ve peyzaj düzeyinde arazi ve ürün türlerinin izlenmesi gibi ölçeklerde yaygın olarak uygulanmıştır. Toprağın fotoğrafını derin öğrenme mimarisine besleyebilir, özellikleri tespit etmeyi öğrenmesi için ona rehberlik edebilir ve ardından derin öğrenme mimarisini toprağı sınıflandırmak için kullanabiliriz.

Tarımda derin öğrenme

Bu blogumuzda toprağın tarımdaki önemini tartışacağız. Toprağı makine öğrenmesi ve derin öğrenme modellerini kullanarak sınıflandıracağız.

Öğrenme hedefleri

  • Tarımda toprağın ne kadar önemli olduğunu anlayacaksınız.
  • Makine öğrenimi algoritmalarının toprak türlerini nasıl sınıflandırdığını öğreneceksiniz.
  • Tarımda toprak türlerini sınıflandırmak için derin öğrenme modelini uygulayacaksınız.
  • Tahminlerimizin doğruluğunu artırmak için çoklu yığınlı topluluk öğrenimi kavramını keşfedin.

Bu makale, Veri Bilimi Blogatonu.

İçindekiler

Tarımda Toprağın Rolü

Bitki ve hayvanlardan atılan organik maddeler, mineraller, gazlar, sıvılar ve diğer maddeler tarımın temelini oluşturan önemli toprağı oluşturur. Tarımın temeli bitkilerden ve hayvanlardan gelen ve toprak sistemini oluşturan gazlar, mineraller, organik maddeler ve diğer maddelerde yatmaktadır.

Hindistan'ın ekonomisi tamamen tarıma dayalıdır; Toprak mahsuller için önemlidir ve verimliliği nedeniyle istenmeyen yabani otların gelişmesine neden olur.

Tarımda toprağın rolü | Tarımda derin öğrenme

Nem ve sıcaklık, toprakta gözenek ve parçacıkların oluşumunu etkileyen, kök büyümesini, su sızmasını ve bitki çıkış hızını etkileyen fiziksel değişkenlerdir.

Ancak esas olarak toprakta kum ve kil parçacıkları bulunur. Yaygın olarak mevcut olan toprak parçacıkları arasında, arama sahasında kil bol miktarda bulunmaktadır. Kil parçacıklarının yüzeyde bulunması, sağlanan besin miktarının bol olmasından kaynaklanmaktadır. Turba ve balçık neredeyse hiç mevcut değil. Kil tipi toprağın araları geniştir ve su tutulur.

Veri kümesi

Kaggle Bağlantısı

Veri Kümesi | Tarımda derin öğrenme
"
"
"
"

Özellik çıkarma, iyi bir derin öğrenme modeli oluşturmanın ana adımlarından biridir. Makine öğrenmesi algoritmalarının oluşturulması için gerekli olabilecek özelliklerin belirlenmesi önemlidir. kullanacağız Mahotalar Görüntülerin mekansal ve doku bilgilerine sahip olan Haralick özelliklerini çıkarmak için kütüphane.

Görüntüleri gri tonlamaya dönüştürmek ve nesne algılama için yararlı olan Gradyan Histogramı (HOG) özelliklerini çıkarmak için skimage kütüphanesini kullanacağız. Son olarak özelliklerin değerlerini bir dizide birleştireceğiz ve daha sonra bunları makine öğrenimi ve derin öğrenme algoritmalarında kullanacağız.

Özellik çıkarma | Tarımda derin öğrenme
import mahotas as mh
from skimage import color, feature, io
import numpy as np

# Function to extract features from an image
def extract_features(image_path):
    img = io.imread(image_path)
    gray_img = color.rgb2gray(img)  # Converting image to grayscale
    
    # Converting the grayscale image to integer type
    gray_img_int = (gray_img * 255).astype(np.uint8)
    
    # Extracting Haralick features using mahotas
    haralick_features = mh.features.haralick(gray_img_int).mean(axis=0)
    
    # Extracting Histogram of Gradients (HOG) features
    hog_features, _ = feature.hog(gray_img, visualize=True)
    
    # Printing the first few elements of each feature array
    print("Haralick Features:", haralick_features[:5])
    print("HOG Features:", hog_features[:5])
    
    # Concatenating the features into a single array
    all_features = np.concatenate((haralick_features, hog_features))
    
    return all_features

image_path = '/kaggle/input/soil-classification-dataset/Soil-Dataset/Yellow Soil/20.jpg'
features = extract_features(image_path)
print("Extracted Features:", features)
"

Toprak Sınıflandırmasında Makine Öğrenmesi Algoritmaları

Şimdi Kaggle'dan aldığımız toprak görüntülerini kullanarak bir makine öğrenimi modeli oluşturalım.

Öncelikle tüm kütüphaneleri içe aktaracağız ve ardından adında bir fonksiyon oluşturacağız. extract_features Görüntülerden özellikler çıkarmak için. Görüntüler daha sonra içe aktarılır ve işlenir, buna gri tonlamaya dönüştürme de dahildir ve ardından bu özellikleri elde ederiz. Daha sonra her görüntü için özellikler çıkarıldıktan sonra etiketler kullanılarak kodlanır. Etiket Kodlayıcı.

import os
import numpy as np
import mahotas as mh
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
from sklearn.ensemble import RandomForestClassifier, StackingClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.neighbors import KNeighborsClassifier
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import accuracy_score, classification_report
from skimage import color, feature, io

# Function to extract features from an image
def extract_features(image_path):
    img = io.imread(image_path)
    gray_img = color.rgb2gray(img)  # Converting image to grayscale
    gray_img_int = (gray_img * 255).astype(np.uint8)
    haralick_features = mh.features.haralick(gray_img_int).mean(axis=0)
    hog_features, _ = feature.hog(gray_img, visualize=True)
    hog_features_flat = hog_features.flatten()  # Flattening the HOG features
    # Ensuring both sets of features have the same length
    hog_features_flat = hog_features_flat[:haralick_features.shape[0]]
    return np.concatenate((haralick_features, hog_features_flat))

data_dir = "/kaggle/input/soil-classification-dataset/Soil-Dataset"

image_paths = []
labels = []

class_indices = {'Black Soil': 0, 'Cinder Soil': 1, 'Laterite Soil': 2, 
'Peat Soil': 3, 'Yellow Soil': 4}

for soil_class, class_index in class_indices.items():
    class_dir = os.path.join(data_dir, soil_class)
    class_images = [os.path.join(class_dir, image) for image in os.listdir(class_dir)]
    image_paths.extend(class_images)
    labels.extend([class_index] * len(class_images))

# Extracting features from images
X = [extract_features(image_path) for image_path in image_paths]

# Encoding labels
le = LabelEncoder()
y = le.fit_transform(labels)

# Splitting the data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Initializing and training a Random Forest Classifier
rf_classifier = RandomForestClassifier(n_estimators=100, random_state=42)
rf_classifier.fit(X_train, y_train)

# Making predictions
y_pred_rf = rf_classifier.predict(X_test)

# Evaluating the Random Forest model
accuracy_rf = accuracy_score(y_test, y_pred_rf)
report_rf = classification_report(y_test, y_pred_rf)

print("Random Forest Classifier:")
print("Accuracy:", accuracy_rf)
print("Classification Report:n", report_rf)
ÇIKTI | Tarımda derin öğrenme
ÇIKTI

Derin Sinir Ağları

Hesaplama birimlerine ve nöron sayısına göre çalışır. Her nöron girdileri kabul eder ve çıktı sağlar. Doğruluğu artırmak ve daha iyi tahminler yapmak için kullanılırken, makine öğrenimi algoritmaları verilerin yorumlanmasına dayanır ve kararlar bunlara göre verilecektir.

Ayrıca oku: Derin Öğrenme ve Sinir Ağlarına Giriş Kılavuzu

Şimdi Keras’ın Sequential API’sini kullanarak tanımladığımız modeli derleyelim. Bu modelde bir Conv2D evrişim katmanı, MaxPooling2D, bir düzleştirme katmanı Düzleştirme ve yoğun katmanlar Yoğun bulunur.

Son olarak model kullanılarak derlenir. Adem optimize edici ve kategorik çapraz entropi kaybı.

import tensorflow as tf
from tensorflow.keras.preprocessing import image_dataset_from_directory

data_dir = "/kaggle/input/soil-classification-dataset/Soil-Dataset"

# Setting up data generators
batch_size = 32
image_size = (224, 224)

# Using image_dataset_from_directory to load and preprocess the images
train_dataset = image_dataset_from_directory(
    data_dir,
    labels='inferred',
    label_mode='categorical',
    validation_split=0.2,
    subset='training',
    seed=42,
    image_size=image_size,
    batch_size=batch_size,
)

validation_dataset = image_dataset_from_directory(
    data_dir,
    labels='inferred',
    label_mode='categorical',
    validation_split=0.2,
    subset='validation',
    seed=42,
    image_size=image_size,
    batch_size=batch_size,
)

# Displaying the class indices
print("Class indices:", train_dataset.class_names)

model = tf.keras.Sequential([
    tf.keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(224, 224, 3)),
    tf.keras.layers.MaxPooling2D(2, 2),
    tf.keras.layers.Flatten(),
    tf.keras.layers.Dense(64, activation='relu'),
    tf.keras.layers.Dense(len(train_dataset.class_names), activation='softmax')
])

model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

# Training the model
epochs = 10
history = model.fit(train_dataset, epochs=epochs, validation_data=validation_dataset)
"
import numpy as np
from tensorflow.keras.preprocessing import image

# Function to load and preprocess an image for prediction
def load_and_preprocess_image(img_path):
    img = image.load_img(img_path, target_size=image_size)
    img_array = image.img_to_array(img)
    img_array = np.expand_dims(img_array, axis=0)
    img_array /= 255.0  
    return img_array

image_path = '/kaggle/input/soil-classification-dataset/Soil-Dataset/Peat Soil/13.jpg'
new_image = load_and_preprocess_image(image_path)

# Making predictions
predictions = model.predict(new_image)
predicted_class = np.argmax(predictions[0])

# Getting the class label based on the class indices
class_labels = {0: 'Black Soil', 1: 'Cinder Soil', 2: 'Laterite Soil',
 3: 'Peat Soil', 4: 'Yellow Soil'}
predicted_label = class_labels[predicted_class]

# Displaying the prediction
print("Predicted Class:", predicted_class)
print("Predicted Label:", predicted_label)
ÇIKTI
ÇIKTI

Gördüğünüz gibi tahmin edilen sınıf 0 yani Kara Topraktır. Yani modelimiz toprak tipini doğru şekilde sınıflandırıyor.

Önerilen Çoklu Yığınlamalı Topluluk Öğrenme Modeli Mimarileri

The Yığınlama Sınıflandırıcısı baseClassifiers ile başlatılır ve lojistik regresyon meta sınıflandırıcı final_tahmincisi. Bu, nihai bir tahmin yapmak için baseClassifiers'ın çıktılarını birleştirir. Daha sonra eğitim ve tahminden sonra doğruluk hesaplanır.

base_classifiers = [
    ('rf', RandomForestClassifier(n_estimators=100, random_state=42)),
    ('knn', KNeighborsClassifier(n_neighbors=5)),
    ('svm', SVC(kernel='rbf', C=1.0, probability=True)),
    ('nb', GaussianNB())
]

# Initializing the stacking classifier with a logistic regression meta-classifier
stacking_classifier = StackingClassifier(estimators=base_classifiers, 
final_estimator=LogisticRegression())

# Training the stacking classifier
stacking_classifier.fit(X_train, y_train)

# Making predictions with Stacking Classifier
y_pred_stacking = stacking_classifier.predict(X_test)

# Evaluating the Stacking Classifier model
accuracy_stacking = accuracy_score(y_test, y_pred_stacking)
report_stacking = classification_report(y_test, y_pred_stacking)

print("nStacking Classifier:")
print("Accuracy:", accuracy_stacking)
print("Classification Report:n", report_stacking)
"

Sonuç

Toprak, iyi bir ürün elde edilmesinde önemli bir unsurdur. Belirli bir mahsulü üretmek için hangi toprak tipinin gerekli olduğunu bilmek önemlidir. Bu nedenle toprak tipinin sınıflandırılması önem kazanmaktadır. Toprak tipini manuel olarak sınıflandırmak zaman alıcı bir iş olduğundan, bunları sınıflandırmak için derin öğrenme modellerini kullanmak kolaylaşır. Bu sorun ifadesini uygulamaya yönelik birçok makine öğrenme modeli ve derin öğrenme modeli vardır. En iyisinin seçilmesi, veri setinde bulunan verilerin kalitesine ve miktarına ve eldeki problem tanımına bağlıdır. En iyi algoritmayı seçmenin başka bir yolu da her birini değerlendirmektir. Bunu doğruluğu ölçerek, toprağı ne kadar doğru sınıflandırabildiklerini ölçerek yapabiliriz. Son olarak, en iyi modeli oluşturmak için birden fazla model kullanarak Çoklu İstifleme topluluk modelini uyguladık.

Önemli Noktalar

  • Etkili ürün seçimi için toprağın tam olarak anlaşılması gerekir.
  • Tarımda derin öğrenme, bitki hastalıklarını tahmin etmekten toprak türlerine ve su ihtiyaçlarına kadar güçlü bir araçtır.
  • Toprak görüntülerinden özellik elde etmek için özellik çıkarımı yaptık.
  • Bu blogda, toprağı sınıflandırmak için makine öğrenimi ve derin öğrenme modellerini ve daha iyi doğruluk için Çok yığınlı topluluk modelini inceledik.

Sıkça Sorulan Sorular

S1. Tarımda toprağın doğru şekilde sınıflandırılması neden önemlidir?

C. Uygun mahsul seçimi ve yabani ot gelişiminin belirlenmesi önemlidir.

Q2. Toprak tanımlamasında dikkate alınan temel özellikler nelerdir?

A. Kum, kil, silt, turba ve balçık gibi özellikler dikkate alınır.

S3. Derin öğrenmenin bu konuda geleneksel makine öğreniminden farkı nedir?

C. Derin öğrenme, modelin akıllı kararlar almasına olanak tanırken, geleneksel makine öğrenimi verileri yorumlayarak kararlar alır.

S4. Önerilen Çoklu İstifleme topluluk modelinin rolü nedir?

A. Çoklu İstifleme topluluğu modeli, toprak tipini sınıflandırmanın doğruluğunu arttırır.

Bu makalede gösterilen medya Analytics Vidhya'ya ait değildir ve Yazarın takdirine bağlı olarak kullanılır.

Zaman Damgası:

Den fazla Analitik Vidhya