Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New Plugin EfficentNMSX #3920

Open
wants to merge 2 commits into
base: release/10.0
Choose a base branch
from

Conversation

levipereira
Copy link

@levipereira levipereira commented Jun 1, 2024

@samurdhikaru @johnnynunez
Continuing the discussion initiated in PR #3859
I removed the YoloNMS plugin and created a new plugin named EfficientNMSX (with 'X' representing the index) within the structure of the EfficientNMSPlugin. The changes involved creating a new plugin using the current index generation logic and simply adding a new layer that returns detection indices.

Since the changes were minimal, I did not implement the IPluginV3 interface, as that would have required a complete overhaul of the entire plugin structure.

I conducted all tests on both the EfficientNMS_TRT and EfficientNMSX_TRT plugins, and both functioned correctly.

I would appreciate your suggestion regarding the IPluginV3 implementation. Should we update the entire EfficientNMSPlugin now, or should we continue with the current approach and make the switch to IPluginV3 all at once during a future upgrade?

Theses changes also was implemented on release/8.6 ( only for test purposes)
https://github.com/levipereira/TensorRT/tree/release/8.6

Signed-off-by: Levi Pereira <levi.pereira@gmail.com>
Signed-off-by: Levi Pereira <levi.pereira@gmail.com>
@levipereira
Copy link
Author

@samurdhikaru
https://github.com/levipereira/deepstream-yolo-e2e/
I would like to share a real example of implementing End2End using the EfficientNMSX plugin for instance segmentation models. I have successfully implemented the plugin in TensorRT 8.5, 8.6, and 10.0 in my repository and am currently using it with Triton Server and DeepStream.
As we discussed earlier, enabling the community to implement End2End in models, instead of relying on post-processing, significantly reduces model latency. I believe considering this pull request will greatly benefit the community.

@demuxin
Copy link

demuxin commented Jun 27, 2024

Hi @levipereira , thank you for your work. Can you provide a demo on using output indexes?

As far as I know, TensorRT has a issue about data dependent shape(dds). You can look at this link.

Can EfficientNMSX plugin resolve this issue?

@levipereira
Copy link
Author

levipereira commented Jun 27, 2024

@demuxin
Source code example of how I have implemented EfficientNMSX
https://github.com/levipereira/yolo_e2e/tree/master/yolov9
https://github.com/levipereira/ultralytics/blob/main/ultralytics/engine/exporter.py#L508

I have implemented EfficientNMSX in all Segmentation Models *-seg-trt.onnx
https://github.com/levipereira/yolo_e2e/releases/tag/v1.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants