Spaces:
Sleeping
Sleeping
File size: 2,447 Bytes
6b0a154 7d8ec5e 4bdf8dd 49702ec c4e3ea5 4bdf8dd a21c2eb 4bdf8dd c4e3ea5 f41a948 5f58155 6b0a154 5f58155 49702ec f41a948 49702ec 4e27730 f41a948 4e27730 c4fefad 74a72c4 ef4e447 5f58155 ef4e447 5f58155 49702ec f41a948 49702ec f41a948 4bdf8dd 49702ec 74a72c4 f41a948 49702ec f41a948 cc1155e c4e3ea5 4bdf8dd a08e297 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
from transformers import BlipProcessor, BlipForConditionalGeneration
from PIL import Image
import gradio as gr
import torch
from datetime import datetime
# Load BLIP model and processor
processor = BlipProcessor.from_pretrained("Salesforce/blip-image-captioning-base")
model = BlipForConditionalGeneration.from_pretrained("Salesforce/blip-image-captioning-base")
model.eval()
device = "cuda" if torch.cuda.is_available() else "cpu"
model.to(device)
# Inference function to generate captions dynamically based on image content
def generate_captions_from_image(image):
if image.mode != "RGB":
image = image.convert("RGB")
# Preprocess the image and generate a caption
inputs = processor(image, return_tensors="pt").to(device, torch.float16)
output = model.generate(**inputs, max_new_tokens=50)
caption = processor.decode(output[0], skip_special_tokens=True)
return caption
# Function to generate the daily progress report (DPR) text
def generate_dpr(files):
dpr_text = []
current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
# Add header to the DPR
dpr_text.append(f"Daily Progress Report\nGenerated on: {current_time}\n")
# Process each uploaded file (image)
for file in files:
# Open the image from file path
image = Image.open(file.name) # Using file.name for filepath
if image.mode != "RGB":
image = image.convert("RGB")
# Dynamically generate a caption based on the image
caption = generate_captions_from_image(image)
# Generate DPR section for this image with dynamic caption
dpr_section = f"\nImage: {file.name}\nDescription: {caption}\n"
dpr_text.append(dpr_section)
# Return the generated DPR as a text output
return "\n".join(dpr_text)
# Gradio interface for uploading multiple files and displaying the text-based DPR
iface = gr.Interface(
fn=generate_dpr,
inputs=gr.Files(type="filepath", label="Upload Site Photos"), # Handle batch upload of images
outputs="text", # Display the DPR as text in the output section
title="Daily Progress Report Generator",
description="Upload up to 10 site photos. The AI model will dynamically detect construction activities, materials, and progress and generate a text-based Daily Progress Report (DPR).",
allow_flagging="never" # Optional: Disable flagging
)
iface.launch()
|