原创 matlab練習程序(Pure Pursuit路徑跟蹤)

當時寫stanley就實現了,貼上來記錄一下。 方法示意圖: 控制率公式: 其中L爲軸距,e爲橫向誤差,v爲車輛速度,lambda和c爲控制參數。 算法步驟如下: 1. 根據當前定位結果找到路徑最鄰近點。 2. 計算該點與定位結果橫向誤

原创 深度學習(單機多gpu訓練)

如果一個機器上有多個gpu,可以使用多gpu訓練。 一般數據量和模型比較大的時候訓練速度會有明顯的提升,模型和數據比較小的時候反而可能因爲數據通信原因導致性能下降。 下面是一個簡單的例子: import time import torch

原创 【Python】可視化Python庫的依賴關係

這裏主要用了兩個庫:pipdeptree和pyecharts。 pipdeptree用來解析所有庫的依賴關係。 pyecharts用來顯示依賴的網絡關係。 通常的方法應該是通過輸入下面命令: pipdeptree --json-tree

原创 深度學習(混合精度訓練)

混合精度訓練通常會結合使用單精度浮點數(float32)和半精度浮點數(float16),以提高訓練效率和減少內存佔用。 代碼中關鍵在於兩個地方: 1. 在with autocast():下,模型的前向傳播和損失計算放在自動混合精度加速環境

原创 解決nvidia-smi報錯:NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver

昨天一切正常,今天ubuntu啓動突然卡住了,一直停在黑屏光標界面。 在網上看到原因可能和nvidia驅動有關。 輸入nvidia-smi報出題目中的錯誤。 一般這種錯誤都是在剛安裝nvidia驅動後第一次啓動可能出現,見我這篇文章。 不過

原创 matlab練習程序(Schur補)

Schur 補是一種矩陣分解方法,通過將一個大的矩陣分解爲幾個較小的矩陣來簡化計算,通常能夠提高矩陣求逆的速度。 對於形如下面的矩陣: 可以把矩陣劃分爲左上、右上、左下、右下四個分塊矩陣。 得到矩陣: 根據A和D的奇異性,可以分兩種情況

原创 【Python】強化學習Q-Learning走迷宮

Q-Learning是一種基於值函數的強化學習算法,這裏用該算法解決走迷宮問題。 算法步驟如下: 1. 初始化 Q 表:每個表格對應狀態動作的 Q 值。這裏就是一個H*W*4的表,4代表上下左右四個動作。 2. 選擇動作: 根據 Q 表格選

原创 解決編譯報錯——Command ‘[‘ninja‘, ‘-v‘]‘ returned non-zero exit status 1

編譯有些python庫時可能會報這個錯。 解決方法是: 將setup.py中的“cmdclass={'build_ext': BuildExtension}”改爲“cmdclass={'build_ext': BuildExtension.

原创 解決編譯報錯——too few arguments for template template parameter “Tuple“detected

一般出現這種問題都是cuda、pytorch或vs版本沒配對上。 這裏出現問題的文件爲torch中的cast.h。 我看網上很多給的解決方法是修改下面代碼: template <template <typename...> class T

原创 處理c++中isnan無效

可能是編譯指令加入了下面三個其中一個: -Ofast -ffast-math -ffinite-math-only 去掉上面的指令或者單獨加入下面的指令均可使isnan生效。 -fno-finite-math-only 注意這個要加

原创 Linux保存進程狀態

下面這個命令: ps -e | grep gsd | awk '{print $1}' | xargs -I{} sh -c 'cat /proc/{}/status && echo "--------------------------

原创 matlab練習程序(Bundle Adjustment)

BA作爲視覺SLAM中後端優化的一個核心點還是比較重要的。 BA根據優化量的不同可以分爲三種形式。 Full BA:觀測點和位姿同時優化,一般是視覺SLAM後端的核心。 Motion BA:已知觀測點,優化位姿,一般用來定位。之前的文章中有

原创 matlab練習程序(正交分解)

正交分解可以將多個向量分解爲互相正交的多個向量。 可以用QR分解方法或施密特正交化方法,施密特正交化方法一般數值不穩定。 假設有{V1...Vn}向量組,施密特正交化算法原理如下: 結果中{β1...βn}爲一組正交基,{η1...ηn}

原创 matlab練習程序(DLT)

在計算位姿的時候,一般我們有一些觀測量,這些觀測量有些是三維的、有些是二維的,因此需要用到不同的方法。 如果是3D-3D的位姿計算,一般可以用這幾種方法(【1】,【2】,【3】,【4】)。 如果是3D-2D的位姿計算,一般可以用PnP-BA

原创 matlab練習程序(PnP-BA)

通過3D-2D匹配點計算位姿,除了用上篇的DLT來求解,還可以用非線性優化方式求解。 這篇就用BA的方法求解PnP問題。 使用非線性優化通常要先確定下面四個要素: 1. 待優化模型,模型和上一篇是一樣的,三維點通過旋轉平移矩陣變換到像空間,