`ultralytics 8.2.76` Autobackend TensorRT/Triton Segment metadata fix (#15185)

Co-authored-by: Glenn Jocher <glenn.jocher@ultralytics.com>
pull/15384/head v8.2.76
Mohammed Yasin 3 months ago committed by GitHub
parent 4d35458e7c
commit 76c271d0d6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 2
      tests/test_python.py
  2. 2
      ultralytics/__init__.py
  3. 8
      ultralytics/nn/autobackend.py

@ -26,6 +26,7 @@ from ultralytics.utils import (
WEIGHTS_DIR,
WINDOWS,
checks,
is_github_action_running,
)
from ultralytics.utils.downloads import download
from ultralytics.utils.torch_utils import TORCH_1_9
@ -131,6 +132,7 @@ def test_predict_grey_and_4ch():
@pytest.mark.slow
@pytest.mark.skipif(not ONLINE, reason="environment is offline")
@pytest.mark.skipif(is_github_action_running(), reason="No auth https://github.com/JuanBindez/pytubefix/issues/166")
def test_youtube():
"""Test YOLO model on a YouTube video stream, handling potential network-related errors."""
model = YOLO(MODEL)

@ -1,6 +1,6 @@
# Ultralytics YOLO 🚀, AGPL-3.0 license
__version__ = "8.2.75"
__version__ = "8.2.76"
import os

@ -566,10 +566,6 @@ class AutoBackend(nn.Module):
y = [y]
elif self.pb: # GraphDef
y = self.frozen_func(x=self.tf.constant(im))
if (self.task == "segment" or len(y) == 2) and len(self.names) == 999: # segments and names not defined
ip, ib = (0, 1) if len(y[0].shape) == 4 else (1, 0) # index of protos, boxes
nc = y[ib].shape[1] - y[ip].shape[3] - 4 # y = (1, 160, 160, 32), (1, 116, 8400)
self.names = {i: f"class{i}" for i in range(nc)}
else: # Lite or Edge TPU
details = self.input_details[0]
is_int = details["dtype"] in {np.int8, np.int16} # is TFLite quantized int8 or int16 model
@ -607,6 +603,10 @@ class AutoBackend(nn.Module):
# for x in y:
# print(type(x), len(x)) if isinstance(x, (list, tuple)) else print(type(x), x.shape) # debug shapes
if isinstance(y, (list, tuple)):
if len(self.names) == 999 and (self.task == "segment" or len(y) == 2): # segments and names not defined
ip, ib = (0, 1) if len(y[0].shape) == 4 else (1, 0) # index of protos, boxes
nc = y[ib].shape[1] - y[ip].shape[3] - 4 # y = (1, 160, 160, 32), (1, 116, 8400)
self.names = {i: f"class{i}" for i in range(nc)}
return self.from_numpy(y[0]) if len(y) == 1 else [self.from_numpy(x) for x in y]
else:
return self.from_numpy(y)

Loading…
Cancel
Save