laugh12321/TensorRT-YOLO

[Help]: TypeError: 'tuple' object does not support item assignment

sanersbug opened this issue · 15 comments

命令行:python .\detect.py -e D:\Project\TensorRT-YOLO-main\yolov8s.engine -i D:\Project\yolov8\data\tests
错误如下:
[I] Loading bytes from D:\Project\TensorRT-YOLO-main\yolov8s.engine
[E] 2: [pluginV2DynamicExtRunner.cpp::nvinfer1::rt::cuda::PluginV2DynamicExtRunner::execute::115] Error Code 2: Internal Error (Assertion pluginUtils::isSuccess(status) failed. )
[E] 2: [pluginV2DynamicExtRunner.cpp::nvinfer1::rt::cuda::PluginV2DynamicExtRunner::execute::115] Error Code 2: Internal Error (Assertion pluginUtils::isSuccess(status) failed. )
[E] 2: [pluginV2DynamicExtRunner.cpp::nvinfer1::rt::cuda::PluginV2DynamicExtRunner::execute::115] Error Code 2: Internal Error (Assertion pluginUtils::isSuccess(status) failed. )
[E] 2: [pluginV2DynamicExtRunner.cpp::nvinfer1::rt::cuda::PluginV2DynamicExtRunner::execute::115] Error Code 2: Internal Error (Assertion pluginUtils::isSuccess(status) failed. )
[E] 2: [pluginV2DynamicExtRunner.cpp::nvinfer1::rt::cuda::PluginV2DynamicExtRunner::execute::115] Error Code 2: Internal Error (Assertion pluginUtils::isSuccess(status) failed. )
[E] 2: [pluginV2DynamicExtRunner.cpp::nvinfer1::rt::cuda::PluginV2DynamicExtRunner::execute::115] Error Code 2: Internal Error (Assertion pluginUtils::isSuccess(status) failed. )
[E] 2: [pluginV2DynamicExtRunner.cpp::nvinfer1::rt::cuda::PluginV2DynamicExtRunner::execute::115] Error Code 2: Internal Error (Assertion pluginUtils::isSuccess(status) failed. )
[E] 2: [pluginV2DynamicExtRunner.cpp::nvinfer1::rt::cuda::PluginV2DynamicExtRunner::execute::115] Error Code 2: Internal Error (Assertion pluginUtils::isSuccess(status) failed. )
[E] 2: [pluginV2DynamicExtRunner.cpp::nvinfer1::rt::cuda::PluginV2DynamicExtRunner::execute::115] Error Code 2: Internal Error (Assertion pluginUtils::isSuccess(status) failed. )
[E] 2: [pluginV2DynamicExtRunner.cpp::nvinfer1::rt::cuda::PluginV2DynamicExtRunner::execute::115] Error Code 2: Internal Error (Assertion pluginUtils::isSuccess(status) failed. )
[I] warmup 10 iters cost 231.77 ms.
[I] Infering data in D:\Project\yolov8\data\tests
Processing batches ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 0% -:--:--
Traceback (most recent call last):
File "D:\Project\TensorRT-YOLO-main\demo\detect\detect.py", line 80, in
main()
File "D:\SoftWare\Anaconda3\Lib\site-packages\click\core.py", line 1157, in call
return self.main(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\T800\AppData\Roaming\Python\Python311\site-packages\rich_click\rich_command.py", line 152, in main
rv = self.invoke(ctx)
^^^^^^^^^^^^^^^^
File "D:\SoftWare\Anaconda3\Lib\site-packages\click\core.py", line 1434, in invoke
return ctx.invoke(self.callback, **ctx.params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\SoftWare\Anaconda3\Lib\site-packages\click\core.py", line 783, in invoke
return __callback(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Project\TensorRT-YOLO-main\demo\detect\detect.py", line 56, in main
detections = model.infer(batch, batch_shape)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\T800\AppData\Roaming\Python\Python311\site-packages\tensorrt_yolo\infer\yolo.py", line 243, in infer
tensor.shape[0] = batch_size
~~~~~~~~~~~~^^^
TypeError: 'tuple' object does not support item assignment

To address the issue you're experiencing, please follow these steps:

  1. Verify the Version of tensorrt-yolo: First, check the current version of the tensorrt-yolo package installed in your environment. You can do this by running the following command:

    pip show tensorrt-yolo
  2. Update if Necessary: If the version displayed is not 3.0.2, you will need to update the package to this specific version. You can update the package using the following pip command:

    pip install tensorrt-yolo==3.0.2

    This command will ensure that you have the correct version that may be required for your application to function as expected.

  3. Retest Your Application: After updating the package, rerun your application to see if the issue has been resolved.

    Note: The issue you are facing has been identified and fixed in a recent commit. You can find the details of the fix in the 24ea950. If you have already updated to version 3.0.2, consider checking out the latest commits for additional bug fixes and improvements.

  4. Further Assistance: If you continue to encounter problems even after updating the package and checking the latest commits, please provide additional details regarding the issue, and I'll be glad to assist you further.

@sanersbug Hello, just checking in—has the issue been resolved? If so, I'll close it.

@laugh12321 I checked my env, the tensorrt-yolo==3.0.2, the question i met is still exists.
the follow is my env:
Package Version


about-time 4.2.1
absl-py 2.1.0
aiobotocore 2.7.0
aiohttp 3.9.3
aioitertools 0.7.1
aiosignal 1.2.0
alabaster 0.7.12
alive-progress 3.1.5
altair 5.0.1
anaconda-anon-usage 0.4.3
anaconda-catalogs 0.2.0
anaconda-client 1.12.3
anaconda-cloud-auth 0.1.4
anaconda-navigator 2.5.3
anaconda-project 0.11.1
anyio 4.2.0
appdirs 1.4.4
archspec 0.2.3
argon2-cffi 21.3.0
argon2-cffi-bindings 21.2.0
arrow 1.2.3
astroid 2.14.2
astropy 5.3.4
asttokens 2.0.5
async-lru 2.0.4
atomicwrites 1.4.0
attrs 23.1.0
autograd 1.6.2
Automat 20.2.0
autopep8 1.6.0
Babel 2.11.0
backports.functools-lru-cache 1.6.4
backports.tempfile 1.0
backports.weakref 1.0.post1
bcrypt 3.2.0
beautifulsoup4 4.12.2
binaryornot 0.4.4
black 23.11.0
bleach 4.1.0
blinker 1.6.2
bokeh 3.3.4
boltons 23.0.0
botocore 1.31.64
Bottleneck 1.3.7
Brotli 1.0.9
cachetools 4.2.2
certifi 2024.2.2
cffi 1.16.0
chardet 4.0.0
charset-normalizer 2.0.4
click 8.1.7
cloudpickle 2.2.1
clyent 1.2.2
cma 3.2.2
colorama 0.4.6
colorcet 3.0.1
colored 2.2.4
coloredlogs 15.0.1
comm 0.1.2
conda 24.3.0
conda-build 24.1.2
conda-content-trust 0.2.0
conda_index 0.4.0
conda-libmamba-solver 24.1.0
conda-pack 0.6.0
conda-package-handling 2.2.0
conda_package_streaming 0.9.0
conda-repo-cli 1.0.75
conda-token 0.4.0
conda-verify 3.4.2
constantly 23.10.4
contextlib2 21.6.0
contourpy 1.2.0
cookiecutter 2.5.0
cryptography 42.0.2
cssselect 1.2.0
cuda-python 12.4.0
cupy 13.0.0
cycler 0.11.0
Cython 3.0.10
cytoolz 0.12.2
dask 2023.11.0
datashader 0.16.0
debugpy 1.6.7
decorator 5.1.1
defusedxml 0.7.1
Deprecated 1.2.14
diff-match-patch 20200713
dill 0.3.7
distributed 2023.11.0
distro 1.8.0
docstring-to-markdown 0.11
docutils 0.18.1
einops 0.7.0
entrypoints 0.4
et-xmlfile 1.1.0
executing 0.8.3
fastjsonschema 2.16.2
fastrlock 0.8.2
filelock 3.13.1
flake8 6.0.0
Flask 2.2.5
flatbuffers 24.3.7
fonttools 4.25.0
frozenlist 1.4.0
fsspec 2023.10.0
future 0.18.3
GDAL 3.4.3
gensim 4.3.0
gitdb 4.0.7
GitPython 3.1.37
gmpy2 2.1.2
grapheme 0.6.0
greenlet 3.0.1
grpcio 1.62.1
h5py 3.9.0
HeapDict 1.0.1
holoviews 1.18.3
huggingface-hub 0.21.4
humanfriendly 10.0
hvplot 0.9.2
hyperlink 21.0.0
idna 3.4
imagecodecs 2023.1.23
imageio 2.33.1
imagesize 1.4.1
imbalanced-learn 0.11.0
importlib-metadata 7.0.1
incremental 22.10.0
inflection 0.5.1
iniconfig 1.1.1
intake 0.6.8
intervaltree 3.1.0
ipykernel 6.28.0
ipython 8.20.0
ipython-genutils 0.2.0
ipywidgets 7.6.5
isort 5.9.3
itemadapter 0.3.0
itemloaders 1.1.0
itsdangerous 2.0.1
jaraco.classes 3.2.1
jedi 0.18.1
jellyfish 1.0.1
Jinja2 3.1.3
jmespath 1.0.1
joblib 1.2.0
json5 0.9.6
jsonpatch 1.32
jsonpointer 2.1
jsonschema 4.19.2
jsonschema-specifications 2023.7.1
jstyleson 0.0.2
jupyter 1.0.0
jupyter_client 8.6.0
jupyter-console 6.6.3
jupyter_core 5.5.0
jupyter-events 0.8.0
jupyter-lsp 2.2.0
jupyter_server 2.10.0
jupyter_server_terminals 0.4.4
jupyterlab 4.0.11
jupyterlab-pygments 0.1.2
jupyterlab_server 2.25.1
jupyterlab-widgets 3.0.9
keyring 23.13.1
kiwisolver 1.4.4
lazy_loader 0.3
lazy-object-proxy 1.6.0
lckr_jupyterlab_variableinspector 3.1.0
libarchive-c 2.9
libmambapy 1.5.6
linkify-it-py 2.0.0
llvmlite 0.42.0
lmdb 1.4.1
locket 1.0.0
loguru 0.7.2
lxml 4.9.3
lz4 4.3.2
Mako 1.3.2
Markdown 3.4.1
markdown-it-py 2.2.0
MarkupSafe 2.1.3
matplotlib 3.8.0
matplotlib-inline 0.1.6
mccabe 0.7.0
mdit-py-plugins 0.3.0
mdurl 0.1.0
MedPy 0.4.0
menuinst 2.0.2
mistune 2.0.4
mkl-fft 1.3.8
mkl-random 1.2.4
mkl-service 2.4.0
ml-collections 0.1.1
more-itertools 10.1.0
mpmath 1.3.0
msgpack 1.0.3
multidict 6.0.4
multipledispatch 0.6.0
munkres 1.1.4
mypy 1.8.0
mypy-extensions 1.0.0
natsort 8.4.0
navigator-updater 0.4.0
nbclient 0.8.0
nbconvert 7.10.0
nbformat 5.9.2
nest-asyncio 1.6.0
networkx 3.1
ninja 1.11.1.1
nltk 3.8.1
nncf 2.10.0
notebook 7.0.8
notebook_shim 0.2.3
numba 0.59.0
numexpr 2.8.7
numpy 1.26.1
numpydoc 1.5.0
onnx 1.15.0
onnx-graphsurgeon 0.5.0
onnx-simplifier 0.4.36
onnxruntime 1.17.1
onnxruntime-gpu 1.17.1
onnxsim 0.4.36
opencv-python 4.9.0.80
openpyxl 3.0.10
openvino-telemetry 2024.1.0
overrides 7.4.0
packaging 23.1
pandas 2.1.4
pandocfilters 1.5.0
panel 1.3.8
param 2.0.2
paramiko 2.8.1
parsel 1.8.1
parso 0.8.3
partd 1.4.1
pathlib 1.0.1
pathspec 0.10.3
patsy 0.5.3
pexpect 4.8.0
pickleshare 0.7.5
pillow 10.2.0
pip 23.3.1
pkce 1.0.3
pkginfo 1.9.6
platformdirs 3.10.0
plotly 5.9.0
pluggy 1.0.0
ply 3.11
polygraphy 0.49.9
prometheus-client 0.14.1
prompt-toolkit 3.0.43
Protego 0.1.16
protobuf 3.20.3
psutil 5.9.0
ptyprocess 0.7.0
pure-eval 0.2.2
py-cpuinfo 9.0.0
pyarrow 14.0.2
pyasn1 0.4.8
pyasn1-modules 0.2.8
pycodestyle 2.10.0
pycosat 0.6.6
pycparser 2.21
pyct 0.5.0
pycuda 2024.1
pycurl 7.45.2
pydantic 1.10.12
pydantic_core 2.18.2
pydeck 0.8.0
PyDispatcher 2.0.5
pydocstyle 6.3.0
pydot 2.0.0
pyerfa 2.0.0
pyflakes 3.0.1
Pygments 2.15.1
PyJWT 2.4.0
pylint 2.16.2
pylint-venv 2.3.0
pyls-spyder 0.4.0
pymoo 0.6.1.1
PyNaCl 1.5.0
pyodbc 5.0.1
pyOpenSSL 24.0.0
pyparsing 3.0.9
PyQt5 5.15.10
PyQt5-sip 12.13.0
PyQtWebEngine 5.15.6
pyreadline3 3.4.1
PySocks 1.7.1
pytest 7.4.0
python-dateutil 2.8.2
python-dotenv 0.21.0
python-json-logger 2.0.7
python-lsp-black 1.2.1
python-lsp-jsonrpc 1.0.0
python-lsp-server 1.7.2
python-slugify 5.0.2
python-snappy 0.6.1
pytoolconfig 1.2.6
pytools 2023.1.1
pytorch-toolbelt 0.4.1
pytz 2023.3.post1
pyviz_comms 3.0.0
pywavelets 1.5.0
pywin32 305.1
pywin32-ctypes 0.2.0
pywinpty 2.0.10
PyYAML 6.0.1
pyzmq 25.1.2
QDarkStyle 3.0.2
qstylizer 0.2.2
QtAwesome 1.2.2
qtconsole 5.4.2
QtPy 2.4.1
queuelib 1.6.2
referencing 0.30.2
regex 2023.10.3
requests 2.31.0
requests-file 1.5.1
requests-toolbelt 1.0.0
rfc3339-validator 0.1.4
rfc3986-validator 0.1.1
rich 13.7.1
rich-click 1.8.1
rope 1.7.0
rpds-py 0.10.6
Rtree 1.0.1
ruamel.yaml 0.17.21
ruamel-yaml-conda 0.17.21
s3fs 2023.10.0
safetensors 0.4.2
scikit-image 0.19.3
scikit-learn 1.2.2
scipy 1.11.4
Scrapy 2.8.0
seaborn 0.12.2
semver 2.13.0
Send2Trash 1.8.2
service-identity 18.1.0
setuptools 68.2.2
SimpleITK 2.3.1
sip 6.7.12
six 1.16.0
smart-open 5.2.1
smmap 4.0.0
sniffio 1.3.0
snowballstemmer 2.2.0
sortedcontainers 2.4.0
soupsieve 2.5
Sphinx 5.0.2
sphinxcontrib-applehelp 1.0.2
sphinxcontrib-devhelp 1.0.2
sphinxcontrib-htmlhelp 2.0.0
sphinxcontrib-jsmath 1.0.1
sphinxcontrib-qthelp 1.0.3
sphinxcontrib-serializinghtml 1.1.5
spyder 5.4.3
spyder-kernels 2.4.4
SQLAlchemy 2.0.25
stack-data 0.2.0
statsmodels 0.14.0
streamlit 1.30.0
sympy 1.12
tables 3.9.2
tabulate 0.9.0
tblib 1.7.0
tenacity 8.2.2
tensorboard 2.16.2
tensorboard-data-server 0.7.2
tensorboardX 2.6.2.2
tensorrt 10.0.0b6
tensorrt_dispatch 10.0.0b6
tensorrt_lean 10.0.0b6
tensorrt_yolo 3.0.2
terminado 0.17.1
text-unidecode 1.3
textdistance 4.2.1
thop 0.1.1.post2209072238
threadpoolctl 2.2.0
three-merge 0.1.1
tifffile 2023.4.12
timm 0.9.16
tinycss2 1.2.1
tldextract 3.2.0
toml 0.10.2
tomlkit 0.11.1
toolz 0.12.0
torch 2.2.0
torchaudio 2.2.0
torchsummary 1.5.1
torchvision 0.17.0
tornado 6.3.3
tqdm 4.65.0
traitlets 5.7.1
truststore 0.8.0
Twisted 23.10.0
twisted-iocpsupport 1.0.2
typing_extensions 4.9.0
tzdata 2023.3
tzlocal 2.1
uc-micro-py 1.0.1
ujson 5.4.0
ultralytics 8.2.11
Unidecode 1.2.0
urllib3 2.0.7
validators 0.18.2
w3lib 2.1.2
watchdog 2.1.6
wcwidth 0.2.5
webencodings 0.5.1
websocket-client 0.58.0
Werkzeug 2.2.3
whatthepatch 1.0.2
wheel 0.41.2
widgetsnbextension 3.5.2
win-inet-pton 1.1.0
win32-setctime 1.1.0
wrapt 1.14.1
xarray 2023.6.0
xlwings 0.29.1
xyzservices 2022.9.0
yacs 0.1.8
yapf 0.31.0
yarl 1.9.3
zict 3.0.0
zipp 3.17.0
zope.interface 5.4.0
zstandard 0.19.0

@laugh12321 The key of this question is in tensorrt_yolo\infer\yolo.py", line 243

tensorrt_yolo\infer\yolo.py", line 243, in infer
tensor.shape[0] = batch_size

TypeError: 'tuple' object does not support item assignment

@laugh12321 I checked my yolo.py that installed in tensorrt-yolo==3.0.2 , the line of 70 ,is : batch, _, *imgsz = shape, it is nothing wrong with what is written here
Do I need to reinstall tensorrt-yolo?

@sanersbug, please update the repository code and ensure that the usage of ImageBatcher in your detect.py matches that of this link.

Additionally, demo/detect/detect.py runs correctly on my machine.

this is the detect.py in my computer:
image
it is the same with this link.

@laugh12321 I download the code again,the error is still exists. my tensorRT is tensorrt==10.0.0b6, is this influence it ?

@sanersbug Print type(batch) to view the type of batch, which should be np.ndarray instead of tuple.

@laugh12321
it is like :
image

@sanersbug Is using trtyolo infer normal. Possible cause of engine loading failure.

Please use trtexec to re export the engine.

@laugh12321 I use trtexec to re export the engine, it is work.The main reason of the error is that i use export.py in yolov8 project generate the engine. it doesn't match your code ?

@sanersbug Please take a screenshot of the exported onnx output. This project is a YOLO model with NMS inference.

Like this:
image

@laugh12321 the below is onnx model that yolov8 produce
image

你给的engine不对,当然会报错。

正如之前的回答所说,这个项目旨在导出带有 EfficientNMS 插件的 YOLO 模型,然后进行推理。你不能直接使用原始模型(不带插件的)进行推理。请参考 https://github.com/laugh12321/TensorRT-YOLO/blob/main/docs/cn/model_export.md 中的说明,导出带 EfficientNMS 插件的模型,然后再进行推理。

Like
image