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ğitmekYeterli 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 EntegrasyonuFlask 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