برنامه نویسی

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

در این مقاله ، ما یک مدل یادگیری ماشین برای طبقه بندی تصاویر با استفاده از تانسور پر وت سخت که یک کتابخانه محبوب برای ایجاد مدلهای هوش مصنوعی (AI) است. مدلی که ما توسعه خواهیم داد ، مدل است. شبکه عصبی Convolutional (CNN) کدام است یادگیری تحت نظارت که از تصویر از طریق یاد گرفته می شود لایه های حلقوی برای ترسیم ویژگی های مهم تصویر ، اندازه داده ها را نیز کاهش دهید لایه و استفاده کنید لایه های کاملاً متصل با نوشتن نتیجه پیتون و استفاده کنید Tensorflow/Keras در توسعه آموزش ساختار مدل با مجموعه داده ها مانیست و با دقت مدل ارزیابی شد

  1. وارداتی که لازم است
  2. اطلاعات تصویر را بارگیری و تهیه کنید (از مجموعه داده MNIST استفاده کنید ، که از تصاویر 0-9 تشکیل شده است)
  3. یک ساختار مدل CNN بسازید
  4. آموزش کمر و مدل
  5. مدل را آزمایش و ارزیابی کنید

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}")
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

نتیجه را بدست می آورد
شرح تصویر

با توجه به تغییر از استفاده از اعداد به رنگ ، بنابراین باید کد اصلی را به شرح زیر برطرف کرد

  1. وارداتی که لازم است
  2. پوشه ای را که تصاویر رنگی را ضبط می کند تعیین کنید
  3. توابع و علائم بارگذاری تصویر
  4. اطلاعات رنگی را بارگذاری کنید
  5. داده ها را به آموزش و آزمایش تقسیم کنید
  6. مدل CNN را ایجاد کنید
  7. مدل
  8. مدل تمرین
  9. مدل

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. وارداتی که لازم است
  2. مدل تکمیل شده را بارگیری کنید
  3. عملکرد پیش بینی رنگ از تصویر
  4. تمام توابع تست تصویر در پوشه
  5. پوشه آزمون را تعیین کنید

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 است که برای پردازش تصویر مناسب است و می تواند از بسیاری جهات مانند دست نویس استفاده شود. تجزیه و تحلیل تصویر پزشکی و دیگران

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا