Open lalumayang opened 1 year ago
@lalumayang
感謝作者對於以上問題的答覆~~
我們會透過原始的Ground truth 生成出符合UFLDv2提出的hybrid anchor system滿足一條車道線能給出一系列新的坐標,就如上圖。
curve = np.polyfit(arr[1::2], arr[::2], min(len(arr[::2]) - 1, 3))
得出方程式,可會有像下圖(左一)的情況發生,作者對此有更好的解決方式嗎?
感謝~~
@lalumayang
你应该不需要手动生成车道线在row和col上的坐标表示,在训练时,我们会使用my_interp
来对车道线进行插值,得到在row和col上的表示。
https://github.com/cfzd/Ultra-Fast-Lane-Detection-v2/blob/c903880678454dfd9b55a63022368db05c00bc6d/data/dali_data.py#L246 https://github.com/cfzd/Ultra-Fast-Lane-Detection-v2/blob/c903880678454dfd9b55a63022368db05c00bc6d/data/dali_data.py#L254
在convert_curvelanes
这个脚本中生成的表示方法实际上是通过row的方式表示的,目的是为了使得所有车道线都可以用一个定长的矩阵表示(毕竟标注中的车道线有的点多,有的点少,很难以batch的形式送进网络进行训练)。
图上的各种问题我觉得是标注质量的问题,看起来似乎标注结果本来就是不准的?
感謝答覆~~
下圖為ground trurh畫出來的結果: 標註格式為下: 每一行為一條車道線上有的點座標=[x1 y1 x2 y2 x3 y3 ... xn yn ] 就我看到的資訊我是覺得標註沒問題的,作者怎麼看呢?
在convert_curvelanes
是通過row的方式表示而生成points_col = my_interp.run(points, self.interp_loc_col, 1)
中的points
矩陣,而其中points的生成方式是?
@lalumayang
抱歉回复的晚了,看起来gt是很准的,我想知道图上歪歪扭扭的点是怎么画出来的呢?是通过这个地方的all_points
画出来的吗?
https://github.com/cfzd/Ultra-Fast-Lane-Detection-v2/blob/c903880678454dfd9b55a63022368db05c00bc6d/scripts/convert_curvelanes.py#L148-L150
可以尝试一下以下的方法:
draw(label,lines[which_lane],5-idx, show=True)
来生成分割图,上面会标注线的编号及颜色ratio_height = rh, ratio_width = rw
all_points
得到点集
程式碼位置 Ultra-Fast-Lane-Detection-v2/scripts/convert_curvelanes.py 中的calc_k()函式能大致說明一下其中的功能嗎?
1.這是我使用自己資料集生出的紅色為col anchor,綠色為row anchor結果,左邊第二條有跑偏,不太明白會是生成的哪步驟出現問題。 圖片為1280*720 上圖的標註檔案為以下格式: 每一行為一條車道線上有的點座標=[x1 y1 x2 y2 x3 y3 ... xn yn ]
2.左一車道線,得出的方程式無法儗合車道線,想請問還有甚麼方式能完美服貼於車道線上? 上圖的標註檔案為以下格式: 每一行為一條車道線上有的點座標=[x1 y1 x2 y2 x3 y3 ... xn yn ]
對於生成row anchor 和col anchor的方式有些疑惑,期待作者的回覆,感謝~~