# models/ Feature extraction (face mesh, head pose, eye scorer, collect_features) and training scripts. **Extraction:** `face_mesh.py` → landmarks; `head_pose.py` → yaw/pitch/roll, scores; `eye_scorer.py` → EAR, gaze, MAR; `collect_features.py` → 17-d vector + PERCLOS, blink, etc. **Training:** | Path | Command | Checkpoint | |------|---------|------------| | mlp/ | `python -m models.mlp.train` | checkpoints/mlp_best.pt | | xgboost/ | `python -m models.xgboost.train` | checkpoints/xgboost_face_orientation_best.json | MLP: train.py, sweep.py, eval_accuracy.py. XGB: train.py, sweep_local.py, eval_accuracy.py. Both use `data_preparation.prepare_dataset` (get_numpy_splits / get_dataloaders). **Results:** XGBoost 95.87% acc, 0.959 F1, 0.991 AUC; MLP 92.92%, 0.929, 0.971.