feat: initial HSAP platform

Huaxu Sentinel Active Safety Platform with embedded algorithm code,
Docker Compose setup, and vendored dataset scaffolds for clone-and-run.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-05-25 16:59:59 +08:00
commit 7c43b44c57
1619 changed files with 373355 additions and 0 deletions

View File

@@ -0,0 +1,45 @@
# DATA
dataset = 'CULane'
data_root = 'C:\\data\\Tusimple\\test_set'
# TRAIN
epoch = 50
batch_size = 32
optimizer = 'SGD' #['SGD','Adam']
learning_rate = 0.1
weight_decay = 1e-4
momentum = 0.9
scheduler = 'multi' #['multi', 'cos']
steps = [25,38]
gamma = 0.1
warmup = 'linear'
warmup_iters = 695
# NETWORK
use_aux = True
griding_num = 200
backbone = '18'
# LOSS
sim_loss_w = 0.0
shp_loss_w = 0.0
# EXP
note = ''
log_path = None
# FINETUNE or RESUME MODEL PATH
finetune = None
resume = None
# TEST
test_model = './model/culane_18.pth'
test_work_dir = './tmp'
num_lanes = 4

View File

@@ -0,0 +1,41 @@
# MUFLD lane pack in CULane-style layout for UFLD training.
# Data root layout:
# <data_root>/images/...
# <data_root>/annotations/segmentation_masks/...
# <data_root>/list/train_gt.txt (two columns: training split only)
# <data_root>/list/val_gt.txt (validation pairs, optional custom loop)
# <data_root>/list/test.txt (held-out test images, one per line)
dataset = 'CULane'
data_root = '/home/chengfanglu/DATA/lane0_copy/DATASET'
epoch = 50
batch_size = 16
optimizer = 'SGD'
learning_rate = 0.1
weight_decay = 1e-4
momentum = 0.9
scheduler = 'multi'
steps = [25, 38]
gamma = 0.1
warmup = 'linear'
warmup_iters = 695
use_aux = True
griding_num = 200
backbone = '18'
sim_loss_w = 0.0
shp_loss_w = 0.0
note = 'lane_training_pack_v1'
log_path = './log'
finetune = None
resume = None
test_model = './model/culane_18.pth'
test_work_dir = './tmp'
num_lanes = 4

View File

@@ -0,0 +1,40 @@
# CPU 单机训练示例batch 需显著减小;学习率可按 batch 相对 16 做线性缩放(可选)。
#
# layout 同 configs/mufld_lane_culane.py
# lane_light 环境与安装说明见 TRAIN_ENV_CPU.md
dataset = "CULane"
data_root = "/home/chengfanglu/DATA/lane0_copy/DATASET"
epoch = 50
batch_size = 4
optimizer = "SGD"
# 若在 CPU 上不收敛可先试更小 lr例如 batch=4 时约 0.1 * (4 / 16) = 0.025
learning_rate = 0.025
weight_decay = 1e-4
momentum = 0.9
scheduler = "multi"
steps = [25, 38]
gamma = 0.1
warmup = "linear"
# warmup 与原配置按 batch 比例对齐(原为 695 @ bs=16
warmup_iters = 174
use_aux = True
griding_num = 200
backbone = "18"
sim_loss_w = 0.0
shp_loss_w = 0.0
note = "lane_training_pack_cpu_bs4"
log_path = None
finetune = None
resume = None
test_model = "./model/culane_18.pth"
test_work_dir = "./tmp"
num_lanes = 4

View File

