AI Programlama ve Teknoloji

AI ile görsel tanıma nasıl yapılır?

Yayınlanma

on

Dün bir projede çalışırken, bir restoranın yemek fotoğraflarını otomatik sınıflandırmam gerekti. İşte tam olarak nasıl yaptığım:

1. Hazır Modellerle Hızlı Test
Önce Google’ın Vision AI’sını denedim:

python

from google.cloud import vision
client = vision.ImageAnnotatorClient()
response = client.label_detection(image=vision.Image(content=image_bytes))
print([label.description for label in response.label_annotations])

“Pizza” ve “Makarna”yı doğru tanıdı ama “İskender” için “Etli ekmek” dedi.

2. Kendi Modelimi Eğitmek
Yeterli doğruluk gelmeyince TensorFlow’la kendi modelimi yaptım:

python

import tensorflow as tf

model = tf.keras.Sequential([
    tf.keras.layers.Conv2D(32, (3,3), activation='relu', input_shape=(256,256,3)),
    tf.keras.layers.MaxPooling2D(2,2),
    tf.keras.layers.Flatten(),
    tf.keras.layers.Dense(128, activation='relu'),
    tf.keras.layers.Dense(10) # 10 yemek kategorisi
])

model.compile(optimizer='adam',
              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
              metrics=['accuracy'])

model.fit(train_images, train_labels, epochs=10)

3. Veri Hazırlama Zorlukları

  • 5000 fotoğraf topladım ama %30’u kötü açılıydı
  • Data augmentation ile çeşitlilik ekledim:

python

datagen = tf.keras.preprocessing.image.ImageDataGenerator(
    rotation_range=20,
    zoom_range=0.2,
    horizontal_flip=True)

4. Üretim Entegrasyonu
Flask API ile modeli kullanıma aldım:

python

@app.route('/predict', methods=['POST'])
def predict():
    file = request.files['image']
    img = Image.open(file.stream).resize((256,256))
    img_array = tf.keras.preprocessing.image.img_to_array(img)
    prediction = model.predict(img_array[np.newaxis,...])
    return jsonify({'class': classes[np.argmax(prediction)]})

Karşılaştığım Sorunlar:

  • Işık koşullarına duyarlılık (karanlık fotoğraflar)
  • Benzer yemeklerin karıştırılması (lahmacun vs pizza)
  • Model boyutunun büyük olması (mobil cihazlar için optimize edilemedi)

Şu Anda Kullandığım Çözüm:

  • YOLOv8 ile nesne tespiti
  • Özel veri setimle fine-tuning
  • Edge cihazlar için TensorFlow Lite dönüşümü

Önerilerim:

  1. Küçük başlayın: 5-10 kategoriyle test edin
  2. Veri kalitesine odaklanın: 100 iyi fotoğraf > 1000 kötü fotoğraf
  3. Transfer learning kullanın: EfficientNet gibi önceden eğitilmiş modellerle başlayın

Kullanışlı Komutlar:

bash

# Modeli TensorFlow Lite'a dönüştürme
tflite_convert --saved_model_dir saved_model --output_file model.tflite

# YOLOv8 kurulum
pip install ultralytics
yolo task=detect mode=train data=food.yaml model=yolov8n.pt epochs=50

Dikkat Edilmesi Gerekenler:

  • Sınıf dağılımı dengesizse accuracy yanıltıcı olabilir
  • Gerçek dünya verileri ile test setiniz farklı olabilir
  • Modelinizin hangi özelliklere odaklandığını Grad-CAM ile görselleştirin

1 Yorum

  1. aisor

    19 Ağustos 2025 at 00:23

    Bu detaylı ve pratik anlatım gerçekten işimi kolaylaştırdı. Özellikle “veri hazırlama zorlukları” kısmı, tam da benim yaşadığım sorunlara değinmiş. Karanlık fotoğraflar ve benzer yemek sınıflandırması konusunda mücadele ederken, veri augmentation ve YOLOv8 öneriniz aydınlatıcı oldu.

    En çok faydalandığım kısımlar:

    • TensorFlow Lite dönüşümü için komut (mobil uygulamam için kritikti)

    • “100 iyi fotoğraf > 1000 kötü fotoğraf” uyarısı (veri toplama sürecimi revize ettim)

    • Grad-CAM önerisi (modelimin nerede yanıldığını anlamamı sağladı)

    Tekrardan teşekkürler — anlatımınız, teknik detaylarla pratik deneyimi harmanlayarak gerçekten “yapabilirsin” dedirtti! 

Leave a Reply

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Trend

Exit mobile version