Spaces:
Sleeping
Sleeping
Upload app.py
Browse files
app.py
CHANGED
|
@@ -647,11 +647,11 @@ with gr.Blocks(theme=theme, title="Car Window Segmentation") as demo:
|
|
| 647 |
**Custom Trained Models:**
|
| 648 |
|
| 649 |
1. SegFormer
|
| 650 |
-
2.
|
| 651 |
-
3.
|
| 652 |
-
4.
|
| 653 |
-
5.
|
| 654 |
-
6.
|
| 655 |
7. SAM + YOLO (Strategy 1: Bbox + 5 Points)
|
| 656 |
8. SAM + YOLO (Strategy 2: Mask + 5 Points)
|
| 657 |
9. SAM + YOLO (Strategy 3: Direct Mask Prompting)
|
|
@@ -687,40 +687,40 @@ with gr.Blocks(theme=theme, title="Car Window Segmentation") as demo:
|
|
| 687 |
seq_segf_stats = gr.Textbox(label="SegFormer Stats", interactive=False)
|
| 688 |
|
| 689 |
gr.Markdown("---")
|
| 690 |
-
gr.Markdown("### 2️⃣
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 691 |
with gr.Row():
|
| 692 |
seq_yolo11_img = gr.Image(label="YOLO11x Overlay", interactive=False)
|
| 693 |
seq_yolo11_bw = gr.Image(label="YOLO11x Binary Mask", interactive=False, image_mode="L")
|
| 694 |
seq_yolo11_stats = gr.Textbox(label="YOLO11x Stats", interactive=False)
|
| 695 |
|
| 696 |
gr.Markdown("---")
|
| 697 |
-
gr.Markdown("###
|
| 698 |
with gr.Row():
|
| 699 |
seq_yolo_img = gr.Image(label="YOLO Overlay", interactive=False)
|
| 700 |
seq_yolo_bw = gr.Image(label="YOLO Binary Mask", interactive=False, image_mode="L")
|
| 701 |
seq_yolo_stats = gr.Textbox(label="YOLO Stats", interactive=False)
|
| 702 |
|
| 703 |
gr.Markdown("---")
|
| 704 |
-
gr.Markdown("###
|
| 705 |
with gr.Row():
|
| 706 |
seq_mrcnn_img = gr.Image(label="Mask R-CNN Overlay", interactive=False)
|
| 707 |
seq_mrcnn_bw = gr.Image(label="Mask R-CNN Binary Mask", interactive=False, image_mode="L")
|
| 708 |
seq_mrcnn_stats = gr.Textbox(label="Mask R-CNN Stats", interactive=False)
|
| 709 |
|
| 710 |
gr.Markdown("---")
|
| 711 |
-
gr.Markdown("###
|
| 712 |
with gr.Row():
|
| 713 |
seq_biref_img = gr.Image(label="BiRefNet Overlay", interactive=False)
|
| 714 |
seq_biref_bw = gr.Image(label="BiRefNet Binary Mask", interactive=False, image_mode="L")
|
| 715 |
seq_biref_stats = gr.Textbox(label="BiRefNet Stats", interactive=False)
|
| 716 |
|
| 717 |
-
gr.Markdown("---")
|
| 718 |
-
gr.Markdown("### 6️⃣ SegFormer + Morphological Cleanup (Holes Filled + Sharp Borders)")
|
| 719 |
-
with gr.Row():
|
| 720 |
-
seq_segf_morph_img = gr.Image(label="SegFormer + Morph Overlay", interactive=False)
|
| 721 |
-
seq_segf_morph_bw = gr.Image(label="SegFormer + Morph Binary Mask", interactive=False, image_mode="L")
|
| 722 |
-
seq_segf_morph_stats = gr.Textbox(label="SegFormer + Morph Stats", interactive=False)
|
| 723 |
-
|
| 724 |
gr.Markdown("---")
|
| 725 |
gr.Markdown("### 7️⃣ SAM + YOLO (Strategy 1: Bbox + 5 Points)")
|
| 726 |
with gr.Row():
|
|
@@ -770,31 +770,36 @@ with gr.Blocks(theme=theme, title="Car Window Segmentation") as demo:
|
|
| 770 |
yield tuple([None]*36)
|
| 771 |
return
|
| 772 |
|
| 773 |
-
#
|
|
|
|
| 774 |
results = [None] * 36
|
|
|
|
|
|
|
|
|
|
|
|
|
| 775 |
|
| 776 |
# 1. SegFormer
|
| 777 |
results[0], results[1], results[2] = run_segformer(img, morph_cleanup=False)
|
| 778 |
yield tuple(results)
|
| 779 |
|
| 780 |
-
# 2.
|
| 781 |
-
results[3], results[4], results[5] =
|
| 782 |
yield tuple(results)
|
| 783 |
|
| 784 |
-
# 3.
|
| 785 |
-
results[6], results[7], results[8] = process_image(img, "
|
| 786 |
yield tuple(results)
|
| 787 |
|
| 788 |
-
# 4.
|
| 789 |
-
results[9], results[10], results[11] = process_image(img, "
|
| 790 |
yield tuple(results)
|
| 791 |
|
| 792 |
-
# 5.
|
| 793 |
-
results[12], results[13], results[14] =
|
| 794 |
yield tuple(results)
|
| 795 |
|
| 796 |
-
# 6.
|
| 797 |
-
results[15], results[16], results[17] =
|
| 798 |
yield tuple(results)
|
| 799 |
|
| 800 |
# 7. SAM + YOLO Strat 1
|
|
@@ -825,11 +830,11 @@ with gr.Blocks(theme=theme, title="Car Window Segmentation") as demo:
|
|
| 825 |
fn=run_all_models,
|
| 826 |
inputs=[input_image_seq],
|
| 827 |
outputs=[seq_segf_img, seq_segf_bw, seq_segf_stats,
|
|
|
|
| 828 |
seq_yolo11_img, seq_yolo11_bw, seq_yolo11_stats,
|
| 829 |
seq_yolo_img, seq_yolo_bw, seq_yolo_stats,
|
| 830 |
seq_mrcnn_img, seq_mrcnn_bw, seq_mrcnn_stats,
|
| 831 |
seq_biref_img, seq_biref_bw, seq_biref_stats,
|
| 832 |
-
seq_segf_morph_img, seq_segf_morph_bw, seq_segf_morph_stats,
|
| 833 |
seq_sam1_img, seq_sam1_bw, seq_sam1_stats,
|
| 834 |
seq_sam2_img, seq_sam2_bw, seq_sam2_stats,
|
| 835 |
seq_sam3_img, seq_sam3_bw, seq_sam3_stats,
|
|
|
|
| 647 |
**Custom Trained Models:**
|
| 648 |
|
| 649 |
1. SegFormer
|
| 650 |
+
2. SegFormer + Morphological
|
| 651 |
+
3. YOLO11x-seg
|
| 652 |
+
4. YOLOv8x-seg
|
| 653 |
+
5. Mask R-CNN
|
| 654 |
+
6. BiRefNet
|
| 655 |
7. SAM + YOLO (Strategy 1: Bbox + 5 Points)
|
| 656 |
8. SAM + YOLO (Strategy 2: Mask + 5 Points)
|
| 657 |
9. SAM + YOLO (Strategy 3: Direct Mask Prompting)
|
|
|
|
| 687 |
seq_segf_stats = gr.Textbox(label="SegFormer Stats", interactive=False)
|
| 688 |
|
| 689 |
gr.Markdown("---")
|
| 690 |
+
gr.Markdown("### 2️⃣ SegFormer + Morphological Cleanup (Holes Filled + Sharp Borders)")
|
| 691 |
+
with gr.Row():
|
| 692 |
+
seq_segf_morph_img = gr.Image(label="SegFormer + Morph Overlay", interactive=False)
|
| 693 |
+
seq_segf_morph_bw = gr.Image(label="SegFormer + Morph Binary Mask", interactive=False, image_mode="L")
|
| 694 |
+
seq_segf_morph_stats = gr.Textbox(label="SegFormer + Morph Stats", interactive=False)
|
| 695 |
+
|
| 696 |
+
gr.Markdown("---")
|
| 697 |
+
gr.Markdown("### 3️⃣ YOLO11x-seg")
|
| 698 |
with gr.Row():
|
| 699 |
seq_yolo11_img = gr.Image(label="YOLO11x Overlay", interactive=False)
|
| 700 |
seq_yolo11_bw = gr.Image(label="YOLO11x Binary Mask", interactive=False, image_mode="L")
|
| 701 |
seq_yolo11_stats = gr.Textbox(label="YOLO11x Stats", interactive=False)
|
| 702 |
|
| 703 |
gr.Markdown("---")
|
| 704 |
+
gr.Markdown("### 4️⃣ YOLOv8x-seg")
|
| 705 |
with gr.Row():
|
| 706 |
seq_yolo_img = gr.Image(label="YOLO Overlay", interactive=False)
|
| 707 |
seq_yolo_bw = gr.Image(label="YOLO Binary Mask", interactive=False, image_mode="L")
|
| 708 |
seq_yolo_stats = gr.Textbox(label="YOLO Stats", interactive=False)
|
| 709 |
|
| 710 |
gr.Markdown("---")
|
| 711 |
+
gr.Markdown("### 5️⃣ Mask R-CNN (ResNet50-FPN)")
|
| 712 |
with gr.Row():
|
| 713 |
seq_mrcnn_img = gr.Image(label="Mask R-CNN Overlay", interactive=False)
|
| 714 |
seq_mrcnn_bw = gr.Image(label="Mask R-CNN Binary Mask", interactive=False, image_mode="L")
|
| 715 |
seq_mrcnn_stats = gr.Textbox(label="Mask R-CNN Stats", interactive=False)
|
| 716 |
|
| 717 |
gr.Markdown("---")
|
| 718 |
+
gr.Markdown("### 6️⃣ BiRefNet (Boundary-Aware Model)")
|
| 719 |
with gr.Row():
|
| 720 |
seq_biref_img = gr.Image(label="BiRefNet Overlay", interactive=False)
|
| 721 |
seq_biref_bw = gr.Image(label="BiRefNet Binary Mask", interactive=False, image_mode="L")
|
| 722 |
seq_biref_stats = gr.Textbox(label="BiRefNet Stats", interactive=False)
|
| 723 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 724 |
gr.Markdown("---")
|
| 725 |
gr.Markdown("### 7️⃣ SAM + YOLO (Strategy 1: Bbox + 5 Points)")
|
| 726 |
with gr.Row():
|
|
|
|
| 770 |
yield tuple([None]*36)
|
| 771 |
return
|
| 772 |
|
| 773 |
+
# ── Step 0: Show "Processing..." in ALL textboxes immediately ──
|
| 774 |
+
PENDING = "⏳ Processing..."
|
| 775 |
results = [None] * 36
|
| 776 |
+
# Set all stats textboxes to pending state
|
| 777 |
+
for i in [2, 5, 8, 11, 14, 17, 20, 23, 26, 29, 32, 35]:
|
| 778 |
+
results[i] = PENDING
|
| 779 |
+
yield tuple(results)
|
| 780 |
|
| 781 |
# 1. SegFormer
|
| 782 |
results[0], results[1], results[2] = run_segformer(img, morph_cleanup=False)
|
| 783 |
yield tuple(results)
|
| 784 |
|
| 785 |
+
# 2. SegFormer + Morphology
|
| 786 |
+
results[3], results[4], results[5] = run_segformer(img, morph_cleanup=True)
|
| 787 |
yield tuple(results)
|
| 788 |
|
| 789 |
+
# 3. YOLO11x-seg
|
| 790 |
+
results[6], results[7], results[8] = process_image(img, "YOLO11x-seg", "", False)
|
| 791 |
yield tuple(results)
|
| 792 |
|
| 793 |
+
# 4. YOLOv8x-seg
|
| 794 |
+
results[9], results[10], results[11] = process_image(img, "YOLOv8x-seg", "", False)
|
| 795 |
yield tuple(results)
|
| 796 |
|
| 797 |
+
# 5. Mask R-CNN
|
| 798 |
+
results[12], results[13], results[14] = process_image(img, "Mask R-CNN", "", False)
|
| 799 |
yield tuple(results)
|
| 800 |
|
| 801 |
+
# 6. BiRefNet
|
| 802 |
+
results[15], results[16], results[17] = run_birefnet(img)
|
| 803 |
yield tuple(results)
|
| 804 |
|
| 805 |
# 7. SAM + YOLO Strat 1
|
|
|
|
| 830 |
fn=run_all_models,
|
| 831 |
inputs=[input_image_seq],
|
| 832 |
outputs=[seq_segf_img, seq_segf_bw, seq_segf_stats,
|
| 833 |
+
seq_segf_morph_img, seq_segf_morph_bw, seq_segf_morph_stats,
|
| 834 |
seq_yolo11_img, seq_yolo11_bw, seq_yolo11_stats,
|
| 835 |
seq_yolo_img, seq_yolo_bw, seq_yolo_stats,
|
| 836 |
seq_mrcnn_img, seq_mrcnn_bw, seq_mrcnn_stats,
|
| 837 |
seq_biref_img, seq_biref_bw, seq_biref_stats,
|
|
|
|
| 838 |
seq_sam1_img, seq_sam1_bw, seq_sam1_stats,
|
| 839 |
seq_sam2_img, seq_sam2_bw, seq_sam2_stats,
|
| 840 |
seq_sam3_img, seq_sam3_bw, seq_sam3_stats,
|