From 3b19fe09d7a501c8ecec255f25b36ef875f5e29c Mon Sep 17 00:00:00 2001 From: Aditya Kumar Date: Wed, 27 Aug 2025 23:54:25 +0530 Subject: [PATCH 1/2] Add benchmark aprilgrid-rs --- crates/kornia-apriltag/Cargo.toml | 2 ++ .../kornia-apriltag/benches/bench_decoding.rs | 22 ++++++++++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/crates/kornia-apriltag/Cargo.toml b/crates/kornia-apriltag/Cargo.toml index b978fba78..55cf91c15 100644 --- a/crates/kornia-apriltag/Cargo.toml +++ b/crates/kornia-apriltag/Cargo.toml @@ -22,6 +22,8 @@ thiserror = { workspace = true } kornia-io = { workspace = true } criterion = { workspace = true } apriltag = "0.4" +aprilgrid = "0.6" +image = "0.25" [[bench]] name = "bench_decoding" diff --git a/crates/kornia-apriltag/benches/bench_decoding.rs b/crates/kornia-apriltag/benches/bench_decoding.rs index 6753a7666..552afddd6 100644 --- a/crates/kornia-apriltag/benches/bench_decoding.rs +++ b/crates/kornia-apriltag/benches/bench_decoding.rs @@ -9,10 +9,17 @@ use std::path::PathBuf; fn bench_decoding(c: &mut Criterion) { let img_path = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("../../tests/data/apriltags_tag36h11.jpg"); + + // Kornia let img = read_image_jpeg_rgb8(img_path).unwrap(); let mut gray_img = Image::from_size_val(img.size(), 0, CpuAllocator).unwrap(); gray_from_rgb_u8(&img, &mut gray_img).unwrap(); + let kornia_detector_config = DecodeTagsConfig::new(vec![TagFamilyKind::Tag36H11]); + let mut kornia_detector = + AprilTagDecoder::new(kornia_detector_config, gray_img.size()).unwrap(); + + // AprilTag C let mut apriltag_c_img = apriltag::Image::zeros_with_stride(gray_img.width(), gray_img.height(), gray_img.width()) .unwrap(); @@ -31,9 +38,14 @@ fn bench_decoding(c: &mut Criterion) { apriltag_c_detector.set_decimation(2.0); - let kornia_detector_config = DecodeTagsConfig::new(vec![TagFamilyKind::Tag36H11]); - let mut kornia_detector = - AprilTagDecoder::new(kornia_detector_config, gray_img.size()).unwrap(); + // AprilGrid-rs + let aprigrid_img: image::DynamicImage = + image::RgbImage::from_vec(img.width() as u32, img.height() as u32, img.to_vec()) + .unwrap() + .into(); + + let aprilgrid_detector = + aprilgrid::detector::TagDetector::new(&aprilgrid::TagFamily::T36H11, None); c.bench_function("kornia-apriltag", |b| { b.iter(|| { @@ -45,6 +57,10 @@ fn bench_decoding(c: &mut Criterion) { c.bench_function("apriltag-c", |b| { b.iter(|| std::hint::black_box(apriltag_c_detector.detect(&apriltag_c_img))); }); + + c.bench_function("aprilgrid-rs", |b| { + b.iter(|| std::hint::black_box(aprilgrid_detector.detect(&aprigrid_img))); + }); } criterion_group!(benches, bench_decoding); From 385b1c13870add7cb68e69cc5278eb357a9a34bd Mon Sep 17 00:00:00 2001 From: Aditya Kumar Date: Sat, 30 Aug 2025 01:40:44 +0530 Subject: [PATCH 2/2] Accept suggestions --- crates/kornia-apriltag/benches/bench_decoding.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/crates/kornia-apriltag/benches/bench_decoding.rs b/crates/kornia-apriltag/benches/bench_decoding.rs index 552afddd6..e5955250d 100644 --- a/crates/kornia-apriltag/benches/bench_decoding.rs +++ b/crates/kornia-apriltag/benches/bench_decoding.rs @@ -39,8 +39,8 @@ fn bench_decoding(c: &mut Criterion) { apriltag_c_detector.set_decimation(2.0); // AprilGrid-rs - let aprigrid_img: image::DynamicImage = - image::RgbImage::from_vec(img.width() as u32, img.height() as u32, img.to_vec()) + let aprilgrid_img: image::DynamicImage = + image::GrayImage::from_vec(img.width() as u32, img.height() as u32, img.to_vec()) .unwrap() .into(); @@ -59,7 +59,7 @@ fn bench_decoding(c: &mut Criterion) { }); c.bench_function("aprilgrid-rs", |b| { - b.iter(|| std::hint::black_box(aprilgrid_detector.detect(&aprigrid_img))); + b.iter(|| std::hint::black_box(aprilgrid_detector.detect(&aprilgrid_img))); }); }