|
Download README.md from ParsaVictor/pcb-component-classifier: direct link, hf CLI and curl.
- Browser
- Download file 3.63 kB
-
https://huggingface.co/ParsaVictor/pcb-component-classifier/resolve/main/README.md
- Command line
-
hf download hf://ParsaVictor/pcb-component-classifier/README.md
-
curl -L -o README.md https://huggingface.co/ParsaVictor/pcb-component-classifier/resolve/main/README.md
3.63 kB
| license: mit | |
| tags: | |
| - image-classification | |
| - random-forest | |
| - pcb | |
| - component-classification | |
| - electronics | |
| - explainable-ai | |
| - scikit-learn | |
| datasets: | |
| - ParsaVictor/pcb-component-classifier | |
| pipeline_tag: image-classification | |
| library_name: scikit-learn | |
| # PCB Component Classifier | |
| A Random Forest over **33 hand-engineered computer-vision features** that classifies discrete electronic components — resistors, capacitors, diodes, inductors, transistors and ICs — from a single image, and can explain *why* it reached each decision. | |
| No GPU, no pretrained backbone, ~50 ms per image on a laptop CPU. | |
| Part of the [PCB Inspection Suite](https://huggingface.co/ParsaVictor/pcb-inspection-suite). Trained on [`ParsaVictor/pcb-component-classifier`](https://huggingface.co/datasets/ParsaVictor/pcb-component-classifier). Full pipeline, feature extraction code, and the explanation renderer: [GitHub: pcb-component-classifier](https://github.com/ParsaVictor/pcb-component-classifier). | |
| ## Results | |
| Trained on 1,195 labelled images across 6 classes. Evaluated on a stratified 25% test split, and on a **120-image holdout set never used in training or tuning**. | |
| | Evaluation | Accuracy | | |
| |---|---| | |
| | Test split (299 samples) | **92.98%** | | |
| | Holdout set (120 images) | **93.33%** (112/120) | | |
| ### Per-class performance (test split) | |
| | Class | Precision | Recall | F1 | Support | | |
| |---|---|---|---|---| | |
| | Resistors | 0.93 | 1.00 | 0.96 | 154 | | |
| | Transistors | 1.00 | 0.90 | 0.95 | 21 | | |
| | ICs | 0.97 | 0.88 | 0.92 | 32 | | |
| | Capacitors | 0.90 | 0.92 | 0.91 | 59 | | |
| | Inductors | 0.88 | 0.78 | 0.82 | 18 | | |
| | Diodes | 1.00 | 0.60 | 0.75 | 15 | | |
| | **Weighted avg** | **0.93** | **0.93** | **0.93** | **299** | | |
| Diodes are the honest weak spot — perfect precision but 0.60 recall on only 15 test samples (visually close to small capacitors, under-represented class). | |
| ### Confidence as a review gate | |
| | Threshold | Accepted | Accuracy on accepted | Flagged for review | Errors caught | | |
| |---|---|---|---|---| | |
| | none | 100% | 93.3% | 0 | 0 / 8 | | |
| | 0.50 | 88% | 98.1% | 14 | 6 / 8 | | |
| | **0.60** | **79%** | **98.9%** | **25** | **7 / 8** | | |
| | 0.70 | 66% | 98.7% | 41 | 7 / 8 | | |
| Accepting only predictions above 0.60 confidence leaves 98.9% accuracy on the 79% it handles automatically, and routes 7 of the 8 errors into the fifth it hands to a human. | |
| ## Usage | |
| ```python | |
| import joblib | |
| from huggingface_hub import hf_hub_download | |
| weights = hf_hub_download("ParsaVictor/pcb-component-classifier", "tree_rf.joblib") | |
| clf = joblib.load(weights) | |
| # Requires the 33-feature extractor from the GitHub repo (src/pcb_classifier/features.py) | |
| # pred = clf.predict([features]) | |
| ``` | |
| See the [GitHub repo](https://github.com/ParsaVictor/pcb-component-classifier) for the full feature-extraction pipeline and the six-panel decision-path explanation renderer. | |
| ## Files | |
| - `tree_rf.joblib` — trained on isolated component photos (this dataset, 93.3% holdout accuracy) | |
| - `feature_importance.csv` — the 33 features ranked by importance | |
| ## Related | |
| - Training dataset: [pcb-component-classifier](https://huggingface.co/datasets/ParsaVictor/pcb-component-classifier) | |
| - Training/inference code: [GitHub: pcb-component-classifier](https://github.com/ParsaVictor/pcb-component-classifier) | |
| - Sibling model (board-level detection): [pcb-component-detection-yolo26](https://huggingface.co/ParsaVictor/pcb-component-detection-yolo26) — also ships a variant of this classifier (`tree_rf_boards.joblib`) retrained on training-board crops | |
| - Full suite overview: [pcb-inspection-suite](https://huggingface.co/ParsaVictor/pcb-inspection-suite) | |
| ## License | |
| MIT. | |