ziffir's picture
Update app.py
9aa2989 verified
import gradio as gr
from PIL import Image
import numpy as np
import random
import json
class UltraLightGeoDemo:
def __init__(self):
self.dataset_info = "S2-NAIP Mini Demo - Hafif örnek veri ile"
def predict_coordinates(self, image):
"""Demo tahmin - model yüklemeden"""
try:
# Rastgele koordinatlar (demo amaçlı)
lat = round(random.uniform(36.0, 42.0), 4) # Türkiye civarı
lon = round(random.uniform(26.0, 45.0), 4)
confidence = round(random.uniform(0.4, 0.95), 2)
result = {
'latitude': lat,
'longitude': lon,
'confidence': confidence,
'note': 'DEMO TAHMİN — Gerçek model eğitilmedi',
'next_step': 'Gerçek mini model eğitimi için Kaggle örneğini kullanın.'
}
return result
except Exception as e:
return {'error': str(e)}
# Gradio arayüzü
def create_demo_interface():
demo = UltraLightGeoDemo()
with gr.Blocks(title="🌍 Jeo-Referanslama Mini Demo", theme=gr.themes.Soft()) as interface:
gr.Markdown("""
# 🌍 Jeo-Referanslama **Mini DEMO**
**Ultra Hafif Sürüm - Gerçek model olmadan çalışır**
🔹 Bu versiyon sadece az sayıda veri örneğiyle (mini dataset) test yapılmasını önerir.
🔹 Gerçek eğitim için aşağıdaki Kaggle bağlantısını kullanabilirsiniz.
""")
with gr.Row():
with gr.Column():
image_input = gr.Image(
type="filepath",
label="Uydu Görüntüsü Yükle",
height=300
)
predict_btn = gr.Button("📍 Demo Tahmin Yap", variant="primary")
with gr.Column():
output_json = gr.JSON(label="Tahmin Sonuçları")
# Kaggle bağlantısı
gr.Markdown("""
---
## 🚀 Gerçek (mini) Model İçin Kaggle'a Git:
**[👉 KAGGLE'DA MİNİ SİSTEMİ ÇALIŞTIR](https://kaggle.com)**
**Kaggle'da yapman gerekenler:**
1. Bağlantıya tıkla → "Notebooks" → "New Notebook"
2. "Settings" sekmesinde **GPU (T4)** seç
3. Aşağıdaki hafif veri yükleme kodunu çalıştır
""")
# Kaggle için mini dataset kodu
with gr.Accordion("📋 Kaggle Mini Eğitim Kodu", open=False):
gr.Markdown("""
```python
# HAFİF EĞİTİM KODU - 500 örnekle mini test
!pip install torch torchvision transformers datasets tqdm --quiet
import torch
from transformers import AutoModel
from datasets import load_dataset
print("🛰️ S2-NAIP mini örnek yükleniyor...")
dataset = load_dataset("allenai/s2-naip", split="train[:500]") # sadece 500 örnek
print(f"Yüklendi: {len(dataset)} örnek")
device = "cuda" if torch.cuda.is_available() else "cpu"
model = AutoModel.from_pretrained("facebook/dinov2-small").to(device)
print("✅ Mini eğitim/deneme için hazır!")
```
""")
predict_btn.click(
fn=demo.predict_coordinates,
inputs=image_input,
outputs=output_json
)
return interface
if __name__ == "__main__":
demo = create_demo_interface()
demo.launch(server_name="0.0.0.0", server_port=7860)