Skip to content

Commit d98b8b1

Browse files
committed
Merge branch 'main' into feat/all-exporters
2 parents 6d3b4ec + 91edec1 commit d98b8b1

File tree

15 files changed

+41
-59
lines changed

15 files changed

+41
-59
lines changed

luxonis_ml/data/augmentations/albumentations_engine.py

Lines changed: 20 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -241,36 +241,23 @@ def apply_to_array(
241241
...
242242
"""
243243

244-
def _should_skip_augmentation(
244+
def _check_augmentation_warnings(
245245
self, config_item: dict[str, Any], available_target_types: set
246-
) -> bool:
247-
skip_rules = {
248-
"keypoints": [
249-
"HorizontalFlip",
250-
"VerticalFlip",
251-
"Flip",
252-
],
253-
}
246+
) -> None:
254247
augmentation_name = config_item["name"]
255-
skipped_for = [
256-
target_type
257-
for target_type, skip_list in skip_rules.items()
258-
if target_type in available_target_types
259-
and augmentation_name in skip_list
260-
]
261-
if skipped_for:
262-
extra_msg = ""
263-
if "keypoints" in skipped_for and augmentation_name in [
264-
"HorizontalFlip",
265-
"VerticalFlip",
266-
"Flip",
267-
]:
268-
extra_msg = " For keypoints, please use 'HorizontalSymetricKeypointsFlip' or 'VerticalSymetricKeypointsFlip'."
248+
249+
if "keypoints" in available_target_types and augmentation_name in [
250+
"HorizontalFlip",
251+
"VerticalFlip",
252+
"Transpose",
253+
]:
269254
logger.warning(
270-
f"Skipping augmentation '{augmentation_name}' due to known issues for {skipped_for} target types. {extra_msg}"
255+
f"Using '{augmentation_name}' with keypoints."
256+
"If your dataset contains symmetric keypoints (e.g. left/right arms),"
257+
"you should use our custom HorizontalSymetricKeypointsFlip,"
258+
"VerticalSymetricKeypointsFlip, or TransposeSymmetricKeypoints"
259+
"to ensure keypoints are correctly reordered."
271260
)
272-
return True
273-
return False
274261

275262
@override
276263
def __init__(
@@ -372,13 +359,10 @@ def __init__(
372359
available_target_types = set(self.targets.values())
373360

374361
for config_item in config:
375-
if self._should_skip_augmentation(
362+
self._check_augmentation_warnings(
376363
config_item, available_target_types
377-
):
378-
continue
379-
364+
)
380365
cfg = AlbumentationConfigItem(**config_item) # type: ignore
381-
382366
transform = self.create_transformation(cfg)
383367

384368
if cfg.use_for_resizing:
@@ -431,9 +415,11 @@ def get_params(is_custom: bool = False) -> dict[str, Any]:
431415
"keypoint_params": A.KeypointParams(
432416
format="xy", remove_invisible=False
433417
),
434-
"additional_targets": self.targets
435-
if is_custom
436-
else targets_without_instance_mask,
418+
"additional_targets": (
419+
self.targets
420+
if is_custom
421+
else targets_without_instance_mask
422+
),
437423
"seed": seed,
438424
}
439425

luxonis_ml/data/datasets/annotation.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,7 @@
2323
from typing_extensions import Self, override
2424

2525
from luxonis_ml.data.utils.parquet import ParquetRecord
26-
from luxonis_ml.typing import PathType, check_type
27-
from luxonis_ml.utils import BaseModelExtraForbid
26+
from luxonis_ml.typing import BaseModelExtraForbid, PathType, check_type
2827
from luxonis_ml.utils.logging import log_once
2928

3029
KeypointVisibility: TypeAlias = Literal[0, 1, 2]

luxonis_ml/data/datasets/metadata.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from typing_extensions import TypedDict
55

66
from luxonis_ml.data.utils.constants import LDF_VERSION
7-
from luxonis_ml.utils.pydantic_utils import BaseModelExtraForbid
7+
from luxonis_ml.typing import BaseModelExtraForbid
88

99
from .source import LuxonisSource
1010

luxonis_ml/data/datasets/source.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from pydantic import Field, field_validator
44

55
from luxonis_ml.data.utils import ImageType, MediaType
6-
from luxonis_ml.utils import BaseModelExtraForbid
6+
from luxonis_ml.typing import BaseModelExtraForbid
77

88

99
class LuxonisComponent(BaseModelExtraForbid):

luxonis_ml/data/parsers/classification_directory_parser.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ def from_split(self, class_dir: Path) -> ParserOutput:
6565

6666
def generator() -> DatasetIterator:
6767
for class_name in class_names:
68-
for img_path in (class_dir / class_name).iterdir():
68+
for img_path in self._list_images(class_dir / class_name):
6969
yield {
7070
"file": str(img_path.absolute().resolve()),
7171
"annotation": {"class": class_name},

luxonis_ml/nn_archive/config.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from pydantic import Field, field_validator
44

5-
from luxonis_ml.utils import BaseModelExtraForbid
5+
from luxonis_ml.typing import BaseModelExtraForbid
66

77
from .model import Model
88

luxonis_ml/nn_archive/config_building_blocks/base_models/input.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
InputType,
1010
)
1111
from luxonis_ml.nn_archive.utils import infer_layout
12-
from luxonis_ml.utils import BaseModelExtraForbid
12+
from luxonis_ml.typing import BaseModelExtraForbid
1313

1414

1515
class PreprocessingBlock(BaseModelExtraForbid):

luxonis_ml/nn_archive/config_building_blocks/base_models/output.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
from luxonis_ml.nn_archive.config_building_blocks.enums import DataType
77
from luxonis_ml.nn_archive.utils import infer_layout
8-
from luxonis_ml.utils import BaseModelExtraForbid
8+
from luxonis_ml.typing import BaseModelExtraForbid
99

1010

1111
class Output(BaseModelExtraForbid):

luxonis_ml/nn_archive/model.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from pydantic import Field
22

3-
from luxonis_ml.utils import BaseModelExtraForbid
3+
from luxonis_ml.typing import BaseModelExtraForbid
44

55
from .config_building_blocks import HeadType, Input, Metadata, Output
66

luxonis_ml/typing.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from typing import TYPE_CHECKING, Any, Literal, TypeAlias, TypeGuard, TypeVar
44

55
import typeguard
6-
from pydantic import BaseModel
6+
from pydantic import BaseModel, ConfigDict
77

88
# When used without installed dependencies
99
if TYPE_CHECKING: # pragma: no cover
@@ -83,7 +83,13 @@
8383
"""A keyword dictionary of arbitrary parameters."""
8484

8585

86-
class ConfigItem(BaseModel):
86+
class BaseModelExtraForbid(BaseModel):
87+
"""BaseModel with extra fields forbidden."""
88+
89+
model_config: ConfigDict = ConfigDict(extra="forbid")
90+
91+
92+
class ConfigItem(BaseModelExtraForbid):
8793
"""Configuration schema for dynamic object instantiation. Typically
8894
used to instantiate objects stored in registries.
8995

0 commit comments

Comments
 (0)