How zkyseu/o2sformer works
O2SFormer is a PyTorch lane-detection system for CULane. The user workflow is to train from configured dataset splits, evaluate predictions with the CULane metric, or load a checkpoint and run image inference for visualization. Its model implementation includes detector variants, lane-prediction heads, transformer components, assignment strategies, and losses; the README also documents a HybridEncoder variant. Several internal model connections are supported by the source index, but the complete detector-to-head wiring is not shown in the excerpts, so that relationship is left unasserted.
Main entry points: culane_dataset.py CULane dataset · transformer.py Transformer · detection_head.py Detection head · detection_headv2.py Detection head v2
Components 24
Training and inference
- Training API
dnlane/apis/train.py - Inference API
dnlane/apis/inference.py - Model configs
configs - Evaluation hook
dnlane/hook/eval_hook.py - Lane predictions
CULane data and evaluation
- CULane dataset
dnlane/datasets/culane_dataset.py - Lane formatting
dnlane/datasets/pipelines/lane_formating.py - Image transforms
dnlane/datasets/pipelines/transform.py - CULane metric
dnlane/datasets/culane_metric.py
Lane detection model
- Detector variants
dnlane/models/detector.py - Detector v2
dnlane/models/detectorv2.py - Detection head
dnlane/models/detection_head.py - Detection head v2
dnlane/models/detection_headv2.py
Model components
- Lane representation
dnlane/models/lane.py - Transformer
dnlane/models/transformer.py - Transformer utilities
dnlane/models/transformer_utils.py - Hybrid encoder
dnlane/models/hybrid_encoder.py - Assignment strategies
dnlane/models/assigner.py - One-to-many assigner
dnlane/models/o2m_assigner.py - Match costs
dnlane/models/match_cost.py - Lane IoU loss
dnlane/models/losses/lane_iou.py - Focal loss
dnlane/models/losses/focal_loss.py - General utilities
dnlane/models/utils/general_utils.py
Other components
- User
Connections 20
- User → Training API: starts training
README.md - User → Inference API: requests inference
- Model configs → Training API: configures training
README.md - Inference API → Detector variants: builds detector
dnlane/apis/inference.py - Inference API → Lane predictions: returns predictions
dnlane/apis/inference.py - CULane dataset → Lane formatting: runs pipeline
dnlane/datasets/culane_dataset.py - Lane formatting → Image transforms: uses transforms
dnlane/datasets/pipelines/lane_formating.py - CULane dataset → CULane metric: evaluates predictions
dnlane/datasets/culane_dataset.py - Evaluation hook → CULane dataset: tests dataloader
dnlane/hook/eval_hook.py - Detector variants → Transformer: uses transformer
dnlane/models/detector.py - Detector v2 → Transformer: uses transformer
dnlane/models/detectorv2.py - Detection head → Transformer: uses transformer
dnlane/models/detection_head.py - Detection head → Transformer utilities: uses utilities
dnlane/models/detection_head.py - Detection head → Lane representation: uses lane type
dnlane/models/detection_head.py - Detection head v2 → Transformer utilities: uses utilities
dnlane/models/detection_headv2.py - Detection head v2 → Lane representation: uses lane type
dnlane/models/detection_headv2.py - Detection head v2 → Lane IoU loss: uses IoU loss
dnlane/models/detection_headv2.py - Hybrid encoder → Transformer: uses transformer
dnlane/models/hybrid_encoder.py - One-to-many assigner → Lane IoU loss: uses IoU
dnlane/models/o2m_assigner.py - CULane dataset → General utilities: uses path helper
dnlane/datasets/culane_dataset.py