Python Makine Öğrenimi CNN ile Object Detection yapımı

Fatih Şahin

Yeni üye
19 Haz 2023
11
6
PYTHON VE CNN ALGORİTMASI İLE NESNE TESPİDİ

Veri Seti: veri seti proje için büyük bir önem arz etmektedir veri setinin ne kadar çok olması tespit edilecek nesnenin
daha doğru tespit edilmesi için önemlidir bazı veri artırma taktikleri ile verilerinizi artırmanız mümkündür.

Aşama 1:veri setinizi klasörlere taşıyın iki farklı klasör olması lazım train ve test olmak üzere bu 2 klasöre sonra değineceğiz
train klasörünün içine neyi tanıtmak istiyorsanız onu ekliye bilirsiniz

Örnek:
Directory: C:\Users\train>


Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 30.06.2023 14:43 kedi


Aşama 2:Proje için gerekli dosyalar oluşturduğumuza göre artık bir model eğite biliriz bunun için buna benzer bir koda ihtiyacımız var
kodun içindeki epoc sayısını yada katman sayısını artırmanız daha iyi bir öğrenmeye yol aça bilir fakat fazla öğrenme
zararlı
olabilir fazla öğrenme doğru tahmin yapma olasılığını azalta bilir

//--------------------------------=========
Eğitim için Gerekli olan kod parçacığı ========----------------------------------------\\
Python:
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense
from tensorflow.keras.preprocessing.image import ImageDataGenerator

# Gerekli parametrelerin tanımlanması
image_width = 200
image_height = 200
channels = 3
num_classes = 2
epochs = 10
model_file = 'trained_model.h5'
train_data_dir = './dataset/train/'  # Eğitim veri setinin yolu
test_data_dir = './dataset/test/'  # Test veri setinin yolu

# Veri artırma (data augmentation) yapılandırması
train_data_gen = ImageDataGenerator(rescale=1./255, shear_range=0.2, zoom_range=0.2, horizontal_flip=True)
test_data_gen = ImageDataGenerator(rescale=1./255)

# Eğitim veri setinin yüklenmesi ve ön işleme yapılması
train_data = train_data_gen.flow_from_directory(train_data_dir, target_size=(image_width, image_height),
                                               batch_size=32, class_mode='categorical')

# Test veri setinin yüklenmesi ve ön işleme yapılması
test_data = test_data_gen.flow_from_directory(test_data_dir, target_size=(image_width, image_height),
                                             batch_size=32, class_mode='categorical')

# Modelin tanımlanması
model = Sequential()

# Evrişim katmanları
model.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=(image_width, image_height, channels)))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(64, kernel_size=(3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

# Düzleştirme katmanı
model.add(Flatten())

# Tam bağlantılı (fully connected) katmanlar
model.add(Dense(128, activation='relu'))
model.add(Dense(num_classes, activation='softmax'))

# Modelin derlenmesi
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

# Modelin eğitimi
model.fit(train_data, epochs=epochs)

# Modelin kaydedilmesi
model.save(model_file)

# Test veri setinde modelin performansının değerlendirilmesi
test_loss, test_accuracy = model.evaluate(test_data)
print("Test Loss:", test_loss)
print("Test Accuracy:", test_accuracy)


Aşama 3:Artık oluşan modeli denemiz lazım bu kod ile deniye biliriz

//--------------------------------========= Test için Gerekli kod Parçacığı ========----------------------------------------\\


Python:
import numpy as np
from tensorflow import keras
from tensorflow.keras.preprocessing import image

# Eğitilmiş modelin yüklenmesi
model = keras.models.load_model('trained_model.h5')

# Test edilecek görüntü yolunu belirtin
test_image_path = './dataset/test/kedi/kedi.png'

# Görüntünün boyutunu ve ön işlemesini ayarlayın
image_width = 200
image_height = 200

# Görüntünün boyutunu ve ön işlemesini ayarlayın
img = image.load_img(test_image_path, target_size=(image_width, image_height))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = x / 255.0  # Veri normalizasyonu

# Tahmin yapma
predictions = model.predict(x)
class_labels = ["Kedi"]
predicted_class_index = np.argmax(predictions[0])
predicted_class_label = class_labels[predicted_class_index]

# Tahmin sonuçlarını yazdırma
print('Tahmin edilen sınıf:', predicted_class_label)

for i, prob in enumerate(predictions[0]):
    class_name = class_labels[i]
    print(f"{class_name}: {prob * 100:.6f}%")

Umarım yardımcı olmuştur
BY MFŞ TEAM
 

rootibo

Kıdemli Üye
13 Mar 2023
2,168
1,460
PYTHON VE CNN ALGORİTMASI İLE NESNE TESPİDİ

Veri Seti: veri seti proje için büyük bir önem arz etmektedir veri setinin ne kadar çok olması tespit edilecek nesnenin
daha doğru tespit edilmesi için önemlidir bazı veri artırma taktikleri ile verilerinizi artırmanız mümkündür.

Aşama 1:veri setinizi klasörlere taşıyın iki farklı klasör olması lazım train ve test olmak üzere bu 2 klasöre sonra değineceğiz
train klasörünün içine neyi tanıtmak istiyorsanız onu ekliye bilirsiniz

Örnek:
Directory: C:\Users\train>


Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 30.06.2023 14:43 kedi


Aşama 2:Proje için gerekli dosyalar oluşturduğumuza göre artık bir model eğite biliriz bunun için buna benzer bir koda ihtiyacımız var
kodun içindeki epoc sayısını yada katman sayısını artırmanız daha iyi bir öğrenmeye yol aça bilir fakat fazla öğrenme
zararlı
olabilir fazla öğrenme doğru tahmin yapma olasılığını azalta bilir

//--------------------------------=========
Eğitim için Gerekli olan kod parçacığı ========----------------------------------------\\
Python:
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense
from tensorflow.keras.preprocessing.image import ImageDataGenerator

# Gerekli parametrelerin tanımlanması
image_width = 200
image_height = 200
channels = 3
num_classes = 2
epochs = 10
model_file = 'trained_model.h5'
train_data_dir = './dataset/train/'  # Eğitim veri setinin yolu
test_data_dir = './dataset/test/'  # Test veri setinin yolu

# Veri artırma (data augmentation) yapılandırması
train_data_gen = ImageDataGenerator(rescale=1./255, shear_range=0.2, zoom_range=0.2, horizontal_flip=True)
test_data_gen = ImageDataGenerator(rescale=1./255)

# Eğitim veri setinin yüklenmesi ve ön işleme yapılması
train_data = train_data_gen.flow_from_directory(train_data_dir, target_size=(image_width, image_height),
                                               batch_size=32, class_mode='categorical')

# Test veri setinin yüklenmesi ve ön işleme yapılması
test_data = test_data_gen.flow_from_directory(test_data_dir, target_size=(image_width, image_height),
                                             batch_size=32, class_mode='categorical')

# Modelin tanımlanması
model = Sequential()

# Evrişim katmanları
model.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=(image_width, image_height, channels)))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(64, kernel_size=(3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

# Düzleştirme katmanı
model.add(Flatten())

# Tam bağlantılı (fully connected) katmanlar
model.add(Dense(128, activation='relu'))
model.add(Dense(num_classes, activation='softmax'))

# Modelin derlenmesi
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

# Modelin eğitimi
model.fit(train_data, epochs=epochs)

# Modelin kaydedilmesi
model.save(model_file)

# Test veri setinde modelin performansının değerlendirilmesi
test_loss, test_accuracy = model.evaluate(test_data)
print("Test Loss:", test_loss)
print("Test Accuracy:", test_accuracy)


Aşama 3:Artık oluşan modeli denemiz lazım bu kod ile deniye biliriz

//--------------------------------========= Test için Gerekli kod Parçacığı ========----------------------------------------\\


Python:
import numpy as np
from tensorflow import keras
from tensorflow.keras.preprocessing import image

# Eğitilmiş modelin yüklenmesi
model = keras.models.load_model('trained_model.h5')

# Test edilecek görüntü yolunu belirtin
test_image_path = './dataset/test/kedi/kedi.png'

# Görüntünün boyutunu ve ön işlemesini ayarlayın
image_width = 200
image_height = 200

# Görüntünün boyutunu ve ön işlemesini ayarlayın
img = image.load_img(test_image_path, target_size=(image_width, image_height))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = x / 255.0  # Veri normalizasyonu

# Tahmin yapma
predictions = model.predict(x)
class_labels = ["Kedi"]
predicted_class_index = np.argmax(predictions[0])
predicted_class_label = class_labels[predicted_class_index]

# Tahmin sonuçlarını yazdırma
print('Tahmin edilen sınıf:', predicted_class_label)

for i, prob in enumerate(predictions[0]):
    class_name = class_labels[i]
    print(f"{class_name}: {prob * 100:.6f}%")

Umarım yardımcı olmuştur
BY MFŞ TEAM
Eline saglik @Phobos' hocam nasil olmus ?
 

Phobos'

Uzman üye
22 Nis 2022
1,743
1,364
Elinize sağlık, veri bilimi ile daha çok içerik gelirse çok güzel olur.

Edit: @rootibo veri bilimi diyince akan sular durur. Sabahtan beri Kaggle'dayım.
 

Fatih Şahin

Yeni üye
19 Haz 2023
11
6
Eline saglik @Phobos' hocam nasil olmus ?
Elinize sağlık, veri bilimi ile daha çok içerik gelirse çok güzel olur.

Edit: @rootibo veri bilimi diyince akan sular durur. Sabahtan beri Kaggle'dayım.
Hepinize Çok teşekür ederim Ben 9.sınıf öğrencisiyim yapay zeka gibi dallara ilgim var eğer ilginizi çekerse yeni bir discord gurubum var istiyen gele bilir
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.