summaryrefslogtreecommitdiff
path: root/candle-examples/src
diff options
context:
space:
mode:
Diffstat (limited to 'candle-examples/src')
-rw-r--r--candle-examples/src/lib.rs1
-rw-r--r--candle-examples/src/object_detection.rs52
2 files changed, 0 insertions, 53 deletions
diff --git a/candle-examples/src/lib.rs b/candle-examples/src/lib.rs
index c14b2d6b..5e0b44fb 100644
--- a/candle-examples/src/lib.rs
+++ b/candle-examples/src/lib.rs
@@ -1,6 +1,5 @@
pub mod coco_classes;
pub mod imagenet;
-pub mod object_detection;
use candle::{Device, Result, Tensor};
diff --git a/candle-examples/src/object_detection.rs b/candle-examples/src/object_detection.rs
deleted file mode 100644
index ce579316..00000000
--- a/candle-examples/src/object_detection.rs
+++ /dev/null
@@ -1,52 +0,0 @@
-/// A bounding box around an object.
-#[derive(Debug, Clone)]
-pub struct Bbox<D> {
- pub xmin: f32,
- pub ymin: f32,
- pub xmax: f32,
- pub ymax: f32,
- pub confidence: f32,
- pub data: D,
-}
-
-#[derive(Debug, Clone, Copy, PartialEq)]
-pub struct KeyPoint {
- pub x: f32,
- pub y: f32,
- pub mask: f32,
-}
-
-/// Intersection over union of two bounding boxes.
-pub fn iou<D>(b1: &Bbox<D>, b2: &Bbox<D>) -> f32 {
- let b1_area = (b1.xmax - b1.xmin + 1.) * (b1.ymax - b1.ymin + 1.);
- let b2_area = (b2.xmax - b2.xmin + 1.) * (b2.ymax - b2.ymin + 1.);
- let i_xmin = b1.xmin.max(b2.xmin);
- let i_xmax = b1.xmax.min(b2.xmax);
- let i_ymin = b1.ymin.max(b2.ymin);
- let i_ymax = b1.ymax.min(b2.ymax);
- let i_area = (i_xmax - i_xmin + 1.).max(0.) * (i_ymax - i_ymin + 1.).max(0.);
- i_area / (b1_area + b2_area - i_area)
-}
-
-pub fn non_maximum_suppression<D>(bboxes: &mut [Vec<Bbox<D>>], threshold: f32) {
- // Perform non-maximum suppression.
- for bboxes_for_class in bboxes.iter_mut() {
- bboxes_for_class.sort_by(|b1, b2| b2.confidence.partial_cmp(&b1.confidence).unwrap());
- let mut current_index = 0;
- for index in 0..bboxes_for_class.len() {
- let mut drop = false;
- for prev_index in 0..current_index {
- let iou = iou(&bboxes_for_class[prev_index], &bboxes_for_class[index]);
- if iou > threshold {
- drop = true;
- break;
- }
- }
- if !drop {
- bboxes_for_class.swap(current_index, index);
- current_index += 1;
- }
- }
- bboxes_for_class.truncate(current_index);
- }
-}