Skip to content

Commit 32f427c

Browse files
committed
Alignments: Migrate typed-dicts to dataclasses
1 parent 6ca67ce commit 32f427c

31 files changed

Lines changed: 1052 additions & 902 deletions

docs/full/lib/align.rst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,11 @@ The align Package handles detected faces, their alignments and masks.
3434
:include-all-objects:
3535
:no-inheritance-diagram:
3636

37+
|
38+
.. automodapi:: lib.align.objects
39+
:include-all-objects:
40+
:no-inheritance-diagram:
41+
3742
|
3843
.. automodapi:: lib.align.pose
3944
:include-all-objects:

lib/align/aligned_mask.py

Lines changed: 16 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from lib.utils import FaceswapError, get_module_objects
1515

1616
from .aligned_utils import get_adjusted_center, get_centered_size
17-
from .alignments import MaskAlignmentsFileDict
17+
from .objects import MaskAlignmentsFile
1818
from .constants import LandmarkType, LANDMARK_PARTS, LANDMARK_MASK_PARTS
1919

2020
if T.TYPE_CHECKING:
@@ -367,7 +367,7 @@ def _adjust_affine_matrix(self, mask_size: int, affine_matrix: np.ndarray) -> np
367367
affine_matrix.shape, adjust_mat.shape)
368368
return adjust_mat
369369

370-
def to_dict(self, is_png=False) -> MaskAlignmentsFileDict:
370+
def to_dict(self, is_png=False) -> MaskAlignmentsFile:
371371
"""Convert the mask to a dictionary for saving to an alignments file
372372
373373
Parameters
@@ -383,16 +383,15 @@ def to_dict(self, is_png=False) -> MaskAlignmentsFileDict:
383383
"""
384384
assert self._mask is not None
385385
affine_matrix = self.affine_matrix.tolist() if is_png else self.affine_matrix
386-
retval = MaskAlignmentsFileDict(mask=self._mask,
387-
affine_matrix=affine_matrix,
388-
interpolator=self.interpolator,
389-
stored_size=self.stored_size,
390-
stored_centering=self.stored_centering)
391-
logger.trace({k: v if k != "mask" else type(v) # type:ignore[attr-defined]
392-
for k, v in retval.items()})
386+
retval = MaskAlignmentsFile(mask=self._mask,
387+
affine_matrix=affine_matrix,
388+
interpolator=self.interpolator,
389+
stored_size=self.stored_size,
390+
stored_centering=self.stored_centering)
391+
logger.trace(retval) # type:ignore[attr-defined]
393392
return retval
394393

395-
def to_png_meta(self) -> MaskAlignmentsFileDict:
394+
def to_png_meta(self) -> MaskAlignmentsFile:
396395
"""Convert the mask to a dictionary supported by png itxt headers.
397396
398397
Returns
@@ -402,26 +401,20 @@ def to_png_meta(self) -> MaskAlignmentsFileDict:
402401
"""
403402
return self.to_dict(is_png=True)
404403

405-
def from_dict(self, mask_dict: MaskAlignmentsFileDict) -> None:
404+
def from_dict(self, mask: MaskAlignmentsFile) -> None:
406405
"""Populates the :class:`Mask` from a dictionary loaded from an alignments file.
407406
408407
Parameters
409408
----------
410-
mask_dict
411409
A dictionary stored in an alignments file containing the keys ``mask``,
412410
``affine_matrix``, ``interpolator``, ``stored_size``, ``stored_centering``
413411
"""
414-
self._mask = mask_dict["mask"]
415-
affine_matrix = mask_dict["affine_matrix"]
416-
self._affine_matrix = self._matrix_2to3(
417-
affine_matrix if isinstance(affine_matrix, np.ndarray)
418-
else np.array(affine_matrix, dtype=np.float32))
419-
self._interpolator = mask_dict["interpolator"]
420-
self.stored_size = mask_dict["stored_size"]
421-
centering = mask_dict.get("stored_centering")
422-
self.stored_centering = "face" if centering is None else centering
423-
logger.trace({k: v if k != "mask" else type(v) # type:ignore[attr-defined]
424-
for k, v in mask_dict.items()})
412+
self._mask = mask.mask
413+
self._affine_matrix = self._matrix_2to3(mask.affine_matrix)
414+
self._interpolator = mask.interpolator
415+
self.stored_size = mask.stored_size
416+
self.stored_centering = mask.stored_centering
417+
logger.trace(mask) # type:ignore[attr-defined]
425418

426419

427420
class LandmarksMask(Mask):

0 commit comments

Comments
 (0)