Files
HSAP/algorithms/lane_ufld/code.embedded.bak/pytorch-auto-drive-master/docs/CURVE.md
Chengfang Lu e72bc061c5 feat: HSAP platform v2 — modular navigation, quality review, audit log, world model simulation
Major changes:
- New frontend (platform/web/): Vite + React 18 + TypeScript + Tailwind
- 4-module navigation: 数据送标 / 模型管理 / 车队管理 / 系统管理
- Data catalog with charts (DMS/ADAS/Lane 3-tab view)
- Quality review workflow (标注质检): Good/Fine/Bad scoring with auto-advance
- Audit enhancements: batch operations, rejection categories, Feishu notifications
- Operation audit log (操作日志)
- World model simulation studio (仿真工坊)
- Dataset version management with snapshots and diff
- ADAS 7-class dataset integration (138K images organized + compressed)
- User management with Feishu integration and pagination
- CRUD/search/filter on all pages, card layout redesign
- PIL-optimized image overlay rendering
- Auto-snapshot on build, in_review workflow stage
- Removed embedded algorithm code (now in workspace)
2026-06-03 11:40:21 +08:00

3.2 KiB

Generate Bézier labels

Generation script:

    python ./tools/curve_fitting_tools/gen_bezier_annotations.py 
            --dataset=<dataset name> 
            --image-set=<image set name: train\test\val> 
            --order=<the order of Bézier curves>

Notes:

  1. We generate Bézier control points from original key points without normalization. The normalized control points can be obtained by using --norm in the generated script.

  2. The test set of LLAMAS dataset is unavailable, thus we cannot obtain the LLAMAS test set 's Bézier labels.

  3. In CurveLanes dataset, some lanes were marked by sparse key points (for instance, 2 and 3 points) , therefore, before obtain Bézier labels we interpolate lanes.

Bézier label format

All labels are saved in a json file, named <image-set>_<order>.json.

   {"raw_file":filename1, "Bezier_control_points": [[...],[...], ..., [...]}
   {"raw_file":filename2, "Bezier_control_points": [[...],[...], ..., [...]}
   ...
   {"raw_file":filenamen, "Bezier_control_points": [[...],[...], ..., [...]}

Upper-bound test script

This script is used to obtain prediction results from fitted curves.

   python ./tools/curve_fitting_tools/upperbound.py 
          --dataset=<dataset name>
          --state=<1: test set/2: val test>
          --fit-function=<bezier/poly>
          --num-points=<the number of generating key points>
          --order=<the order of generating curves>

We still need to run autotest_<culane\llamas\tusimple>.sh to get F1/Accuracy.

LPD metric script:

   python ./tools/curve_fitting_tools/lpd_mertic.py 
          --pred=<.json with the predictions>
          --gt=<.json with the gt>
          --gt-type='tusimple'

The lpd_metric.py is used to get lpd metric, which was employed in PolyLaneNet.

We copy this test script from this repo, you can find more information in this issue.

Notes:

  1. The upper-bound test on TuSimple dataset does not require --num-points.

  2. The lpd metric only supports TuSimple dataset.

  3. Bézier curves are simply fitted with least-squares, which is not optimal.

Upper-bounds on test set (except LLAMAS uses val)

100 sample points for the CULane eval.

CULane F1

Order Bézier polynomial
1st 99.6024 99.6177
2nd 99.9733 99.9685
3rd 99.9962 99.9971
4th 99.9962 99.9990
5th 99.9847 99.9990

TuSimple Accuracy

Order Bézier polynomial
1st 96.4738 97.9629
2nd 98.4588 99.0760
3rd 99.5239 99.7463
4th 99.8120 99.9498
5th 99.9106 99.9883

LLAMAS F1

Order Bézier polynomial
1st 98.8978 99.1409
2nd 99.4408 99.5178
3rd 99.7191 99.6259
4th 99.7987 99.6961
5th 99.8501 99.7501

TuSimple LPD

Order Bézier polynomial
1st 0.956382 1.415590
2nd 0.652477 0.944469
3rd 0.471154 0.557482
4th 0.314884 0.329481
5th 0.238662 0.208554

LPD metric: lower is better.