@@ -0,0 +1,54 @@
# Multi-pack training — control merged packs in this config.
# data_root = parent of DATASET / DATASET-AddBy-* / DATASET-A (alias).
from pathlib import Path
dataset = 'CULane'
data_root = str(Path(__file__).resolve().parents[5] / "datasets" / "lane")
# Pack names: directory under data_root, or alias from datasets_registry.json
train_packs = [
'lane_v1',
]
# Default list inside each pack (relative to pack root)
pack_list_name = 'list/train_gt.txt'
# Cached merged list (auto filename from pack names if merged_train_list is None)
merged_list_dir = 'lists_merged'
merged_train_list = None # e.g. 'lists_merged/train_all_v2.txt'
remerge_train_list = False # True to rebuild merged list every run
# Single-pack fallback (ignored when train_packs is set)
train_list = 'list/train_gt.txt'
epoch = 50
batch_size = 16
optimizer = 'SGD'
learning_rate = 0.1
weight_decay = 1e-4
momentum = 0.9
scheduler = 'multi'
steps = [25, 38]
gamma = 0.1
warmup = 'linear'
warmup_iters = 695
use_aux = True
griding_num = 200
backbone = '18'
sim_loss_w = 0.0
shp_loss_w = 0.0
note = 'multi_pack_v2'
log_path = './log'
finetune = None
resume = None
test_model = './model/culane_18.pth'
test_work_dir = './tmp'
num_lanes = 4

View File

@@ -0,0 +1,35 @@
# Smoke test: few samples, 1 epoch, small batch (CPU or GPU).
dataset = "CULane"
data_root = "/home/chengfanglu/DATA/lane0_copy/DATASET"
train_list = "list/train_gt_smoke.txt"
epoch = 1
batch_size = 2
optimizer = "SGD"
learning_rate = 0.025
weight_decay = 1e-4
momentum = 0.9
scheduler = "multi"
steps = [1]
gamma = 0.1
warmup = "linear"
warmup_iters = 10
use_aux = True
griding_num = 200
backbone = "18"
sim_loss_w = 0.0
shp_loss_w = 0.0
note = "dataset_smoke_test"
log_path = "./log"
finetune = None
resume = None
test_model = "./model/culane_18.pth"
test_work_dir = "./tmp"
num_lanes = 4

View File

@@ -0,0 +1,41 @@
# DATA
dataset = 'Tusimple'
data_root = '/mnt/HDisk2T/liuxy51/ganxian/data_luojk'
# TRAIN
epoch = 500 # 10
batch_size = 32 # 4
optimizer = 'Adam' #['SGD','Adam']
learning_rate = 1e-5
weight_decay = 1e-4
momentum = 0.9
scheduler = 'cos' #['multi', 'cos']
# steps = [50,75]
gamma = 0.1
warmup = 'linear'
warmup_iters = 100
# NETWORK
backbone = '18'
griding_num = 100
use_aux = False
# LOSS
sim_loss_w = 1.0
shp_loss_w = 0.0
# EXP
note = '_ufld_2lanes_res18'
log_path = './log'
# FINETUNE or RESUME MODEL PATH
finetune = None
resume = None
# TESTNone
test_model = './model/lane_m599_all.pth'
test_work_dir = './tmp'
num_lanes = 2

View File

@@ -0,0 +1,41 @@
# DATA
dataset = 'Tusimple'
data_root = '/mnt/HDisk2T/liuxy51/ganxian/train_2025_03_13_mufld' # 针对clrnet数据集8.1w帧多车道数据
# TRAIN
epoch = 500 # 10
batch_size = 32 # 4
optimizer = 'Adam' #['SGD','Adam']
learning_rate = 1e-5
weight_decay = 1e-4
momentum = 0.9
scheduler = 'cos' #['multi', 'cos']
# steps = [50,75]
gamma = 0.1
warmup = 'linear'
warmup_iters = 100
# NETWORK
backbone = '18'
griding_num = 100
use_aux = False
# LOSS
sim_loss_w = 1.0
shp_loss_w = 0.0
# EXP
note = '_ufld_2lanes_res18'
log_path = './log'
# FINETUNE or RESUME MODEL PATH
finetune = None
resume = None
# TESTNone
test_model = './model/lane_m599_all.pth'
test_work_dir = './tmp'
num_lanes = 4

View File

@@ -0,0 +1,41 @@
# DATA
dataset = 'Tusimple'
data_root = '/mnt/HDisk2T/liuxy51/ganxian/train_2024_03_06'
# TRAIN
epoch = 500 # 10
batch_size = 32 # 4
optimizer = 'Adam' #['SGD','Adam']
learning_rate = 1e-5
weight_decay = 1e-4
momentum = 0.9
scheduler = 'cos' #['multi', 'cos']
# steps = [50,75]
gamma = 0.1
warmup = 'linear'
warmup_iters = 100
# NETWORK
backbone = '18'
griding_num = 100
use_aux = False
# LOSS
sim_loss_w = 1.0
shp_loss_w = 0.0
# EXP
note = '_ufld_2lanes_res18'
log_path = './log'
# FINETUNE or RESUME MODEL PATH
finetune = None
resume = '/mnt/HDisk2T/liuxy51/ganxian/UFLD/log/20240607_162111_lr_1e-05_b_32_ufld_2lanes_res18/ep304.pth' # None
# TESTNone
test_model = './model/lane_m599_all.pth'
test_work_dir = './tmp'
num_lanes = 2

