laugh12321 / TensorRT-YOLO

🚀 你的YOLO部署神器。TensorRT Plugin、CUDA Kernel、CUDA Graphs三管齐下,享受闪电般的推理速度。| Your YOLO Deployment Powerhouse. With the synergy of TensorRT Plugins, CUDA Kernels, and CUDA Graphs, experience lightning-fast inference speeds.
https://github.com/laugh12321/TensorRT-YOLO
GNU General Public License v3.0
540 stars 67 forks source link

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

Closed sanersbug closed 4 months ago

sanersbug commented 5 months ago

命令行: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
laugh12321 commented 5 months ago

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 https://github.com/laugh12321/TensorRT-YOLO/commit/24ea950b31f6c73ff9bd853034310da45d45c02b. 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.

laugh12321 commented 4 months ago

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

sanersbug commented 4 months ago

@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

sanersbug commented 4 months ago

@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
sanersbug commented 4 months ago

@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?

laugh12321 commented 4 months ago

@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.

sanersbug commented 4 months ago

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

sanersbug commented 4 months ago

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

laugh12321 commented 4 months ago

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

sanersbug commented 4 months ago

@laugh12321 it is like : image

laugh12321 commented 4 months ago

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

Please use trtexec to re export the engine.

sanersbug commented 4 months ago

@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 ?

laugh12321 commented 4 months ago

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

Like this: image

sanersbug commented 4 months ago

@laugh12321 the below is onnx model that yolov8 produce image

laugh12321 commented 4 months ago

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

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

Like image