چگونه یک شبکه عصبی برای طبقه بندی تصاویر بسازیم

Summarize this content to 400 words in Persian Lang
در این وبلاگ، مراحل ساخت یک شبکه عصبی که می تواند تصاویر را طبقه بندی کند را طی می کنیم. چه در یادگیری عمیق تازه کار باشید و چه به دنبال تقویت مهارت های خود باشید، این راهنما موارد ضروری را برای شروع در اختیار شما قرار می دهد. ما همه چیز را از تنظیم محیط گرفته تا آموزش مدل شما را در پایتون پوشش خواهیم داد. بیایید شیرجه بزنیم! 🧠
🛠️ تنظیم محیط
قبل از شروع کدنویسی، مطمئن شویم که کتابخانه های لازم را نصب کرده اید. شما به پایتون به همراه TensorFlow، Keras و دیگر کتابخانه های ضروری نیاز دارید.
pip install tensorflow keras numpy matplotlib
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
🧑💻 ساخت شبکه عصبی
ما از Keras، یک API شبکه های عصبی سطح بالا، برای ساخت مدل خود استفاده خواهیم کرد. در زیر کد ایجاد یک شبکه عصبی ساده برای طبقه بندی تصاویر آمده است.
1. واردات کتابخانه ها
ابتدا کتابخانه های مورد نیاز را وارد کنید.
import tensorflow as tf
from tensorflow.keras import layers, models
import matplotlib.pyplot as plt
import numpy as np
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
2. بارگذاری مجموعه داده
برای این مثال، از مجموعه داده CIFAR-10 استفاده خواهیم کرد که شامل 60000 تصویر رنگی 32×32 در 10 کلاس است.
# Load the CIFAR-10 dataset
(train_images, train_labels), (test_images, test_labels) = tf.keras.datasets.cifar10.load_data()
# Normalize the images
train_images, test_images = train_images / 255.0, test_images / 255.0
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
3. تجسم داده ها
بیایید به برخی از تصاویر موجود در مجموعه داده نگاهی بیندازیم.
class_names = [‘airplane’, ‘automobile’, ‘bird’, ‘cat’, ‘deer’,
‘dog’, ‘frog’, ‘horse’, ‘ship’, ‘truck’]
plt.figure(figsize=(10,10))
for i in range(25):
plt.subplot(5,5,i+1)
plt.xticks([])
plt.yticks([])
plt.grid(False)
plt.imshow(train_images[i])
plt.xlabel(class_names[train_labels[i][0]])
plt.show()
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
4. ساخت مدل
اکنون معماری شبکه عصبی را تعریف می کنیم. ما یک CNN ساده (شبکه عصبی کانولوشنال) ایجاد خواهیم کرد.
model = models.Sequential([
layers.Conv2D(32, (3, 3), activation=’relu’, input_shape=(32, 32, 3)),
layers.MaxPooling2D((2, 2)),
layers.Conv2D(64, (3, 3), activation=’relu’),
layers.MaxPooling2D((2, 2)),
layers.Conv2D(64, (3, 3), activation=’relu’),
layers.Flatten(),
layers.Dense(64, activation=’relu’),
layers.Dense(10)
])
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
5. تدوین مدل
در مرحله بعد، مدل را با یک تابع ضرر، بهینه ساز و معیارها کامپایل می کنیم.
model.compile(optimizer=’adam’,
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=[‘accuracy’])
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
6. آموزش مدل
زمان آموزش مدل فرا رسیده است. ما از دادههای آموزشی استفاده میکنیم و آنها را روی دادههای آزمایشی تأیید میکنیم.
history = model.fit(train_images, train_labels, epochs=10,
validation_data=(test_images, test_labels))
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
7. ارزیابی مدل
در نهایت، اجازه دهید عملکرد مدل را در مجموعه داده آزمایشی ارزیابی کنیم.
test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=2)
print(f’Test accuracy: {test_acc:.4f}’)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
🖼️ تست با تصاویر جدید
شما می توانید مدل را با تصاویر جدید با بارگذاری و اجرای مدل آزمایش کنید predict تابع
img = tf.keras.utils.load_img(‘path_to_your_image’, target_size=(32, 32))
img_array = tf.keras.utils.img_to_array(img)
img_array = tf.expand_dims(img_array, 0) # Create batch axis
predictions = model.predict(img_array)
predicted_class = class_names[np.argmax(predictions)]
print(f’This image is a {predicted_class}’)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
🔍 بهینه سازی برای موتورهای جستجو
برای اطمینان از اینکه پست وبلاگ شما به مخاطبان گسترده تری می رسد، در اینجا چند نکته برای سئو وجود دارد:
استفاده از کلمات کلیدی: کلمات کلیدی مرتبط مانند “شبکه عصبی”، “طبقه بندی تصویر” و “یادگیری عمیق” را در سراسر پست خود بگنجانید.
توضیحات متا: برای جذب کلیک از موتورهای جستجو، یک متا توضیحات مختصر و خلاصه پست خود را ایجاد کنید.
متن جایگزین برای تصاویر: از متن جایگزین توصیفی برای همه تصاویر، از جمله تصویر جلد و تجسم کد خود استفاده کنید.
پیوند داخلی: به سایر پست های مرتبط در وبلاگ خود پیوند دهید تا خوانندگان را درگیر خود نگه دارید و سئو را بهبود بخشید.
با دنبال کردن این مراحل، میتوانید یک شبکه عصبی با قابلیت طبقهبندی تصاویر با پایتون بسازید. کد نویسی مبارک! 🎉
در این وبلاگ، مراحل ساخت یک شبکه عصبی که می تواند تصاویر را طبقه بندی کند را طی می کنیم. چه در یادگیری عمیق تازه کار باشید و چه به دنبال تقویت مهارت های خود باشید، این راهنما موارد ضروری را برای شروع در اختیار شما قرار می دهد. ما همه چیز را از تنظیم محیط گرفته تا آموزش مدل شما را در پایتون پوشش خواهیم داد. بیایید شیرجه بزنیم! 🧠
🛠️ تنظیم محیط
قبل از شروع کدنویسی، مطمئن شویم که کتابخانه های لازم را نصب کرده اید. شما به پایتون به همراه TensorFlow، Keras و دیگر کتابخانه های ضروری نیاز دارید.
pip install tensorflow keras numpy matplotlib
🧑💻 ساخت شبکه عصبی
ما از Keras، یک API شبکه های عصبی سطح بالا، برای ساخت مدل خود استفاده خواهیم کرد. در زیر کد ایجاد یک شبکه عصبی ساده برای طبقه بندی تصاویر آمده است.
1. واردات کتابخانه ها
ابتدا کتابخانه های مورد نیاز را وارد کنید.
import tensorflow as tf
from tensorflow.keras import layers, models
import matplotlib.pyplot as plt
import numpy as np
2. بارگذاری مجموعه داده
برای این مثال، از مجموعه داده CIFAR-10 استفاده خواهیم کرد که شامل 60000 تصویر رنگی 32×32 در 10 کلاس است.
# Load the CIFAR-10 dataset
(train_images, train_labels), (test_images, test_labels) = tf.keras.datasets.cifar10.load_data()
# Normalize the images
train_images, test_images = train_images / 255.0, test_images / 255.0
3. تجسم داده ها
بیایید به برخی از تصاویر موجود در مجموعه داده نگاهی بیندازیم.
class_names = ['airplane', 'automobile', 'bird', 'cat', 'deer',
'dog', 'frog', 'horse', 'ship', 'truck']
plt.figure(figsize=(10,10))
for i in range(25):
plt.subplot(5,5,i+1)
plt.xticks([])
plt.yticks([])
plt.grid(False)
plt.imshow(train_images[i])
plt.xlabel(class_names[train_labels[i][0]])
plt.show()
4. ساخت مدل
اکنون معماری شبکه عصبی را تعریف می کنیم. ما یک CNN ساده (شبکه عصبی کانولوشنال) ایجاد خواهیم کرد.
model = models.Sequential([
layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)),
layers.MaxPooling2D((2, 2)),
layers.Conv2D(64, (3, 3), activation='relu'),
layers.MaxPooling2D((2, 2)),
layers.Conv2D(64, (3, 3), activation='relu'),
layers.Flatten(),
layers.Dense(64, activation='relu'),
layers.Dense(10)
])
5. تدوین مدل
در مرحله بعد، مدل را با یک تابع ضرر، بهینه ساز و معیارها کامپایل می کنیم.
model.compile(optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
6. آموزش مدل
زمان آموزش مدل فرا رسیده است. ما از دادههای آموزشی استفاده میکنیم و آنها را روی دادههای آزمایشی تأیید میکنیم.
history = model.fit(train_images, train_labels, epochs=10,
validation_data=(test_images, test_labels))
7. ارزیابی مدل
در نهایت، اجازه دهید عملکرد مدل را در مجموعه داده آزمایشی ارزیابی کنیم.
test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=2)
print(f'Test accuracy: {test_acc:.4f}')
🖼️ تست با تصاویر جدید
شما می توانید مدل را با تصاویر جدید با بارگذاری و اجرای مدل آزمایش کنید predict
تابع
img = tf.keras.utils.load_img('path_to_your_image', target_size=(32, 32))
img_array = tf.keras.utils.img_to_array(img)
img_array = tf.expand_dims(img_array, 0) # Create batch axis
predictions = model.predict(img_array)
predicted_class = class_names[np.argmax(predictions)]
print(f'This image is a {predicted_class}')
🔍 بهینه سازی برای موتورهای جستجو
برای اطمینان از اینکه پست وبلاگ شما به مخاطبان گسترده تری می رسد، در اینجا چند نکته برای سئو وجود دارد:
- استفاده از کلمات کلیدی: کلمات کلیدی مرتبط مانند “شبکه عصبی”، “طبقه بندی تصویر” و “یادگیری عمیق” را در سراسر پست خود بگنجانید.
- توضیحات متا: برای جذب کلیک از موتورهای جستجو، یک متا توضیحات مختصر و خلاصه پست خود را ایجاد کنید.
- متن جایگزین برای تصاویر: از متن جایگزین توصیفی برای همه تصاویر، از جمله تصویر جلد و تجسم کد خود استفاده کنید.
- پیوند داخلی: به سایر پست های مرتبط در وبلاگ خود پیوند دهید تا خوانندگان را درگیر خود نگه دارید و سئو را بهبود بخشید.
با دنبال کردن این مراحل، میتوانید یک شبکه عصبی با قابلیت طبقهبندی تصاویر با پایتون بسازید. کد نویسی مبارک! 🎉