test / app.py
smogs-wlike's picture
Update app.py
7742620 verified
"""import gradio as gr
def greet(name):
return "Hello " + name + "!!"
demo = gr.Interface(fn=greet, inputs="text", outputs="text")
demo.launch()
"""
import PIL.Image as Image
import gradio as gr
import webbrowser
import threading
import time
from ultralytics import ASSETS, YOLO
# Загрузим модель из файла yolov8m-worldv2
model = YOLO("yolov8m-worldv2.pt")
# Cписок транспорта
transport_russian = ["Автомобиль", "Грузовик", "Автобус", "Мотоцикл"]
# Создание словаря с соответствием русских и английских слов
translation_dict = {
"Автомобиль": "car",
"Грузовик": "truck",
"Автобус": "bus",
"Мотоцикл": "motorcycle",
}
def predict_image(img, conf_threshold, iou_threshold, class_flags):
"""
Функция для предсказания изображения с учетом выбранных транспортных средств
:param img: изображение
:param conf_threshold: порог достоверности для обнаружения объектов
:param iou_threshold: порог пересечения по объединению для обнаружения объектов
:param class_flags: флаги классов объектов для обнаружения
:return: изображение с распознанными объектами
"""
# Получаем английские названия классов транспорта
transport_classes = [translation_dict[transport] for transport in class_flags]
# Задаем пользовательские классы для модели
model.set_classes(transport_classes)
# Предсказываем объекты на изображении
results = model(img, conf=conf_threshold, iou=iou_threshold)
# Отображаем изображение с распознанными объектами
for r in results:
im_array = r.plot()
im = Image.fromarray(im_array[..., ::-1]) # Преобразование массива в изображение PIL
return im
# Создаем интерфейс Gradio
iface = gr.Interface(
fn=predict_image,
inputs=[
gr.Image(type="pil", label="Загрузка изображения"), # Ввод изображения
gr.Slider(minimum=0, maximum=1, value=0.25, label="Порог достоверности"), # Порог достоверности
gr.Slider(minimum=0, maximum=1, value=0.45, label="Порог пересечения по объединению"), # Порог пересечения по объединению
gr.CheckboxGroup(transport_russian, label="Транспорт", info="Какой транспорт распознать?"), # Флаги классов объектов
],
outputs=gr.Image(type="pil", label="Изображение с распознанными объектами"), # Вывод изображения с распознанными объектами
title="Ultralytics Gradio", # Заголовок интерфейса
description="Загрузите изображения для вывода. Используется модедль Ultralytics YOLOv8m-worldv2." # Описание интерфейса
)
if __name__ == "__main__":
iface.launch()