opencv/modules
Yuantao Feng 347d673a87
Merge pull request #23279 from fengyuentau:add_topk
dnn: add ONNX TopK #23279

Merge with https://github.com/opencv/opencv_extra/pull/1200

Partially fixes #22890 and #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
2024-08-21 17:03:24 +03:00
..
calib3d Merge pull request #25943 from asmorkalov:as/fisheye_distrort_newk 2024-08-05 19:33:18 +03:00
core lock rounding mode for parallel test run 2024-08-21 09:02:02 +03:00
dnn Merge pull request #23279 from fengyuentau:add_topk 2024-08-21 17:03:24 +03:00
features2d Added Java ORB test 2024-07-25 16:47:41 +03:00
flann Prevent signed integer overflow in LshTable 2024-05-24 23:47:36 +02:00
gapi Merge pull request #26038 from shengyu7697:fix-typo 2024-08-19 13:00:07 +03:00
highgui highgui: Make GThread mandatory with GTK 2024-07-15 16:30:39 +02:00
imgcodecs Improved error handling in image codecs. 2024-08-01 08:34:29 +03:00
imgproc Merge pull request #25968 from FantasqueX:correct-bayer2gray-simd-1 2024-08-21 11:33:07 +03:00
java Merge pull request #26009 from alexlyulkov:al/unify-build-gradle 2024-08-21 09:24:28 +03:00
js fix: js perf tests 2024-07-26 13:24:26 -07:00
ml speedup random forest getVotes method. 2024-08-20 15:35:59 +07:00
objc fix: resolve Swift method name conflicts by adding missing namespace 2024-07-18 00:20:17 +08:00
objdetect Merge pull request #25938 from vrabaud:charuco 2024-07-24 09:27:07 +03:00
photo photo: doc: Fix window range for fastNlMeansDenoisingMulti 2024-06-21 21:04:22 +08:00
python Merge pull request #25643 from cpoerschke:issue-25635-find-existing-file-tests 2024-08-05 15:28:16 +03:00
stitching Partially back-port #25075 to 4.x 2024-03-05 12:15:39 +03:00
ts Merge pull request #25832 from chachoi-world:4.x 2024-08-06 20:25:39 +03:00
video Merge pull request #25771 from fengyuentau:vittrack_black_input 2024-06-18 12:48:28 +03:00
videoio Free Variant variable after usage in DShow back-end 2024-08-19 21:40:52 +03:00
world cmake: use /INCREMENTAL:NO with MSVS 2015 2023-12-07 19:46:27 +00:00