MTerryJack commited on
Commit
e0ec7dd
·
verified ·
1 Parent(s): f5a39d3

Upload 9 files

Browse files
Files changed (10) hide show
  1. .gitattributes +1 -0
  2. class_names.txt +20 -0
  3. element.yaml +25 -0
  4. environment.json +1 -0
  5. example.png +3 -0
  6. main.py +86 -0
  7. model_type.json +4 -0
  8. pyproject.toml +11 -0
  9. uv.lock +0 -0
  10. weights.onnx +3 -0
.gitattributes CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* 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
 
 
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
+ example.png filter=lfs diff=lfs merge=lfs -text
class_names.txt ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ barcode
2
+ car
3
+ cardboard box
4
+ fire
5
+ forklift
6
+ freight container
7
+ gloves
8
+ helmet
9
+ ladder
10
+ license plate
11
+ person
12
+ qr code
13
+ road sign
14
+ safety vest
15
+ smoke
16
+ traffic cone
17
+ traffic light
18
+ truck
19
+ van
20
+ wood pallet
element.yaml ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ version: 0.1.0
2
+ element_type: Detect
3
+ main: main.py
4
+ source: https://universe.roboflow.com/large-benchmark-datasets/logistics-sz9jr
5
+ objects:
6
+ - barcode
7
+ - car
8
+ - cardboard box
9
+ - fire
10
+ - forklift
11
+ - freight container
12
+ - gloves
13
+ - helmet
14
+ - ladder
15
+ - license plate
16
+ - person
17
+ - qr code
18
+ - road sign
19
+ - safety vest
20
+ - smoke
21
+ - traffic cone
22
+ - traffic light
23
+ - truck
24
+ - van
25
+ - wood pallet
environment.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"BATCH_SIZE": -1, "CACHE_PATH": "/tmp/cache", "DATASET_ID": "zMLL75R2TfQEeWLSfGQG", "DATASET_LINK": "https://app.roboflow.com/ds/VphVagsykw?key=cFNYTypX5F", "DATASET_OWNER": "WStLbW6Owiz8aE9Z5N23", "DATASET_VERSION_ID": "2", "ENDPOINT": "zMLL75R2TfQEeWLSfGQG/2", "MODEL_NAME": "yolov8n", "PREPROCESSING": "{\"auto-orient\":{\"enabled\":true},\"resize\":{\"width\":640,\"format\":\"Stretch to\",\"enabled\":true,\"height\":640}}", "PROJECT": "roboflow-platform", "RESOLUTION": 640, "TRAINING_TIME": "2678400", "UID": "Q3duwiUbt8UlbotpPyNnQaayi353", "COLORS": {"barcode": "#C7FC00", "car": "#8622FF", "cardboard box": "#FE0056", "fire": "#00FFCE", "forklift": "#FF8000", "freight container": "#00B7EB", "gloves": "#FFFF00", "helmet": "#FF00FF", "ladder": "#0E7AFE", "license plate": "#FFABAB", "person": "#0000FF", "qr code": "#a0522d", "road sign": "#808000", "safety vest": "#483d8b", "smoke": "#8b008b", "traffic cone": "#ff4500", "traffic light": "#dc143c", "truck": "#00ffff", "van": "#d8bfd8", "wood pallet": "#ff1493"}}
example.png ADDED

Git LFS Details

  • SHA256: 08a0f2d361332da2a12cad8187815bd8f452029ddd22ef8f651f04858fa57a9a
  • Pointer size: 131 Bytes
  • Size of remote file: 719 kB
main.py ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import argparse
2
+ import json
3
+ import sys
4
+ from io import BytesIO
5
+ from pathlib import Path
6
+ from typing import Any, Dict, List
7
+
8
+ import numpy as np
9
+ from PIL import Image
10
+ from ultralytics import YOLO
11
+
12
+
13
+ def load_image(frame: Any, base_dir: Path) -> Image.Image:
14
+ if isinstance(frame, (bytes, bytearray, memoryview)):
15
+ return Image.open(BytesIO(frame)).convert("RGB")
16
+
17
+ path = Path(str(frame))
18
+ if not path.is_absolute():
19
+ path = (Path.cwd() / path).resolve()
20
+ if not path.exists():
21
+ candidate = (base_dir / str(frame)).resolve()
22
+ if candidate.exists():
23
+ path = candidate
24
+ return Image.open(path).convert("RGB")
25
+
26
+
27
+ def load_model(*_args: Any, **_kwargs: Any):
28
+ base_dir = Path(__file__).resolve().parent
29
+ model_path = base_dir / "weights.onnx"
30
+ if not model_path.exists():
31
+ return None
32
+ return YOLO(str(model_path))
33
+
34
+
35
+ def run_model(model, frame: "np.ndarray") -> List[Dict[str, Any]]:
36
+ image = Image.fromarray(frame)
37
+ results = model(image)
38
+ detections: List[Dict[str, Any]] = []
39
+ result = results[0]
40
+ names = result.names or model.names
41
+
42
+ for det_idx, box in enumerate(result.boxes):
43
+ xyxy = box.xyxy[0].tolist()
44
+ class_id = int(box.cls[0].item())
45
+ detections.append(
46
+ {
47
+ "frame_idx": 0,
48
+ "class": names.get(class_id, str(class_id)),
49
+ "bbox": [float(x) for x in xyxy],
50
+ "score": float(box.conf[0].item()),
51
+ "track_id": f"f0-d{det_idx}",
52
+ }
53
+ )
54
+
55
+ return detections
56
+
57
+
58
+ def build_parser() -> argparse.ArgumentParser:
59
+ parser = argparse.ArgumentParser(description="Run logistics detection (YOLOv8 ONNX).")
60
+ parser.add_argument(
61
+ "--stdin-raw",
62
+ action="store_true",
63
+ default=True,
64
+ help="Read raw image bytes from stdin.",
65
+ )
66
+ return parser
67
+
68
+
69
+ if __name__ == "__main__":
70
+ build_parser().parse_args()
71
+
72
+ base_dir = Path(__file__).resolve().parent
73
+ model = load_model()
74
+ if model is None:
75
+ print("[]")
76
+ sys.exit(0)
77
+
78
+ try:
79
+ image = load_image(sys.stdin.buffer.read(), base_dir)
80
+ except Exception:
81
+ print("[]")
82
+ sys.exit(0)
83
+
84
+ frame = np.array(image)
85
+ output = run_model(model, frame)
86
+ print(json.dumps(output))
model_type.json ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ {
2
+ "project_task_type": "object-detection",
3
+ "model_type": "yolov8n"
4
+ }
pyproject.toml ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [project]
2
+ name = "logistics-sz9jr-2"
3
+ version = "0.1.0"
4
+ requires-python = ">=3.11"
5
+ dependencies = [
6
+ "numpy>=1.26",
7
+ "pillow>=10.0",
8
+ "ultralytics>=8.0.0",
9
+ "onnx>=1.16",
10
+ "onnxruntime>=1.17",
11
+ ]
uv.lock ADDED
The diff for this file is too large to render. See raw diff
 
weights.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f695550212d2dd2059928f543f3550690527bc0ed7071dca040e5f12c849e432
3
+ size 12253107