MMDetection環境安裝配置

MMDetection 支持在 Linux,Windows 和 macOS 上運行。它需要 Python 3.7 以上,CUDA 9.2
以上和 PyTorch 1.8 及其以上。

MMDetection 至今也一直更新很多個版本了,但是對于最新的pytorch版本仍然不支持,我安裝的時候仍然多次遇到mmcy與pytorch版本不對應的情況,因此總結以下可用的安裝方案。

1、創建并激活Conda 虛擬環境

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

2、安裝Pytorch

首先查看自己電腦的 CUDA 版本

nvidia-smi

輸出:
在這里插入圖片描述
可以看到當前系統安裝了 NVIDIA 驅動程序(版本 570.124.04),并且有兩個 NVIDIA RTX A5500 GPU,CUDA 版本為 12.8。

我的是 CUDA12.8,但是安裝與 12.8 對應的 Torch 時,后面會出現與 mmcv 版本不匹配的問題,從而導致安裝失敗。

因此,我在這里選擇了 CUDA 11.8 版本的 Torch,pytorch 的下載鏈接在這里(PyTorch 以前版本),往下拉,選擇合適的 pytorch。雖然現在已經到了 2.X 的 PyTorch,但是 mmcv 的版本更新并沒有 PyTorch 快,因此,為了與 mmcv 保持版本對應一致,這里選擇了 2.1.0 版本的 Torch

# CUDA 11.8
conda install pytorch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0 pytorch-cuda=11.8 -c pytorch -c nvidia

安裝成功后可以通過以下命令查看安裝的版本信息:

 conda list torch

可以看到我在虛擬環境中再安裝了一個 PyTorch 版本的 CUDA 版本:
在這里插入圖片描述
驗證安裝是否成功:

python -c "import torch; print(torch.cuda.is_available())"

顯示為 True 則表示安裝成功,若顯示為 False 則未安裝成功,需要排查原因重新安裝。

3、安裝 mmcv

首先要安裝 mimmmengine

pip install -U openmim
mim install mmengine

安裝mmcv這里需要注意一下,因為非常容易出錯,需要選擇合適的版本,選擇版本的地址在這里(mmcv版本),mmcv 建議不要選擇太高,最好在 2.0.0-2.1 之間。因為在上一步的安裝中,我們安裝的是 torch2.1.0 版本,這里一步選擇下拉框中的選擇 cuda11.8torch2.1.x 以及后面 mmcv2.1.0,這幾個一定保持對應,否則后面再安裝完成后測試的時候,會因為版本不對應出錯

mmcv安裝命令:

pip install mmcv==2.1.0 -f https://download.openmmlab.com/mmcv/dist/cu118/torch2.1/index.html

當然這里也可以選擇torch別的版本,截止目前,mmdetection中mmcv支持的最高torch版本是2.1.x

4、安裝 mmdet

方案 a:如果你開發并直接運行 mmdet,從源碼安裝它:

git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection
pip install -v -e .
# "-v" 指詳細說明,或更多的輸出
# "-e" 表示在可編輯模式下安裝項目,因此對代碼所做的任何本地修改都會生效,從而無需重新安裝。

方案 b【推薦】:如果你將 mmdet 作為依賴或第三方 Python 包,使用 MIM 安裝:

mim install mmdet -i https://pypi.tuna.tsinghua.edu.cn/simple

5、驗證安裝

為了驗證 MMDetection 是否安裝正確,我們提供了一些示例代碼來執行模型推理。
步驟 1. 我們需要下載配置文件和模型權重文件。

mim download mmdet --config rtmdet_tiny_8xb32-300e_coco --dest .

下載將需要幾秒鐘或更長時間,這取決于你的網絡環境。完成后,你會在當前文件夾中發現兩個文件 rtmdet_tiny_8xb32-300e_coco.pyrtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth

步驟 2. 推理驗證。
方案 a:如果你通過源碼安裝的 MMDetection,那么直接運行以下命令進行驗證:

python demo/image_demo.py demo/demo.jpg rtmdet_tiny_8xb32-300e_coco.py --weights rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth --device cpu

