grasp / MIGRATION_GUIDE.md
stumpferWinkel's picture
Upload cleaned LLMF2 code and OCID-VLG multiple-split weights
320c5b2 verified
|
Raw History Blame Contribute Delete
5.41 kB
# Migration Guide for Refactored Training System
This guide explains how to migrate from the original training scripts to the refactored system while maintaining full backward compatibility.
## 1. Validation Logic Fix
The refactored system properly implements grasp validation through the `GraspValidator` class:
### What was fixed:
- **Complete grasp evaluation**: The validator now properly evaluates grasp quality, angle (sin/cos), and width predictions
- **Jacquard index calculation**: Correctly computes J-index@1 and J-index@5 for grasp accuracy
- **Proper metric aggregation**: Handles distributed training metric collection
- **Memory efficiency**: Optimized batch processing and inverse transformations
### Key improvements:
```python
# Old: Basic validation without full grasp support
val_metrics = validate(model, val_loader)
# New: Full grasp-aware validation
grasp_validator = GraspValidator(use_grasp_masks=True)
iou, prec_dict, j_indices = grasp_validator.validate(model, val_loader, epoch, args)
```
## 2. Backward Compatibility
The refactored system maintains 100% backward compatibility:
### Config compatibility:
- **Old configs work unchanged**: The system auto-detects old-style scheduler configs
- **Gradual migration**: You can update configs incrementally
```yaml
# Old style (still works)
milestones: [35]
lr_decay: 0.1
# New style (recommended)
scheduler:
type: multistep
params:
milestones: [35]
gamma: 0.1
```
### Training behavior:
- **Identical results**: The refactored trainer produces the same training results
- **Same checkpoints**: Checkpoint format is preserved
- **Compatible metrics**: All metrics are logged with the same names
## 3. Training Commands
### Option 1: Use existing scripts (no changes needed)
```bash
# Original CROG training (unchanged)
python train_crog.py --config config/OCID-VLG/crog_r50.yaml
# Original network training (unchanged)
python train_network.py --config config/OCID-VLG/legrconv_multi_2x_r50_416_dcn.yaml
```
### Option 2: Use refactored scripts (recommended)
```bash
# Refactored CROG training with full grasp support
python train_crog_refactored.py --config config/OCID-VLG/crog_r50_refactored.yaml
# Refactored network training
python train_network_refactored.py --config config/OCID-VLG/your_config.yaml
```
## 4. Configuration Updates
### Minimal changes for existing configs:
To enable full grasp validation in existing configs, ensure:
```yaml
TRAIN:
use_grasp_masks: True # Must be True for grasp validation
```
### Recommended additions for better functionality:
```yaml
TRAIN:
# Enhanced scheduler support
scheduler:
type: cosine # or 'multistep', 'step', 'plateau', 'onecycle'
params:
T_max: 50
eta_min: 1.0e-6
# Optional warmup
warmup_epochs: 5
# WandB configuration
wandb:
project: "your-project-name"
tags: ["experiment-tags"]
```
## 5. Key Differences and Benefits
### Training scripts:
| Feature | Original | Refactored |
|---------|----------|------------|
| Grasp validation | Partial | Full implementation |
| Scheduler options | MultiStepLR only | 7+ scheduler types |
| WandB integration | Basic | Enhanced with proper metrics |
| Code modularity | Monolithic | Modular components |
| Error handling | Limited | Comprehensive |
### Validation improvements:
```python
# Original: Limited grasp metrics
iou, prec_dict, j_index = validate_with_grasp(...)
# Refactored: Complete grasp evaluation
# - Proper J-index calculation for 1 and 5 grasps
# - Correct inverse transformations
# - Distributed metric aggregation
# - Memory-efficient processing
```
## 6. Migration Checklist
- [ ] **Set WandB API key** as environment variable (not in code)
- [ ] **Verify grasp masks** are enabled in config (`use_grasp_masks: True`)
- [ ] **Update scheduler config** (optional but recommended)
- [ ] **Test with small epoch** count first to verify behavior
- [ ] **Check metrics** match between old and new systems
## 7. Troubleshooting
### Issue: Metrics don't match
- Ensure `use_grasp_masks: True` in config
- Verify same batch size and learning rate
- Check random seed is consistent
### Issue: Scheduler errors
- The refactored system auto-converts float to int for T_max
- All scheduler parameters are type-checked
### Issue: WandB not logging
- Set `WANDB_API_KEY` environment variable
- Check `wandb` section in config
## 8. Example: Full Migration
### Step 1: Update config
```yaml
# Add to existing config
TRAIN:
use_grasp_masks: True # Enable grasp validation
# Optional: Better scheduler
scheduler:
type: cosine
params:
T_max: 50
eta_min: 1.0e-6
```
### Step 2: Set environment
```bash
export WANDB_API_KEY=your_api_key_here
```
### Step 3: Run training
```bash
# Using refactored script
python train_crog_refactored.py --config config/OCID-VLG/crog_r50_refactored.yaml
# Or use original script (still works)
python train_crog.py --config config/OCID-VLG/crog_r50.yaml
```
## Summary
The refactored system provides:
1. **Full grasp validation** with proper J-index calculation
2. **100% backward compatibility** with existing configs and scripts
3. **Enhanced features** available through simple config updates
4. **Same training behavior** and experimental results
You can adopt the refactored system gradually or continue using existing scripts - both approaches are fully supported.