Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Conversation

@fengyuentau
Copy link
Member

@fengyuentau fengyuentau commented Feb 20, 2023

Merge with opencv/opencv_extra#1200

Partially fixes #22890 and #20258

To-do:

  • TopK forward impl
  • add tests
  • support Opset 1 & 10 if possible
  • Support other backends (TopK has two outputs, which is not supported by other backends, such as openvino)

Perf:

M1 (time in millisecond)

input shape axis dnn ort
(1000, 100) 0 1.68 4.07
(1000, 100) K5 0 1.13 0.12
(1000, 100) 1 0.96 0.77
(100, 100, 100) 0 10.00 31.13
(100, 100, 100) 1 7.33 9.17
(100, 100, 100) 2 7.52 9.48

M2 (time in milisecond)

input shape axis dnn ort
(1000, 100) 0 0.76 2.44
(1000, 100) K5 0 0.68 0.07
(1000, 100) 1 0.41 0.50
(100, 100, 100) 0 4.83 17.52
(100, 100, 100) 1 3.60 5.08
(100, 100, 100) 2 3.73 5.10

ONNXRuntime performance testing script: https://gist.github.com/fengyuentau/a119f94fd16721ec9974b8c7b0a45d4c

Pull Request Readiness Checklist

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

  • I agree to contribute to the project under Apache 2 License.
  • To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
  • The PR is proposed to the proper branch
  • There is a reference to the original bug report and related work
  • There is accuracy test, performance test and test data in opencv_extra repository, if applicable
    Patch to opencv_extra has the same branch name.
  • The feature is well documented and sample code can be built with the project CMake

@fengyuentau fengyuentau added feature category: dnn category: dnn (onnx) ONNX suport issues in DNN module labels Feb 20, 2023
@fengyuentau fengyuentau mentioned this pull request Mar 14, 2023
48 tasks
@WanliZhong WanliZhong mentioned this pull request Jun 5, 2023
4 tasks
@Abdurrahheem

This comment was marked as resolved.

@fengyuentau

This comment was marked as resolved.

@fengyuentau fengyuentau modified the milestones: 5.0, 4.11.0 Aug 13, 2024
@fengyuentau fengyuentau marked this pull request as ready for review August 13, 2024 10:37
@fengyuentau
Copy link
Member Author

CPU implementation is done.

@asmorkalov I will prepare a dedicated PR to merge it to 5.x since one of the ouputs is of type CV_32S which cannot handled in 4.x.

@asmorkalov
Copy link
Contributor

@dkurt could you take a look too?

@asmorkalov asmorkalov self-assigned this Aug 21, 2024
@asmorkalov asmorkalov merged commit 347d673 into opencv:4.x Aug 21, 2024
@mshabunin
Copy link
Contributor

Looks like TopK test is failing on CI now. Strangely it did not fail in this PR 🫲 😕 🫱

@fengyuentau fengyuentau deleted the add_topk branch August 22, 2024 03:28
@fengyuentau
Copy link
Member Author

Looks like TopK test is failing on CI now. Strangely it did not fail in this PR 🫲 😕 🫱

@mshabunin Merge of this PR and its dependent in opencv_extra had a two-hour gap. Most likely this is the reason why it fails. Example: https://pullrequest.opencv.org/buildbot/builders/precommit_linux64/builds/108617.

@asmorkalov
Copy link
Contributor

It's my fault, sorry guys. I missed extra part of the patch.

@asmorkalov asmorkalov mentioned this pull request Aug 27, 2024
thewoz pushed a commit to CobbsLab/OPENCV that referenced this pull request Feb 13, 2025
dnn: add ONNX TopK opencv#23279

Merge with opencv/opencv_extra#1200

Partially fixes opencv#22890 and opencv#20258

To-do:

- [x] TopK forward impl
- [x] add tests
- [x] support Opset 1 & 10 if possible
- [ ] ~Support other backends~ (TopK has two outputs, which is not supported by other backends, such as openvino)


Perf:

M1 (time in millisecond)

| input shape     | axis | dnn  | ort  |
| --------------- | ---- | ---- | ---- |
| (1000, 100)     | 0    | 1.68 | 4.07 |
| (1000, 100) K5  | 0    | 1.13 | 0.12 |
| (1000, 100)     | 1    | 0.96 | 0.77 |
| (100, 100, 100) | 0    | 10.00 | 31.13 |
| (100, 100, 100) | 1    | 7.33 | 9.17 |
| (100, 100, 100) | 2    | 7.52 | 9.48 |

M2 (time in milisecond)

| input shape     | axis | dnn  | ort  |
| --------------- | ---- | ---- | ---- |
| (1000, 100)     | 0    | 0.76 | 2.44 |
| (1000, 100) K5 | 0 | 0.68 | 0.07 |
| (1000, 100)     | 1    | 0.41 | 0.50 |
| (100, 100, 100) | 0    | 4.83 | 17.52|
| (100, 100, 100) | 1    | 3.60 | 5.08 |
| (100, 100, 100) | 2    | 3.73 | 5.10 |

ONNXRuntime performance testing script: https://gist.github.com/fengyuentau/a119f94fd16721ec9974b8c7b0a45d4c

### Pull Request Readiness Checklist

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [x] The PR is proposed to the proper branch
- [x] There is a reference to the original bug report and related work
- [x] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [x] The feature is well documented and sample code can be built with the project CMake
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

category: dnn (onnx) ONNX suport issues in DNN module category: dnn feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

OpenCV cannot import ONNX model: Can't create layer "..." of type "TopK"

4 participants