Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
wants to merge 51 commits into
base: master
Choose a base branch
from

Conversation

bobokvsky
Copy link
Collaborator

В виде работающего черновика внедрена реализация "фильтров", который теперь является 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"}]
        ),

@bobokvsky bobokvsky requested a review from elephantum January 29, 2024 08:56
for k, v in run_config.filters.items():
if k in primary_keys:
sql = sql.where(table.c[k] == v)
sql = sql.where(
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TODO переписать на (id_1, id_2, ...) IN ((val_1_1, val_1_2, ...), (..))

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants