danielhshi8224 commited on
Commit
c458c3e
·
1 Parent(s): f572b0e

Initialize repo

Browse files
.gradio/certificate.pem ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ -----BEGIN CERTIFICATE-----
2
+ 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
31
+ -----END CERTIFICATE-----
app.py CHANGED
@@ -116,6 +116,8 @@ import torch.nn.functional as F
116
  from transformers import AutoImageProcessor, AutoModelForImageClassification
117
  from PIL import Image
118
  import os
 
 
119
 
120
  BASE_DIR = os.path.dirname(os.path.abspath(__file__))
121
  MODEL_ID = "dshi01/convnext-tiny-224-7clss"
@@ -152,7 +154,7 @@ def classify_images_batch(files):
152
  - table: list of rows for Dataframe
153
  """
154
  if not files:
155
- return [], []
156
 
157
  # Keep at most 10
158
  files = files[:MAX_BATCH]
@@ -170,7 +172,7 @@ def classify_images_batch(files):
170
  continue
171
 
172
  if not pil_images:
173
- return [], []
174
 
175
  # Batch preprocess + forward
176
  inputs = processor(images=pil_images, return_tensors="pt")
@@ -200,7 +202,24 @@ def classify_images_batch(files):
200
  ", ".join(map(str, top3_scores)),
201
  ])
202
 
203
- return gallery, table_rows
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
204
 
205
  # ---------- UI ----------
206
  single = gr.Interface(
@@ -221,6 +240,7 @@ batch = gr.Interface(
221
  label="Predictions Table",
222
  wrap=True
223
  )
 
224
  ],
225
  title="🌊 BenthicAI - Batch (up to 10)",
226
  description="Upload multiple images (max 10). Outputs a gallery with captions and a table of top predictions.",
 
116
  from transformers import AutoImageProcessor, AutoModelForImageClassification
117
  from PIL import Image
118
  import os
119
+ import csv
120
+ import tempfile
121
 
122
  BASE_DIR = os.path.dirname(os.path.abspath(__file__))
123
  MODEL_ID = "dshi01/convnext-tiny-224-7clss"
 
154
  - table: list of rows for Dataframe
155
  """
156
  if not files:
157
+ return [], [], None
158
 
159
  # Keep at most 10
160
  files = files[:MAX_BATCH]
 
172
  continue
173
 
174
  if not pil_images:
175
+ return [], [], None
176
 
177
  # Batch preprocess + forward
178
  inputs = processor(images=pil_images, return_tensors="pt")
 
202
  ", ".join(map(str, top3_scores)),
203
  ])
204
 
205
+ # Create CSV for download
206
+ csv_path = None
207
+ try:
208
+ # Write CSV into a temp file inside project dir so Gradio can serve it
209
+ tmp = tempfile.NamedTemporaryFile(delete=False, suffix=".csv", prefix="predictions_", dir=BASE_DIR, mode="w", newline='', encoding='utf-8')
210
+ writer = csv.writer(tmp)
211
+ # headers
212
+ writer.writerow(["filename", "top1_label", "top1_conf", "top3_labels", "top3_confs"])
213
+ for row in table_rows:
214
+ writer.writerow(row)
215
+ tmp.flush()
216
+ tmp.close()
217
+ csv_path = tmp.name
218
+ except Exception:
219
+ # If CSV can't be created, return None for the file but keep other outputs
220
+ csv_path = None
221
+
222
+ return gallery, table_rows, csv_path
223
 
224
  # ---------- UI ----------
225
  single = gr.Interface(
 
240
  label="Predictions Table",
241
  wrap=True
242
  )
243
+ , gr.File(label="Download CSV")
244
  ],
245
  title="🌊 BenthicAI - Batch (up to 10)",
246
  description="Upload multiple images (max 10). Outputs a gallery with captions and a table of top predictions.",
