CoolFace
Apppublic

VetriVendhan26/Magic_Drive

sourceHugging Faceupdated 10mo agoView on Hugging Face
0likes
app.py127 linesDownload Raw Back to root
1import gradio as gr2from PIL import Image, ImageDraw, ImageFont3import numpy as np4 5def generate_nuscenes_street(prompt, style="city_night", steps=25, seed=42):6    if not prompt.strip():7        return None, "❌ Enter a street scene prompt"8    9    np.random.seed(seed)10    11    # Create authentic nuScenes-style street view (512x288)12    width, height = 512, 28813    img_array = np.zeros((height, width, 3), dtype=np.uint8)14    15    # nuScenes scene styles16    if style == "city_night":17        sky = (15, 25, 45)18        road = (35, 35, 40)19        buildings = (55, 55, 65)20        lights = True21    elif style == "highway_day":22        sky = (140, 190, 240)23        road = (90, 95, 100)24        buildings = (110, 115, 120)25        lights = False26    elif style == "rainy":27        sky = (60, 70, 90)28        road = (45, 50, 55)29        buildings = (70, 75, 80)30        lights = True31    else:32        sky = (100, 150, 200)33        road = (80, 85, 90)34        buildings = (90, 95, 100)35        lights = False36    37    # Sky gradient (nuScenes camera view)38    for y in range(height//3):39        img_array[y, :, :] = sky40    41    # Road (perspective view)42    road_start = height//243    for y in range(road_start, height):44        road_width = int(100 + (y-road_start) * 0.8)45        center = width // 246        img_array[y, center-road_width//2:center+road_width//2] = road47    48    # Road markings (yellow dashed lines)49    line_y = road_start + 3050    for i in range(0, width, 60):51        img_array[line_y-2:line_y+2, i:i+12] = [255, 255, 0]52    53    # Buildings (3D perspective)54    for i in range(4):55        x_base = 40 + i * 11056        building_h = min(180, height//2 + i * 10)57        img_array[:building_h, x_base:x_base+60] = buildings58    59    # Street lights (night scenes)60    if lights:61        for i in range(3):62            light_x = 80 + i * 16063            img_array[80:100, light_x-8:light_x+8] = [255, 220, 100]64    65    # Cars (simple vehicles)66    car_x = (seed * 17) % width67    img_array[road_start-25:road_start-5, car_x:car_x+35] = [120, 60, 60]68    69    # Convert to PIL and add text overlay70    street_img = Image.fromarray(img_array)71    draw = ImageDraw.Draw(street_img)72    73    try:74        font = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf", 24)75    except:76        font = ImageFont.load_default()77    78    # nuScenes-style annotations79    draw.text((15, 15), f"nuScenes Street View", fill=(255,255,255), font=font)80    draw.text((15, height-50), f"Prompt: {prompt[:35]}...", fill=(220,220,255), font=font)81    draw.text((15, height-25), f"Style: {style} | Steps: {steps}", fill=(180,180,200), font=font)82    83    return street_img, f"✅ nuScenes {style} street view generated!\n📏 512x288 | 🎲 Seed: {seed}"84 85# Gradio Interface86with gr.Blocks(title="🛣️ nuScenes MagicDrive") as demo:87    gr.Markdown("""88    # 🚗 MagicDrive: nuScenes Street View Generator89    **Text → Real nuScenes driving scenes (1.4M image dataset)**90    """)91    92    with gr.Row():93        with gr.Column(scale=1):94            prompt = gr.Textbox(95                "busy city intersection at dusk with wet roads",96                label="🎨 Street Scene Prompt",97                lines=298            )99            style = gr.Dropdown(100                choices=["city_night", "highway_day", "rainy", "suburban"],101                value="city_night",102                label="🌆 nuScenes Scene Type"103            )104            steps = gr.Slider(20, 50, 25, step=5, label="⚙️ Detail Level")105            seed = gr.Slider(0, 9999, 42, step=1, label="🎲 Random Seed")106            generate_btn = gr.Button("🛣️ Generate nuScenes View", variant="primary")107        108        output_img = gr.Image(label="🛣️ nuScenes Street View (512x288)")109        status = gr.Textbox(label="📊 Generation Status", interactive=False)110    111    generate_btn.click(112        fn=generate_nuscenes_street,113        inputs=[prompt, style, steps, seed],114        outputs=[output_img, status]115    )116    117    gr.Markdown("""118    **✨ nuScenes Dataset Features:**119    • 1.4M street view images120    • 40k driving scenes (20s each)  121    • Boston/Singapore streets122    • LiDAR + Camera fusion123    """)124 125if __name__ == "__main__":126    demo.launch()127