DrMaxJJ commited on
Commit
3c0b09d
Β·
verified Β·
1 Parent(s): f89c926
.gitattributes CHANGED
@@ -1,35 +1,40 @@
1
- *.7z filter=lfs diff=lfs merge=lfs -text
2
- *.arrow filter=lfs diff=lfs merge=lfs -text
3
- *.bin filter=lfs diff=lfs merge=lfs -text
4
- *.bz2 filter=lfs diff=lfs merge=lfs -text
5
- *.ckpt filter=lfs diff=lfs merge=lfs -text
6
- *.ftz filter=lfs diff=lfs merge=lfs -text
7
- *.gz filter=lfs diff=lfs merge=lfs -text
8
- *.h5 filter=lfs diff=lfs merge=lfs -text
9
- *.joblib filter=lfs diff=lfs merge=lfs -text
10
- *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
- *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
- *.model filter=lfs diff=lfs merge=lfs -text
13
- *.msgpack filter=lfs diff=lfs merge=lfs -text
14
- *.npy filter=lfs diff=lfs merge=lfs -text
15
- *.npz filter=lfs diff=lfs merge=lfs -text
16
- *.onnx filter=lfs diff=lfs merge=lfs -text
17
- *.ot filter=lfs diff=lfs merge=lfs -text
18
- *.parquet filter=lfs diff=lfs merge=lfs -text
19
- *.pb filter=lfs diff=lfs merge=lfs -text
20
- *.pickle filter=lfs diff=lfs merge=lfs -text
21
- *.pkl filter=lfs diff=lfs merge=lfs -text
22
- *.pt filter=lfs diff=lfs merge=lfs -text
23
- *.pth filter=lfs diff=lfs merge=lfs -text
24
- *.rar filter=lfs diff=lfs merge=lfs -text
25
- *.safetensors filter=lfs diff=lfs merge=lfs -text
26
- saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
- *.tar.* filter=lfs diff=lfs merge=lfs -text
28
- *.tar filter=lfs diff=lfs merge=lfs -text
29
- *.tflite filter=lfs diff=lfs merge=lfs -text
30
- *.tgz filter=lfs diff=lfs merge=lfs -text
31
- *.wasm filter=lfs diff=lfs merge=lfs -text
32
- *.xz filter=lfs diff=lfs merge=lfs -text
33
- *.zip filter=lfs diff=lfs merge=lfs -text
34
- *.zst filter=lfs diff=lfs merge=lfs -text
35
- *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz filter=lfs diff=lfs merge=lfs -text
33
+ *.zip filter=lfs diff=lfs merge=lfs -text
34
+ *.zst filter=lfs diff=lfs merge=lfs -text
35
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ results/confusion_matrix_normalized.png filter=lfs diff=lfs merge=lfs -text
37
+ results/F1_curve.png filter=lfs diff=lfs merge=lfs -text
38
+ results/P_curve.png filter=lfs diff=lfs merge=lfs -text
39
+ results/PR_curve.png filter=lfs diff=lfs merge=lfs -text
40
+ results/results.png filter=lfs diff=lfs merge=lfs -text
README.md CHANGED
@@ -1,13 +1,13 @@
1
- ---
2
- title: CleanSea
3
- emoji: πŸ“ˆ
4
- colorFrom: red
5
- colorTo: blue
6
- sdk: gradio
7
- sdk_version: 5.29.0
8
- app_file: app.py
9
- pinned: false
10
- license: mit
11
- ---
12
-
13
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
+ ---
2
+ title: CleanSea
3
+ emoji: πŸ“ˆ
4
+ colorFrom: red
5
+ colorTo: blue
6
+ sdk: gradio
7
+ sdk_version: 5.29.0
8
+ app_file: app.py
9
+ pinned: false
10
+ license: mit
11
+ ---
12
+
13
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
app.py CHANGED
@@ -6,18 +6,19 @@ import os
6
  # Load the YOLO model
7
  model = YOLO("models/best.pt")
8
 
9
- # Define prediction function
10
  def yolo_predict(image):
11
  results = model(image)[0]
 
12
  label_conf = {}
13
  for box in results.boxes:
14
  cls_id = int(box.cls[0])
15
  conf = float(box.conf[0])
16
  label = model.names[cls_id]
17
  label_conf[label] = max(conf, label_conf.get(label, 0))
18
- return label_conf or {"No object detected": 1.0}
19
 
20
- # Get all example image paths from the examples/ directory
21
  example_dir = "examples"