你會在當前文件夾中的 outputs/vis 文件夾中看到一個新的圖像 demo.jpg,圖像中包含有網絡預測的檢測框。

方案 b:如果你通過 MIM 安裝的 MMDetection,那么可以打開你的 Python 解析器,復制并粘貼以下代碼:

from mmdet.apis import init_detector, inference_detectorconfig_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'
inference_detector(model, 'demo/demo.jpg')

你將會看到一個包含 DetDataSample 的列表,預測結果在 pred_instance 里,包含有檢測框,類別和得分。

如果輸出以下內容,則表示安裝成功了:
在這里插入圖片描述
雖然有個警告,但是不影響,因為沒傳save_dir參數,加上就好了

結束

到這里就算安裝完成了,下次有時間整理下我用MMDetection訓練自己的實例分割數據集,以及一些模型改進優化技巧

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/81435.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/81435.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/81435.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何實現k8s高可用

一、控制平面高可用設計 多主節點部署 ? API Server 冗余:部署至少 3 個 Master 節點,每個節點運行獨立的 API Server,通過負載均衡器(如 Nginx、HAProxy、云廠商 LB)對外提供統一入口。 ? 選舉機制:Sche…

記錄心態和工作變化

忙中帶閑的工作 其實工作挺忙的, 總是在趕各種功能點. 好巧的是iOS那邊因為上架的問題耽擱了一些時間, 從而讓Android的進度有了很大的調整空間. 更巧的是后端那邊因為對客戶端的需求不是很熟悉, 加上Android海外這塊的業務他也是第一次接觸. 所以需要給他留一些時間把各個環節…

JVM 雙親委派機制

