File size: 1,635 Bytes
951b87c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
---
license: mit
tags:
  - object-detection
  - yolov8
  - tools
  - robotics
  - workshop
datasets:
  - synthetic
pipeline_tag: object-detection
---

# Tool Detector

YOLOv8m detection model for handheld workshop tools, trained on synthetic rendered data and fine-tuned on real annotated images.

Intended to give a UR5 robot arm (5 kg payload, ~850 mm reach) tool identity and bounding-box location for pick-and-place tasks.

## Model Details

| Property | Value |
|---|---|
| Architecture | YOLOv8m |
| Input size | 640 × 640 |
| Classes | 6 (current fine-tuned model) |
| Base weights | COCO pretrained `yolov8m.pt` |
| Fine-tuned on | Real annotated images (Label Studio export) |

## Classes

| Index | Name |
|---|---|
| 0 | allen_key_set |
| 1 | allen_key |
| 2 | screw_driver |
| 3 | hammer |
| 4 | cutters |
| 5 | pliers |

## Usage

```python
from ultralytics import YOLO
from huggingface_hub import hf_hub_download

weights = hf_hub_download(repo_id="x-not/tool-detector", filename="best.pt")
model = YOLO(weights)

results = model("your_image.jpg", conf=0.3)
results[0].show()
```

Or via the CLI:

```bash
huggingface-cli download x-not/tool-detector best.pt --local-dir models/
yolo detect predict model=models/best.pt source=your_image.jpg conf=0.3
```

## Training

Synthetic data generated with BlenderProc (Blender + Cycles): tools rendered as RGBA sprites at randomized pose/lighting, composited onto workshop background photos.
Fine-tuned on real images annotated in Label Studio.

Source code and full training pipeline: [github.com/NikolaasBender/Tool-Detector](https://github.com/NikolaasBender/Tool-Detector)