heal
horizon
ganet_mixvargenet / README.md
zacxr's picture
Update README from latest configs readme_hf.md
98b65a6 verified
|
Raw
History Blame Contribute Delete
3.49 kB
---
license: other
tags:
- heal
- horizon
---
# GaNet (MixVarGENet)
GaNet models lanes as "root keypoints + along-line offsets": the network predicts an 8× downsampled heatmap to locate lane starting points and regresses per-point offsets to reconstruct the full lane; the decoder filters keypoints by `kpt_thr` threshold, clusters and merges points on the same lane via `cluster_thr`, and finally maps back to original image coordinates.
---
## Deployment Metrics
### Model Parameters
| Model | Model Input | Backbone | Neck | Model Output |
|---|---|---|---|---|
| GaNet | Single frame `1x3x320x800` | MixVarGENet | `GaNetNeck` | Lane point sequences `(B,L,P,2)` |
### Accuracy Metrics
| March | Metric | float | calibration | qat | hbm |
| --- | --- | --- | --- | --- | --- |
| J6M | F1Score (F1) | 0.7937 | 0.791 | — | 0.7908 |
> Results are based on `march = March.NASH_M` (J6M) configuration; this task has no QAT stage (qat column is —).
>
> HEAL version: heal 0.0.2 / hbdk4-compiler 4.11.11 / horizon_plugin_pytorch 3.3.10.
### Performance Metrics
> **Performance measurement**: FPS is measured with single-core eight-thread; Latency is measured with single-core single-thread; Memory is peak DDR usage.
| March | latency (ms) | fps | Memory Usage |
|---|---|---|---|
| J6M | 0.68 | 2258.92 | 6.60 |
| J6P | 0.59 | 8623.54 | 6.80 |
| J6B | - | - | - |
J6B performance is not available for this model.
---
## Model Overview
### Core Design
GaNet models lanes as "root keypoints + along-line offsets": the network predicts an 8× downsampled heatmap to locate lane starting points and regresses per-point offsets to reconstruct the full lane; the decoder filters keypoints by `kpt_thr` threshold, clusters and merges points on the same lane via `cluster_thr`, and finally maps back to original image coordinates.
- **Task type**: Lane detection (Lane Detection).
- **backbone**: MixVarGENet (`include_top=False`, `output_list=[2, 3, 4]` three-scale features, corresponding to stride 8/16/32).
- **neck**: `GaNetNeck`: FPN (three-scale fusion to `hid_dim=32`) + Attention module (`attn_ratio=4`, position encoding `pos_shape=(1,10,25)`).
- **Detection head**: `GaNetHead` (outputs `hid_dim=32` dimensional features).
- **Target generation**: `GaNetTarget` (`hm_down_scale=8`, keypoint radius `radius=2`).
- **Post-processing**: `GaNetDecoder` (`root_thr=1`, `kpt_thr=0.4`, `cluster_thr=5`, `downscale=8`).
- **Loss**: `GaNetLoss`: `LaneFastFocalLoss` (keypoint classification, weight=1.0) + `L1Loss` (per-point offset regression weight=0.5 + integer offset regression weight=1.0).
- **Model input**: Single frame, size `320 × 800` (`FixedCrop` takes original region `(0,270,1640,320)` then `Resize` to 320×800; original resolution 1640×590).
- **Model output**: Ordered point sequences per lane (original image coordinate system), obtained via `GaNetDecoder` from heatmap keypoint clustering + offset decoding.
**Deployment note**: The deployment graph (`deploy_model`) removes `targets`/`post_process`/`losses`, keeping only backbone + neck + head; output name is `pred` heatmap features; `GaNetDecoder` is re-attached during inference (float/hbir/hbm infer) to complete lane decoding.
### Official Repo and Paper
Official repo: https://github.com/Wolfwjs/GANet
Paper: https://arxiv.org/abs/2204.07335
Note: backbone MixVarGENet is HEAL-developed.
### Reference
For more J6 chip deployment details, see https://developer.horizon.auto/blog/14098