| # Real-time GUI Visualization | |
| ## Overview | |
| The GUI visualization provides real-time, progressive updates as BA validation runs. It shows: | |
| - **3D camera trajectories** updating frame-by-frame | |
| - **Error metrics** plotted as they're computed | |
| - **Statistics** updating in real-time | |
| - **Progress indicators** showing current status | |
| ## Usage | |
| ### Basic Usage | |
| ```bash | |
| python scripts/run_arkit_ba_validation_gui.py \ | |
| --arkit-dir assets/examples/ARKit \ | |
| --output-dir data/arkit_ba_validation_gui \ | |
| --max-frames 30 \ | |
| --frame-interval 1 \ | |
| --device cpu | |
| ``` | |
| ### GUI Components | |
| #### Left Panel | |
| 1. **Status Panel**: | |
| - Current operation (e.g., "Running DA3 inference...") | |
| - Progress bar (indeterminate during processing) | |
| - Frame counter (e.g., "5/30 frames") | |
| 2. **Statistics Panel**: | |
| - Real-time statistics updating as data arrives | |
| - Mean/max rotation errors | |
| - Mean translation errors | |
| - Comparison metrics (DA3 vs ARKit, BA vs ARKit, DA3 vs BA) | |
| #### Right Panel (Tabs) | |
| 1. **3D Trajectories Tab**: | |
| - Interactive 3D plot showing camera paths | |
| - Green: ARKit (ground truth) | |
| - Red: DA3 predictions | |
| - Blue: BA refined poses | |
| - Updates progressively as frames are processed | |
| - Can rotate, zoom, pan using matplotlib toolbar | |
| 2. **Error Metrics Tab**: | |
| - Rotation errors plotted over time | |
| - Threshold lines (2° accept, 30° reject) | |
| - Updates as errors are computed | |
| 3. **Comparison Tab**: | |
| - Side-by-side comparison of rotation and translation errors | |
| - Multiple methods shown together | |
| - Updates progressively | |
| ## Progressive Updates | |
| The GUI updates in real-time as: | |
| 1. **Frame Extraction**: Progress bar shows frame extraction | |
| 2. **DA3 Inference**: | |
| - Status updates to "Running DA3 inference..." | |
| - Trajectories update as each frame's pose is computed | |
| - Progress counter increments | |
| 3. **BA Validation**: | |
| - Status updates to "Running BA validation..." | |
| - BA poses appear on trajectory plot | |
| - Error metrics update as computed | |
| 4. **Completion**: | |
| - Final statistics displayed | |
| - All visualizations finalized | |
| ## Thread Safety | |
| The GUI uses a thread-safe update mechanism: | |
| - Validation runs in a background thread | |
| - Updates are queued and processed in the main GUI thread | |
| - No blocking of the GUI during computation | |
| ## Features | |
| ### Real-time Updates | |
| - Visualizations update as data arrives | |
| - No need to wait for entire process to complete | |
| - See results immediately | |
| ### Interactive 3D Plot | |
| - Rotate, zoom, pan using matplotlib toolbar | |
| - Toggle trajectories on/off (via legend) | |
| - Export to image (via toolbar) | |
| ### Error Analysis | |
| - See error patterns as they develop | |
| - Identify problematic frames early | |
| - Compare methods side-by-side | |
| ### Statistics Panel | |
| - Real-time statistics | |
| - Scrollable text area | |
| - Auto-updates as new data arrives | |
| ## Example Workflow | |
| 1. **Start GUI**: Run the script, GUI window opens | |
| 2. **Watch Progress**: | |
| - Status shows "Processing ARKit data..." | |
| - Progress bar animates | |
| 3. **DA3 Inference**: | |
| - Trajectory plot shows ARKit path (green) | |
| - DA3 poses appear (red) as computed | |
| - Statistics update | |
| 4. **BA Validation**: | |
| - BA poses appear (blue) | |
| - Error metrics populate | |
| - Final statistics displayed | |
| 5. **Analysis**: | |
| - Rotate 3D plot to inspect trajectories | |
| - Check error plots for patterns | |
| - Review statistics panel | |
| ## Troubleshooting | |
| ### GUI Not Updating | |
| - Check that validation thread is running (status should change) | |
| - Verify no exceptions in console | |
| - Ensure GUI main loop is running (window should be responsive) | |
| ### Performance Issues | |
| - Reduce `--max-frames` for faster updates | |
| - Use `--device cpu` if GPU is slow | |
| - Increase `frame_interval` to process fewer frames | |
| ### Missing Updates | |
| - Some updates may be batched for performance | |
| - Check statistics panel for final results | |
| - All data is available after completion | |
| ## Integration | |
| The GUI can be integrated into other workflows: | |
| ```python | |
| from ylff.visualization_gui import create_gui | |
| from scripts.run_arkit_ba_validation_gui import run_validation_with_gui | |
| # Create GUI | |
| gui = create_gui() | |
| # Start validation | |
| run_validation_with_gui( | |
| gui, | |
| arkit_dir=Path("path/to/arkit"), | |
| output_dir=Path("output"), | |
| max_frames=30, | |
| ) | |
| # GUI runs until window is closed | |
| ``` | |
| ## Advantages Over Static Visualization | |
| 1. **Immediate Feedback**: See results as they're computed | |
| 2. **Early Problem Detection**: Identify issues before completion | |
| 3. **Interactive Exploration**: Rotate/zoom 3D plots in real-time | |
| 4. **Progress Monitoring**: Know exactly what's happening | |
| 5. **No Post-Processing**: Results available immediately | |