View File

@@ -0,0 +1,41 @@
# DATA
dataset = 'Tusimple'
data_root = '/mnt/HDisk2T/liuxy51/ganxian/train_2024_03_06_1'
# TRAIN
epoch = 500 # 10
batch_size = 32 # 4
optimizer = 'Adam' #['SGD','Adam']
learning_rate = 1e-5
weight_decay = 1e-4
momentum = 0.9
scheduler = 'cos' #['multi', 'cos']
# steps = [50,75]
gamma = 0.1
warmup = 'linear'
warmup_iters = 100
# NETWORK
backbone = '18'
griding_num = 100
use_aux = False
# LOSS
sim_loss_w = 1.0
shp_loss_w = 0.0
# EXP
note = '_ufld_2lanes_res18'
log_path = './log'
# FINETUNE or RESUME MODEL PATH
finetune = None
resume = None
# TESTNone
test_model = './model/lane_m599_all.pth'
test_work_dir = './tmp'
num_lanes = 2

View File

@@ -0,0 +1,41 @@
# DATA
dataset = 'Tusimple'
data_root = '/mnt/HDisk2T/liuxy51/ganxian/train_2024_03_06_2'
# TRAIN
epoch = 500 # 10
batch_size = 32 # 4
optimizer = 'Adam' #['SGD','Adam']
learning_rate = 1e-5
weight_decay = 1e-4
momentum = 0.9
scheduler = 'cos' #['multi', 'cos']
# steps = [50,75]
gamma = 0.1
warmup = 'linear'
warmup_iters = 100
# NETWORK
backbone = '18'
griding_num = 100
use_aux = False
# LOSS
sim_loss_w = 1.0
shp_loss_w = 0.0
# EXP
note = '_ufld_2lanes_res18'
log_path = './log'
# FINETUNE or RESUME MODEL PATH
finetune = None
resume = None
# TESTNone
test_model = './model/lane_m599_all.pth'
test_work_dir = './tmp'
num_lanes = 2

View File

@@ -0,0 +1,44 @@
# DATA
dataset = 'Tusimple'
# data_root = 'C:\\data\\Tusimple\\test_set'
# data_root = 'C:\\data\\anno\\324lane'
# data_root = 'C:\\data\\Tusimple\\train_set'
data_root = '/data/panh28/yk_syj/data/train_0306'
# TRAIN
epoch = 600
batch_size = 64
optimizer = 'Adam' #['SGD','Adam']
# learning_rate = 0.1
learning_rate = 1e-5
weight_decay = 1e-4
momentum = 0.9
scheduler = 'cos' #['multi', 'cos']
# steps = [50,75]
gamma = 0.1
warmup = 'linear'
warmup_iters = 100
# NETWORK
backbone = '34'
griding_num = 100
use_aux = False
# LOSS
sim_loss_w = 1.0
shp_loss_w = 0.0
# EXP
note = 'lane_res34_2ch_syj_0906_minilearn'
log_path = './log'
# FINETUNE or RESUME MODEL PATH
finetune = None
resume = "/data/panh28/yk_syj/code/UFLD/log/20230906_161808_lr_1e-04_b_64lane_res34_2ch_syj_0906/ep068.pth"
# TESTNone
test_model = './model/lane_m599_all.pth'
# test_model = './model/tusimple_18.pth'
test_work_dir = './tmp'
num_lanes = 2

View File

@@ -0,0 +1,6 @@
# UFLD + VoVNet-19-slim-eSE backbone (train from scratch; no torchvision weights).
from configs.tusimple_res18_4lane_v1 import *
backbone = 'vov19slim'
note = '_ufld_4lanes_vov19slim'