跳轉至主要內容
GeneC 日誌

透過 WSL2 在 Windows 執行 WebODM

前言

近期接獲友人求救使用航拍影像建立 3D 模型相關事宜,搜尋之後發現 WebODM 這套工具可以導入航拍影像,並產製為正射影像、點雲、高程檔及 3D 模型等: WebODM 官方網站

在官網可以看到安裝 WebODM 有兩種途徑

WebODM 安裝選項

這篇文章將記錄手動在 Windows 11 作業系統安裝 WSL2、Docker Engine、下載 WebODM、執行與關閉 WebODM 的詳細過程。

您可以透過目錄快速前往各步驟。

步驟一:啟動 Windows 子系統 Linux 版並安裝發行版

滑鼠右鍵點擊工具列上的「Windows 圖標」,再點擊「終端機」。

輸入以下指令,Windows 會自動開始安裝 WSL2 及預設的 Ubuntu 發行版。
若彈出視窗詢問「您是否要允許此 App 變更您的裝置?」,請點擊「是」。

wsl --install

關於發行版
wsl --install 指令預設會安裝 Ubuntu,
若想改用其他發行版,需輸入 wsl --install -d <發行版名稱>

等待終端機顯示安裝成功:

若終端機要求您重新開機,請按照指示操作:

重新啟動後稍待片刻,終端機應會自動跳出視窗,並繼續完成安裝程序。

當出現「Enter new UNIX username」時,請隨意設定使用者名稱,不必與 Windows 使用者名稱相符:

接著設定密碼(請務必牢記密碼):

執行完上述步驟後,代表您已完成 WSL2 環境設定:

步驟二:安裝 Docker Engine

新增 Docker 的官方 GPG 金鑰:

sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

新增 Docker 套件庫至 Apt 來源清單:

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

執行指令後您會被要求輸入密碼(您在步驟一設定的密碼):

安裝 Docker 及相關套件:

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

輸入 Y 確認安裝:

測試安裝是否成功:

sudo docker run hello-world

將自己加入 docker 使用者群組,如此一來以後執行 docker 相關指令,就不必在指令前方加上 sudo:

sudo usermod -aG docker $USER
newgrp docker

實際測試不加 sudo 執行 docker 指令:

docker run hello-world

步驟三(非必要):安裝 NVIDIA Container Toolkit

WebODM 支援 GPU 加速,若您的電腦有配備 NVIDIA 顯示卡,執行此步驟有助於提升執行效率。

首先新增 NVIDIA Container Toolkit 的 GPG 金鑰,並新增套件庫至 Apt 來源清單:

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

安裝 NVIDIA Container Toolkit:

sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit

設定 Docker Runtime:

sudo nvidia-ctk runtime configure --runtime=docker

重新啟動 Docker 服務:

sudo systemctl restart docker

執行範例負載,測試 NVIDIA Container Toolkit 是否安裝成功:

sudo docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi

若有成功安裝,您會看到類似下方螢幕截圖的畫面,輸出顯示卡相關資訊:

步驟四:下載 WebODM 至本機儲存空間

安裝 Git(通常已預先安裝):

sudo apt install git

輸入以下指令,將 WebODM 下載至本機儲存空間:

git clone https://github.com/OpenDroneMap/WebODM --config core.autocrlf=input --depth 1

下載完成後,切換工作目錄至 WebODM:

cd WebODM

步驟五:啟動並初始化 WebODM

請確保您目前的工作目錄為 WebODM,若不是,請先在終端機輸入「cd WebODM/」進行切換。

輸入指令以啟動 WebODM:

./webdom.sh start --gpu

注意
若您沒有安裝 NVIDIA Container Toolkit,請刪除 --gpu 參數,否則 WebODM 將無法正常啟動。

啟動腳本會自動開始下載相關容器,請稍待片刻:

完成後會顯示「 Congratulations! └@(・◡・)@┐」,如下圖所示:

請開啟瀏覽器並造訪「http://localhost:8000/」,即可顯示 WebODM 初始頁面:

設定帳號與密碼後,點擊「Create Account」,就可以開始使用 WebODM 了:

WebODM 基本操作

匯入影像並製作模型

在步驟五建立完帳號密碼後,就可以開始建立模型了。

在 WebODM 首頁會看到畫面中有已經預先建立好的專案「First Project」,請點擊右方的「選擇影像和GCP」:

此時會跳出視窗,選取所有您需要使用的航拍影像,並點擊「開啟」:

開啟影像後,WebODM 會自動分析定位資訊並呈現在地圖上。您可以依照任務需求調整各選項,接著按「再檢視」、「開始處理」:

WebODM 會上傳您的航拍影像並開始處理:

WebODM 是在您電腦上的 WSL2 環境中執行,此處的「上傳」您可以理解為將已選擇的航拍影像「複製」一份到 WSL2 中,實際上不會被上傳到任何網際網路上的第三方伺服器。

處理時間受檔案多寡、選項設定而有所不同。執行時可以開啟「任務輸出」檢視進度:

處理完成後,可直接在瀏覽器內預覽 3D 模型:

建議將「材質貼附模型」選項內的「顯示模型」勾選,並將「Appearance」內的「Splat Quality」調整為 High Quality,會有比較好的預覽效果:

也可以下載處理好的模型,匯入到其他軟體進行後續編輯及利用:

正確地關閉 WebODM

若任務結束您想關閉 WebODM,請使用下列方法:

當所有容器皆顯示「Stopped」或「Removed」代表已關閉完成。

再次執行 WebODM

只需在終端機輸入步驟五的啟動指令即可再次啟動 WebODM。
請確保您的執行環境為 WSL2 的 Ubuntu,而非 Windows PowerShell,且工作目錄為 ~/WebODM/

參考文件