kaust123 commited on
Commit
ddeca95
·
verified ·
1 Parent(s): 59ada0e

Delete foodvision_mini

Browse files
foodvision_mini/09_pretrained_effnetb2_feature_extractor_pizza_steak_sushi_20_percent.pth DELETED
@@ -1,3 +0,0 @@
1
- version https://git-lfs.github.com/spec/v1
2
- oid sha256:eff07ee6a9faf1b1cbaf25837bd5990025f46ac083ea629919de57c82a86c157
3
- size 31314554
 
 
 
 
foodvision_mini/app.py DELETED
@@ -1,77 +0,0 @@
1
- ### 1. Imports and class names setup ###
2
- import gradio as gr
3
- import os
4
- import torch
5
-
6
- from model import create_effnetb2_model
7
- from timeit import default_timer as timer
8
- from typing import Tuple, Dict
9
-
10
- # Setup class names
11
- class_names = ["pizza", "steak", "sushi"]
12
-
13
- ### 2. Model and transforms preparation ###
14
-
15
- # Create EffNetB2 model
16
- effnetb2, effnetb2_transforms = create_effnetb2_model(
17
- num_classes=3, # len(class_names) would also work
18
- )
19
-
20
- # Load saved weights
21
- effnetb2.load_state_dict(
22
- torch.load(
23
- f="09_pretrained_effnetb2_feature_extractor_pizza_steak_sushi_20_percent.pth",
24
- map_location=torch.device("cpu"), # load to CPU
25
- )
26
- )
27
-
28
- ### 3. Predict function ###
29
-
30
- # Create predict function
31
- def predict(img) -> Tuple[Dict, float]:
32
- """Transforms and performs a prediction on img and returns prediction and time taken.
33
- """
34
- # Start the timer
35
- start_time = timer()
36
-
37
- # Transform the target image and add a batch dimension
38
- img = effnetb2_transforms(img).unsqueeze(0)
39
-
40
- # Put model into evaluation mode and turn on inference mode
41
- effnetb2.eval()
42
- with torch.inference_mode():
43
- # Pass the transformed image through the model and turn the prediction logits into prediction probabilities
44
- pred_probs = torch.softmax(effnetb2(img), dim=1)
45
-
46
- # Create a prediction label and prediction probability dictionary for each prediction class (this is the required format for Gradio's output parameter)
47
- pred_labels_and_probs = {class_names[i]: float(pred_probs[0][i]) for i in range(len(class_names))}
48
-
49
- # Calculate the prediction time
50
- pred_time = round(timer() - start_time, 5)
51
-
52
- # Return the prediction dictionary and prediction time
53
- return pred_labels_and_probs, pred_time
54
-
55
- ### 4. Gradio app ###
56
-
57
- # Create title, description and article strings
58
- title = "FoodVision Mini 🍕🥩🍣"
59
- description = "An EfficientNetB2 feature extractor computer vision model to classify images of food as pizza, steak or sushi."
60
- article = "Created at [09. PyTorch Model Deployment](https://www.learnpytorch.io/09_pytorch_model_deployment/)."
61
-
62
- # Create examples list from "examples/" directory
63
- example_list = [["examples/" + example] for example in os.listdir("examples")]
64
-
65
- # Create the Gradio demo
66
- demo = gr.Interface(fn=predict, # mapping function from input to output
67
- inputs=gr.Image(type="pil"), # what are the inputs?
68
- outputs=[gr.Label(num_top_classes=3, label="Predictions"), # what are the outputs?
69
- gr.Number(label="Prediction time (s)")], # our fn has two outputs, therefore we have two outputs
70
- # Create examples list from "examples/" directory
71
- examples=example_list,
72
- title=title,
73
- description=description,
74
- article=article)
75
-
76
- # Launch the demo!
77
- demo.launch()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
foodvision_mini/examples/2582289.jpg DELETED
Binary file (63.1 kB)
 
foodvision_mini/examples/3622237.jpg DELETED
Binary file (71.5 kB)
 
foodvision_mini/examples/592799.jpg DELETED
Binary file (44.9 kB)
 
foodvision_mini/model.py DELETED
@@ -1,37 +0,0 @@
1
-
2
- import torch
3
- import torchvision
4
-
5
- from torch import nn
6
-
7
-
8
- def create_effnetb2_model(num_classes:int=3,
9
- seed:int=42):
10
- """Creates an EfficientNetB2 feature extractor model and transforms.
11
-
12
- Args:
13
- num_classes (int, optional): number of classes in the classifier head.
14
- Defaults to 3.
15
- seed (int, optional): random seed value. Defaults to 42.
16
-
17
- Returns:
18
- model (torch.nn.Module): EffNetB2 feature extractor model.
19
- transforms (torchvision.transforms): EffNetB2 image transforms.
20
- """
21
- # Create EffNetB2 pretrained weights, transforms and model
22
- weights = torchvision.models.EfficientNet_B2_Weights.DEFAULT
23
- transforms = weights.transforms()
24
- model = torchvision.models.efficientnet_b2(weights=weights)
25
-
26
- # Freeze all layers in base model
27
- for param in model.parameters():
28
- param.requires_grad = False
29
-
30
- # Change classifier head with random seed for reproducibility
31
- torch.manual_seed(seed)
32
- model.classifier = nn.Sequential(
33
- nn.Dropout(p=0.3, inplace=True),
34
- nn.Linear(in_features=1408, out_features=num_classes),
35
- )
36
-
37
- return model, transforms
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
foodvision_mini/requirements.txt DELETED
@@ -1,4 +0,0 @@
1
- torch==2.2.1
2
- torchvision==0.17.1
3
- gradio==3.1.4
4
- httpx==0.24.1