一、從 JDK 到 JVM:Java 運行環境的基石 在 Java 開發領域,JDK(Java Development Kit)是開發者的核心工具包。它不僅包含了編譯 Java 代碼的工具(如 javac),還內置了 JRE(Java Run…

java開發之異常

一 結構 Throwable分為Exception和error Exception分為RuntimeException(運行時異常)和其他異常 主動拋出運行時異常和非運行時異常的區別 1、throw RuntimeException(或運行時異常的子類) 編譯時不會報錯。 2、throw Excepti…

MySQL 中 JOIN 和子查詢的區別與使用場景

目錄 一、JOIN:表連接1.1 INNER JOIN:內連接1.2 LEFT JOIN:左連接1.3 RIGHT JOIN:右連接1.4 FULL JOIN:全連接二、子查詢:嵌套查詢2.1 WHERE 子句中的子查詢2.2 FROM 子句中的子查詢2.3 SELECT 子句中的子查詢三、JOIN 和子查詢的區別3.1 功能差異3.2 性能差異3.3 使用場…

2025年第三屆盤古石杯初賽(智能冰箱,監控部分)

前言 所以去哪里可以取到自己家里的智能家居數據呢???? IOT物聯網取證 1、分析冰箱,請問智能冰箱的品牌? [答案格式:xiaomi] Panasonic2、請問智能冰箱的型號? [答案格式&#x…

【強化學習】強化學習算法 - 馬爾可夫決策過程

文章目錄 馬爾可夫決策過程 (Markov Decision Process, MDP)1. MDP 原理介紹2. MDP 建模/實現步驟3. MDP 示例:簡單網格世界 (Grid World) 馬爾可夫決策過程 (Markov Decision Process, MDP) 1. MDP 原理介紹 馬爾可夫決策過程 (MDP) 是強化學習 (Reinforcement L…

用戶現場不支持路由映射,如何快速將安防監控EasyCVR視頻匯聚平臺映射到公網?

一、方案背景? 隨著數字化安防與智能交通管理發展,視頻監控遠程管理需求激增。EasyCVR作為專業視頻融合平臺,具備多協議接入等核心功能,是智能監控的重要工具。但實際部署中,當EasyCVR處于內網且路由器無法進行端口映射時&#…

MODBUS RTU調試助手使用方法詳解

一、軟件簡介 485調試助手是一款常用的串口通信調試工具,專門用于RS-485總線設備的測試、調試和通信監控。它支持多種串口參數設置,提供數據收發功能,是工業現場調試的必備工具之一。 二、軟件安裝與啟動 1. 系統要求 Windows 7/10/11操作…

ECMAScript 2018(ES2018):異步編程與正則表達式的深度進化

1.版本背景與發布 發布時間:2018年6月,由ECMA International正式發布,標準編號為ECMA-262 9th Edition。歷史意義:作為ES6之后的第三次年度更新,ES2018聚焦于異步編程、正則表達式和對象操作的標準化,推動…

【C語言】鏈接與編譯(編譯環境 )

前言: 在前面講解文件操作,了解了文件的類別,文件的打開與關閉,字符讀寫函數, 字符串讀寫函數,格式化輸入輸出函數 在C語言編程中,編譯與鏈接是將源代碼轉化為可執行程序的關鍵步驟。為了詳細…

Java視頻流RTMP/RTSP協議解析與實戰代碼

在Java中實現視頻直播的輸入流處理,通常需要結合網絡編程、多媒體處理庫以及流媒體協議(如RTMP、HLS、RTSP等)。以下是實現視頻直播輸入流的關鍵步驟和技術要點: 1. 視頻直播輸入流的核心組件 網絡輸入流:通過Socket或…

系分論文《論系統需求分析方法及應用》

系統分析師論文范文系列 【摘要】 2022年6月,我作為系統分析師參與了某金融機構“智能信貸風控系統”的建設項目。該系統旨在通過對業務流程的數字化重構,優化信貸審批效率并降低風險。項目涉及信貸申請、資質審核、風險評估、額度審批等核心流程&#x…

stack和queue簡單模擬實現

stackreverse_iteratorqueuepriority_queue仿函數具體代碼 stack Stacks are a type of container adaptor, specifically designed to operate in a LIFO context (last-in first-out), where elements are inserted and extracted only from one end of the container. 上述描…

Linux內核可配置的參數

sysctl -a 命令會列出當前Linux內核所有可配置的參數及其當前值。這些參數允許你在系統運行時動態地調整內核的行為,而無需重新編譯內核或重啟系統。 內容非常多,因為內核有很多可調的方面。我們可以把它們大致分為幾個主要類別: kernel.*: …

【背包dp-----分組背包】------(標準的分組背包【可以不裝滿的 最大價值】)

通天之分組背包 題目鏈接 題目描述 自 01 01 01 背包問世之后,小 A 對此深感興趣。一天,小 A 去遠游,卻發現他的背包不同于 01 01 01 背包,他的物品大致可分為 k k k 組,每組中的物品相互沖突,現在&a…

操作系統:os概述

操作系統:OS概述 程序、進程與線程無極二級目錄三級目錄 程序、進程與線程 指令執行需要那些條件?CPU內存 需要數據和 無極 二級目錄 三級目錄

RAG文本分塊

不論是向量化模型還是大語言模型,都存在輸入長度的限制。對于超過限制的文本,模型會進行截斷,造成語義缺失。分塊可以確保每個文本片段都在模型的處理范圍內,避免重要信息的丟失。 文本分塊的核心原則 高質量分塊的核心原則是&a…

2025 年九江市第二十三屆中職學校技能大賽 (網絡安全)賽項競賽樣題

2025 年九江市第二十三屆中職學校技能大賽 (網絡安全)賽項競賽樣題 (二)A 模塊基礎設施設置/安全加固(200 分)A-1 任務一登錄安全加固(Windows,Linux)A-2 任務二 Nginx 安全策略&…

量子隧穿:PROFINET到Ethernet ip的無損耗協議轉換方案轉

在本季度的生產工作中,我們成功實現了倉儲物流自動化分揀系統中的關鍵技術突破。我們面臨的主要挑戰是將采用EtherNet/IP協議的輸送帶控制器與PROFINET協議的上位系統進行有效通信。通過引入ethernet IP轉PROFINET網關倍訊科技BX-606-EIP,我們實現了輸送…