Teknoloji

Makine Öğrenimi ile Görüntü Tanıma Projesi

Makine öğrenimi (ML), verilerden öğrenerek gelecekteki olayları tahmin eden algoritmaların geliştirilmesiyle ilgilenen bir yapay zeka dalıdır. Görüntü tanıma, makine öğreniminin en popüler uygulamalarından biridir. Bu makalede, Python ve TensorFlow kullanarak makine öğrenimi ile görüntü tanıma projesi nasıl geliştirilir, adım adım anlatacağız.

Gereksinimler

Proje için ihtiyaç duyacağımız araçlar ve kütüphaneler şunlardır:

  • Python: Programlama dili
  • TensorFlow ve Keras: Makine öğrenimi kütüphaneleri
  • NumPy ve Pandas: Veri işleme kütüphaneleri
  • Matplotlib: Görselleştirme kütüphanesi
  • OpenCV: Görüntü işleme kütüphanesi

Kurulum Adımları

  1. Python Kurulumu
  2. Gerekli Kütüphanelerin Kurulumu
    • Gerekli kütüphaneleri pip kullanarak kurabilirsiniz:

pip install tensorflow keras numpy pandas matplotlib opencv-python

Görüntü Tanıma Nedir?

Görüntü tanıma, bir görüntüdeki nesneleri, kişileri veya diğer belirli özellikleri tanımlama ve sınıflandırma sürecidir. Bu teknoloji, güvenlik sistemlerinden, sağlık hizmetlerine kadar birçok alanda kullanılır.

 

Proje Adımları

  1. Veri Toplama
    • İlk adım, görüntü tanıma modeli için gerekli veri setini toplamaktır. Örneğin, kedi ve köpekleri tanıyan bir model geliştirmek istiyorsak, çeşitli açılardan çekilmiş kedi ve köpek resimlerine ihtiyacımız olacaktır. Bu veriler genellikle açık kaynak veri tabanlarından veya kendi çekimlerimizden elde edilebilir.
    • Önerilen veri seti: Kaggle Cats and Dogs Dataset
  2. Veri Ön İşleme
    • Toplanan veriler, modelin öğrenmesi için uygun hale getirilmelidir. Bu süreç, resimlerin boyutlandırılması, renklendirilmesi ve normalize edilmesini içerir. Örneğin, tüm resimleri 224×224 piksel boyutunda ve RGB formatında normalize edebiliriz.

import cv2
import numpy as np

def preprocess_image(image_path):
img = cv2.imread(image_path)
img = cv2.resize(img, (224, 224))
img = img / 255.0 # Normalize
return img

     3.Model Seçimi

  • Kullanılacak makine öğrenimi modelini seçmek önemlidir. Genellikle Convolutional Neural Networks (CNN) bu tür işler için uygundur. Keras veya PyTorch gibi popüler kütüphaneler kullanılarak bu modeller kolayca oluşturulabilir.

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense

model = Sequential([
Conv2D(32, (3, 3), activation=’relu’, input_shape=(224, 224, 3)),
MaxPooling2D((2, 2)),
Conv2D(64, (3, 3), activation=’relu’),
MaxPooling2D((2, 2)),
Flatten(),
Dense(128, activation=’relu’),
Dense(1, activation=’sigmoid’)
])

4.Model Eğitimi

  • Model, veri seti üzerinde eğitilir. Bu süreç, veri setinin eğitim ve test olarak ikiye ayrılmasını, modelin eğitim verileri üzerinde öğrenmesini ve test verileri üzerinde performansını değerlendirmeyi içerir.

model.compile(optimizer=’adam’, loss=’binary_crossentropy’, metrics=[‘accuracy’])

history = model.fit(train_generator, epochs=10, validation_data=validation_generator)

     5.Model Değerlendirme

  • Modelin performansını değerlendirmek için çeşitli metrikler kullanılır. Doğruluk (accuracy), kesinlik (precision), geri çağırma (recall) ve F1 skoru gibi metrikler, modelin ne kadar iyi çalıştığını gösterir.

test_loss, test_acc = model.evaluate(test_generator)
print(f”Test accuracy: {test_acc}”)

6.Modelin Kullanılması

  • Eğitilen model, gerçek dünyada kullanılabilir. Örneğin, yeni bir kedi veya köpek resmi verildiğinde, model bu resmi analiz ederek hangi hayvan olduğunu belirleyebilir.

def predict_image(image_path):
img = preprocess_image(image_path)
img = np.expand_dims(img, axis=0)
prediction = model.predict(img)
return ‘Cat’ if prediction[0] < 0.5 else ‘Dog’

Örnek Kod

Aşağıda, Keras kullanarak basit bir CNN modeli ile kedi ve köpekleri tanıyan bir örnek kod verilmiştir:

 

import tensorflow as tf
from tensorflow.keras.preprocessing.image import ImageDataGenerator

# Veri hazırlama
train_datagen = ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_directory(
‘data/train’,
target_size=(224, 224),
batch_size=32,
class_mode=’binary’
)

validation_datagen = ImageDataGenerator(rescale=1./255)
validation_generator = validation_datagen.flow_from_directory(
‘data/validation’,
target_size=(224, 224),
batch_size=32,
class_mode=’binary’
)

# Model oluşturma
model = tf.keras.models.Sequential([
tf.keras.layers.Conv2D(32, (3, 3), activation=’relu’, input_shape=(224, 224, 3)),
tf.keras.layers.MaxPooling2D((2, 2)),
tf.keras.layers.Conv2D(64, (3, 3), activation=’relu’),
tf.keras.layers.MaxPooling2D((2, 2)),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(128, activation=’relu’),
tf.keras.layers.Dense(1, activation=’sigmoid’)
])

# Modeli derleme
model.compile(optimizer=’adam’, loss=’binary_crossentropy’, metrics=[‘accuracy’])

# Modeli eğitme
history = model.fit(train_generator, epochs=10, validation_data=validation_generator)

# Modeli değerlendirme
test_loss, test_acc = model.evaluate(validation_generator)
print(f”Test accuracy: {test_acc}”)

Son olarak :

Makine öğrenimi ile görüntü tanıma, güçlü ve yaygın bir teknolojidir. Bu makalede, Python ve TensorFlow kullanarak görüntü tanıma projesinin adımlarını ve temel bir CNN modeli ile nasıl gerçekleştirileceğini öğrendik. Bu bilgiler, daha karmaşık projeler için bir temel oluşturabilir.

Bir yanıt yazın