Я просто хочу получить данные класса в своем скрипте Python, например: человек, автомобиль, грузовик, собака, но мой результат больше, чем это. Также я не могу использовать результаты в виде строки.
Скрипт Python:
from ultralytics import YOLO
model = YOLO("yolov8n.pt")
results = model.predict(source = "0")
Выход:
0: 480x640 1 person, 1 car, 7.1ms
0: 480x640 1 person, 1 car, 7.2ms
0: 480x640 1 person, 1 car, 7.1ms
0: 480x640 1 person, 1 car, 7.1ms
0: 480x640 1 person, 1 car, 7.1ms
0: 480x640 1 person, 7.9ms
0: 480x640 1 person, 7.1ms
0: 480x640 1 person, 1 car, 7.1ms
0: 480x640 1 person, 1 car, 7.1ms
Перебрать результаты[0].boxes.boxes, они имеют формат [x1, y1, x2, y2, оценка, метка]. Используйте int(label) в качестве индекса для вашего списка классов.






Вы можете передать каждый класс в имя модели следующим образом:
from ultralytics.yolo.engine.model import YOLO
model = YOLO("yolov8n.pt")
results = model.predict(stream=True, imgsz=512) # source already setup
for r in results:
for c in r.boxes.cls:
print(model.names[int(c)])
выход:
YOLOv8n summary (fused): 168 layers, 3151904 parameters, 0 gradients, 8.7 GFLOPs
bus
person
person
person
person
image 1/2 /home/xyz/ultralytics/ultralytics/assets/bus.jpg: 512x384 4 persons, 1 bus, 35.7ms
person
person
person
tie
tie
image 2/2 /home/xyz/ultralytics/ultralytics/assets/zidane.jpg: 288x512 3 persons, 2 ties, 199.0ms
Speed: 3.9ms pre-process, 117.4ms inference, 27.9ms postprocess per image at shape (1, 3, 512, 512)
Тот же результат from ultralytics.yolo.engine.model import YOLO def main(): model = YOLO("yolov8n.pt") results = model.predict(imgsz=512, stream=True, source = "0") # source already setup for r in results: for c in r.boxes.cls: print(model.names[int(c)]) main()
Вы добавили печать, поэтому что-то должно измениться
печать ни на что не влияет. Я пытался много раз. Также мой путь к файлу: /home/gursel/ultralytics/test.py это нормально?
попробуй: pip install --upgrade ultralytics
Я сделал это, но при добавлении потока получаю сообщение об ошибке: поток не является допустимым ключом. Аналогичные клавиши: []
Это решено, я переклонировал репозиторий Ultralytics. Также код работает правильно, спасибо! @Майк Б
У меня есть другой вопрос по этому поводу: Как мне указать обнаруживать только определенные классы при использовании предварительно обученной модели. Например, если я хочу обнаружить только класс человека.
Я помню, что мы можем сделать это с Yolov5, я не мог сделать то же самое с YOLOv8:
model.classes = [0] # this will force the model to detect person class only in YOLOv5.
Простой поиск в Интернете поможет вам пройти долгий путь: inside-machinelearning.com/en/yolov8-how-to-use