Update README.md
Browse files
README.md
CHANGED
|
@@ -1,3 +1,60 @@
|
|
| 1 |
-
---
|
| 2 |
-
license: mit
|
| 3 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: mit
|
| 3 |
+
base_model:
|
| 4 |
+
- Ultralytics/YOLO11
|
| 5 |
+
tags:
|
| 6 |
+
- printed-circuit-boards
|
| 7 |
+
library_name: ultralytics
|
| 8 |
+
model-index:
|
| 9 |
+
- name: ultralytics/yolo11
|
| 10 |
+
results:
|
| 11 |
+
- task:
|
| 12 |
+
type: image-segmentation
|
| 13 |
+
metrics:
|
| 14 |
+
- type: f1
|
| 15 |
+
value: 99.8%
|
| 16 |
+
name: F1 Score
|
| 17 |
+
- type: mAP50
|
| 18 |
+
value: 99.5%
|
| 19 |
+
name: mAP50
|
| 20 |
+
metrics:
|
| 21 |
+
- f1 - 99.8%
|
| 22 |
+
- mAP50 - 99.5%
|
| 23 |
+
---
|
| 24 |
+
# PCB Detection
|
| 25 |
+
|
| 26 |
+
There are [a lot of models](https://universe.roboflow.com/roboflow-100/printed-circuit-board/model/3) for detecting components within a Printed Circuit Board (PCB), but not as many for detecting which pixels (if any) in an image contain the PCB itself. Being able to determine if and where a PCB is in an image is useful for [calculating its size to estimate carbon footprint]((https://github.com/SanderGi/LCA)), as a preprocessing step for detecting components, to limit the amount of image more expensive PCB defect detection models have to process, and more.
|
| 27 |
+
|
| 28 |
+
Read more [here](https://github.com/SanderGi/PCB-Detection).
|
| 29 |
+
|
| 30 |
+
## Usage
|
| 31 |
+
|
| 32 |
+
1. Download [`the model weights`](https://huggingface.co/SanderGi/PCB-SEG/resolve/main/best.pt?download=true)
|
| 33 |
+
2. `pip install ultralytics`
|
| 34 |
+
3. Run the model with `yolo task=segment mode=predict model=[path to model weights] source=[path to test image]` from the terminal or with Python:
|
| 35 |
+
|
| 36 |
+
```python
|
| 37 |
+
from ultralytics import YOLO
|
| 38 |
+
model = YOLO('[path to model weights]')
|
| 39 |
+
results = model.predict('[path/to/test/image.jpg]')
|
| 40 |
+
```
|
| 41 |
+
|
| 42 |
+
## Results
|
| 43 |
+
|
| 44 |
+
### Segmentation
|
| 45 |
+
Dataset | Precision | Recall | F1 Score | mAP50 | mAP50-95
|
| 46 |
+
-----------|-----------|--------|----------|-------|---------
|
| 47 |
+
Training | 100.0% | 23.2% | 37.7% | 39.4% | 39.1%
|
| 48 |
+
Validation | 99.9% | 39.6% | 56.7% | 51.7% | 51.0%
|
| 49 |
+
Test | 99.7% | 100% | 99.8% | 99.5% | 95.6%
|
| 50 |
+
|
| 51 |
+
Sample predictions:
|
| 52 |
+

|
| 53 |
+
|
| 54 |
+
### Object Detection*
|
| 55 |
+
|
| 56 |
+
Dataset | Precision | Recall | F1 Score | mAP50 | mAP50-95
|
| 57 |
+
-----------|-----------|--------|----------|-------|---------
|
| 58 |
+
Training | 100.0% | 23.2% | 37.7% | 39.4% | 39.3%
|
| 59 |
+
Validation | 99.9% | 39.6% | 56.7% | 51.7% | 51.3%
|
| 60 |
+
Test | 99.7% | 100% | 99.8% | 99.5% | 94.5%
|