MMdetection_part1

[物件偵測教學]ubuntu22.04+940mx+MMdetction環境配置教學

#GIS #遙測 #衛星影像 #物件偵測 #python #API #cuda

[物件偵測教學]ubuntu22.04+940mx+MMdetction環境配置教學

對於空間資訊領域來說,近年來基於深度學習技術所發展的各類電腦視覺技術,如影像分類、物件偵測、語意分割等,對於遙測影像的判釋有相當多的加值應用,像是災害偵測、地表應用分類等、道路線提取、船舶偵測等,例如下圖(右)可以搭配UAV影像進行地表物體進行定位及分類。
今天則介紹一種筆者較為熟悉的物件偵測開源項目「MMdetection」,當初筆者論文即是透過該項目訓練Faster-RCNN模型搭配SAR雷達影像針對地表特定目標進行偵測,本系列第一篇將簡單介紹相關環境配置步驟。

圖片來源:MMdetction Github

1.什麼是MMdetction

MMDetection 是 OpenMMLab 開發的一個開源物件偵測工具箱。它基於 PyTorch 實現,支持各種物件偵測算法,包括 Faster R-CNN、Mask R-CNN、Cascade R-CNN 和 RetinaNet。MMDetection 還提供豐富的訓練和推理功能,包括分布式訓練、多 GPU 推理和模型微調。 MMDetection 已在 COCO 和 PASCAL VOC 等物件偵測數據集上取得了最先進的結果。它也被廣泛應用於工業和學術領域,包括自動駕駛、人臉識別和物體分割。

以下是 MMDetection 的一些主要特點:

  • 基於 PyTorch 實現,易於使用和擴展
  • 支持各種物件偵測算法
  • 提供豐富的訓練和推理功能
  • 支援在 COCO 和 PASCAL VOC 等數據集格式
  • 被廣泛應用於工業和學術領域

—-更詳細的資料可以參考MMdetction的官方教學以及Github

2.MMdection環境配置(以Ubuntu22.04+940mx為例)

MMDetection官方建議採用Linux系統進行運行,但使用Windows系統也可以只是可能會遇到一些非預期的Bug,因此如果採用Windows系統的的話,可以考慮使用Windows內建的Linux子系統「WSL」,以下採用ubuntu22.04版進行環境配置

2.1 安裝Anaconda

首先我們要先建構Python環境,這邊建議採用Anaconda進行初始環境的建立,可以到官網安裝最新版本

下載完後可以使用bash指令在終端機中指定剛剛下載的檔案安裝Anaconda

bash Anaconda3-(你的版本)-Linux-x86_64.sh

2.2 建構給MMdetection用的虛擬環境

安裝Anaconda後,建議新建一個虛擬環境專門給MMtection使用,這樣可以避免日後不必要的依賴項衝突

conda create --name openmmlab python=3.8 -y
conda activate openmmlab

2.3 安裝Pytorch以及相關的Cuda依賴庫

這邊是最容易出問題的步驟,需要根據你自身的顯示卡型號找尋匹配的Pytorch版本以及Cuda版本進行安裝,如果版本衝突則無法正常運行,這邊以Geforce 940MX 筆電的顯示卡為例(這邊採用官方最新版的驅動程式-Driver Version: 535.86.05),其搭配的CUDA版本為10.2 Pytorch則支援1.12,不同版本的安裝指令可以在這裡找到

##先輸入以下指令確定顯卡驅動是否正確安裝
$ nvidia-smi 
顯示卡資源資訊
如果顯卡驅動正確安裝,會呈現上圖的顯示卡資源資訊
##確定顯卡驅動安裝正確後可以用下列指令進行pytorch+cuda的安裝
conda install pytorch==1.12.0 torchvision==0.13.0 torchaudio==0.12.0 cudatoolkit=10.2 -c pytorch

2.4 安裝MMdetection依賴庫

MMdetection的依賴包含了MMCV、mmengine等,可以藉由先安裝openmin後依序安裝,由於安裝MMCV、mmengine會用到Pytorch函式庫,因此一定要依照上面的步驟先安裝好Pytorch,根據以下指定會依序安裝openmin->mmengine->mmcv->mmdet等

pip install -U openmim
mim install mmengine
mim install "mmcv>=2.0.0"
mim install mmdet

2.5 驗證安裝

接下來我們來驗證各項安裝是否正確,首先可以驗證Pytorch+cuda的安裝

驗證各項安裝
如果正確安裝則會如上圖

3.MMdetection Demo測試

則邊採用官網提供的測試資料進行模型推演測試。

##先透過min 下載測試需要用的模型以及配置文件
mim download mmdet --config rtmdet_tiny_8xb32-300e_coco --dest .
下載完成後可以看到上圖的兩個檔案

利用以下程式碼進行demo圖片的推演,result會返回包含 DetDataSample 的列表,預測結果則在 pred_instance 中,其中包含偵測框的座標以及得分

from mmdet.apis import init_detector, inference_detector

config_file = 'rtmdet_tiny_8xb32-300e_coco.py'
checkpoint_file = 'rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth'
model = init_detector(config_file, checkpoint_file, device='cpu')  # or device='cuda:0'
result=inference_detector(model, 'demo/demo.jpg')

可是化結果可以利用下列程式碼:

from mmdet.registry import VISUALIZERS
import mmcv
img=mmcv.imread('demo/demo.jpg',channel_order='rgb')
visualizer = VISUALIZERS.build(model.cfg.visualizer)
visualizer.dataset_meta = model.dataset_meta
# show the results
visualizer.add_datasample(
    'result',
    img,
    data_sample=result,
    draw_gt=False,
    wait_time=0,
)
visualizer.show()

成功推演後的成果如上圖
成功推演後的成果如上圖

這邊加碼測試一下該模型是否可以對於UAV拍攝的船體影像進行船舶偵測,偵測結果如下圖,由於該測試模型並非採用俯瞰視角資料進行訓練,因此基本上無法正確辨識出船體。

船體偵測
分享