Вступ
Для багатьох індійців сільське господарство — це більше, ніж просто робота; це спосіб життя. Це засіб, за допомогою якого вони забезпечують собі засоби до існування та роблять величезний внесок в економіку Індії. Визначення типу ґрунту, який містить частинки глини, піску та мулу у відповідних пропорціях, є важливим для вибору відповідної культури та визначення росту бур’янів. Відкрийте для себе потенціал глибокого навчання в сільському господарстві. Зрозумійте важливість типів ґрунтів і виявлення бур’янів для Індії.
Глибоке навчання це нова технологія, яка корисна в усіх сферах. Глибоке навчання широко застосовується в інтелектуальному сільському господарстві в різних масштабах для моніторингу полів, польових робіт, робототехніки, прогнозування ґрунту, води, кліматичних умов, а також моніторингу земель і типів культур на рівні ландшафту. Ми можемо передати фотографію ґрунту в архітектуру глибокого навчання, навчити її виявляти особливості, а потім використовувати архітектуру глибокого навчання для класифікації ґрунту.
У цьому блозі ми обговоримо важливість ґрунту в сільському господарстві. Ми будемо класифікувати ґрунт за допомогою моделей машинного та глибокого навчання.
Мета навчання
- Ви зрозумієте, наскільки важливий ґрунт у сільському господарстві.
- Ви дізнаєтесь, як алгоритми машинного навчання можуть класифікувати типи ґрунтів.
- Ви запровадите модель глибокого навчання в сільському господарстві для класифікації типів ґрунтів.
- Ознайомтеся з концепцією навчання ансамблю з кількома накопиченнями, щоб підвищити точність наших прогнозів.
Ця стаття була опублікована як частина Blogathon Data Science.
Зміст
Роль ґрунту в сільському господарстві
Органічні речовини, мінерали, гази, рідини та інші речовини, що виділяються з рослин і тварин, утворюють важливий ґрунт, основу для сільського господарства. Основою сільського господарства є гази, мінерали, органічні речовини та інші речовини, які надходять від рослин і тварин, утворюючи ґрунтову систему.
Економіка Індії повністю залежить від сільського господарства; ґрунт важливий для сільськогосподарських культур, і завдяки своїй родючості він призводить до розвитку небажаних бур’янів.
Вологість і температура є фізичними змінними, які впливають на утворення пор і частинок у ґрунті, впливаючи на ріст коренів, проникнення води та швидкість сходів рослин.
Але в основному в грунті присутні частинки піску і глини. Серед переважно доступних частинок ґрунту на дослідницькому місці є велика кількість глини. Наявність частинок глини на поверхні пояснюється рясним живленням. Торф і суглинки майже не присутні. Глинистий ґрунт просторий між ними, де вода утримується.
Набір даних
Вилучення ознак є одним із основних кроків у побудові хорошої моделі глибокого навчання. Важливо визначити функції, які можуть знадобитися для створення алгоритмів машинного навчання. Ми будемо використовувати Махотас бібліотека для вилучення характеристик Haralick, які містять інформацію про просторову та текстурну інформацію зображень.
Ми будемо використовувати бібліотеку skimage для перетворення зображень у відтінки сірого та для отримання функцій гістограми градієнта (HOG), які корисні для виявлення об’єктів. Нарешті, ми об’єднаємо значення функцій у масив і пізніше використаємо їх у машинному навчанні та алгоритмах глибокого навчання.
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)
Алгоритми машинного навчання в класифікації ґрунтів
Тепер давайте створимо модель машинного навчання, використовуючи зображення ґрунту, отримані від Kaggle.
Спочатку ми імпортуємо всі бібліотеки, а потім створимо функцію під назвою екстракт_функцій для вилучення ознак із зображень. Потім зображення імпортуються та обробляються, що включає перетворення на відтінки сірого, і тоді ми отримуємо ці функції. Потім, після виділення функцій для кожного зображення, мітки кодуються за допомогою Кодувальник міток.
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)
Глибокі нейронні мережі
Він працює на основі обчислювальних одиниць і кількості нейронів. Кожен нейрон приймає вхідні дані та забезпечує вихідні дані. Він використовується для підвищення точності та створення кращих прогнозів, тоді як алгоритми машинного навчання покладаються на інтерпретацію даних, і на їх основі прийматимуться рішення.
Також прочитай: Вступний посібник із глибокого навчання та нейронних мереж
Тепер давайте побудуємо модель, визначену за допомогою Sequential API від Keras. Ця модель матиме шар згортки Conv2D, MaxPooling2D, шар зведення Flatten і щільні шари Dense.
Нарешті, модель компілюється за допомогою Адам оптимізатор і категоріальна крос-ентропійна втрата.
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)
Як ви бачите, прогнозований клас 0, тобто чорнозем. Отже, наша модель правильно класифікує тип ґрунту.
Пропонована архітектура моделі навчання ансамблю з кількома стеками
Команда StackingClassifier ініціалізується базовими класифікаторами та a логістична регресія мета-класифікатор остаточний_оцінювач. Це об’єднує результати базових класифікаторів, щоб зробити остаточний прогноз. Потім, після навчання і прогнозування, розраховується точність.
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)
Висновок
Ґрунт є важливою складовою для отримання хорошого врожаю. Важливо знати, який тип ґрунту необхідний для вирощування конкретної культури. Отже, класифікація типу ґрунту стає важливою. Оскільки ручна класифікація типу ґрунту є трудомістким завданням, отже використання моделей глибокого навчання для їх класифікації стає легким. Існує багато моделей машинного та глибокого навчання для реалізації цієї постановки проблеми. Вибір найкращого залежить від якості та кількості даних, наявних у наборі даних, і постановки проблеми. Ще один спосіб вибрати найкращий алгоритм – оцінити кожен. Ми можемо зробити це, вимірявши точність, наскільки вони можуть правильно класифікувати ґрунт. Нарешті, ми реалізували модель ансамблю Multi-Stacking, використовуючи кілька моделей для створення найкращої моделі.
Ключові винесення
- Для ефективного вибору культури необхідно повністю розбиратися в грунті.
- Глибоке навчання в сільському господарстві є потужним інструментом, починаючи від прогнозування захворювань рослин і закінчуючи типами ґрунтів і потребами у воді.
- Ми виділили об’єкти, щоб отримати об’єкти із зображень ґрунту.
- У цьому блозі ми досліджували моделі машинного та глибокого навчання для класифікації ґрунту, а також модель багатошарового ансамблю для підвищення точності.
ЧАСТІ ЗАПИТАННЯ
A. Це важливо для правильного вибору культури та виявлення росту бур’янів.
A. Враховуються особливості, включаючи пісок, глину, мул, торф і суглинок.
A. Глибоке навчання дозволяє моделі приймати розумні рішення, тоді як традиційне машинне навчання приймає рішення шляхом інтерпретації даних.
A. Ансамблева модель Multi-Stacking підвищує точність класифікації типу ґрунту.
Медіафайли, показані в цій статті, не належать Analytics Vidhya та використовуються на розсуд Автора.
споріднений
- Розповсюдження контенту та PR на основі SEO. Отримайте посилення сьогодні.
- PlatoData.Network Vertical Generative Ai. Додайте собі сили. Доступ тут.
- PlatoAiStream. Web3 Intelligence. Розширення знань. Доступ тут.
- ПлатонЕСГ. вуглець, CleanTech, Енергія, Навколишнє середовище, Сонячна, Поводження з відходами. Доступ тут.
- PlatoHealth. Розвідка про біотехнології та клінічні випробування. Доступ тут.
- джерело: https://www.analyticsvidhya.com/blog/2024/01/deep-learning-in-agriculture-improving-soil-crop-yields/
- : має
- :є
- : ні
- $UP
- 1
- 10
- 13
- 224
- 32
- 33
- 43
- 46
- 51
- 7
- 9
- a
- Приймає
- точність
- через
- Адам
- зачіпає
- після
- сільське господарство
- алгоритм
- алгоритми
- ВСІ
- дозволяє
- посеред
- кількість
- an
- аналітика
- Аналітика Vidhya
- та
- тварини
- Інший
- API
- прикладної
- архітектура
- ЕСТЬ
- масив
- стаття
- AS
- At
- наявність
- доступний
- заснований
- BE
- стає
- було
- КРАЩЕ
- Краще
- між
- Black
- Блог
- блогатон
- обидва
- будувати
- Створюємо
- by
- розрахований
- CAN
- Вибирати
- Вибираючи
- клас
- класифікація
- Класифікувати
- клімат
- color
- комбінати
- Приходити
- скомпільований
- повністю
- обчислення
- концепція
- Умови
- вважається
- сприяти
- конвертувати
- перетворення
- правильно
- урожай
- культур
- дані
- рішення
- глибокий
- глибоке навчання
- певний
- щільний
- залежить
- виявляти
- Виявлення
- визначення
- розробка
- відрізняються
- відкрити
- розсуд
- обговорювати
- Захворювання
- показ
- do
- робить
- зроблений
- два
- кожен
- легко
- економіка
- Ефективний
- елемент
- елементи
- поява
- з'являються
- Нові технології
- кодований
- кодування
- забезпечення
- епохи
- Ефір (ETH)
- оцінки
- Кожен
- дослідження
- Розвіданий
- витяг
- видобуток
- особливість
- риси
- кілька
- поле
- остаточний
- в кінці кінців
- Перший
- для
- ліс
- форма
- освіта
- фонд
- від
- функція
- генератори
- отримати
- отримання
- добре
- є
- градієнти
- Відтінки сірого
- Зростання
- керівництво
- рука
- Мати
- корисний
- отже
- історія
- Як
- HTTPS
- Ідентифікація
- ідентифікувати
- ідентифікує
- зображення
- зображень
- надзвичайно
- Impact
- здійснювати
- реалізовані
- імпорт
- значення
- важливо
- поліпшений
- поліпшення
- in
- includes
- У тому числі
- Augmenter
- Збільшує
- Індію
- індекси
- інформація
- витрати
- Розумний
- в
- вступний
- IT
- ЙОГО
- робота
- JPG
- просто
- керас
- ключ
- Знання
- етикетка
- етикетки
- земля
- пізніше
- шар
- шарів
- Веде за собою
- УЧИТЬСЯ
- вивчення
- довжина
- libraries
- бібліотека
- лежить
- життя
- джерела коштів для існування
- загрузка
- від
- машина
- навчання за допомогою машини
- made
- головний
- головним чином
- зробити
- РОБОТИ
- Робить
- вручну
- багато
- Матерія
- Може..
- засоби
- вимір
- Медіа
- Метрика
- корисні копалини
- модель
- Моделі
- моніторинг
- більше
- багато
- множинний
- Названий
- необхідно
- потреби
- сусіди
- Нейронний
- Нейрони
- номер
- нумпі
- харчування
- об'єкт
- Виявлення об'єктів
- of
- on
- ONE
- операція
- органічний
- OS
- Інше
- наші
- вихід
- виходи
- яка перебуває у власності
- частина
- шлях
- фото
- фізичний
- завод
- рослин
- plato
- Інформація про дані Платона
- PlatoData
- потенціал
- потужний
- передвіщений
- прогнозування
- прогноз
- Прогнози
- представити
- друк
- Проблема
- оброблена
- виробляти
- запропонований
- забезпечує
- опублікований
- суто
- якість
- випадковий
- Rbf
- регресія
- покладатися
- звітом
- ті
- зберігся
- повертати
- робототехніка
- Роль
- корінь
- то ж
- ПІСНІТЬ
- ваги
- наука
- побачити
- вибір
- набори
- установка
- Повинен
- показаний
- з
- один
- сайт
- розумний
- So
- грунт
- просторовий
- конкретний
- швидкість
- укладання
- Заява
- заходи
- підходящий
- поставляється
- підтримка
- поверхню
- SVC
- система
- Завдання
- Технологія
- тензорний потік
- Тестування
- ніж
- Що
- Команда
- їх
- Їх
- потім
- Там.
- Ці
- вони
- це
- через
- трудомісткий
- до
- інструмент
- тема
- традиційний
- Навчання
- тип
- Типи
- розуміти
- одиниць
- небажаний
- використання
- використовуваний
- використання
- перевірка достовірності
- Цінності
- було
- вода
- шлях..
- we
- webp
- бур'ян
- Що
- Що таке
- який
- в той час як
- чому
- волі
- з
- працює
- X
- жовтий
- поступаючись
- врожайність
- ви
- зефірнет