Интеллектуальная система классификации и переработки мусора использует технологию глубокого обучения,Может автоматически идентифицировать и классифицировать различные типы мусора.,Повысьте эффективность сбора мусора,Уменьшить загрязнение окружающей среды. В этой статье объясняется, как правительство использует Python и технологию глубокого обучения для реализации интеллектуальной системы классификации и переработки мусора.
Во-первых, нам нужно установить некоторые необходимые библиотеки Python:
pip install pandas numpy scikit-learn tensorflow keras matplotlib seaborn opencv-python
Мы будем использовать общедоступный набор данных классификации мусора, такой как набор данных классификации мусора Kaggle. Вы можете загрузить набор данных с Kaggle и извлечь его в локальный каталог.
import pandas as pd
import numpy as np
import os
import cv2
from sklearn.model_selection import train_test_split
from tensorflow.keras.utils import to_categorical
# путь к данным
data_dir = 'path_to_garbage_dataset'
# Ярлык категории
categories = ['cardboard', 'glass', 'metal', 'paper', 'plastic', 'trash']
# Чтение данных
data = []
labels = []
for category in categories:
path = os.path.join(data_dir, category)
class_num = categories.index(category)
for img in os.listdir(path):
try:
img_array = cv2.imread(os.path.join(path, img))
img_array = cv2.resize(img_array, (128, 128))
data.append(img_array)
labels.append(class_num)
except Exception as e:
pass
# Преобразовать в массив NumPy
data = np.array(data)
labels = np.array(labels)
# Просмотр формы данных
print(f"Форма данных: {data.shape}, Форма этикетки: {labels.shape}")
Предварительная обработка данных — важный шаг в глубоком обучении. Нам нужно нормализовать данные изображения,и Преобразование меток в горячее кодирование。
# Нормализованные данные изображения
data = data.astype('float32') / 255.0
# Преобразование меток в горячее кодирование
labels = to_categorical(labels, num_classes=len(categories))
Мы построим простую модель сверточной нейронной сети (CNN), используя Keras.
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout
# Создать модель
model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=(128, 128, 3)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(64, kernel_size=(3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(len(categories), activation='softmax'))
# Скомпилировать модель
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
Разделите данные на обучающие и тестовые наборы.
X_train, X_test, y_train, y_test = train_test_split(data, labels, test_size=0.2, random_state=42)
Обучите модель и оцените производительность.
# Модель обучения
history = model.fit(X_train, y_train, epochs=10, batch_size=32, validation_data=(X_test, y_test))
# Модель оценки
loss, accuracy = model.evaluate(X_test, y_test)
print(f'Loss: {loss}')
print(f'Accuracy: {accuracy}')
Используйте обученную модель для прогнозирования.
# предсказывать
y_pred = model.predict(X_test)
y_pred_classes = y_pred.argmax(axis=-1)
y_true = y_test.argmax(axis=-1)
# Распечатать предсказывать результаты
print(y_pred_classes[:10])
print(y_true[:10])
Наконец, мы можем визуализировать изменения потерь и точности во время обучения, а также сравнить прогнозируемые результаты и фактические значения.
# Визуализируйте тренировочный процесс
import matplotlib.pyplot as plt
plt.figure(figsize=(12, 4))
plt.subplot(1, 2, 1)
plt.plot(history.history['loss'], label='Training Loss')
plt.plot(history.history['val_loss'], label='Validation Loss')
plt.xlabel('Epochs')
plt.ylabel('Loss')
plt.legend()
plt.title('Training and Validation Loss')
plt.subplot(1, 2, 2)
plt.plot(history.history['accuracy'], label='Training Accuracy')
plt.plot(history.history['val_accuracy'], label='Validation Accuracy')
plt.xlabel('Epochs')
plt.ylabel('Accuracy')
plt.legend()
plt.title('Training and Validation Accuracy')
plt.show()
# матрица путаницы
from sklearn.metrics import confusion_matrix
import seaborn as sns
cm = confusion_matrix(y_true, y_pred_classes)
plt.figure(figsize=(10, 8))
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues', xticklabels=categories, yticklabels=categories)
plt.xlabel('Predicted')
plt.ylabel('Actual')
plt.title('Confusion Matrix')
plt.show()
Благодаря вышеуказанным шагам мы внедрили простую интеллектуальную систему классификации и переработки мусора. Вот некоторые конкретные сценарии применения: