- 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ığı ========----------------------------------------\\
Aşama 3:Artık oluşan modeli denemiz lazım bu kod ile deniye biliriz
//--------------------------------========= Test için Gerekli kod Parçacığı ========----------------------------------------\\
Umarım yardımcı olmuştur
BY MFŞ TEAM
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