0Pricing
Python Academy · Урок

Проект по классификации изображений

Создание базовой модели CNN

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

Проект по классификации изображений

Проект по классификации изображений

В этом проекте мы создадим простую сеть CNN для распределения изображений по категориям. Классификация изображений заключается в предсказании категории или метки входного изображения.

Проект по классификации изображений — иллюстрация 1

Набор данных для классификации

Набор данных для классификации

Мы будем использовать набор данных 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;
  • обсудили проблемы, возникающие при классификации изображений.

Далее мы изучим методы аугментации данных, которые позволяют повысить качество модели за счёт создания вариантов обучающих изображений.

Проект по классификации изображений — иллюстрация 10

Часто задаваемые вопросы

Урок «Проект по классификации изображений» бесплатный?

Да — полный текст урока «Проект по классификации изображений» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 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 — локальная установка не требуется.

Все уроки этого курса

  1. Что такое изображения?
  2. Обработка изображений с OpenCV
  3. Сверточные нейронные сети (CNN)
  4. Проект по классификации изображений
  5. Методы аугментации данных
← Назад к Python Academy