smogs-wlike commited on
Commit
0eae442
·
verified ·
1 Parent(s): 2fc4e21

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +66 -1
app.py CHANGED
@@ -6,7 +6,7 @@ def greet(name):
6
  demo = gr.Interface(fn=greet, inputs="text", outputs="text")
7
  demo.launch()
8
  """
9
- import gradio as gr
10
 
11
 
12
  def sentence_builder(quantity, animal, countries, place, activity_list, morning):
@@ -38,3 +38,68 @@ demo = gr.Interface(
38
 
39
  if __name__ == "__main__":
40
  demo.launch()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
  demo = gr.Interface(fn=greet, inputs="text", outputs="text")
7
  demo.launch()
8
  """
9
+ '''import gradio as gr
10
 
11
 
12
  def sentence_builder(quantity, animal, countries, place, activity_list, morning):
 
38
 
39
  if __name__ == "__main__":
40
  demo.launch()
41
+ '''
42
+
43
+ import PIL.Image as Image
44
+ import gradio as gr
45
+ import webbrowser
46
+ import threading
47
+ import time
48
+ from ultralytics import ASSETS, YOLO
49
+
50
+ # Загрузим модель из файла yolov8m-worldv2
51
+ model = YOLO("yolov8m-worldv2.pt")
52
+
53
+ # Cписок транспорта
54
+ transport_russian = ["Автомобиль", "Грузовик", "Автобус", "Мотоцикл"]
55
+
56
+ # Создание словаря с соответствием русских и английских слов
57
+ translation_dict = {
58
+ "Автомобиль": "car",
59
+ "Грузовик": "truck",
60
+ "Автобус": "bus",
61
+ "Мотоцикл": "motorcycle",
62
+ }
63
+
64
+
65
+ def predict_image(img, conf_threshold, iou_threshold, class_flags):
66
+ """
67
+ Функция для предсказания изображения с учетом выбранных транспортных средств
68
+ :param img: изображение
69
+ :param conf_threshold: порог достоверности для обнаружения объектов
70
+ :param iou_threshold: порог пересечения по объединению для обнаружения объектов
71
+ :param class_flags: флаги классов объектов для обнаружения
72
+ :return: изображение с распознанными объектами
73
+ """
74
+ # Получаем английские названия классов транспорта
75
+ transport_classes = [translation_dict[transport] for transport in class_flags]
76
+
77
+ # Задаем пользовательские классы для модели
78
+ model.set_classes(transport_classes)
79
+
80
+ # Предсказываем объекты на изображении
81
+ results = model(img, conf=conf_threshold, iou=iou_threshold)
82
+
83
+ # Отображаем изображение с распознанными объектами
84
+ for r in results:
85
+ im_array = r.plot()
86
+ im = Image.fromarray(im_array[..., ::-1]) # Преобразование массива в изображение PIL
87
+
88
+ return im
89
+
90
+ # Создаем интерфейс Gradio
91
+ iface = gr.Interface(
92
+ fn=predict_image,
93
+ inputs=[
94
+ gr.Image(type="pil", label="Загрузка изображения"), # Ввод изображения
95
+ gr.Slider(minimum=0, maximum=1, value=0.25, label="Порог достоверности"), # Порог достоверности
96
+ gr.Slider(minimum=0, maximum=1, value=0.45, label="Порог пересечения по объединению"), # Порог пересечения по объединению
97
+ gr.CheckboxGroup(transport_russian, label="Транспорт", info="Какой транспорт распознать?"), # Флаги классов объектов
98
+ ],
99
+ outputs=gr.Image(type="pil", label="Изображение с распознанными объектами"), # Вывод изображения с распознанными объектами
100
+ title="Ultralytics Gradio", # Заголовок интерфейса
101
+ description="Загрузите изображения для вывода. Используется модедль Ultralytics YOLOv8m-worldv2." # Описание интерфейса
102
+ )
103
+
104
+ if __name__ == "__main__":
105
+ iface.launch()