πŸ” Как ΠΊΠ»Π°ΡΡΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ изобраТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python: руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

Для классификации ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ машинного обучСния, Ρ‚Π°ΠΊΡƒΡŽ ΠΊΠ°ΠΊ TensorFlow ΠΈΠ»ΠΈ PyTorch. Π’ΠΎΡ‚ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования TensorFlow:

import tensorflow as tf
from tensorflow import keras

# Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±ΡƒΡ‡Π΅Π½Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ
model = keras.applications.MobileNetV2(weights='imagenet')

# Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° изобраТСния для классификации
image = keras.preprocessing.image.load_img('image.jpg', target_size=(224, 224))
image = keras.preprocessing.image.img_to_array(image)
image = tf.expand_dims(image, 0)

# ΠŸΡ€Π΅Π΄ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ класса изобраТСния
predictions = model.predict(image)
predicted_class = keras.applications.imagenet_utils.decode_predictions(predictions, top=1)

# Π’Ρ‹Π²ΠΎΠ΄ класса ΠΈ вСроятности
class_name = predicted_class[0][0][1]
probability = predicted_class[0][0][2]
print("Класс: ", class_name)
print("Π’Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ: ", probability)

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±ΡƒΡ‡Π΅Π½Π½ΡƒΡŽ модСль MobileNetV2 для классификации изобраТСния. ΠœΡ‹ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ модСль ΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ Π΅Π³ΠΎ Π² Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΈ Π΄Π΅Π»Π°Π΅ΠΌ прСдсказаниС. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΡƒΠ΅ΠΌ прСдсказанный класс ΠΈ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как ΠΊΠ»Π°ΡΡΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ изобраТСния Π² Python

ΠšΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ являСтся Π²Π°ΠΆΠ½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ Π² области ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠ³ΠΎ зрСния ΠΈ машинного обучСния. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠ»Π°ΡΡΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ изобраТСния с использованиСм Python ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… популярных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ машинного обучСния.

Установка Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ Π½Π°Ρ‡Π°Ρ‚ΡŒ, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ вас установлСны Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Python, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ NumPy, OpenCV ΠΈ TensorFlow. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΡ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ pip ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

pip install numpy
pip install opencv-python
pip install tensorflow

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ классификации ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ…. Π£ вас Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Π΅ изобраТСния, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠΎ катСгориям.

Для этой ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΊΠ»Π°ΡΡΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ "кошка" ΠΈ "собака".

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ классификации

Для классификации ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ²Π΅Ρ€Ρ‚ΠΎΡ‡Π½ΡƒΡŽ Π½Π΅ΠΉΡ€ΠΎΠ½Π½ΡƒΡŽ ΡΠ΅Ρ‚ΡŒ (Convolutional Neural Network, CNN). CNN - ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт для классификации ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±ΡƒΡ‡Π°Ρ‚ΡŒΡΡ Π½Π° большом количСствС Π΄Π°Π½Π½Ρ‹Ρ….

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° для создания простой ΠΌΠΎΠ΄Π΅Π»ΠΈ CNN Π² TensorFlow:

import tensorflow as tf
from tensorflow.keras import layers

model = tf.keras.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 3)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Flatten())
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(2, activation='softmax'))

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создаСм модСль, ΡΠΎΡΡ‚ΠΎΡΡ‰ΡƒΡŽ ΠΈΠ· свСрточных слоСв, слоСв субдискрСтизации, слоСв прСобразования Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ ΠΏΠ»ΠΎΡ‚Π½Ρ‹Ρ… слоСв. ПослСдний ΠΏΠ»ΠΎΡ‚Π½Ρ‹ΠΉ слой ΠΈΠΌΠ΅Π΅Ρ‚ 2 Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΡƒΠ·Π»Π° для классификации ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π½Π° Π΄Π²Π΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ "кошка" ΠΈ "собака".

ΠžΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ

ПослС создания ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡƒΡ‡ΠΈΡ‚ΡŒ Π΅Π΅ Π½Π° ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½ΠΎΠΌ Π½Π°Π±ΠΎΡ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция ΠΏΠΎΡ‚Π΅Ρ€ΡŒ ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€.

model.compile(optimizer='adam',
              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
              metrics=['accuracy'])
model.fit(train_images, train_labels, epochs=10)

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ модСль с ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠΌ Adam ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ ΠΏΠΎΡ‚Π΅Ρ€ΡŒ Sparse Categorical Crossentropy. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΎΠ±ΡƒΡ‡Π°Π΅ΠΌ модСль Π½Π° Ρ‚Ρ€Π΅Π½ΠΈΡ€ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… изобраТСниях ΠΈ ΠΌΠ΅Ρ‚ΠΊΠ°Ρ… Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ 10 эпох.

ВСстированиС ΠΌΠΎΠ΄Π΅Π»ΠΈ

ПослС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ обучСния ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ Π½Π° Π½ΠΎΠ²Ρ‹Ρ… изобраТСниях.

test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_acc)

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Π΅ΠΌ модСль Π½Π° тСстовых изобраТСниях ΠΈ ΠΌΠ΅Ρ‚ΠΊΠ°Ρ… ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ тСстирования.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ позволяСт ΠΊΠ»Π°ΡΡΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ изобраТСния с использованиСм простой свСрточной Π½Π΅ΠΉΡ€ΠΎΠ½Π½ΠΎΠΉ сСти Π² Python. Однако ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ классификации ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ подходящими для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ. Π’Π°ΠΆΠ½ΠΎ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°ΠΌΠΈ ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ Π»ΡƒΡ‡ΡˆΠΈΡ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ².

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

Как ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ свой Π½Π°Π±ΠΎΡ€ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² Keras | Π“Π»ΡƒΠ±ΠΎΠΊΠΈΠ΅ Π½Π΅ΠΉΡ€ΠΎΠ½Π½Ρ‹Π΅ сСти Π½Π° Python

Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ классификатор ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ (МашинноС ΠžΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅: Zero to Hero, Ρ‡Π°ΡΡ‚ΡŒ 4)

Python-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ большС Π½Π΅ Π½ΡƒΠΆΠ΅Π½ Photoshop. Pillow, ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ Ρ„ΠΎΡ‚ΠΎ-Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

πŸ” Как Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² ΠŸΠΈΡ‚ΠΎΠ½Π΅: идСальноС руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… πŸ‘¨β€πŸ’»

πŸ”§ Как Π»Π΅Π³ΠΊΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ Π² CSV с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python? 🐍

🌿 Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π·Π΅Π»Π΅Π½Ρ‹ΠΉ тСкст Π² Python: простой Π³Π°ΠΉΠ΄ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΈ инструкциСй

πŸ” Как ΠΊΠ»Π°ΡΡΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ изобраТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python: руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

πŸ“‚ Как Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» Π² Python Word: подробная инструкция для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

Как Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ CSV ΠΏΠΎ столбцам Π² Python? 😎🐍

πŸ” Как ввСсти арктангСнс Π² Python: простой Π³Π°ΠΉΠ΄ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π°!