توسعه مدل یادگیری ماشین با پایتون: نمونه ای از طبقه بندی با TensorFlow

در این مقاله ، ما یک مدل یادگیری ماشین برای طبقه بندی تصاویر با استفاده از تانسور پر وت سخت که یک کتابخانه محبوب برای ایجاد مدلهای هوش مصنوعی (AI) است. مدلی که ما توسعه خواهیم داد ، مدل است. شبکه عصبی Convolutional (CNN) کدام است یادگیری تحت نظارت که از تصویر از طریق یاد گرفته می شود لایه های حلقوی برای ترسیم ویژگی های مهم تصویر ، اندازه داده ها را نیز کاهش دهید لایه و استفاده کنید لایه های کاملاً متصل با نوشتن نتیجه پیتون و استفاده کنید Tensorflow/Keras در توسعه آموزش ساختار مدل با مجموعه داده ها مانیست و با دقت مدل ارزیابی شد
- وارداتی که لازم است
- اطلاعات تصویر را بارگیری و تهیه کنید (از مجموعه داده MNIST استفاده کنید ، که از تصاویر 0-9 تشکیل شده است)
- یک ساختار مدل CNN بسازید
- آموزش کمر و مدل
- مدل را آزمایش و ارزیابی کنید
1. واردات کتابخانه لازم
import tensorflow as tf
from tensorflow import keras
import matplotlib.pyplot as plt
import numpy as np
کد برتر به توسعه مدل Tensorflow و Keras برای شبکه های عصبی مصنوعی ، از جمله MATPLOTLIB و NUMPY برای مدیریت و نمایش داده ها وارد می شود.
2. اطلاعات تصویر را بارگیری و تهیه کنید
mnist = keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
ما مجموعه داده MNIST را که یک مجموعه داده سیاه و سفید از 0-9 ، اندازه 28×28 پیکسل است ، بارگذاری می کنیم و سپس پیکسل را به 0-1 تنظیم می کنیم تا مدل موثرتر شود.
3 ساختار مدل CNN را بسازید
model = keras.Sequential([
keras.layers.Conv2D(32, (3,3), activation='relu', input_shape=(28, 28, 1)),
keras.layers.MaxPooling2D((2,2)),
keras.layers.Flatten(),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(10, activation='softmax')
])
مدل مورد استفاده شبکه عصبی Convolutional (CNN) است که ساختار زیر را دارد:
- CONV2D: 32 32 لایه های اتصال دهنده برای کشیدن تصویر از تصویر.
- MaxPooling2d: با استفاده از عملکرد عملکرد MaxPool ، اندازه تصویر را کاهش دهید.
- FLATTEN: داده های تصویر را به یک تصویر بردار 1D تبدیل کنید.
- متراکم: دو طبقه وجود دارد – لایه اول ، از 128 نورون ، با عملکرد RELU و آخرین لایه 10 برهنه ، با عملکرد SoftMax برای طبقه بندی 10 دسته استفاده کنید.
4. آموزش جامعه و مدل
model.compile(optimizer="adam", loss="sparse_categorical_crossentropy", metrics=['accuracy'])
model.fit(x_train.reshape(-1, 28, 28, 1), y_train, epochs=5)
مدل با استفاده از بهینه ساز و از دست دادن Adam (از دست دادن) گردآوری می شود. از sparsse_categorial_crossnopy استفاده کنید. برای مقابله با بسیاری از دسته بندی های طبقه بندی پس از آن ، این مدل به مدت 5 بار (متناسب) (دوره) آموزش داده شد.
نتیجه را بدست می آورد
5. مدل را آزمون و ارزیابی کنید
loss, accuracy = model.evaluate(x_test.reshape(-1, 28, 28, 1), y_test)
print(f"Accuracy: {accuracy*100:.2f}%")
مدل با مجموعه داده های آزمون مورد آزمایش قرار گرفت. و دقت مدل را نشان دهید
نتیجه را بدست می آورد
نمونه دویدن
هنگام اجرای کد فوق ، مدل با داده های تصویر 0-9 تمرین می شود و می تواند با یک مجموعه داده جدید ، مانند استفاده از آزمون از مجموعه آزمون ، آزمایش شود تا پیش بینی های مدل در تصویر انجام شود.
# ทดสอบโมเดลด้วยภาพจากชุดข้อมูลทดสอบ
for i in range(5): # ทดสอบ 5 ภาพแรกจากชุดข้อมูลทดสอบ
plt.imshow(x_test[i], cmap='gray')
prediction = np.argmax(model.predict(x_test[i].reshape(-1, 28, 28, 1)))
plt.title(f"Prediction: {prediction}")
plt.show()
print(f"โมเดลทำนายว่าเป็นเลข: {prediction}")
نتیجه را بدست می آورد
با توجه به تغییر از استفاده از اعداد به رنگ ، بنابراین باید کد اصلی را به شرح زیر برطرف کرد
- وارداتی که لازم است
- پوشه ای را که تصاویر رنگی را ضبط می کند تعیین کنید
- توابع و علائم بارگذاری تصویر
- اطلاعات رنگی را بارگذاری کنید
- داده ها را به آموزش و آزمایش تقسیم کنید
- مدل CNN را ایجاد کنید
- مدل
- مدل تمرین
- مدل
1. واردات کتابخانه لازم
import os
import cv2
import numpy as np
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense
from tensorflow.keras.optimizers import Adam
from sklearn.model_selection import train_test_split
ما از کتابخانه های مختلفی مانند Tensorflow/Keras استفاده خواهیم کرد. برای ایجاد مدل ها ، OpenCV برای مدیریت تصویر و Scikit-Learn برای تقسیم و آزمایش اطلاعات
2. پوشه ای را که تصاویر رنگی را ضبط می کند تعیین کنید
color_images_dir = "color_images"
color_names = ['red', 'green', 'blue', 'orange', 'yellow']
ما از نام پوشه “Color_Images” استفاده خواهیم کرد که در آن زیرپوش هایی مانند “قرمز” ، “سبز” ، “آبی” و غیره وجود خواهد داشت. هر پوشه تصاویر آن رنگ را جمع می کند.
که ما تمام رنگهای مختلف را در پوشه قرار خواهیم داد تا برای AI آموزش ببینیم
3. توابع ، بارگیری تصاویر و علائم
def load_color_images(color_folder, colors):
X, y = []
for color in colors:
color_path = os.path.join(color_folder, color)
if not os.path.exists(color_path):
print(f"Folder for {color} does not exist.")
continue
for filename in os.listdir(color_path):
if filename.endswith(".jpg") or filename.endswith(".png"):
img_path = os.path.join(color_path, filename)
img = cv2.imread(img_path)
img = cv2.resize(img, (64, 64)) # ปรับขนาดเป็น 64x64
img = img / 255.0 # แปลงค่าพิกเซลเป็น 0-1
X.append(img)
y.append(colors.index(color)) # กำหนดป้ายกำกับตามสี
return np.array(X), np.array(y)
ما تصاویر را از هر پوشه بارگیری خواهیم کرد ، با 64×64 پیکسل تنظیم می کنیم ، بین 0-1 تبدیل می شویم و یک علامت در رنگ تصویر ایجاد می کنیم.
4. اطلاعات رنگ بارگذاری
X, y = load_color_images(color_images_dir, color_names)
از عملکرد LOAD_COLOR_IMAGES استفاده کنید. برای ترسیم تصاویر و برچسب ها
5. داده ها را به آموزش و آزمایش تقسیم کنید
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
ما از train_test_split استفاده خواهیم کرد. برای تقسیم داده ها به 80 ٪ برای آموزش و 20 ٪ برای آزمایش
6. مدل CNN را ایجاد کنید
model = Sequential([
Conv2D(32, (3,3), activation='relu', input_shape=(64, 64, 3)),
MaxPooling2D((2, 2)),
Flatten(),
Dense(128, activation='relu'),
Dense(len(color_names), activation='softmax')
])
ما از شبکه عصبی Convolutional (CNN) استفاده خواهیم کرد که از آن تشکیل شده است
- Conv2d (شبکه عصبی سردرگمی)
- MaxPooling2d (اندازه تصویر را کاهش دهید)
- flatten (تبدیل به بردارها)
- متراکم (لایه کاملاً متصل)
7. مدل جامعه
model.compile(optimizer=Adam(), loss="sparse_categorical_crossentropy", metrics=['accuracy'])
از Adam Optimizer و Crossntropy طبقه بندی شده به عنوان یک ضرر استفاده کنید.
8. مدل تمرین
model.fit(X_train, y_train, epochs=10, validation_data=(X_test, y_test))
اجازه دهید مدل از اطلاعاتی که داریم با مشخص کردن دوره ها = 10 بیاموزیم
9. SAVE MODEL
model.save('color_classification_model.h5')
print("Model saved successfully!")
پس از اتمام مدل آموزش ، پرونده .h5 را ذخیره می کنیم تا بتوان آن را بارگیری کرد.
نتیجه را بدست می آورد
از نظر آزمایش
با کار کد
- وارداتی که لازم است
- مدل تکمیل شده را بارگیری کنید
- عملکرد پیش بینی رنگ از تصویر
- تمام توابع تست تصویر در پوشه
- پوشه آزمون را تعیین کنید
1. واردات کتابخانه لازم
import os
import cv2
import numpy as np
import matplotlib.pyplot as plt
from tensorflow.keras.models import load_model
ما از Tensorflow/Keras استفاده خواهیم کرد. برای بارگیری مدل ها ، opencv. برای مدیریت تصاویر و matpplotlib در نمایشگر.
2. مدل تکمیل شده را بارگیری کنید
model = load_model('color_classification_model.h5')
ما مدل را از پرونده بارگیری می کنیم. color_classification_model.h5 که مدلی است که ما تمرین می کنیم
3. عملکرد پیش بینی رنگ از تصویر
def predict_color(image_path):
img = cv2.imread(image_path)
if img is None:
print(f"Unable to load image at {image_path}. Please check the path.")
return
img = cv2.resize(img, (64, 64)) # ปรับขนาดเป็น 64x64
img = img / 255.0 # ปรับค่าให้เป็น 0-1
prediction = model.predict(np.expand_dims(img, axis=0))
predicted_color = np.argmax(prediction) # หา index ของสีที่ทำนายได้
# รายชื่อสี
color_names = ['red', 'green', 'blue', 'orange', 'yellow']
predicted_color_name = color_names[predicted_color]
print(f"Predicted color for {image_path}: {predicted_color_name.upper()}") # แสดงชื่อสีเป็นตัวใหญ่
# แสดงภาพที่ทำนาย
img = (img * 255).astype(np.uint8) # แปลงกลับเป็น uint8 เพื่อแสดงภาพ
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.title(f"Predicted Color: {predicted_color_name.upper()}", fontsize=20) # ใช้ตัวใหญ่ใน title
plt.axis('off') # ไม่ให้แสดงแกน
plt.show()
این عملکرد خواهد بود
- تصاویر را از مسیر مشخص شده بارگیری کنید.
- تنظیم با 64×64 پیکسل
- مقدار رنگ را به محدوده 0-1 تبدیل کنید.
- از مدل پیش بینی رنگ تصویر استفاده کنید.
- نام رنگ پیش بینی را نشان دهید
- تصویر را با نام رنگ نشان دهید
4. کلیه توابع تست تصویر در پوشه
def test_all_images_in_folder(folder_path):
if not os.path.exists(folder_path): # ถ้าโฟลเดอร์ไม่มี ให้สร้าง
print(f"Folder {folder_path} does not exist. Creating folder...")
os.makedirs(folder_path)
else:
print(f"Folder {folder_path} exists.")
# ตรวจสอบและทำนายทุกภาพในโฟลเดอร์
for filename in os.listdir(folder_path):
if filename.endswith(".jpg") or filename.endswith(".png"):
image_path = os.path.join(folder_path, filename)
predict_color(image_path)
این عملکرد خواهد بود
- بررسی کنید که آیا پوشه ای برای جمع آوری تصاویر وجود دارد یا خیر. اگر نه ، ایجاد کنید
- برای بررسی همه پرونده ها در پوشه در حال چرخش است
- رنگ هر تصویر موجود را پیش بینی کنید
5. پوشه ها را برای آزمایش تنظیم کنید
test_folder = "color_images/test_images"
test_all_images_in_folder(test_folder) # ทดสอบทุกภาพในโฟลเดอร์
ما از پوشه استفاده خواهیم کرد. “color_images/test_images” برای تصویری که می خواهید آزمایش کنید.
نتیجه را بدست می آورد
از این مقاله ، ما یاد گرفتیم که یک مدل یادگیری ماشین را برای طبقه بندی با استفاده از Tensorflow و Keras ایجاد کنیم. مدل مورد استفاده CNN است که برای پردازش تصویر مناسب است و می تواند از بسیاری جهات مانند دست نویس استفاده شود. تجزیه و تحلیل تصویر پزشکی و دیگران