Spaces:
Sleeping
Sleeping
File size: 1,896 Bytes
e261d36 |
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 |
import gradio as gr, os
from bootstrap_upstream import fetch_upstream
from pipeline.rules import zone_lus_score, ZoneFeatures
from pipeline import rtlucassen_wrapper as rtl
from pipeline import medivlad_wrapper as mvl
def setup_check():
results = fetch_upstream()
folders = {
"B-line_detection": os.path.isdir("external/B-line_detection"),
"LUS-Segmentation-RT": os.path.isdir("external/LUS-Segmentation-RT"),
"MeDiVLAD": os.path.isdir("external/MeDiVLAD"),
"weights_rtlucassen": os.path.isdir("models/rtlucassen"),
"weights_medivlad": os.path.isdir("models/medivlad"),
}
return {"fetched": results, "folders": folders}
def score_demo_zone(_clip):
try:
b_counts, _ = rtl.run_bline_detector(_clip)
median_b = sorted(b_counts)[len(b_counts)//2] if b_counts else 0
z = ZoneFeatures(b_count=median_b, b_area_frac=0.0, has_consolidation=False)
return {"zone_score": zone_lus_score(z), "median_b": median_b}
except Exception as e:
return {"error": str(e)}
def run_medivlad(_clip):
try:
return mvl.run_video_severity(_clip)
except Exception as e:
return {"error": str(e)}
with gr.Blocks() as demo:
gr.Markdown("## NeoLUS — Original Repos (private research)\n**Note:** Upload authorized weights to `/models/*`. Not for clinical use.")
with gr.Accordion("Setup / Status", open=True):
gr.Button("Run setup check").click(setup_check, None, gr.JSON())
with gr.Tab("Zone Scoring"):
clip = gr.Video(label="Zone clip")
go = gr.Button("Analyze zone")
out = gr.JSON()
go.click(score_demo_zone, clip, out)
with gr.Tab("Video Severity (MeDiVLAD)"):
clip2 = gr.Video()
go2 = gr.Button("Run")
out2 = gr.JSON()
go2.click(run_medivlad, clip2, out2)
if __name__ == "__main__":
demo.launch()
|