File size: 5,632 Bytes
755e20b
 
87f54b3
 
 
 
e947d7e
 
 
 
 
 
 
87f54b3
e947d7e
87f54b3
e947d7e
87f54b3
e947d7e
87f54b3
e947d7e
87f54b3
e947d7e
87f54b3
e947d7e
87f54b3
e947d7e
87f54b3
165fc74
e947d7e
87f54b3
e947d7e
87f54b3
e947d7e
87f54b3
e947d7e
87f54b3
e947d7e
87f54b3
e947d7e
87f54b3
 
 
 
 
 
 
 
 
 
755e20b
87f54b3
 
755e20b
87f54b3
 
755e20b
87f54b3
 
755e20b
87f54b3
 
 
 
 
755e20b
87f54b3
 
755e20b
87f54b3
 
755e20b
87f54b3
 
755e20b
87f54b3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
import os

import gradio as gr
from PIL import Image

elements = {
    "Becane": ("data/data_becane_1_0_2_014_before_img6", "data/data_becane_1_0_2_014_after_img7", "models/RoadBecane_f.stl"),
    "BTWIN": ("data/data_btwin_1_26_3_114_before_img0", "data/data_btwin_1_26_3_114_after_img13", "models/BTWIN.stl"),
    "Classic Road": ("data/data_croad_4_26_4_112_before_img3", "data/data_croad_4_26_4_112_after_img7", "models/ClassicRoad.stl"),
    "Domane": ("data/data_domane_2_0_39_012_before_img6", "data/data_domane_2_0_39_012_after_img13", "models/domane.stl"),
    "Enduro": ("data/data_enduro_2_18_18_105_before_img6", "data/data_enduro_2_18_18_105_after_img10", "models/enduro.stl"),
    "G1": ("data/data_g1_2_36_14_010_before_img6", "data/data_g1_2_36_14_010_after_img8", "models/g1.stl"),
    "GBike": ("data/data_gbike_3_31_8_018_before_img2", "data/data_gbike_3_31_8_018_after_img8", "models/gbike.stl"),
    "Holland": (
        "data/data_holland_4_24_18_00_before_img4", "data/data_holland_4_24_18_00_after_img7", "models/holland.stl"),
    "Huffy": (
        "data/data_huffy_6_4_35_012_before_img4", "data/data_huffy_6_4_35_012_after_img12", "models/huffy.stl"),
    "Kuota": (
        "data/data_kuota_6_5_30_112_before_img4", "data/data_kuota_6_5_30_112_after_img12", "models/kuota.stl"),
    "MFactory": (
        "data/data_mfactory_1_17_8_00_before_img4", "data/data_mfactory_1_17_8_00_after_img12", "models/mfactory.stl"),
    "Mirage": (
        "data/data_mirage_6_11_36_117_before_img4", "data/data_mirage_6_11_36_117_after_img12", "models/mirage.stl"),
    "Old Bike": (
        "data/data_oldbike_3_30_15_100_before_img4", "data/data_oldbike_3_30_15_100_after_img12", "models/oldbike.stl"),
    "Freeride": (
        "data/data_freeride_6_24_0_00_before_img4", "data/data_freeride_6_24_0_00_after_img12", "models/freeride_1Step_f.stl"),
    "RondoRuut": (
        "data/data_rondo_2_11_39_106_before_img4", "data/data_rondo_2_11_39_106_after_img12",
        "models/RondoRuutClean_1Step_f.stl"),
    "MTB Ghost": (
        "data/data_ghost_1_0_4_116_before_img4", "data/data_ghost_1_0_4_116_after_img12", "models/MTB_Ghost.stl"),
    "Scalpel": (
        "data/data_scalpel_6_2_12_101_before_img4", "data/data_scalpel_6_2_12_101_after_img12", "models/scalpel.stl"),
    "Verdona": (
        "data/data_verdona_1_14_10_118_before_img4", "data/data_verdona_1_14_10_118_after_img12", "models/verdona.stl"),
    "Vintage": (
        "data/data_vintage_6_6_33_011_before_img4", "data/data_vintage_6_6_33_011_after_img12", "models/Vintage.stl"),
    "WBike": (
        "data/data_wbike_3_19_23_00_before_img4", "data/data_wbike_3_19_23_00_after_img12", "models/wbike.stl"),
}


def generate_ui(key):
    img_b, img_a, model = elements[key]
    gr.Markdown("### Before damage")
    with gr.Row():
        with gr.Row():
            with gr.Column(scale=1):
                gr.Markdown("#### Render")
                img_bn = gr.Image(os.path.join(os.path.dirname(__file__),f"{img_b}.png"))
            with gr.Column(scale=1):
                gr.Markdown("#### Background")
                img_bb = gr.Image(os.path.join(os.path.dirname(__file__),f"{img_b}_background.png"))
            with gr.Column(scale=1):
                gr.Markdown("#### Foreground")
                img_bf = gr.Image(os.path.join(os.path.dirname(__file__),f"{img_b}_foreground.png"))
            with gr.Column(scale=1):
                gr.Markdown("#### Segmentation")
                img_bs = gr.Image(os.path.join(os.path.dirname(__file__),f"{img_b}_segmentation.png"))

    gr.Markdown("### After damage")
    with gr.Row():
        with gr.Column(scale=1):
            gr.Markdown("#### Render")
            img_an = gr.Image(os.path.join(os.path.dirname(__file__),f"{img_a}.png"))
        with gr.Column(scale=1):
            gr.Markdown("#### Background")
            img_ab = gr.Image(os.path.join(os.path.dirname(__file__),f"{img_a}_background.png"))
        with gr.Column(scale=1):
            gr.Markdown("#### Foreground")
            img_af = gr.Image(os.path.join(os.path.dirname(__file__),f"{img_a}_foreground.png"))
        with gr.Column(scale=1):
            gr.Markdown("#### Segmentation")
            img_as = gr.Image(os.path.join(os.path.dirname(__file__),f"{img_a}_segmentation.png"))

    model = gr.Model3D(model, label="3D model preview")
    return img_bn, img_bb, img_bf, img_bs, img_an, img_ab, img_af, img_as, model


def get_values(key):
    img_b, img_a, model = elements[key]
    gr.Markdown("### Before damage")
    img_bn = Image.open(f"{img_b}.png")
    img_bb = Image.open(f"{img_b}_background.png")
    img_bf = Image.open(f"{img_b}_foreground.png")
    img_bs = Image.open(f"{img_b}_segmentation.png")
    img_an = Image.open(f"{img_a}.png")
    img_ab = Image.open(f"{img_a}_background.png")
    img_af = Image.open(f"{img_a}_foreground.png")
    img_as = Image.open(f"{img_a}_segmentation.png")

    return img_bn, img_bb, img_bf, img_bs, img_an, img_ab, img_af, img_as, model


block = gr.Blocks()

with block:
    with open("page.md", "r") as f:
        gr.Markdown(f.read())
        first_key = list(elements.keys())[0]
        dropdown = gr.Dropdown(choices=list(elements.keys()), value=first_key, label="Model", interactive=True)
        img_bn, img_bb, img_bf, img_bs, img_an, img_ab, img_af, img_as, model = generate_ui(first_key)

    dropdown.change(get_values, inputs=[dropdown],
                    outputs=[img_bn, img_bb, img_bf, img_bs, img_an, img_ab, img_af,
                             img_as, model])

block.queue(concurrency_count=40, max_size=20).launch(max_threads=150)