File size: 2,619 Bytes
07ae9fd
 
b426f35
07ae9fd
 
b426f35
 
07ae9fd
 
b426f35
 
07ae9fd
b426f35
 
 
 
 
 
07ae9fd
b426f35
 
 
 
 
 
07ae9fd
 
 
 
b426f35
07ae9fd
b426f35
 
07ae9fd
 
 
 
 
b426f35
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35ce90a
b426f35
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
07ae9fd
 
 
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import gradio as gr
from huggingface_hub import InferenceClient
import os

"""
Warning Lamp Detector using Hugging Face Inference API
This application allows users to upload images of warning lamps and get classification results.
"""

# Initialize the client with your model
client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")

def detect_warning_lamp(image, history: list[tuple[str, str]], system_message):
    """
    Process the uploaded image and return detection results
    """
    # TODO: Replace with actual model inference
    # This is a placeholder response - you'll need to integrate your actual model
    messages = [{"role": "system", "content": system_message}]
    
    # Add the image analysis request
    messages.append({
        "role": "user", 
        "content": f"Please analyze this warning lamp image and provide a detailed classification."
    })

    response = ""
    for message in client.chat_completion(
        messages,
        max_tokens=512,
        stream=True,
        temperature=0.7,
        top_p=0.95,
    ):
        token = message.choices[0].delta.content
        response += token
        yield response

# Create a custom interface with image upload
with gr.Blocks(title="Warning Lamp Detector", theme=gr.themes.Soft()) as demo:
    gr.Markdown("""
    # 🚨 Warning Lamp Detector
    Upload an image of a warning lamp to get its classification.
    
    ### Instructions:
    1. Upload a clear image of the warning lamp
    2. Wait for the analysis
    3. View the detailed classification results
    """)
    
    with gr.Row():
        with gr.Column(scale=1):
            image_input = gr.Image(
                label="Upload Warning Lamp Image",
                type="pil",
                sources="upload"
            )
            system_message = gr.Textbox(
                value="You are an expert in warning lamp classification. Analyze the image and provide detailed information about the type, color, and status of the warning lamp.",
                label="System Message",
                lines=3
            )
        
        with gr.Column(scale=1):
            chatbot = gr.Chatbot(
                [],
                elem_id="chatbot",
                bubble_full_width=False,
                avatar_images=(None, "🚨"),
                height=400
            )
    
    # Add a submit button
    submit_btn = gr.Button("Analyze Warning Lamp", variant="primary")
    submit_btn.click(
        detect_warning_lamp,
        inputs=[image_input, chatbot, system_message],
        outputs=chatbot
    )

if __name__ == "__main__":
    demo.launch()