Convolutional Neural Network (CNN) ile 4 Kullanım Alanı

Konvolüsyonel Sinir Ağları (Convolutional Neural Networks – CNN), derin öğrenme alanında özellikle görüntü işleme görevlerinde büyük başarı elde eden yapay sinir ağı türlerinden biridir. Temel amacı, görsel veriler gibi yapısal bilgi içeren verileri işlemek ve analiz etmek için optimize edilmiş bir yapı sunmaktır. Bu tür ağlar, biyolojik görüş sistemlerinin çalışma prensiplerinden esinlenmiştir. Görüntü tanıma, nesne tespiti, yüz tanıma, medikal görüntü analizi gibi birçok alanda kullanılırlar.

Convolutional Neural Network Neler Yapar?

  1. Özellik Çıkarımı: Convolutional Neural Network, veri içerisindeki önemli özellikleri otomatik olarak çıkarmak için konvolüsyon işlemleri kullanır. Bu işlem, görüntülerdeki kenarlar, doku benzerlikleri, renk geçişleri gibi düşük seviye özelliklerin tespit edilmesini sağlar.
  2. Hierarşik Özellikler: Ağın katmanları, gittikçe daha karmaşık özellikler öğrenir. İlk katmanlar basit kenarlar veya köşeler gibi temel özellikleri algılarken daha sonraki katmanlar daha yüksek seviyeli özellikleri, örneğin nesne parçalarını veya özel desenleri öğrenir.
  3. Öğrenme: Convolutional Neural Network, ağırlık değerlerini veri setindeki örneklerden otomatik olarak öğrenir. Bu, ağın belirli bir veri kümesine adapte olmasını sağlar. Büyük veri setleri kullanarak, ağlar genellemeler yapabilir ve farklı örneklerde de iyi sonuçlar elde edebilirler.
  4. Nesne Tanıma: Convolutional Neural Networks, öğrendikleri özellikler sayesinde görüntülerdeki nesneleri tanıma yeteneğine sahiptir. Bu, ağların farklı nesneleri sınıflandırmasını ve tespit etmesini mümkün kılar.

Nerelerde Kullanılır?

  • Görüntü Tanıma: Nesneleri, insanları, hayvanları vb. tanıma işlemleri.
  • Nesne Tespiti: Görüntülerdeki nesnelerin konumlarını saptama işlemleri.
  • Yüz Tanıma: Yüzleri tanıma ve farklı yüz parçalarını ayırt etme.
  • Tıbbi Görüntü Analizi: Röntgen, MRI gibi medikal görüntülerde patolojileri tanıma.
  • Otomatik Sürüş Sistemleri: Araçların önündeki nesneleri algılama ve tespit etme.
  • Doğal Dil İşleme: Metin verilerinde anlam çıkarma işlemleri için görsel bileşenlerin kullanılması.

Yapay Zeka’nın günümüzdeki kullanımlarıyla ilgili biraz daha bilgi isterseniz sitemizdeki bir diğer yazıya aşağıda bulunan link ile gidebilirsiniz.

cagyazilim.com.tr/yapay-zeka-nedir-nereye-gidiyor/

Örnek Python Çalışması

Aşağıda MNIST Veri Seti ile Convolutional Neural Networks mimarisi için örnek kod bloğu bulunmaktadır.

MNIST veri seti, makine öğrenimi ve derin öğrenme alanında sıkça kullanılan bir veri setidir. MNIST, elle yazılmış rakamlardan oluşan bir veri setidir ve genellikle görüntü sınıflandırma algoritmalarının ve modellerinin geliştirilmesi için kullanılır. Veri seti, 0’dan 9’a kadar olan tek haneli rakamları içerir.

MNIST veri seti, her biri 28×28 piksel boyutunda siyah beyaz (grayscale) görüntülerden oluşur. Her görüntü, elle yazılmış bir rakamı temsil eder. Veri seti, öğrenme ve test olmak üzere iki ana bölümden oluşur:

  1. Eğitim Verileri: Bu bölüm, modelin öğrenmeyi gerçekleştirdiği ve ağırlık değerlerini ayarladığı verileri içerir. Toplamda 60,000 adet eğitim örneği bulunur.
  2. Test Verileri: Modelin eğitim sonrası performansını değerlendirmek için kullanılan veri setidir. Bu bölümde 10,000 adet görüntü bulunur.

MNIST veri seti, başlangıç seviyesindeki öğrenme ve model geliştirme için oldukça popüler bir seçenektir. Özellikle görüntü sınıflandırma algoritmalarının temelini anlamak, yeni algoritmalar geliştirmek veya derin öğrenme modelleri tasarlamak için kullanılır.

import tensorflow as tf
from tensorflow.keras import layers, models

# MNIST veri setini yükleme
mnist = tf.keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()

# Veri ön işleme
train_images = train_images.reshape((60000, 28, 28, 1))
test_images = test_images.reshape((10000, 28, 28, 1))
train_images, test_images = train_images / 255.0, test_images / 255.0

# CNN modeli oluşturma
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.Flatten())
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(10, activation='softmax'))

# Modeli derleme
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

# Modeli eğitme
model.fit(train_images, train_labels, epochs=10, batch_size=64, validation_data=(test_images, test_labels))

Bu Python kodları, temel bir Convolutional Neural Network modelinin MNIST rakam veri seti üzerinde nasıl oluşturulup eğitildiğini göstermektedir. Bu basit örnek, Convolutional Neural Network mimarisinin temel işleyişini anlamak için kullanışlıdır. Gerçek projelerde daha büyük ve karmaşık veri setleri ve model yapıları kullanılabilir.

Daha detaylı bilgi için Tensorflow’un sitesini inceleyebilirsiniz:

https://www.tensorflow.org/

Post a comment.