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)