Github項目推薦 | 用另一種方式帶你游遍世界
- 2020 年 7 月 31 日
- AI
- TensorFlow, 姿態檢測
(在Google街景視圖中進行虛擬漫步)
由於新冠肺炎疫情大流行,除了必須要出門買東西以外,我們都減少了出門自由活動的時間,以盡量避免感染。甚至在大多數國家和地區,許多邊境都被關閉,這個時候想要旅行幾乎無法實現。
這個時候,Virtual Walks來了,它是一個使用Pose Estimation模型和LSTM神經網路一同實現,並在Google街景地圖中模擬步行的項目。姿勢估算部分採用了PoseNet模型,而動作檢測部分則採用TensorFlow 2.0開發了LSTM模型。
該項目能夠藉助Google街景地圖在世界各地模擬在街上行走,在家就能游遍世界(還不要錢,只要你能用Google地圖你就能愉快使用了)!
該項目中使用的主要技術是 Tensorflow 2.0 ,Selenium 和 Python 3.7。
項目地址
//github.com/Moving-AI/virtual-walk
工作原理
PoseNet已與LSTM模型結合在一起,可以推斷出人正在執行的動作。 一旦檢測到動作,就將其傳遞給控制器,並以此與Google街景進行互動。
1 . 打開Selenium Firefox窗口。
2 . 通過使用網路攝影機,系統可以拍攝將要進行行走的四個主要動作之一的照片:
-
站立
-
行走
-
右轉
-
左轉
3 . 對於每張拍攝的照片,PoseNet將會推斷出影像中關節的位置。
4 . 從必須滿足對所檢測到的關節的置信度的某些考慮因素的幀開始,每組5幀。 缺少關節推斷是在第一幀後面的幀中進行的。
5 . 每組幀都被傳遞到帶有FF神經網路的LSTM模型,並預測動作。
6 . 預測的動作將被傳遞給Selenium控制器,並在打開的Firefox窗口中實現該動作
另外,還有另一個模型可用於運行該程式。 代替LSTM,將計算5幀組中所有幀的關節速度,並將其與關節位置一起傳遞到PCA和FF神經網路以預測動作。 默認模型是LSTM,因為我們認為它在方法上是正確的,並且是精度最高的模型。
由於動作預測(取決於主機的規格)可能會比平均步行速度快得多,因此預測動作只能每0.5秒執行一次,當然了,這個參數是可以自定義的。
示例
從下面動圖中可以看出,項目可以從攝影機捕獲的影像中推斷出骨骼,並預測執行動作。
(原圖地址://github.com/Moving-AI/virtual-walk/raw/master/readme_resources/Paris.gif )
安裝與使用
請注意,要想使用Virtual Walks,必須要有一個網路攝影機,因為實際呈現的動作是從它拍攝的幀中預測出來的。
建議將其安裝在最新的Python 3.7環境中,以避免出現問題和版本衝突。
安裝運行ResNet所需的tensorflowjs:
pip install tensorflowjs
按照 tfjs-to-tf 中的步驟克隆並安裝tensorflowjs圖形模型轉換器
克隆git倉庫
git clone //github.com/Moving-AI/virtual-walk.git
通過運行以下指令安裝依賴項
pip install -r requirements.txt
安裝Firefox並下載 Geckodriver。 然後在「 driver_path」選項下的config_resnet.yml中指定路徑。
通過運行 download_models文件下載使用的模型。 該腳本將下載PoseNet模型(MobileNet和ResNet,輸出步幅分別為16和32),LSTM,PCA,縮放器和神經網路。 可以在下面找到單獨下載模型的鏈接。
cd virtual-walk python3 download_models.py
最後,你可以運行 execute.py進行嘗試。
python3 execute.py
使用時的注意事項:
-
我們使用該模型的經驗告訴我們,優先選擇稍微明亮的環境,而不是非常明亮的環境。
-
系統對網路攝影機的位置很敏感。
總而言之,畫面應該保持與上面的動圖中顯示的位置相近的位置。
模型連接:
訓練
由於我們缺乏訓練數據和計算能力,訓練的部分可能是這個項目中最薄弱的部分。 我們的培訓數據生成過程包括40分鐘的錄音。 在每個影片中,一個人出現了在特定時間段內執行一項特定操作的情況。 正如將在後續步驟部分中討論的那樣,儘管具有工作系統,但我們的模型傾向於過擬合。 訓練數據的示例如下所示。
(如果無法查看,請戳原圖地址: //github.com/Moving-AI/virtual-walk/raw/master/readme_resources/Walking.gif )
我們訓練過的模型以及生成示例的模型都可以通過download_models文件下載。
如果有人想訓練另一個LSTM模型,可以提供 DataProcessor類。它可以處理文件夾中的影片,從labels.txt文件中讀取有效的幀號,並生成帶有訓練示例的CSV文件。該文件可以在 train.py 中使用,以生成新的LSTM模型。此模型的路徑將傳遞給WebcamPredictor類,系統將使用此新模型。
下一步優化的點
-
生成更多的訓練數據。 在這個項目中,我們試圖獲得可以視為MVP的東西,而魯棒性從來都不是主要目標。 從「培訓」部分可以看出,該模型似乎並不過分擬合,即使知道LSTM非常傾向於過度擬合。 但是,培訓和測試數據非常相似,因為影片是人們在做「循環」動作。 因此,我們希望該模型具有無法在更多影片中檢測到的潛在過度擬合現象。 在不同的光照條件下錄製更多影片可能會使該模型更加健壯和一致。
-
儘管是對稱動作,但仍無法以相同的精度預測向右和向左轉彎。 在轉彎預測中,可以使用坐標的鏡面反射使其更加一致。
項目作者
版權許可
該項目遵循MIT許可。有關更多詳細資訊,請查看://github.com/Moving-AI/virtual-walk/blob/master/LICENSE