Spaces:
Sleeping
Sleeping
File size: 3,487 Bytes
3985a51 78ef7e2 3985a51 0eae442 |
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 |
"""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() |