Проект по классификации изображений
Создание базовой модели CNN
«Проект по классификации изображений» — бесплатный урок Python Academy на CoddyKit. Это урок 4 из 5. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Python Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Python Academy содержит 5 уроков всего.
Проект по классификации изображений
Проект по классификации изображений
В этом проекте мы создадим простую сеть CNN для распределения изображений по категориям. Классификация изображений заключается в предсказании категории или метки входного изображения.

Набор данных для классификации
Набор данных для классификации
Мы будем использовать набор данных CIFAR-10, который состоит из 60 000 изображений, разделённых на 10 категорий, например самолётов, автомобилей, птиц и кошек. Каждое изображение имеет размер 32×32 пикселя и 3 цветовых канала (RGB).
Загрузка набора данных
Загрузка набора данных
Мы загрузим набор данных CIFAR-10 с помощью TensorFlow:
import tensorflow as tf
from tensorflow.keras.datasets import cifar10
# Load dataset
(x_train, y_train), (x_test, y_test) = cifar10.load_data()
# Normalize the pixel values to [0, 1]
x_train = x_train / 255.0
x_test = x_test / 255.0
print("Training data shape:", x_train.shape)Создание модели CNN
Создание модели CNN
Мы зададим архитектуру CNN со свёрточными, пулинговыми и полносвязными слоями:
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense
# Define the CNN model
model = Sequential([
Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)),
MaxPooling2D((2, 2)),
Conv2D(64, (3, 3), activation='relu'),
MaxPooling2D((2, 2)),
Flatten(),
Dense(128, activation='relu'),
Dense(10, activation='softmax')
])Выполнение compile для модели
Выполнение compile для модели
Мы выполняем compile для модели со следующими настройками:
- Функция потерь: категориальная кросс-энтропия для многоклассовой классификации.
- Оптимизатор: оптимизатор Адам для эффективного обучения.
- Метрики: точность для оценки качества.
# Compile the model
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])Обучение модели
Обучение модели
Мы обучаем модель на обучающих данных в течение 10 эпох. Во время обучения модель учится распределять изображения по категориям.
# Train the model
model.fit(x_train, y_train, epochs=10, validation_data=(x_test, y_test))Оценка модели
Оценка модели
После обучения мы выполняем evaluate для модели на тестовых данных, чтобы проверить её точность:
# Evaluate the model
loss, accuracy = model.evaluate(x_test, y_test)
print(f"Test Accuracy: {accuracy * 100:.2f}%")Создание предсказаний
Создание предсказаний
Мы можем использовать обученную модель для создания предсказаний для новых изображений:
# Predict the category of a test image
import numpy as np
sample_image = x_test[0]
sample_label = y_test[0]
prediction = np.argmax(model.predict(sample_image[np.newaxis, ...]))
print(f"Predicted Label: {prediction}, Actual Label: {sample_label[0]}")Проблемы классификации изображений
Проблемы классификации изображений
К распространённым проблемам относятся:
- Переобучение: модель хорошо работает на обучающих данных, но плохо — на новых данных.
- Дисбаланс классов: неравномерное представление категорий в наборе данных.
- Вычислительные затраты: обучение глубоких сетей требует значительных ресурсов.
Итоги и дальнейшие шаги
Итоги и дальнейшие шаги
В этом проекте мы:
- создали и обучили CNN для классификации изображений с использованием набора данных CIFAR-10;
- научились загружать и предварительно обрабатывать набор данных, а также выполнять для него evaluate;
- обсудили проблемы, возникающие при классификации изображений.
Далее мы изучим методы аугментации данных, которые позволяют повысить качество модели за счёт создания вариантов обучающих изображений.

Часто задаваемые вопросы
Урок «Проект по классификации изображений» бесплатный?
Да — полный текст урока «Проект по классификации изображений» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Python Academy, подпишись на CoddyKit PRO. Курс Python Academy содержит 5 уроков всего.
Чему я научусь в уроке «Проект по классификации изображений»?
Создание базовой модели CNN Ты практикуешь Python Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Python Academy?
Предыдущий опыт не требуется. Python Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 5.
Сколько времени занимает урок «Проект по классификации изображений»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Python Academy?
Да. Каждый урок Python Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Что такое изображения?
- Обработка изображений с OpenCV
- Сверточные нейронные сети (CNN)
- Проект по классификации изображений
- Методы аугментации данных