22
  example_files = [
23
  os.path.join(example_dir, f)
@@ -25,15 +26,30 @@ example_files = [
25
  if f.lower().endswith((".jpg", ".jpeg", ".png"))
26
  ]
27
 
 
 
 
 
28
 
29
- # Gradio Interface
30
- interface = gr.Interface(
31
- fn=yolo_predict,
32
- inputs=gr.Image(type="pil", label="Upload Ocean Image"),
33
- outputs=gr.Label(num_top_classes=5),
34
- title="Ocean Garbage Detector (YOLOv10)",
35
- description="Upload an ocean photo to detect garbage such as plastic bottles or bags using a fine-tuned YOLOv10 model.",
36
- examples=example_files
37
- )
38
 
39
- interface.launch()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
  # Load the YOLO model
7
  model = YOLO("models/best.pt")
8
 
9
+ # Prediction function
10
  def yolo_predict(image):
11
  results = model(image)[0]
12
+ annotated_img = results.plot()
13
  label_conf = {}
14
  for box in results.boxes:
15
  cls_id = int(box.cls[0])
16
  conf = float(box.conf[0])
17
  label = model.names[cls_id]
18
  label_conf[label] = max(conf, label_conf.get(label, 0))
19
+ return Image.fromarray(annotated_img), label_conf or {"No object detected": 1.0}
20
 
21
+ # Collect example images
22
  example_dir = "examples"
23
  example_files = [
24
  os.path.join(example_dir, f)
 
26
  if f.lower().endswith((".jpg", ".jpeg", ".png"))
27
  ]
28
 
29
+ # Gradio app using Blocks layout
30
+ with gr.Blocks() as demo:
31
+ gr.Markdown("## Ocean Garbage Detector (YOLOv10)")
32
+ gr.Markdown("Upload an ocean photo to detect garbage such as plastic bottles or bags using a fine-tuned YOLOv10 model.")
33
 
34
+ with gr.Row():
35
+ image_input = gr.Image(type="pil", label="Upload Ocean Image")
36
+ with gr.Column():
37
+ bbox_output = gr.Image(label="Detected Objects")
38
+ label_output = gr.Label(num_top_classes=5)
 
 
 
 
39
 
40
+ gr.Examples(examples=example_files, inputs=image_input, cache_examples=False)
41
+
42
+ submit_btn = gr.Button("Detect")
43
+ submit_btn.click(fn=yolo_predict, inputs=image_input, outputs=[bbox_output, label_output])
44
+
45
+ gr.Markdown("### πŸ“ˆ Model Performance Visualizations")
46
+ with gr.Row():
47
+ gr.Image("results/results.png", label="Training Metrics")
48
+ gr.Image("results/confusion_matrix_normalized.png", label="Confusion Matrix")
49
+ with gr.Row():
50
+ gr.Image("results/F1_curve.png", label="F1-Confidence Curve")
51
+ gr.Image("results/P_curve.png", label="Precision-Confidence Curve")
52
+ gr.Image("results/PR_curve.png", label="Precision-Recall Curve")
53
+
54
+ # Launch app locally
55
+ demo.launch()
models/best.pt CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:31e20dde3def09e2cf938c7be6fe23d9150bbbe503982af13345706515f2ef95
3
- size 6534387
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7710b6fe1f709f1f7d862f176fcf4aa1ff00b57167ec51f8cf9179a4c8c2b1a7
3
+ size 5774131
results/F1_curve.png ADDED

Git LFS Details

  • SHA256: 8b383796b42fd681ea2d99b13e6cad710af2b156f547d43e99c7cea9c8e2c5f6
  • Pointer size: 131 Bytes
  • Size of remote file: 497 kB
results/PR_curve.png ADDED

Git LFS Details

  • SHA256: 6b2db81527f52f7e4a06c11d5f263b08c2f7fa000452faa70b83ee4edd8bbacd
  • Pointer size: 131 Bytes
  • Size of remote file: 323 kB
results/P_curve.png ADDED

Git LFS Details

  • SHA256: 08e0a8bdf7b13e31ce0ac630b1bae3b0d4e3f77e4dff761935d46ee439dcf923
  • Pointer size: 131 Bytes
  • Size of remote file: 401 kB
results/confusion_matrix_normalized.png ADDED

Git LFS Details

  • SHA256: b5bf1637f083d4665e563afbc5f3c9aaf5624970688b2018311d0540f9ef3c6a
  • Pointer size: 131 Bytes
  • Size of remote file: 268 kB
results/results.png ADDED

Git LFS Details

  • SHA256: 30f00bfd86d96c3a97eee85b4027e7ca52c7a7db7ded34eabe18b90a9f74adb9
  • Pointer size: 131 Bytes
  • Size of remote file: 281 kB