import supervision as sv import gradio as gr from ultralytics import YOLO import sahi import numpy as np # Images sahi.utils.file.download_from_url( "https://transform.roboflow.com/zZuu207UOVOOJKuuCpmV/3512b3839afacecec643949bef398e99/thumb.jpg", "tu1.jpg", ) sahi.utils.file.download_from_url( "https://transform.roboflow.com/zZuu207UOVOOJKuuCpmV/5b8b940fae2f9e4952395bcced0688aa/thumb.jpg", "tu2.jpg", ) sahi.utils.file.download_from_url( "https://transform.roboflow.com/zZuu207UOVOOJKuuCpmV/347e10ab7aa2b399ec546f2037d8c786/thumb.jpg", "tu3.jpg", ) annotatorbbox = sv.BoxAnnotator() annotatormask=sv.MaskAnnotator() def yolov8_inference( image: gr.inputs.Image = None, conf_threshold: gr.inputs.Slider = 0.25, iou_threshold: gr.inputs.Slider = 0.45, ): image=image[:, :, ::-1].astype(np.uint8) model = YOLO("https://huggingface.co/spaces/devisionx/Fifth_demo/blob/main/best_weigh.pt") results = model(image,imgsz=360)[0] image=image[:, :, ::-1].astype(np.uint8) detections = sv.Detections.from_yolov8(results) annotated_image = annotatorbbox.annotate(scene=image, detections=detections) return annotated_image # image_input = gr.inputs.Image() # Adjust the shape according to your requirements # inputs = [ # gr.inputs.Image(label="Input Image"), # gr.Slider( # minimum=0.0, maximum=1.0, value=0.25, step=0.05, label="Confidence Threshold" # ), # gr.Slider(minimum=0.0, maximum=1.0, value=0.45, step=0.05, label="IOU Threshold"), # ] # outputs = gr.Image(type="filepath", label="Output Image") # title = "Brain Tumor Demo" import os examples = [ ["tu1.jpg", 0.6, 0.45], ["tu2.jpg", 0.25, 0.45], ["tu3.jpg", 0.25, 0.45], ] outputs_images = [ ["1.jpg"], # First example: an output image for the cat example ["2.jpg"] # Second example: an output image for the dog example ,["3.jpg"] ] # demo_app = gr.Interface(examples=examples, # fn=yolov8_inference, # inputs=inputs, # outputs=outputs, # title=title, # cache_examples=True, # theme="default", # ) # demo_app.launch(debug=False, enable_queue=True) # gr.Examples(examples) # Add the examples to the app readme_html = """

Description:

We present a demo for performing object segmentation with training a Yolov8-seg on Brain tumor dataset. The model was trained on 236 training images and validated on 28 images.

Usage:

You can upload Brain tumor images, and the demo will provide you with your segmented image.

Dataset:

This dataset comprises a total of 278 images, which are divided into three distinct sets for various purposes:

License: This dataset is made available under the Creative Commons Attribution 4.0 International License (CC BY 4.0).

To access and download this dataset, please follow this link: Dataset Download

Download Dataset:

To download the dataset we used, you can use the following command in colab:

!wget https://universe.roboflow.com/ds/AsTB5oygI6?key=bOrqP0fWlJ

Feel free to explore and use this repository for your object segmentation needs. If you have any questions or need assistance, please don't hesitate to reach out.

""" with gr.Blocks() as demo: gr.Markdown( """ # Tuba Brain Tumor Demo [Tuba](https://Tuba.ai) """ ) # Define the input components and add them to the layout with gr.Row(): image_input = gr.inputs.Image() outputs = gr.Image(type="filepath", label="Output Image") # Define the output component and add it to the layout with gr.Row(): conf_slider=gr.Slider(minimum=0.0, maximum=1.0, value=0.25, step=0.05, label="Confidence Threshold" ) with gr.Row(): IOU_Slider=gr.Slider(minimum=0.0, maximum=1.0, value=0.45, step=0.05, label="IOU Threshold") button = gr.Button("Run") # Define the event listener that connects the input and output components and triggers the function button.click(fn=yolov8_inference, inputs=[image_input, conf_slider,IOU_Slider], outputs=outputs, api_name="yolov8_inference") gr.Examples( fn=yolov8_inference, examples=examples, inputs=[image_input, conf_slider,IOU_Slider], outputs=[outputs] ) # gr.Examples(inputs=examples, outputs=outputs_images) # Add the description below the layout gr.Markdown(readme_html) # Launch the app demo.launch(share=False)