軌跡預測在自動駕駛中承擔著重要的角色,自動駕駛軌跡預測是指透過分析車輛行駛過程中的各種數據,預測車輛未來的行駛軌跡。作為自動駕駛的核心模組,軌跡預測的品質對於下游的規劃控制至關重要。軌跡預測任務技術堆疊豐富,需熟悉自動駕駛動/靜態感知、高精地圖、車道線、神經網路架構(CNN&GNN&Transformer)技能等,入門難度很高!許多粉絲期望能夠盡快上手軌跡預測,少踩坑,今天就為大家盤點下軌跡預測常見的一些問題和入門學習方法!
A:先看survey,problem formulation, deep learning-based methods裡的sequential network,graph neural network和Evaluation。
耦合和行為並不相同,耦合通常指目標車可能採取的動作,例如變換車道、停車、超車、加速、左轉、右轉或直行。而軌跡則指具有時間資訊的具體未來位置點。
在右邊的表格中,OBJECT_TYPE欄通常代表自動駕駛車輛本身。資料集通常為每個場景指定一個或多個待預測的障礙物,並將這些待預測目標稱為target或focal agent。有些資料集也會為每個障礙物提供語義標籤,例如車輛、行人或自行車等。
Q2:車輛和行人的資料形式是一樣的嗎?我的意思是說,例如一個點雲點代表行人,幾十點代表車輛?
A:這種軌跡資料集裡面其實給的都是物體中心點的xyz座標,行人和車輛都是
Q3:argo1和argo2的資料集都是只指定了一個被預測的障礙物吧?那在做multi-agent prediction的時候 這兩個資料集是怎麼用的
argo1只指定了一個障礙物,而argo2卻可能指定了多達二十個。然而,即使只指定了一個障礙物,這並不會影響您模型的能力來預測多個障礙物。
A:」預測「自車軌跡當成自車規劃軌跡,可以參考uniad
A:nn網路基本上不需要哈,rule based的需要懂一些
A:先看綜述,把心智圖整理出來,例如《Machine Learning for Autonomous Vehicle's Trajectory Prediction: A comprehensive survey, Challenges, and Future Research Directions》這篇綜述去看看英文原文
A1(stu): 默认预测属于感知吧,或者决策中隐含预测,反正没有预测不行。A2(stu): 决策该规控做,有行为规划,高级一点的就是做交互和博弈,有的公司会有单独的交互博弈组
A:預測是出他車軌跡,規控是出自車軌跡,這兩個軌跡還互相影響,所以預測一般放規控。
Q: 一些公開的資料,例如小鵬的感知xnet會同時出預測軌跡,這時候又感覺預測的工作是放在感知大模組下,還是說兩個模組都有自己的預測模組,目標不一樣?
A:是會互相影響,所以有的地方預測和決策就是一組。例如自車規劃的軌跡意圖去擠別的車,他車一般狀況是會讓道的。所以有些工作會把自車的規劃當成他車模型輸入的一部分。可以參考下M2I(M2I: From Factored Marginal Trajectory Prediction to Interactive Prediction). 這篇思路差不多,可以了解 PiP: Planning-informed Trajectory Prediction for Autonomous Driving
A: 人工標註的
A: hivt可以做baseline,蠻多人用的
A: 有一定的泛化能力,不需要重新訓練效果也還行
A(stu): 选择结果最好的Q2:结果最好是根据什么来判定呢?是根据概率值大小还是根据和gt的距离A: 实际在没有ground truth的情况下,你要取“最好”的轨迹,那只能选择相信预测概率值最大的那条轨迹了Q3: 那有gt的情况下,选择最好轨迹的时候,根据和gt之间的end point或者average都可以是吗A: 嗯嗯,看指标咋定义
A:這個課程裡都有講的,可以參考第二章,後續的第四章也會講. 異構圖和同構圖的區別:同構圖中,node的種類只有一種,一個node和另一個node的連結關係只有一種,例如在社交網絡中,可以想像node只有'人'這一個種類,edge只有'認識'這一種連結。而人和人要嘛認識,要嘛不認識。但也可能細分有人,按讚,推文。則人和人可能透過認識連接,人和推文可能透過按讚連接,人和人也可能透過按讚同一篇推文連接(meta path)。這裡節點、節點之間關係的多樣性表現就需要引入異構圖了。異構圖中,有很多種node。 node之間也有很多種連結關係(edge),這些連結關係的組合則種類更多(meta-path), 而這些node之間的關係有輕重之分,不同連結關係也有輕重之分。
A:可以選擇一定半徑範圍內的車,也可以考慮K近鄰的車,你甚至可以自己提出更高級的啟發式鄰居篩選策略,甚至有可能可以讓模型自己學出來兩輛車是否是鄰居
Q2:還是考慮一定範圍內的吧,那半徑大小有什麼選取的原則嗎?另外,選取的這些車輛是在哪個時間步下的呢
A:半徑的選擇很難有標準答案,這本質上就是在問模型做預測的時候到底需要多遠程的信息,有點像在選擇卷積核的大小對於第二個問題,我個人的準則是,想要建模哪個時刻下物體之間的交互,就根據哪個時刻下的物體相對位置來選取鄰居
Q3:這樣的話對於歷史時域都要建模嗎?不同時間步下在一定範圍內的周邊車輛也會變化吧,還是說只考慮在當前時刻的周邊車輛資訊
A:都行啊,看你模型怎麼設計
A:只看它motion former的操作比較常規,你在很多論文裡都會看到類似的SA和CA。現在sota的模型很多都比較重,例如decoder會有循環的refine
A2:做的是marginal prediction不是joint prediction;2. prediction和planning是分開來做的,沒有明確考慮ego和周圍agent的互動博弈;3.用的是scene-centric representation,沒有考慮對稱性,效果必拉
Q2:啥是marginal prediction啊
#A:具體可以參考scene transformer
Q3:關於第三點,scene centric沒有考慮對稱性,怎麼理解呢
#A:建議看HiVT, QCNet, MTR .當然對於端到端模型來說對稱性的設計也不好做就是了
A2:可以理解成輸入的是scene的數據,但在網路裡會建模成以每個目標為中心視角去看它週邊的scene,這樣你就在forward裡得到了每個目標以它自己為中心的編碼,後續可以再考慮這些編碼間的交互
A:每個agent有自己的local region,local region是以這個agent為中心
A:可以理解為車頭朝向
A:其實我也不知道我理解的對不對,我猜是指某個lane是否被紅綠燈/stop sign/限速標誌等所影響
A:兩個都試一下,哪個效果好哪個就有優勢。 Laplace loss要效果好還是有些細節要注意的
Q2:是指參數要調的好嗎
A:Laplace loss相比L1 loss其實就是多預測了一個scale參數
Q3:對的但似乎這個我不知道有啥用如果只預測一個軌跡的話。感覺像是多餘的。我把它理解為不確定性 不知道是否正確
A:如果你从零推导过最小二乘法就会知道,MSE其实是假设了方差为常数的高斯分布的NLL。同理,L1 loss也是假设了方差为常数的Laplace分布的NLL。所以说LaplaceNLL也可以理解为方差非定值的L1 loss。这个方差是模型自己预测出来的。为了使loss更低,模型会给那些拟合得不太好的样本一个比较大的方差,而给拟合得好的样本比较小的方差
Q4:那是不是可以理解为对于非常随机的数据集【轨迹数据存在缺帧 抖动】 就不太适合Laplace 因为模型需要去拟合这个方差?需要数据集质量比较高
A:这个说法我觉得不一定成立。从效果上来看,会鼓励模型优先学习比较容易拟合的样本,再去学习难学习的样本
Q5:还想请问下这句话(Laplace loss要效果好还是有些细节要注意的)如何理解 A:主要是预测scale那里。在模型上,预测location的分支和预测scale的分支要尽量解耦,不要让他们相互干扰。预测scale的分支要保证输出结果>0,一般人会用exp作为激活函数保证非负,但是我发现用ELU +1会更好。然后其实scale的下界最好不要是0,最好让scale>0.01或者>0.1啥的。以上都是个人看法。其实我开源的代码(周梓康大佬的github开源代码)里都有这些细节,不过可能大家不一定注意到。
给出链接:https://github.com/ZikangZhou/QCNet
https://github.com/ZikangZhou/HiVT
https://github.com/L1aoXingyu/pytorch-beginner/tree/master/08-AutoEncoder
A:Polyline就是折线,折线就是一段一段的,每一段都可以看成是一段向量Q2:请问这个折线段和图神经网络的节点之间的边有关系吗?或者说Polyline这个折现向量相当于是图神经网络当中的节点还是边呀?A:一根折线可以理解为一个节点。轨迹预测里面没有明确定义的边,边如何定义取决于你怎么理解这个问题。Q3: VectorNet里面有很多个子图,每个子图下面有很多个Polyline,把Polyline当做向量的话,就相当于把Polyline这个节点变成了向量,相当于将节点进行特征向量化对吗?然后Polyline里面有多个Vector向量,就是相当于是构成这个节点的特征矩阵么?A: 一个地图里有很多条polyline;一个Polyline就是一个子图;一个polyline由很多段比较短的向量组成,每一段向量都是子图上的一个节点
A: 节点的粒度不同,要说效果的话那得看具体实现;速度的话,显然粒度越粗效率越高Q2:从效果角度看,什么时候选用哪种有没有什么原则?A: 没有原则,都可以尝试
A: 這個需要你輸入是流動的輸入例如0-19和1-20幀接著比較兩幀之間的對應軌跡的score的差的平方,統計下就可以了
Q2: Thomas老師有哪些指標推薦呢,我目前用一階導數和二階導數。但好像不是很明顯,絕大多數一階導和二階導都集中在0附近。
A: 我感覺連續影格的對應軌跡的score的差值平方就可以了呀,例如你有連續n個輸入,求和再除以n。但是scene是即時變化的,發生互動或從非路口到路口的時候score就應該是突變的
A:就是把資料標準化歸一化唄。可能有點用 但應該不多
A:相加和concat區別不大,而對於類別embedding和數值embedding融合來說,實際上完全等價
Q2: 完全等價應該怎麼理解?
A: 兩者Concat之後再過一層線性層,實際上等價於把數值embedding過一層線性層以及把類別embedding過一層線性層後,兩者再相加起來.把類別embedding過一層線性層其實沒啥意義,理論上這一層線性層可以跟nn.Embeddding裡面的參數融合起來
A:我不知道,但根據我了解到的信息,不知道是NV還是哪家車廠是拿HiVT來預測行人的,所以實際部署肯定是可行的
A:目前基於occupancy的未來預測的方案裡面最有前途的應該是這個:https://arxiv.org/abs/2308.01471
A:這個可能公開的資料集比較困難,一般不會提供自車的規劃軌跡。上古時期有一篇叫做PiP的,港科Haoran Song。我感覺那種做conditional prediction的文章都可以算是你想要的,例如M2I
A(stu):這篇論文有討論:Choose Your Simulator Wisely A Review on Open-source Simulators for Autonomous Driving
A:和怎麼用有關係,之前跑hivt我1070都可以,現在一般電腦應該都可以
原文連結:https:/ /mp.weixin.qq.com/s/EEkr8g4w0s2zhS_jmczUiA
以上是自動駕駛與軌跡預測看這篇就夠了!的詳細內容。更多資訊請關注PHP中文網其他相關文章!