Al Modelleri
FairFace Age Image Detection: Yaş Tahmini için Derin Öğrenme Modeli
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.