Spaces:
Runtime error
Runtime error
| from pathlib import Path | |
| import gradio as gr | |
| import torch | |
| from transformers import AutoModelForImageClassification | |
| import shutil | |
| from optimum.pipelines import pipeline | |
| device = 1 if torch.cuda.is_available() else "cpu" | |
| chk_point = "davanstrien/autotrain-ia-useful-covers-3665397856" | |
| model = AutoModelForImageClassification.from_pretrained(chk_point) | |
| try: | |
| pipe = pipeline( | |
| "image-classification", | |
| chk_point, | |
| accelerator="bettertransformer", | |
| device=device, | |
| ) | |
| except NotImplementedError: | |
| from transformers import pipeline | |
| pipe = pipeline("image-classification", chk_point, device=device) | |
| def make_label_folders(): | |
| folders = model.config.label2id.keys() | |
| for folder in folders: | |
| folder = Path(folder) | |
| if not folder.exists(): | |
| folder.mkdir() | |
| return folders | |
| def predictions_into_folders(files): | |
| files = [file.name for file in files] | |
| files = [ | |
| file for file in files if not file.startswith(".") and "DS_Store" not in file | |
| ] | |
| folders = make_label_folders() | |
| predictions = pipe(files) | |
| for file, prediction in zip(files, predictions): | |
| label = prediction[0]["label"] | |
| file_name = Path(file).name | |
| shutil.copy(file, f"{label}/{file_name}") | |
| for folder in folders: | |
| shutil.make_archive(folder, "zip", ".", folder) | |
| return [f"{folder}.zip" for folder in folders] | |
| demo = gr.Interface( | |
| predictions_into_folders, | |
| gr.Files(file_count="directory", file_types=["image"]), | |
| gr.Files(), | |
| cache_examples=True, | |
| ) | |
| demo.launch(enable_queue=True) | |