neelimapreeti297 commited on
Commit
28e77b0
·
verified ·
1 Parent(s): dedc549

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +80 -2
README.md CHANGED
@@ -13,17 +13,18 @@ library_name: keras
13
  panda_cat_dog_classification
14
 
15
  ### Model Description
16
- This model classifies animals among pandas, cats and dogs. It was trained using inceptionV3 model.
17
 
18
 
19
  - **Developed by:** Neelima Monjusha Preeti
20
- - **Model type:** inceptionV3
21
  - **Language(s):** Python
22
  - **License:** MIT
23
  - **Contact:** [email protected]
24
 
25
  ### Data Preprocessing
26
  The image dataset is preprocessed with the following portion:
 
27
  ```bash
28
  transform = transforms.Compose([
29
  transforms.Resize((224,224)),
@@ -65,10 +66,87 @@ class CNN(nn.Module):
65
  ```
66
  Then used batch_size = 8 and CrossEntropyLoss() for loss function. Then used Adam optimizer with a learning rate 0.001 for optimization process.
67
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
69
 
 
 
70
 
 
71
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
72
 
73
 
74
  ### Project Structure
 
13
  panda_cat_dog_classification
14
 
15
  ### Model Description
16
+ This model classifies animals among pandas, cats and dogs. It was trained using custom CNN model.
17
 
18
 
19
  - **Developed by:** Neelima Monjusha Preeti
20
+ - **Model type:** custom CNN model
21
  - **Language(s):** Python
22
  - **License:** MIT
23
  - **Contact:** [email protected]
24
 
25
  ### Data Preprocessing
26
  The image dataset is preprocessed with the following portion:
27
+
28
  ```bash
29
  transform = transforms.Compose([
30
  transforms.Resize((224,224)),
 
66
  ```
67
  Then used batch_size = 8 and CrossEntropyLoss() for loss function. Then used Adam optimizer with a learning rate 0.001 for optimization process.
68
 
69
+ ```bash
70
+ loss_function = nn.CrossEntropyLoss()
71
+ optimizer = optim.Adam(model.parameters(), lr=0.001)
72
+ ```
73
+ ### Training Loop
74
+
75
+ Loading the data then breaking it into mini batches. Then forward pass and loss function calculation. After that backward propagation and optimization.
76
+ Backward Propagation and Optimization:
77
+
78
+ ```bash
79
+ optimizer.zero_grad()
80
+ loss.backward()
81
+ optimizer.step()
82
+ ```
83
+ ### Test data
84
+
85
+ Test data loaded and calculate the accuracy.
86
+
87
+ The accuracy was 53.333333333333336% .
88
+
89
+ ### Result Analysis
90
+ The packages needed for creating the huggingface interface is loaded with:
91
+
92
+ ```bash
93
+ import gradio as gr
94
+ import torch
95
+ from torchvision import transforms
96
+ ```
97
+
98
+ The model was saved with the following:
99
 
100
+ ```bash
101
+ model_scripted = torch.jit.script(model)
102
+ model_scripted.save('./models/cat_dog_cnn.pt')
103
+ ```
104
+ ## HuggingFace Result analysis
105
+ First the custom model cat_dog_cnn.pt is loaded. Then the output function is specified. As this is a Image Classification model.
106
+
107
+ ```bash
108
+ |---app_data
109
+ | |---cat.jpg
110
+ | |---dog.jpg
111
+ | |---panda.jpg
112
+ |
113
+ ```
114
+
115
+ Example images are loaded.
116
+ The classes for prediction are - CLASSES = ["Cat", "Dog", "Panda"].
117
+ The output function for prediction is
118
+
119
+ ```bash
120
+ def classify_image(inp):
121
+ inp = transform(inp).unsqueeze(0)
122
+ out = model(inp)
123
+ return CLASSES[out.argmax().item()]
124
+ ```
125
 
126
+ This will return the classes of the input image.
127
+ # Interface Creation
128
 
129
+ For creating huggingface interface this following portion is added:
130
 
131
+ ```bash
132
+ iface = gr.Interface(fn=classify_image,
133
+ inputs=gr.Image(type="pil", label="Input Image"),
134
+ outputs="text",
135
+ examples=[
136
+
137
+ "./app_data/cat.jpg",
138
+ "./app_data/dog.jpg",
139
+ "./app_data/panda.jpg",
140
+
141
+
142
+ ])
143
+ ```
144
+ This portion is going to create an interface for taking the image input. Then example images and output is defined to be the classes from cat, dog and panda.
145
+ Now with the following the interface of the app is loaded.
146
+
147
+ ```bash
148
+ iface.launch()
149
+ ```
150
 
151
 
152
  ### Project Structure