در این پست وبلاگ، نحوه ساخت یک مدل ساده تشخیص تصویر با استفاده از کراس در پایتون را به شما آموزش میدهیم. کراس یک کتابخانه متنباز برای ساخت و آموزش شبکههای عصبی در پایتون است. با استفاده از این کتابخانه، میتوان شبکههای عصبی مختلف را برای کاربردهای مختلف، از جمله تشخیص تصویر، پردازش زبان طبیعی و تشخیص گفتار آموزش داد.
برای شروع، دادههای تصویری را به صورت پیکسلهایی در قالب آرایههای ۲ بعدی میخوانیم و برچسبهای مربوط به هر تصویر را به صورت بردارهای یک بعدی مشخص میکنیم.
from keras.datasets import cifar10 # Load CIFAR-10 dataset (X_train, y_train), (X_test, y_test) = cifar10.load_data() # Normalize pixel values to range 0-1 X_train = X_train / 255.0 X_test = X_test / 255.0 # Convert labels to one-hot encoded vectors num_classes = 10 y_train = keras.utils.to_categorical(y_train, num_classes) y_test = keras.utils.to_categorical(y_test, num_classes)
سپس، مدل شبکه عصبی را با استفاده از کلاس Sequential در کراس تعریف میکنیم. در این مدل، یک لایه ورودی، یک لایه پنهان با ۳۲ نورون، یک لایه Dropout برای کاهش اورفیتینگ، یک لایه پنهان دیگر با ۶۴ نورون و یک لایه خروجی با ۱۰ نورون تعریف میشود.
from keras.models import Sequential from keras.layers import Dense, Dropout, Flatten from keras.layers.convolutional import Conv2D, MaxPooling2D # Define model model = Sequential() model.add(Conv2D(32, (3, 3), padding='same', activation='relu', input_shape=X_train.shape[1:])) model.add(Dropout(0.2)) model.add(Conv2D(64, (3, 3), padding='same', activation='relu')) model.add(Flatten()) model.add(Dense(num_classes, activation='softmax'))
در نهایت، با استفاده از تابع compile، پارامترهای مدل را تنظیم میکنیم و سپس با استفاده از تابع fit، مدل را با دادههای آموزشی آموزش میدهیم.
# Compile model model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) # Train model epochs = 10 batch_size = 64 history = model.fit(X_train, y_train, epochs=epochs, batch_size=batch_size, validation_data=(X_test, y_test), verbose=1)
با اجرای کد بالا، مدل شبکه عصبی ساده برای تشخیص تصویر آموزش داده شده و دقت آن بر روی دادههای آزمایشی محاسبه میشود. این مدل میتواند به عنوان یک شروع کاربردی برای پروژههای تشخیص تصویر مختلف استفاده شود.
از آنجایی که شبکههای عصبی بسیار پیچیده و بزرگ میتوانند باشند، میتوانید با اضافه کردن لایههای جدید و تغییر پارامترهای شبکه، مدل خود را بهبود بخشید و دقت آن را بیشتر کنید.
از طرفی، در بسیاری از پروژههای تشخیص تصویر، دادهها بسیار بزرگ و پیچیده هستند و این امر میتواند تاثیر بسیاری بر روی دقت مدل داشته باشد. در چنین مواردی، استفاده از شبکههای عصبی عمیق مانند شبکههای کانولوشنی (CNN) میتواند بهبود قابل توجهی در دقت مدل داشته باشد.
در کل، با استفاده از کتابخانه کراس در پایتون، میتوان به راحتی شبکههای عصبی مختلف را آموزش داد و برای پروژههای تشخیص تصویر، پردازش زبان طبیعی و تشخیص گفتار استفاده کرد.