Spaces:
Sleeping
Sleeping
| # Make sure to put your kaggle token in the environment variable KAGGLE_API_TOKEN | |
| import kagglehub | |
| from pathlib import Path | |
| from fastai.vision.all import * | |
| # Download latest version | |
| path = kagglehub.dataset_download("utkarshsaxenadn/fruits-classification") | |
| path = Path(path) / 'Fruits Classification' | |
| print("Path to dataset files:", path) | |
| block = DataBlock( | |
| blocks = (ImageBlock(), CategoryBlock()), | |
| get_items=get_image_files, | |
| splitter = GrandparentSplitter(train_name='train', valid_name='valid'), | |
| get_y = parent_label, | |
| item_tfms=RandomResizedCrop(224, min_scale=0.3), | |
| batch_tfms = aug_transforms() | |
| ) | |
| dls = block.dataloaders(path, bs = 64, seed=2026) | |
| learner = vision_learner(dls, resnet34, metrics=error_rate) | |
| learner.fine_tune(5) | |
| # Show classification accuracy | |
| interpretation = ClassificationInterpretation.from_learner(learner) | |
| interpretation.plot_confusion_matrix() | |
| interpretation.plot_top_losses(5, nrows=1, figsize=(20,5)) | |
| # Test the model | |
| # https://forums.fast.ai/t/how-to-evaluate-model-on-test-set/97972/3 | |
| test_files = get_image_files(path / "test") | |
| print(len(test_files)) | |
| test_dl = dls.test_dl(test_files, with_labels=True) | |
| test_dl.show_batch(max_n=5) | |
| preds, y = learner.get_preds(dl=test_dl) | |
| acc = accuracy(preds, y) | |
| print("Accuracy: ", acc) | |
| acc2 = learner.validate(dl=test_dl) | |
| print(acc2) | |
| # Export the model | |
| learner.export("fruits-model-v1.pkl") | |