filter_annotations#

Dataset.filter_annotations(index: Any, mode: Literal['loc', 'iloc'] = 'loc', remove_emptied_images: bool = False) Self[source]#

Method equivalent of loc_annot and iloc_annot, except you can choose to remove emptied images as well.

Parameters:
  • index – Index object used in self.annotations.loc[] or self.annotations.iloc[]

  • mode – whether to be equivalent to Dataset.loc_annot() or Dataset.iloc_annot. Default to “loc”

  • remove_emptied_images – if set to True, will remove images that were initially with annotations, but are now empty. In that case, it will keep the images that were already empty before calling this method. Default to False.

Returns:

Filtered dataset

Example

>>> from lours.utils.doc_utils import dummy_dataset
>>> example = dummy_dataset(2, 2, seed=1)
>>> example
Dataset object containing 2 images and 2 objects
Name :
    shake_effort_many
Images root :
    care/suggest
Images :
    width  height        relative_path  type  split
id
0     955     229  determine/story.jpg  .jpg  train
1     131     840       air/method.bmp  .bmp  train
Annotations :
    image_id category_str  category_id  ...   box_y_min   box_width  box_height
id                                      ...
0          1       listen           14  ...  276.974642    9.718823  184.684056
1          0        reach           22  ...    6.311037  123.141689  174.239136

[2 rows x 8 columns]
Label map :
{14: 'listen', 15: 'marriage', 22: 'reach'}
>>> example.filter_annotations(example.annotations["box_height"] > 180)
Dataset object containing 2 images and 1 object
Name :
    shake_effort_many
Images root :
    care/suggest
Images :
    width  height        relative_path  type  split
id
0     955     229  determine/story.jpg  .jpg  train
1     131     840       air/method.bmp  .bmp  train
Annotations :
    image_id category_str  category_id  ...   box_y_min  box_width  box_height
id                                      ...
0          1       listen           14  ...  276.974642   9.718823  184.684056

[1 rows x 8 columns]
Label map :
{14: 'listen', 15: 'marriage', 22: 'reach'}
>>> example.filter_annotations(0, mode="iloc")
Dataset object containing 2 images and 1 object
Name :
    shake_effort_many
Images root :
    care/suggest
Images :
    width  height        relative_path  type  split
id
0     955     229  determine/story.jpg  .jpg  train
1     131     840       air/method.bmp  .bmp  train
Annotations :
    image_id category_str  category_id  ...   box_y_min  box_width  box_height
id                                      ...
0          1       listen           14  ...  276.974642   9.718823  184.684056

[1 rows x 8 columns]
Label map :
{14: 'listen', 15: 'marriage', 22: 'reach'}
>>> example.filter_annotations(0, mode="iloc", remove_emptied_images=True)
Dataset object containing 1 image and 1 object
Name :
    shake_effort_many
Images root :
    care/suggest
Images :
    width  height   relative_path  type  split
id
1     131     840  air/method.bmp  .bmp  train
Annotations :
    image_id category_str  category_id  ...   box_y_min  box_width  box_height
id                                      ...
0          1       listen           14  ...  276.974642   9.718823  184.684056

[1 rows x 8 columns]
Label map :
{14: 'listen', 15: 'marriage', 22: 'reach'}