FairFace Age Image Detection Modeli: Detaylı Açıklama Model Nedir? dima806/fairface_age_image_detection, yüz görüntülerinden yaş tahmini yapan bir derin öğrenme modelidir. FairFace veri seti üzerinde eğitilmiş olup, çeşitli demografik gruplar üzerinde adil ve doğru yaş tahminleri yapmak için optimize edilmiştir. Teknik Özellikler: Mimari: CNN tabanlı derin öğrenme modeli Sınıflandırma: 9 farklı yaş grubu Eğitim Verisi: FairFace veri seti (100,000+ yüz görüntüsü) Çıktı: Yaş aralığı tahmini ve güven skorları Öne Çıkan Özellik: Demografik adalet ve yüksek doğruluk Yaş Grupları: Model 9 farklı yaş grubunu tanır: 0-2 3-9 10-19 20-29 30-39 40-49 50-59 60-69 70+ Kullanım Alanları: Yaş Doğrulama Sistemleri Demografik Analiz Pazarlama ve Hedef Kitle Belirleme Güvenlik ve Kimlik Doğrulama Araştırma ve İstatistiksel Çalışmalar Kurulum ve Kullanım Kodu 1. Gereksinimlerin Yüklenmesi pip install transformers torch Pillow pip install opencv-python pip install numpy 2. Modelin Yüklenmesi from transformers import AutoImageProcessor, AutoModelForImageClassification from PIL import Image import torch import numpy as np import cv2 # Model ve işlemciyi yükle model_name = "dima806/fairface_age_image_detection" processor = AutoImageProcessor.from_pretrained(model_name) model = AutoModelForImageClassification.from_pretrained(model_name) # GPU kullanımı (isteğe bağlı) device = torch.device("cuda" if torch.cuda.is_available() else "cpu") model = model.to(device) 3. Temel Yaş Tahmini def yaş_tahmini_et(görsel_yolu): """ Görseldeki yüzün yaşını tahmin eder """ # Görseli yükle ve işle image = Image.open(görsel_yolu).convert("RGB") inputs = processor(images=image, return_tensors="pt") # GPU'ya taşı inputs = {k: v.to(device) for k, v in inputs.items()} # Tahmin yap with torch.no_grad(): outputs = model(**inputs) # Sonuçları işle probabilities = torch.nn.functional.softmax(outputs.logits, dim=-1) predicted_class_idx = probabilities.argmax(-1).item() confidence = probabilities[0][predicted_class_idx].item() # Sınıf etiketlerini al age_groups = [ "0-2", "3-9", "10-19", "20-29", "30-39", "40-49", "50-59", "60-69", "70+" ] predicted_age = age_groups[predicted_class_idx] return { "yaş_grubu": predicted_age, "güven_skoru": float(confidence), "tüm_olasılıklar": probabilities.cpu().numpy()[0] } # Örnek kullanım sonuç = yaş_tahmini_et("örnek_yüz.jpg") print(f"Tahmin Edilen Yaş Grubu: {sonuç['yaş_grubu']}") print(f"Güven Skoru: {sonuç['güven_skoru']:.4f}") 4. Yüz Tespiti ile Birlikte Kullanım def yüz_tespiti_ve_yaş_tahmini(görsel_yolu): """ Önce yüzleri tespit eder, sonra her yüz için yaş tahmini yapar """ # OpenCV ile yüz tespiti image_cv = cv2.imread(görsel_yolu) gray = cv2.cvtColor(image_cv, cv2.COLOR_BGR2GRAY) # Yüz dedektörü face_cascade = cv2.CascadeClassifier( cv2.data.haarcascades + 'haarcascade_frontalface_default.xml' ) faces = face_cascade.detectMultiScale(gray, 1.1, 4) sonuçlar = [] for (x, y, w, h) in faces: # Yüzü kırp yüz_bölgesi = image_cv[y:y+h, x:x+w] yüz_pil = Image.fromarray(cv2.cvtColor(yüz_bölgesi, cv2.COLOR_BGR2RGB)) # Yaş tahmini yap inputs = processor(images=yüz_pil, return_tensors="pt") inputs = {k: v.to(device) for k, v in inputs.items()} with torch.no_grad(): outputs = model(**inputs) probabilities = torch.nn.functional.softmax(outputs.logits, dim=-1) predicted_class_idx = probabilities.argmax(-1).item() confidence = probabilities[0][predicted_class_idx].item() age_groups = [ "0-2", "3-9", "10-19", "20-29", "30-39", "40-49", "50-59", "60-69", "70+" ] sonuçlar.append({ "koordinatlar": (x, y, w, h), "yaş_grubu": age_groups[predicted_class_idx], "güven_skoru": float(confidence) }) return sonuçlar # Örnek kullanım tüm_sonuçlar = yüz_tespiti_ve_yaş_tahmini("grup_fotoğrafı.jpg") for i, sonuç in enumerate(tüm_sonuçlar): print(f"Yüz {i+1}: {sonuç['yaş_grubu']} (Güven: {sonuç['güven_skoru']:.3f})") 5. Gelişmiş: Detaylı Olasılık Analizi def detaylı_yaş_analizi(görsel_yolu): """ Tüm yaş grupları için detaylı olasılık analizi yapar """ sonuç = yaş_tahmini_et(görsel_yolu) age_groups = [ "0-2", "3-9", "10-19", "20-29", "30-39", "40-49", "50-59", "60-69", "70+" ] print("Detaylı Yaş Olasılıkları:") print("-" * 40) for i, age_group in enumerate(age_groups): olasılık = sonuç["tüm_olasılıklar"][i] * 100 print(f"{age_group:>5}: {olasılık:6.2f}%") return sonuç # Örnek kullanım detaylı_sonuç = detaylı_yaş_analizi("örnek_yüz.jpg") 6. Toplu İşlemler için import os from tqdm import tqdm def toplu_yaş_tahmini(klasör_yolu): """ Bir klasördeki tüm görseller için yaş tahmini yapar """ geçerli_uzantılar = ['.jpg', '.jpeg', '.png', '.bmp'] sonuçlar = {} for dosya in tqdm(os.listdir(klasör_yolu), desc="İşleniyor"): if any(dosya.lower().endswith(ext) for ext in geçerli_uzantılar): dosya_yolu = os.path.join(klasör_yolu, dosya) try: sonuç = yaş_tahmini_et(dosya_yolu) sonuçlar[dosya] = sonuç except Exception as e: print(f"Hata: {dosya} - {e}") sonuçlar[dosya] = {"hata": str(e)} return sonuçlar # Örnek kullanım # tüm_sonuçlar = toplu_yaş_tahmini("yüz_fotoğrafları_klasörü") İndirme Bilgileri Resmi İndirme Kaynakları: Hugging Face Model Hub: https://huggingface.co/dima806/fairface_age_image_detection Model Boyutu: ~150MB Gereksinimler: Python 3.7+, PyTorch, Transformers Otomatik İndirme: Model, kod ilk çalıştırıldığında otomatik olarak indirilir. Manuel indirme gerekmez. Model Dosyaları: config.json pytorch_model.bin preprocessor_config.json Performans İpuçları ve Önemli Notlar # GPU belleği optimizasyonu model = model.half() # Yarı duyarlıklı kayan nokta (FP16) # Batch işleme için def batch_yaş_tahmini(görsel_listesi, batch_size=4): """ Birden fazla görseli batch'ler halinde işler """ sonuçlar = [] for i in range(0, len(görsel_listesi), batch_size): batch = görsel_listesi[i:i+batch_size] # Batch işleme kodu buraya gelecek return sonuçlar Önemli Notlar: Model sadece yüz içeren görsellerle çalışmak için eğitilmiştir Işıklandırma ve açı kalitesi tahmin doğruluğunu etkiler Birden fazla yüz içeren görsellerde önce yüz tespiti yapılmalıdır Model %100 doğruluk garantisi vermez, istatistiksel tahminler yapar Bu model, yaş tahmini gerektiren uygulamalar için güvenilir ve adil sonuçlar sunar. FairFace veri seti üzerinde eğitilmiş olması, çeşitli demografik gruplar arasında dengeli performans göstermesini sağlar.