Abhishek Gola
commited on
Commit
·
5391ff2
1
Parent(s):
ae5418b
Added samples
Browse files- .gitattributes +5 -0
- app.py +46 -9
- examples/dog416.png +3 -0
- examples/messi5.jpg +3 -0
- examples/selfie.jpg +3 -0
- examples/space_shuttle.jpg +3 -0
.gitattributes
CHANGED
|
@@ -14,6 +14,11 @@
|
|
| 14 |
*.npy filter=lfs diff=lfs merge=lfs -text
|
| 15 |
*.npz filter=lfs diff=lfs merge=lfs -text
|
| 16 |
*.onnx filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 17 |
*.ot filter=lfs diff=lfs merge=lfs -text
|
| 18 |
*.parquet filter=lfs diff=lfs merge=lfs -text
|
| 19 |
*.pb filter=lfs diff=lfs merge=lfs -text
|
|
|
|
| 14 |
*.npy filter=lfs diff=lfs merge=lfs -text
|
| 15 |
*.npz filter=lfs diff=lfs merge=lfs -text
|
| 16 |
*.onnx filter=lfs diff=lfs merge=lfs -text
|
| 17 |
+
*.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 18 |
+
*.jpg filter=lfs diff=lfs merge=lfs -text
|
| 19 |
+
*.gif filter=lfs diff=lfs merge=lfs -text
|
| 20 |
+
*.png filter=lfs diff=lfs merge=lfs -text
|
| 21 |
+
*.webp filter=lfs diff=lfs merge=lfs -te
|
| 22 |
*.ot filter=lfs diff=lfs merge=lfs -text
|
| 23 |
*.parquet filter=lfs diff=lfs merge=lfs -text
|
| 24 |
*.pb filter=lfs diff=lfs merge=lfs -text
|
app.py
CHANGED
|
@@ -78,24 +78,61 @@ def clear_points():
|
|
| 78 |
state["labels"].clear()
|
| 79 |
return state["original_image_rgb"], None
|
| 80 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 81 |
# Gradio UI
|
| 82 |
-
with gr.Blocks(
|
| 83 |
-
|
| 84 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 85 |
|
| 86 |
with gr.Row():
|
| 87 |
-
|
| 88 |
-
|
|
|
|
|
|
|
|
|
|
| 89 |
|
| 90 |
with gr.Row():
|
| 91 |
segment_btn = gr.Button("Segment", variant="primary")
|
| 92 |
clear_points_btn = gr.Button("Clear Points")
|
| 93 |
clear_all_btn = gr.Button("Clear All")
|
| 94 |
|
| 95 |
-
|
| 96 |
-
|
| 97 |
-
|
| 98 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 99 |
|
| 100 |
if __name__ == "__main__":
|
| 101 |
demo.launch()
|
|
|
|
| 78 |
state["labels"].clear()
|
| 79 |
return state["original_image_rgb"], None
|
| 80 |
|
| 81 |
+
def update_image_state(new_image):
|
| 82 |
+
"""
|
| 83 |
+
Called only when the user actually loads or picks a new image.
|
| 84 |
+
Reset everything here.
|
| 85 |
+
"""
|
| 86 |
+
if new_image is None or np.array_equal(new_image, state["original_image_rgb"]):
|
| 87 |
+
return None, None
|
| 88 |
+
|
| 89 |
+
bgr = cv.cvtColor(new_image, cv.COLOR_RGB2BGR)
|
| 90 |
+
state["image"] = bgr
|
| 91 |
+
state["original_image_rgb"] = new_image.copy()
|
| 92 |
+
|
| 93 |
+
state["points"].clear()
|
| 94 |
+
state["labels"].clear()
|
| 95 |
+
|
| 96 |
+
return None, None
|
| 97 |
+
|
| 98 |
# Gradio UI
|
| 99 |
+
with gr.Blocks(css='''.example * {
|
| 100 |
+
font-style: italic;
|
| 101 |
+
font-size: 18px !important;
|
| 102 |
+
color: #0ea5e9 !important;
|
| 103 |
+
}''') as demo:
|
| 104 |
+
|
| 105 |
+
gr.Markdown("### EfficientSAM: Interactive Image Segmentation")
|
| 106 |
+
gr.Markdown("Click to add up to 6 **foreground points**, then click **Segment**. Use **Clear All** to reset, or **Clear Points** to remove only clicks.")
|
| 107 |
|
| 108 |
with gr.Row():
|
| 109 |
+
input_image = gr.Image(type="numpy", label="Upload Image", interactive=True)
|
| 110 |
+
prompt_overlay = gr.Image(type="numpy", label="Your Clicks", interactive=False)
|
| 111 |
+
output_image = gr.Image(type="numpy", label="Segmentation Result")
|
| 112 |
+
|
| 113 |
+
input_image.change(fn=update_image_state, inputs=input_image, outputs=[output_image, prompt_overlay])
|
| 114 |
|
| 115 |
with gr.Row():
|
| 116 |
segment_btn = gr.Button("Segment", variant="primary")
|
| 117 |
clear_points_btn = gr.Button("Clear Points")
|
| 118 |
clear_all_btn = gr.Button("Clear All")
|
| 119 |
|
| 120 |
+
segment_btn.click(fn=run_segmentation, outputs=output_image)
|
| 121 |
+
clear_points_btn.click(fn=clear_points, outputs=[input_image, output_image])
|
| 122 |
+
clear_all_btn.click(fn=clear_all, outputs=[input_image, output_image])
|
| 123 |
+
input_image.select(fn=segment_image_with_prompts, inputs=input_image, outputs=prompt_overlay)
|
| 124 |
+
|
| 125 |
+
gr.Markdown("Click on any example to try it.", elem_classes=["example"])
|
| 126 |
+
|
| 127 |
+
gr.Examples(
|
| 128 |
+
examples=[
|
| 129 |
+
["examples/dog416.png"],
|
| 130 |
+
["examples/messi5.jpg"],
|
| 131 |
+
["examples/selfie.jpg"],
|
| 132 |
+
["examples/space_shuttle.jpg"]
|
| 133 |
+
],
|
| 134 |
+
inputs=input_image
|
| 135 |
+
)
|
| 136 |
|
| 137 |
if __name__ == "__main__":
|
| 138 |
demo.launch()
|
examples/dog416.png
ADDED
|
Git LFS Details
|
examples/messi5.jpg
ADDED
|
Git LFS Details
|
examples/selfie.jpg
ADDED
|
Git LFS Details
|
examples/space_shuttle.jpg
ADDED
|
Git LFS Details
|