oshankagrawal's picture
Update app.py
086637a verified
Raw
History Blame Contribute Delete
2.31 kB
import gradio as gr
import torch
from PIL import Image
from unsloth import FastVisionModel
MODEL_NAME = "sabaridsnfuji/FloorPlanVisionAIAdaptor"
print("Loading model...")
model, tokenizer = FastVisionModel.from_pretrained(
MODEL_NAME,
load_in_4bit=True,
use_gradient_checkpointing="unsloth"
)
FastVisionModel.for_inference(model)
print("Model loaded successfully!")
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
print("GPU:", torch.cuda.get_device_name(0))
def analyze_floorplan(image, instruction):
if image is None:
return "Please upload a floor plan image."
if not instruction:
instruction = """
You are an expert in architecture and interior design.
Analyze the floor plan image carefully.
Describe:
1. Number of rooms
2. Room names
3. Approximate layout
4. Connections between rooms
5. Doors and windows if visible
6. Important architectural features
7. Any other useful observations
"""
messages = [
{
"role": "user",
"content": [
{"type": "image"},
{"type": "text", "text": instruction}
]
}
]
input_text = tokenizer.apply_chat_template(
messages,
add_generation_prompt=True
)
inputs = tokenizer(
image,
input_text,
add_special_tokens=False,
return_tensors="pt"
).to("cuda")
outputs = model.generate(
**inputs,
max_new_tokens=1024,
use_cache=True
)
generated_text = tokenizer.decode(
outputs[0],
skip_special_tokens=True
)
return generated_text
demo = gr.Interface(
fn=analyze_floorplan,
inputs=[
gr.Image(
type="pil",
label="Upload Floor Plan"
),
gr.Textbox(
label="Instruction",
placeholder="Ask something about the floor plan...",
value="Analyze this floor plan in detail."
)
],
outputs=gr.Textbox(
label="Analysis"
),
title="Floor Plan Vision AI",
description="AI-powered floor plan analysis using FloorPlanVisionAIAdaptor."
)
if __name__ == "__main__":
demo.launch()