Initial commit: Wood knot detection model and GUI
This commit is contained in:
92
MODEL_COMPARISON.md
Normal file
92
MODEL_COMPARISON.md
Normal file
@ -0,0 +1,92 @@
|
||||
# Model Framework Comparison
|
||||
|
||||
## License Comparison
|
||||
|
||||
| Framework | License | Commercial Use | OAK-D Support |
|
||||
|-----------|---------|----------------|---------------|
|
||||
| **RT-DETR** | Apache 2.0 | ✅ Free | ⭐ Excellent |
|
||||
| **YOLOv6** | MIT | ✅ Free | ⭐ Excellent |
|
||||
| **YOLOX** | MIT | ✅ Free | ⭐ Excellent |
|
||||
| RF-DETR | Check repo | ⚠️ Unknown | ⚠️ May need conversion |
|
||||
| YOLOv8/v11 | AGPL-3.0 | ❌ Paid ($1k-5k/yr) | Excellent |
|
||||
|
||||
## Performance on OAK-D 4 Pro (48 TOPS INT8)
|
||||
|
||||
| Model | Size | Speed (FPS) | Accuracy | Training Time |
|
||||
|-------|------|-------------|----------|---------------|
|
||||
| RT-DETR r18 | ~15MB | 30-40 | Good | Fast |
|
||||
| RT-DETR r34 | ~30MB | 20-30 | Better | Medium |
|
||||
| YOLOv6n | ~10MB | 40-50 | Good | Fast |
|
||||
| YOLOv6s | ~20MB | 30-40 | Better | Medium |
|
||||
| YOLOX nano | ~6MB | 50-60 | Good | Fast |
|
||||
| YOLOX-s | ~18MB | 35-45 | Better | Medium |
|
||||
|
||||
## Which to Choose?
|
||||
|
||||
### For Maximum Speed (50-60 FPS):
|
||||
**YOLOX nano** - Smallest, fastest, proven
|
||||
|
||||
### For Best Balance (30-40 FPS):
|
||||
**RT-DETR r18** or **YOLOv6n** - Modern, accurate
|
||||
|
||||
### For Best Accuracy (20-30 FPS):
|
||||
**RT-DETR r34** or **YOLOv6s** - Larger models
|
||||
|
||||
### Recommended Starting Point:
|
||||
**YOLOv6n** - Great balance, proven OAK compatibility, MIT license
|
||||
|
||||
## Training Commands
|
||||
|
||||
All models use the same workflow in the GUI, or from command line:
|
||||
|
||||
### RT-DETR
|
||||
```bash
|
||||
.venv/bin/python train_rtdetr.py \
|
||||
--dataset-dir dataset_prepared \
|
||||
--model rtdetr-r18 \
|
||||
--epochs 100
|
||||
```
|
||||
|
||||
### YOLOv6
|
||||
```bash
|
||||
.venv/bin/python train_yolov6.py \
|
||||
--dataset-dir dataset_prepared \
|
||||
--model yolov6n \
|
||||
--epochs 100
|
||||
```
|
||||
|
||||
### YOLOX (YOLOv8 equivalent)
|
||||
```bash
|
||||
.venv/bin/python train_yolox.py \
|
||||
--dataset-dir dataset_prepared \
|
||||
--model yolox-nano \
|
||||
--epochs 100
|
||||
```
|
||||
|
||||
## Export for OAK-D
|
||||
|
||||
All models export to OpenVINO format for OAK deployment:
|
||||
|
||||
```bash
|
||||
# RT-DETR
|
||||
.venv/bin/python export_rtdetr_oak.py --weights runs/rtdetr_training/training/weights/best.pt
|
||||
|
||||
# YOLOv6/YOLOX use Ultralytics export
|
||||
.venv/bin/python -c "
|
||||
from ultralytics import YOLO
|
||||
model = YOLO('runs/yolov6_training/training/weights/best.pt')
|
||||
model.export(format='openvino', imgsz=640, half=False)
|
||||
"
|
||||
```
|
||||
|
||||
Then convert to blob:
|
||||
- Online: https://blobconverter.luxonis.com/
|
||||
- CLI: `blobconverter --openvino-xml model.xml`
|
||||
|
||||
## Tips
|
||||
|
||||
1. **Start with nano/r18 models** for fast iteration
|
||||
2. **Train for 100-200 epochs** - use early stopping
|
||||
3. **Collect 200+ images** for good accuracy
|
||||
4. **Test on OAK-D** before collecting more data
|
||||
5. **Use INT8 quantization** for full 48 TOPS speed
|
||||
Reference in New Issue
Block a user