Menu

#308 [WIP]: Datapipe ml opts: добавлена динамическая фильтрация индексов

open
nobody
None
2024-02-01
2024-01-29
Anonymous
No

Originally created by: bobokvsky

В виде работающего черновика внедрена реализация "фильтров", который теперь является List[LabelDict] и принимает либо функцию с аргументами ds, run_config, либо в виде словаря [{"image_id": "id1"}, {"image_id": "id2"}]

Суть фильтра -- перезаписывает текущий запущенный run_config фильтрами по индексов, и при выполнении трансформации отбирать только те индексы, которые указаны в нем. Если список run_config.filters пустой, возвращает как обычно

Надо аккуратно зарефакторить этот код в хороший вид, внедрить тесты

Пример кода:

def filter_only_val_images(ds: DataStore, run_config: Optional[RunConfig]) -> List[LabelDict]:
    dt__image = ds.get_table("image")
    dt__subset__has__image = ds.get_table("subset__has__image__detection_train")
    df__image = dt__image.get_data(
        idx=dt__subset__has__image.get_data(idx=pd.DataFrame({"subset_id": ["val"]}))
    )
    if len(df__image) > 0:
        filters = df__image[["image_id"]].to_dict(orient="records")
        return filters

    return []

...
        BatchTransform(
            func=steps.inference_steps.inference_on_bboxes,
            inputs=["image", "model"],
            outputs=["prediction"],
            filters=filter_only_val_images,  # может быть просто и [{"subset_id": "val"}]
        ),

Discussion


Log in to post a comment.