AI Programlama ve Teknoloji
AI ile görsel tanıma nasıl yapılır?
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:
- Küçük başlayın: 5-10 kategoriyle test edin
- Veri kalitesine odaklanın: 100 iyi fotoğraf > 1000 kötü fotoğraf
- 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
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!