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

Question about bezier curves #174

Closed bjzhb666 closed 4 months ago

bjzhb666 commented 4 months ago

文中生成GT的贝塞尔曲线参数 image

$P_0,P_1,P_2, \cdots, P_n$中 有曲线的两个端点吗?怎么判断哪个是端点的呢?

另外,如果我已经得到了一组曲线的参数,https://github.com/voldemortX/pytorch-auto-drive/blob/master/utils/curve_utils.py#L158-L164是如何计算采样点呢?为什么采样的self.bernstein_matrix和control_points_matrix相乘就得到采样点了呢?

谢谢

voldemortX commented 4 months ago

@bjzhb666 第一个和最后一个就是端点。使用的定义是贝塞尔曲线的常用定义。你可以查一下贝塞尔曲线和参数曲线的定义。它的采样就是一个矩阵乘法。

bjzhb666 commented 4 months ago

感谢回复,那paper中提到的不要求P0和Pn是端点该怎么理解呢?

另外,预测的时候,一定能保证输出的P0和Pn正好是端点吗?感觉这两个控制点和其他中间Pn-1等控制点没有特别大的区别,为啥网络预测的时候就能保证其为端点呢?

voldemortX commented 4 months ago

感谢回复,那paper中提到的不要求P0和Pn是端点该怎么理解呢?

是指你截图的图注么。那里只是说GT是完全自由拟合的,没有强制使用原标注的起止点,因为这样整条线的拟合会更贴近。

另外,预测的时候,一定能保证输出的P0和Pn正好是端点吗?感觉这两个控制点和其他中间Pn-1等控制点没有特别大的区别,为啥网络预测的时候就能保证其为端点呢?

你可以这样理解,网络预测了四个有序的二维点。或者预测了8个不同的参数abcdefgh。

bjzhb666 commented 4 months ago

是指你截图的图注么。那里只是说GT是完全自由拟合的,没有强制使用原标注的起止点,因为这样整条线的拟合会更贴近。

嗯嗯这个我理解啦,很有道理

网络预测了四个有序的二维点。或者预测了8个不同的参数abcdefgh。

为什么是有序的二维点呢?我们如何保证这一点呢?是通过如下形式的贝塞尔曲线的loss来保证的吗?因为贝塞尔曲线的形式(比如二阶)对于每个控制点来说是不对称的(不能随便交换P0,P1,P2的位置),所以能保证预测时候是一个有序的二维点列,我理解的对吗? 或者说,如果预测8个坐标参数的loss改为直接回归8个数字的坐标,那此时就不能保证4个二维点是有序的吧? image

image

voldemortX commented 4 months ago

@bjzhb666 是的。控制点定义不可互相替换,你规定网络输出的8维分别对应什么东西,就可以学到的。

bjzhb666 commented 4 months ago

嗯嗯,我都清楚了,谢谢