Spaces:
Sleeping
Sleeping
File size: 7,106 Bytes
8b80777 6d18e2a aee59a3 d0f1574 7da121b 8b80777 c6ea80c 8b80777 870b63f 8b80777 6d18e2a d0f1574 6d18e2a aee59a3 6d18e2a d0f1574 6d18e2a aee59a3 6d18e2a d0f1574 6d18e2a d0f1574 7da121b 6d18e2a aee59a3 6d18e2a f3b0d73 2278280 f3b0d73 2278280 aee59a3 576a9f6 e1aaeed 0c1d03a aee59a3 e1aaeed 0c1d03a 576a9f6 0c1d03a 576a9f6 7da121b 0c1d03a 7da121b 0c1d03a 7da121b 0c1d03a 7da121b 0c1d03a 7da121b 0c1d03a 7da121b 576a9f6 f7ec5b9 03937fd 576a9f6 d0f1574 f3b0d73 7da121b e1aaeed 7da121b 6d18e2a d0f1574 2278280 aee59a3 7da121b 6d18e2a d0f1574 6d18e2a aee59a3 6d18e2a d0f1574 7da121b 6d18e2a 7da121b aee59a3 d0f1574 6d18e2a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 |
---
title: horizon-metrics
tags:
- evaluate
- metric
description: "This huggingface metric calculates horizon evaluation metrics using `seametrics.horizon.HorizonMetrics`."
sdk: gradio
sdk_version: 4.36.0
app_file: app.py
pinned: false
emoji: π
---
## SEA-AI/horizon-metrics
This huggingface metric uses `seametrics.horizon.HorizonMetrics` under the hood to calculate the slope and midpoint errors.
## How to Use
To utilize horizon-metrics effectively, start by installing the necessary dependencies using the provided pip command. Once installed, import the evaluate library into your Python environment. Then, use the SEA-AI/horizon-metrics metric to evaluate your horizon prediction models. Ensure that both ground truth and prediction points are correctly formatted before computing the result. Finally, analyze the computed result to gain insights into the performance of your prediction models.
### Getting Started
To get started with horizon-metrics, make sure you have the necessary dependencies installed. This metric relies on the `evaluate` and `seametrics` libraries.
### Installation
```sh
pip install evaluate git+https://github.com/SEA-AI/seametrics@develop
```
### Basic Usage
This is how you can quickly evaluate your horizon prediction models using SEA-AI/horizon-metrics:
> [!IMPORTANT]
> The vertical_fov_degrees and height parameters are required. The default value for roll_threshold is 0.5 and for pitch_threshold it is 0.1.
> [!IMPORTANT]
> The horizon metric should be calculated per sequence. Make sure that the vertical_fov and height are consistent across the inputs and do not change.
##### Use artificial data for testing
```python
ground_truth_points = [[[0.0, 0.5384765625], [1.0, 0.4931640625]],
[[0.0, 0.53796875], [1.0, 0.4928515625]],
[[0.0, 0.5374609375], [1.0, 0.4925390625]],
[[0.0, 0.536953125], [1.0, 0.4922265625]],
[[0.0, 0.5364453125], [1.0, 0.4919140625]]]
prediction_points = [[[0.0, 0.5428930956049597], [1.0, 0.4642497615378973]],
[[0.0, 0.5428930956049597], [1.0, 0.4642497615378973]],
[[0.0, 0.523573113510805], [1.0, 0.47642688648919496]],
[[0.0, 0.5200016849393765], [1.0, 0.4728554579177664]],
[[0.0, 0.523573113510805], [1.0, 0.47642688648919496]]]
```
##### Load data from fiftyone
```python
# Load data from fiftyone
sequence = "Sentry_2022_11_PROACT_CELADON_7.5M_MOB_2022_11_25_12_29_48"
dataset_name = "SENTRY_VIDEOS_DATASET_QA"
sequence_view = fo.load_dataset(dataset_name).match(F("sequence") == sequence)
sequence_view = sequence_view.select_group_slices("thermal_wide")
# Get the ground truth points
polylines_gt = sequence_view.values("frames.ground_truth_pl")
ground_truth_points = [
line["polylines"][0]["points"][0] if line is not None else None
for line in polylines_gt[0]
]
# Get the predicted points
polylines_pred = sequence_view.values(
"frames.ahoy-IR-b2-whales__XAVIER-AGX-JP46_pl_TnFoV")
prediction_points = [
line["polylines"][0]["points"][0] if line is not None else None
for line in polylines_pred[0]
```
##### Calculate horizon metrics
**Input parameters**
- **vertical_fov_degrees (in degrees)**: vertical field of view
- **height (in pixels)**: height of the images
- **roll_threshold (in degrees)**: This value is internally converted to a slope threshold. It is used to determine the number of slope error jumps. A slope error jump is counted if the difference in slope error between two successive frames exceeds this threshold.
- **pitch_threshold (in degrees)**: This value is internally converted to the midpoint. It is used as a threshold to determine the number of midpoint error jumps. A midpoint error jump is counted if the difference in midpoint error between two successive frames exceeds this threshold.
```python
import evaluate
module = evaluate.load("SEA-AI/horizon-metrics", vertical_fov_degrees=25.6, height=512, roll_threshold=0.5, pitch_threshold=0.1)
module.add(predictions=prediction_points, references=ground_truth_points)
module.compute()
```
This is output the evaluation metrics for your horizon prediction model:
```console
{'average_slope_error': 0.39394822776758726,
'average_midpoint_error': 0.0935801366906932,
'average_midpoint_error_px': 1.871602733813864,
'stddev_slope_error': 0.3809031270343266,
'stddev_midpoint_error': 0.23003871087476538,
'stddev_midpoint_error_px': 4.6007742174953075,
'max_slope_error': 3.5549008029526132,
'max_midpoint_error': 2.515424321301225,
'max_midpoint_error_px': 50.3084864260245,
'num_slope_error_jumps': 173,
'num_midpoint_error_jumps': 205,
'detection_rate': 0.2606486908948808}
```
### Output Values
SEA-AI/horizon-metrics provides the following performance metrics for horizon prediction:
- **average_slope_error**: Measures the average difference in slope between the predicted and ground truth horizon in degree.
- **average_midpoint_error**: Represents the average difference in midpoint position between the predicted and ground truth horizon.
- **average_midpoint_error_px**: Represents the average difference in midpoint position between the predicted and ground truth horizon, measured in pixels.
- **stddev_slope_error**: Indicates the variability of errors in slope between the predicted and ground truth horizon in degree.
- **stddev_midpoint_error**: Quantifies the variability of errors in midpoint position between the predicted and ground truth horizon in degree.
- **stddev_midpoint_error_px**: Quantifies the variability of errors in midpoint position between the predicted and ground truth horizon, measured in pixels.
- **max_slope_error**: Represents the maximum difference in slope between the predicted and ground truth horizon in degree.
- **max_midpoint_error**: Indicates the maximum difference in midpoint position between the predicted and ground truth horizon in degree.
- **max_midpoint_error_px**: Indicates the maximum difference in midpoint position between the predicted and ground truth horizon, measured in pixels.
- **num_slope_error_jumps**: Calculates the differences between errors in successive frames for the slope. It then counts the number of jumps in these errors by comparing the absolute differences to a specified threshold.
- **num_midpoint_error_jumps**: Calculates the differences between errors in successive frames for the midpoint. It then counts the number of jumps in these errors by comparing the absolute differences to a specified threshold.
- **detection_rate**: Measures the proportion of frames in which the horizon is successfully detected out of the total number of frames.
## Further References
Explore the [seametrics GitHub repository](https://github.com/SEA-AI/seametrics/tree/main) for more details on the underlying library.
## Contribution
Your contributions are welcome! If you'd like to improve SEA-AI/horizon-metrics or add new features, please feel free to fork the repository, make your changes, and submit a pull request.
|