dataeval 1.1.4__tar.gz → 1.1.5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {dataeval-1.1.4 → dataeval-1.1.5}/PKG-INFO +1 -1
- {dataeval-1.1.4 → dataeval-1.1.5}/pyproject.toml +1 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/_version.py +2 -2
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/quality/_outliers.py +5 -4
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/utils/preprocessing.py +1 -1
- {dataeval-1.1.4 → dataeval-1.1.5}/.gitignore +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/LICENSE +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/README.md +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/__init__.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/_embeddings.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/_experimental.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/_helpers.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/_log.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/_metadata/__init__.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/_metadata/_aggregate.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/_metadata/_columns.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/_metadata/_deprecated.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/_metadata/_encoding.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/_metadata/_entry_legacy.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/_metadata/_filters.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/_metadata/_input.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/_metadata/_keyed.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/_metadata/_links.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/_metadata/_loading.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/_metadata/_metadata.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/_metadata/_serialize.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/_metadata/_store.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/_metadata/_structurers/__init__.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/_metadata/_structurers/_accumulator.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/_metadata/_structurers/_base.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/_metadata/_structurers/_block.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/_metadata/_structurers/_classification.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/_metadata/_structurers/_data.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/_metadata/_structurers/_dataset.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/_metadata/_structurers/_detection.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/_metadata/_structurers/_factors.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/_metadata/_structurers/_frames.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/_metadata/_structurers/_gather.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/_metadata/_structurers/_instances.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/_metadata/_structurers/_layout.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/_metadata/_structurers/_ordering.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/_metadata/_structurers/_propagation.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/_metadata/_structurers/_reporting.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/_metadata/_structurers/_reserved.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/_metadata/_structurers/_select.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/_metadata/_structurers/_source_index.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/_metadata/_structurers/_tracking.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/_ontology.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/bias/__init__.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/bias/_balance.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/bias/_diversity.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/bias/_parity.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/config.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/core/__init__.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/core/_ber.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/core/_bin.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/core/_calculators/__init__.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/core/_calculators/_base.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/core/_calculators/_cache.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/core/_calculators/_dimensionstats.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/core/_calculators/_hashstats.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/core/_calculators/_pixelstats.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/core/_calculators/_register.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/core/_calculators/_registry.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/core/_calculators/_visualstats.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/core/_clusterer.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/core/_completeness.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/core/_compute_ratios.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/core/_compute_stats.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/core/_coverage.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/core/_divergence.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/core/_diversity.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/core/_fast_hdbscan/_cluster_trees.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/core/_fast_hdbscan/_disjoint_set.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/core/_fast_hdbscan/_mst.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/core/_feature_distance.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/core/_hash.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/core/_label_alignment.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/core/_label_coverage.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/core/_label_errors.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/core/_label_parity.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/core/_label_reconciliation.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/core/_label_stats.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/core/_metadata_insights.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/core/_mst.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/core/_mutual_info.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/core/_nullmodel.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/core/_ontology_validation.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/core/_parity.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/core/_rank.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/core/_track_stats.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/core/_uap.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/data/__init__.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/data/_classbalance.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/data/_classfilter.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/data/_crop.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/data/_crops.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/data/_geometry.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/data/_indices.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/data/_invalidates.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/data/_limit.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/data/_merge.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/data/_relabel.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/data/_resize.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/data/_reverse.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/data/_selectchannels.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/data/_shuffle.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/data/_split.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/data/_torchvision.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/data/_tracks.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/data/_unzip.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/data/_view.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/exceptions.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/extractors/__init__.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/extractors/_bovw.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/extractors/_flatten.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/extractors/_geometry.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/extractors/_onnx.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/extractors/_scores.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/extractors/_torch.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/extractors/_uncertainty.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/flags.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/models/__init__.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/models/_backends.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/models/_input.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/models/_metadata.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/models/_predictors.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/performance/__init__.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/performance/_aggregator.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/performance/_output.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/performance/_sufficiency.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/performance/schedules.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/protocols.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/py.typed +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/quality/__init__.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/quality/_duplicates.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/quality/_shared.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/scope/__init__.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/scope/_coverage.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/scope/_prioritize.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/scope/_representation.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/selection/__init__.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/shift/__init__.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/shift/_drift/__init__.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/shift/_drift/_base.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/shift/_drift/_chunk.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/shift/_drift/_domain_classifier.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/shift/_drift/_kneighbors.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/shift/_drift/_mmd.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/shift/_drift/_reconstruction.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/shift/_drift/_univariate.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/shift/_drift/_wasserstein.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/shift/_ood/__init__.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/shift/_ood/_base.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/shift/_ood/_domain_classifier.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/shift/_ood/_kneighbors.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/shift/_ood/_reconstruction.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/shift/_shared/__init__.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/shift/_shared/_domain_classifier.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/shift/_shared/_kneighbors.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/shift/_shared/_reconstruction.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/shift/update_strategies.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/types/__init__.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/types/_array.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/types/_config.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/types/_evaluator.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/types/_execution.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/types/_factors.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/types/_index.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/types/_ontology.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/types/_output.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/types/_schema.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/types/_track.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/utils/__init__.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/utils/_internal.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/utils/_validate.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/utils/data.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/utils/losses.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/utils/models.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/utils/onnx.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/utils/thresholds.py +0 -0
- {dataeval-1.1.4 → dataeval-1.1.5}/src/dataeval/utils/training.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: dataeval
|
|
3
|
-
Version: 1.1.
|
|
3
|
+
Version: 1.1.5
|
|
4
4
|
Summary: DataEval provides a simple interface to characterize image data and its impact on model performance across classification and object-detection tasks
|
|
5
5
|
Project-URL: Homepage, https://dataeval.ai/
|
|
6
6
|
Project-URL: Repository, https://github.com/aria-ml/dataeval/
|
|
@@ -314,6 +314,7 @@ markers = [
|
|
|
314
314
|
"required: marks tests for required features",
|
|
315
315
|
"optional: marks tests for optional features",
|
|
316
316
|
"cuda: marks tests that require cuda",
|
|
317
|
+
"performance: marks verification tests that time workloads or measure memory",
|
|
317
318
|
]
|
|
318
319
|
|
|
319
320
|
[tool.coverage.run]
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '1.1.
|
|
22
|
-
__version_tuple__ = version_tuple = (1, 1,
|
|
21
|
+
__version__ = version = '1.1.5'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 1, 5)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -84,8 +84,8 @@ class OutliersOutput(DataFrameOutput, Generic[TOutliers]):
|
|
|
84
84
|
Preserved across re-detection calls unless overridden via
|
|
85
85
|
:meth:`with_threshold`.
|
|
86
86
|
dataset_steps : list[int] or None
|
|
87
|
-
Cumulative
|
|
88
|
-
None for single-dataset output.
|
|
87
|
+
Cumulative image counts per dataset, used to number cluster rows. Statistics rows are
|
|
88
|
+
numbered by steps recomputed from `calculation_results`. None for single-dataset output.
|
|
89
89
|
"""
|
|
90
90
|
|
|
91
91
|
def __init__(
|
|
@@ -1752,7 +1752,8 @@ class Outliers(Evaluator):
|
|
|
1752
1752
|
outliers_dfs: list[pl.DataFrame] = []
|
|
1753
1753
|
|
|
1754
1754
|
if stats_results:
|
|
1755
|
-
|
|
1755
|
+
# combined_steps count statistics rows, target rows included; dataset_steps count images, for cluster rows.
|
|
1756
|
+
combined_stats, combined_source_index, combined_steps = combine_stats_results(stats_results)
|
|
1756
1757
|
|
|
1757
1758
|
class_ids: NDArray[np.intp] | None = None
|
|
1758
1759
|
if per_class and metadata is not None:
|
|
@@ -1760,7 +1761,7 @@ class Outliers(Evaluator):
|
|
|
1760
1761
|
|
|
1761
1762
|
outliers_df = self._get_outliers(combined_stats, combined_source_index, class_ids)
|
|
1762
1763
|
outliers_df = drop_null_index_columns(outliers_df, ["target_index", "channel_index"])
|
|
1763
|
-
outliers_df = add_dataset_index(outliers_df,
|
|
1764
|
+
outliers_df = add_dataset_index(outliers_df, combined_steps)
|
|
1764
1765
|
outliers_dfs.append(outliers_df)
|
|
1765
1766
|
|
|
1766
1767
|
# Cluster-based: early fusion — combine all images, cluster globally
|
|
@@ -286,7 +286,7 @@ def to_bounding_box(boxlike: BoxLike, image_shape: tuple[int, ...] | None = None
|
|
|
286
286
|
if isinstance(boxlike, Iterable):
|
|
287
287
|
return BoundingBox(*boxlike, image_shape=image_shape)
|
|
288
288
|
if isinstance(image_shape, tuple) and len(image_shape) > 2:
|
|
289
|
-
return BoundingBox(0, 0, image_shape[-
|
|
289
|
+
return BoundingBox(0, 0, image_shape[-1], image_shape[-2], image_shape=image_shape)
|
|
290
290
|
except (TypeError, ValueError):
|
|
291
291
|
_logger.warning(f"Invalid bounding box format: {boxlike}. Expected a BoundingBox or a tuple/list of 4 numbers.")
|
|
292
292
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|