Mohaddz commited on
Commit
ba38e71
·
verified ·
1 Parent(s): 3c0bacb

Delete app.py

Browse files
Files changed (1) hide show
  1. app.py +0 -85
app.py DELETED
@@ -1,85 +0,0 @@
1
- import gradio as gr
2
- import numpy as np
3
- from PIL import Image, ImageDraw
4
-
5
- # Define your labels
6
- part_labels = ["front-bumper", "fender", "hood", "door", "trunk"]
7
- damage_labels = ["dent", "scratch", "misalignment", "crack"]
8
-
9
- def mock_inference(image):
10
- # This function mocks the segmentation model output
11
- # It randomly assigns labels to different parts of the image
12
- height, width = image.shape[:2]
13
- part_mask = np.random.randint(0, len(part_labels), (height, width))
14
- damage_mask = np.random.randint(0, len(damage_labels), (height, width))
15
- return part_mask, damage_mask
16
-
17
- def combine_masks(part_mask, damage_mask):
18
- part_damage_pairs = []
19
- for part_id, part_name in enumerate(part_labels):
20
- for damage_id, damage_name in enumerate(damage_labels):
21
- part_binary = (part_mask == part_id)
22
- damage_binary = (damage_mask == damage_id)
23
- intersection = np.logical_and(part_binary, damage_binary)
24
- if np.any(intersection):
25
- part_damage_pairs.append((part_name, damage_name))
26
- return part_damage_pairs
27
-
28
- def create_one_hot_vector(part_damage_pairs):
29
- vector = np.zeros(len(part_labels) * len(damage_labels))
30
- for part, damage in part_damage_pairs:
31
- if part in part_labels and damage in damage_labels:
32
- part_index = part_labels.index(part)
33
- damage_index = damage_labels.index(damage)
34
- vector_index = part_index * len(damage_labels) + damage_index
35
- vector[vector_index] = 1
36
- return vector
37
-
38
- def visualize_results(image, part_mask, damage_mask):
39
- img = Image.fromarray(image)
40
- draw = ImageDraw.Draw(img)
41
-
42
- for i in range(0, img.width, 10): # Sample every 10th pixel for efficiency
43
- for j in range(0, img.height, 10):
44
- part = part_labels[part_mask[j, i]]
45
- damage = damage_labels[damage_mask[j, i]]
46
- draw.point((i, j), fill="red")
47
-
48
- return img
49
-
50
- def process_image(image):
51
- # Mock inference
52
- part_mask, damage_mask = mock_inference(image)
53
-
54
- # Combine masks
55
- part_damage_pairs = combine_masks(part_mask, damage_mask)
56
-
57
- # Create one-hot encoded vector
58
- one_hot_vector = create_one_hot_vector(part_damage_pairs)
59
-
60
- # Visualize results
61
- result_image = visualize_results(image, part_mask, damage_mask)
62
-
63
- return result_image, part_damage_pairs, one_hot_vector.tolist()
64
-
65
- def gradio_interface(input_image):
66
- result_image, part_damage_pairs, one_hot_vector = process_image(input_image)
67
-
68
- # Convert part_damage_pairs to a string for display
69
- damage_description = "\n".join([f"{part} : {damage}" for part, damage in part_damage_pairs])
70
-
71
- return result_image, damage_description, str(one_hot_vector)
72
-
73
- iface = gr.Interface(
74
- fn=gradio_interface,
75
- inputs=gr.Image(type="numpy"),
76
- outputs=[
77
- gr.Image(type="pil", label="Detected Damage (Mocked)"),
78
- gr.Textbox(label="Damage Description"),
79
- gr.Textbox(label="One-hot Encoded Vector")
80
- ],
81
- title="Car Damage Assessment (Demo)",
82
- description="Upload an image of a damaged car to get a mocked assessment of the damage. Note: This is a demo using random predictions, not actual model inference."
83
- )
84
-
85
- iface.launch()