convert_model.py ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ from transformers import ConvNextForImageClassification, AutoConfig, AutoImageProcessor
3
+
4
+ ckpt_path = "./ConvNextmodel.pth"
5
+ base_model = "facebook/convnext-tiny-224" # the model you started from
6
+ num_labels = 7
7
+
8
+ # 1️⃣ Load the raw state dict
9
+ state_dict = torch.load(ckpt_path, map_location="cpu")
10
+ if any(k.startswith("module.") for k in state_dict):
11
+ state_dict = {k.replace("module.", "", 1): v for k, v in state_dict.items()}
12
+
13
+ # 2️⃣ Rebuild config and model
14
+ config = AutoConfig.from_pretrained(base_model)
15
+ config.num_labels = num_labels
16
+ model = ConvNextForImageClassification(config)
17
+ missing, unexpected = model.load_state_dict(state_dict, strict=True)
18
+ print("Missing:", missing, "Unexpected:", unexpected)
19
+
20
+ # 3️⃣ Save in HF format
21
+ save_dir = "./convnext-tiny-224-7cls"
22
+ model.save_pretrained(save_dir)
23
+
24
+ # 4️⃣ Also save processor (for transforms)
25
+ processor = AutoImageProcessor.from_pretrained(base_model)
26
+ processor.save_pretrained(save_dir)
convnext-tiny-224-7clss ADDED
@@ -0,0 +1 @@
 
 
1
+ Subproject commit 894a78d86e64973931c5a906bdddd472b5007e6f
predictions__kd1zves.csv ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ filename,top1_label,top1_conf,top3_labels,top3_confs
2
+ 2022_9817.jpg,Crab,0.9908,"Crab, Whelk, Skate","0.9908, 0.0056, 0.0013"
3
+ 2022_9829.jpg,Crab,0.9915,"Crab, Whelk, Roundfish","0.9915, 0.0028, 0.0018"
4
+ 2022_9837.jpg,Roundfish,0.989,"Roundfish, Flatfish, Eel","0.989, 0.0089, 0.001"
5
+ 2022_9839.jpg,Roundfish,0.9985,"Roundfish, Eel, Flatfish","0.9985, 0.0005, 0.0002"
6
+ 2022_9842.jpg,Crab,0.9892,"Crab, Scallop, Skate","0.9892, 0.0053, 0.002"
7
+ 2022_9844.jpg,Crab,0.992,"Crab, Skate, Flatfish","0.992, 0.0025, 0.0022"
predictions_bxv4glpg.csv ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ filename,top1_label,top1_conf,top3_labels,top3_confs
2
+ 2022_9817.jpg,Crab,0.9908,"Crab, Whelk, Skate","0.9908, 0.0056, 0.0013"
3
+ 2022_9829.jpg,Crab,0.9915,"Crab, Whelk, Roundfish","0.9915, 0.0028, 0.0018"
predictions_pwda2f57.csv ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ filename,top1_label,top1_conf,top3_labels,top3_confs
2
+ 2022_9817.jpg,Crab,0.9908,"Crab, Whelk, Skate","0.9908, 0.0056, 0.0013"
3
+ 2022_9829.jpg,Crab,0.9915,"Crab, Whelk, Roundfish","0.9915, 0.0028, 0.0018"
4
+ 2022_9837.jpg,Roundfish,0.989,"Roundfish, Flatfish, Eel","0.989, 0.0089, 0.001"
5
+ 2022_9839.jpg,Roundfish,0.9985,"Roundfish, Eel, Flatfish","0.9985, 0.0005, 0.0002"
6
+ 2022_9842.jpg,Crab,0.9892,"Crab, Scallop, Skate","0.9892, 0.0053, 0.002"
7
+ 2022_9844.jpg,Crab,0.992,"Crab, Skate, Flatfish","0.992, 0.0025, 0.0022"
predictions_x0bfvcix.csv ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ filename,top1_label,top1_conf,top3_labels,top3_confs
2
+ 2022_9817.jpg,Crab,0.9908,"Crab, Whelk, Skate","0.9908, 0.0056, 0.0013"
3
+ 2022_9829.jpg,Crab,0.9915,"Crab, Whelk, Roundfish","0.9915, 0.0028, 0.0018"
4
+ 2022_9837.jpg,Roundfish,0.989,"Roundfish, Flatfish, Eel","0.989, 0.0089, 0.001"
5
+ 2022_9839.jpg,Roundfish,0.9985,"Roundfish, Eel, Flatfish","0.9985, 0.0005, 0.0002"
6
+ 2022_9842.jpg,Crab,0.9892,"Crab, Scallop, Skate","0.9892, 0.0053, 0.002"