voldemortX / pytorch-auto-drive

PytorchAutoDrive: Segmentation models (ERFNet, ENet, DeepLab, FCN...) and Lane detection models (SCNN, RESA, LSTR, LaneATT, BézierLaneNet...) based on PyTorch with fast training, visualization, benchmarking & deployment help
BSD 3-Clause "New" or "Revised" License
824 stars 137 forks source link

关于贝塞尔曲线curve fitting的问题 #131

Closed xxKomorebixx closed 1 year ago

xxKomorebixx commented 1 year ago

您好,在curve.md中,看见您写道贝塞尔是用最小二乘进行拟合的,不过我在相关拟合代码中看到控制点的求取就是用control-points=pseudoinverse(coeff)*data,并没有进行优化了,是我遗漏了哪部分用于拟合优化的代码吗?还是说最小二乘指的是t值的近似求取?或者指的是用于culane数据集样条插值那部分?

voldemortX commented 1 year ago

@xxKomorebixx 最小二乘法是有代数解法的。具体到三阶贝塞尔曲线的最小二乘解,可以参考我们论文里的公式4。

voldemortX commented 1 year ago

实际上贝塞尔曲线的拟合是一个 open question,我们使用的均匀采样方式只是最基础的,远远不是最优的,但目前看来还算够用。

xxKomorebixx commented 1 year ago

实际上贝塞尔曲线的拟合是一个 open question,我们使用的均匀采样方式只是最基础的,远远不是最优的,但目前看来还算够用。

好的,明白了,感谢!

voldemortX commented 1 year ago

@xxKomorebixx 虽然没用到优化也得出了很接近GT的解,但好像数学意义上是应该有一个fitting的过程,感觉可能是个bug

我需要确认一下求逆的矩阵的秩是否满足要求

voldemortX commented 1 year ago

正确的解释应该是bernstein基是一组线性无关的基,设m为采样点数量,n为曲线阶数,在我们的车道线拟合场景,由于m >> n,且t基本按递增规律选取,没有重复,可以认为求伪逆的矩阵是列满秩的,所以代码中给出的解析解就是唯一的最小二乘解。不需要后续的梯度下降优化。