Spaces:
Sleeping
Sleeping
| title: box-metrics | |
| tags: | |
| - evaluate | |
| - metric | |
| description: built upon yolov5 iou functions. Outputs metrics regarding box fit | |
| sdk: gradio | |
| sdk_version: 5.6.0 | |
| app_file: app.py | |
| pinned: false | |
| emoji: 🕵️ | |
| # SEA-AI/det-metrics | |
| This hugging face metric uses `seametrics.detection.PrecisionRecallF1Support` under the hood to compute coco-like metrics for object detection tasks. It is a [modified cocoeval.py](https://github.com/SEA-AI/seametrics/blob/develop/seametrics/detection/cocoeval.py) wrapped inside [torchmetrics' mAP metric](https://lightning.ai/docs/torchmetrics/stable/detection/mean_average_precision.html) but with numpy arrays instead of torch tensors. | |
| ## Getting Started | |
| To get started with det-metrics, make sure you have the necessary dependencies installed. This metric relies on the `evaluate` and `seametrics` libraries for metric calculation and integration with FiftyOne datasets. | |
| ### Installation | |
| First, ensure you have Python 3.8 or later installed. Then, install det-metrics using pip: | |
| ```sh | |
| pip install evaluate git+https://github.com/SEA-AI/seametrics@develop | |
| ``` | |
| ### Basic Usage | |
| Here's how to quickly evaluate your object detection models using SEA-AI/box-metrics: | |
| ```python | |
| import evaluate | |
| # Define your predictions and references (dict values can also by numpy arrays) | |
| predictions = { | |
| "model1": [torch.tensor[n,6], torch.tensor[n,6]], | |
| "model2": [torch.tensor[n,6], torch.tensor[n,6]] | |
| } | |
| #predictions box format: x1, y1, x2, y2, conf, label (torch metrics format) | |
| references = [torch.tensor[n,5], torch.tensor[n,5]] | |
| #refernces box format: label, x1, y1, x2, y2 (torch metrics format) | |
| # Load SEA-AI/det-metrics and evaluate | |
| module = evaluate.load("SEA-AI/box-metrics") | |
| module.add_batch(prediction=predictions, reference=references, sequence_name="sequence") | |
| results = module.compute() | |
| print(results) | |
| ``` | |
| This will output the evaluation metrics for your detection model. | |
| ``` | |
| {'sequence': {'model1': | |
| {'iou': '0.6', | |
| 'bep': 0.5, | |
| ... | |
| }}} | |
| ``` | |
| ## FiftyOne Integration | |
| Integrate SEA-AI/det-metrics with FiftyOne datasets for enhanced analysis and visualization: | |
| ```python | |
| import evaluate | |
| import logging | |
| from seametrics.payload.processor import PayloadProcessor | |
| logging.basicConfig(level=logging.WARNING) | |
| # Configure your dataset and model details | |
| processor = PayloadProcessor( | |
| dataset_name="SENTRY_VIDEOS_DATASET_QA", | |
| gt_field="ground_truth_det", | |
| models=["ahoy-IR-b2-whales__XAVIER-AGX-JP46_CNN"], | |
| sequence_list=["Sentry_2022_11_PROACT_CELADON_7.5M_MOB_2022_11_25_12_12_39"], | |
| data_type="thermal", | |
| ) | |
| # Evaluate using SEA-AI/det-metrics | |
| module = evaluate.load("SEA-AI/box-metrics") | |
| module.add_payload(processor.payload) | |
| results = module.compute() | |
| print(results) | |
| ``` | |
| ```console | |
| {'Sentry_2022_11_PROACT_CELADON_7.5M_MOB_2022_11_25_12_12_39': {'ahoy-IR-b2-whales__XAVIER-AGX-JP46_CNN': | |
| {'iou': '0.6', | |
| 'bep': 0.5, | |
| ... | |
| }}} | |
| ``` | |
| ## Further References | |
| - **seametrics Library**: Explore the [seametrics GitHub repository](https://github.com/SEA-AI/seametrics/tree/main) for more details on the underlying library. | |
| - **Understanding Metrics**: For a deeper understanding of precision, recall, and other metrics, read [this comprehensive guide](https://www.analyticsvidhya.com/blog/2020/09/precision-recall-machine-learning/). | |
| ## Contribution | |
| Your contributions are welcome! If you'd like to improve SEA-AI/det-metrics or add new features, please feel free to fork the repository, make your changes, and submit a pull request. |