ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

MMCV 2.x 中文指南:OpenMMLab 计算机视觉基础库的功能全景与安装实践

MMCV 2.x 中文指南:OpenMMLab 计算机视觉基础库的功能全景与安装实践 人工智能计算机视觉深度学习【免费下载链接】mmcvOpenMMLab Computer Vision Foundation项目地址https://gitcode.com/gh_mirrors/mm/mmcv点击查看免费下载MMCVOpenMMLab Computer Vision Foundation是 OpenMMLab 体系下的计算机视觉基础库为图像/视频处理、可视化、数据变换、CNN 网络结构与高性能 CUDA 算子提供统一实现。本文以仓库根目录的 README_zh-CN.md 为主线结合 安装文档、兼容性文档 与 setup.py 源码系统梳理 MMCV 2.x 的核心功能、完整版mmcv与精简版mmcv-lite的差异、三种主流安装方式、版本演进与分支维护计划帮助你快速上手并在实际项目中正确选型与安装。MMCV 是什么面向计算机视觉的基础设施MMCV 是一个面向计算机视觉的基础库它提供以下核心能力图像和视频处理包括图像/视频的读写、颜色空间变换、几何变换、光流处理等对应 mmcv/image 与 mmcv/video 模块图像和标注结果可视化为检测框、关键点、语义分割掩膜等标注结果提供可视化工具对应 mmcv/visualization 模块图像变换面向数据流水线data pipeline的可组合数据变换类对应 mmcv/transforms 模块这也是 MMCV 2.x 新增的核心模块多种 CNN 网络结构提供卷积层构建、归一化层构建、激活层构建以及ConvModule等常用模块组件对应 mmcv/cnn 模块高质量实现的常见 CUDA 算子提供检测、分割、3D 点云等任务中高频使用的算子如 RoIAlign、NMS、Deformable Convolution、CARAFE 等对应 mmcv/ops 模块。从模块组织看mmcv/init.py 顶层导入了arraymisc、image、transforms、version、video、visualization六个子模块而ops与utils不参与顶层导入——这意味着 MMCV 可以在没有 PyTorch 的环境下使用图像处理等纯 Python 功能只有在需要算子和 PyTorch 相关模块时才依赖 PyTorch。MMCV 支持 Linux、Windows、macOS 三大平台且要求Python 3.7 及以上版本setup.py 中通过python_requires3.7强制约束。在硬件层面从 算子设备支持表 可以看到MMCV 的算子覆盖 CPU、CUDA、MLU寒武纪、MPSApple Silicon、Ascend昇腾 NPU等多种设备。两个版本mmcv 与 mmcv-lite 如何选择MMCV 同时提供两个版本理解二者的差异是安装前最重要的一步版本包名包含内容适用场景完整版mmcv全部特性 丰富的开箱即用 CPU 与 CUDA 算子需要运行检测、分割、3D 点云等依赖自定义算子任务CUDA 可用时强烈推荐精简版mmcv-lite不含 CPU 和 CUDA 算子包含其余全部特性不需要使用算子时如仅做图像处理的轻量选择两个版本的选择有两个关键注意点不要在同一个环境中同时安装两个版本否则可能遇到ModuleNotFound之类的错误。切换版本前必须先卸载另一个版本如果 CUDA 可用强烈推荐安装完整版mmcv以获取全部算子的 GPU 加速能力。从源码层面看这一机制由 setup.py 中的环境变量MMCV_WITH_OPS控制MMCV_WITH_OPS1默认值时包名为mmcv并编译算子扩展ext_modulesget_extensions()MMCV_WITH_OPS0时包名为mmcv-lite且不编译任何算子。因此可以理解为mmcv mmcv-lite 算子扩展。安装 mmcv三种方式详解方式一使用 mim 安装推荐mim 是 OpenMMLab 项目的统一包管理工具它会自动匹配当前环境中 PyTorch 与 CUDA 的版本从预编译包仓库挑选最合适的安装包pip install -U openmim mim install mmcv如需指定 mmcv 版本例如安装 2.0.0mim install mmcv2.0.0安装前的唯一前提是环境中已成功安装 PyTorch可用以下命令验证python -c import torch;print(torch.__version__)如果输出版本信息则表示 PyTorch 已就绪。若你使用的是搭载 Apple Silicon 的 Mac 设备请安装 PyTorch 1.13 版本。如何判断 mim 用的是预编译包还是源码包安装日志会给出明确提示使用预编译包以.whl结尾时日志形如Looking in links: https://download.openmmlab.com/mmcv/dist/cu102/torch1.8.0/index.html Collecting mmcv Downloading https://download.openmmlab.com/mmcv/dist/cu102/torch1.8.0/mmcv-2.0.0-cp38-cp38-manylinux1_x86_64.whl使用源码包以.tar.gz结尾时日志形如Looking in links: https://download.openmmlab.com/mmcv/dist/cu102/torch1.8.0/index.html Collecting mmcv2.0.0 Downloading mmcv-2.0.0.tar.gz如果出现源码包日志说明当前环境的 PyTorch / CUDA 组合没有对应的预编译包此时应改用源码编译安装见从源码编译 MMCV。两个实用安装技巧来自 安装文档如果打算使用opencv-python-headless而非opencv-python例如在无图形界面的服务器或容器中可先安装opencv-python-headless这样安装 mmcv 依赖时会自动跳过opencv-python。这一逻辑在 setup.py 中有对应实现install_requires会通过choose_requirement在opencv-python-headless3与opencv-python3之间择优选择如果安装依赖库时间过长可以指定 PyPI 镜像源mim install mmcv2.0.0rc1 -i https://pypi.tuna.tsinghua.edu.cn/simple方式二使用 pip 直接安装先查看当前环境的 CUDA 与 PyTorch 版本python -c import torch;print(torch.__version__);print(torch.version.cuda)然后根据系统类型、CUDA 版本、PyTorch 版本与 MMCV 版本组合出对应的安装命令。其通用形式为pip install mmcv{mmcv_version} -f https://download.openmmlab.com/mmcv/dist/{cu_version}/{torch_version}/index.html例如 CUDA 11.1、PyTorch 1.9 环境下安装 mmcvpip install mmcv -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html两个需要注意的版本兼容性细节PyTorch 小版本兼容PyTorch 在1.x.0与1.x.1之间通常二进制兼容因此 mmcv 只提供1.x.0的预编译包。如果你的 PyTorch 是 1.8.1可以放心使用为 1.8.0 编译的 mmcv找不到对应版本时如果在版本清单中找不到匹配的 PyTorch / CUDA / mmcv 组合说明没有对应预编译包请转用源码编译安装。安装完成后建议运行官方提供的check_installation.py脚本校验安装是否成功python .dev_scripts/check_installation.py方式三使用 Docker 镜像仓库的 docker/release 目录提供了官方镜像构建配置。将仓库克隆到本地后构建git clone https://github.com/open-mmlab/mmcv.git cd mmcv docker build -t mmcv -f docker/release/Dockerfile .也可以直接从远程仓库构建docker build -t mmcv https://github.com/open-mmlab/mmcv.git#main:docker/releaseDockerfile 默认安装最新的 mmcv如需定制 PyTorch / CUDA / MMCV 版本可通过--build-arg指定docker build -t mmcv -f docker/release/Dockerfile \ --build-arg PYTORCH1.11.0 \ --build-arg CUDA11.3 \ --build-arg CUDNN8 \ --build-arg MMCV2.0.0 .安装 mmcv-lite精简版的一行命令如果你只需要 MMCV 的非算子功能安装精简版同样简单pip install -U openmim mim install mmcv-lite与完整版相同若需使用与 PyTorch 相关的模块仍需预先安装 PyTorch。此外从源码编译精简版的方式是在 build.md 中通过环境变量关闭算子编译MMCV_WITH_OPS0 pip install -e . -v源码编译从源码安装 mmcv 的完整流程当预编译包缺失或需要深度定制时可以走源码编译路线详见从源码编译 MMCV。以 Linux 为例核心步骤为克隆代码仓库git clone https://github.com/open-mmlab/mmcv.git cd mmcv安装ninja和psutil以加快编译速度pip install -r requirements/optional.txt检查编译工具链nvcc --version要求大于等于 9.2无 GPU 可跳过与gcc --version要求大于等于 5.4开始编译预估耗时约 10 分钟pip install -e . -v验证安装python .dev_scripts/check_installation.py源码编译还有一个重要特性MMCV 的算子扩展会根据当前环境自动选择后端。从 setup.py 的get_extensions()可以看出编译时依次检测 CUDA、ROCm、MLU、MPS、NPU、MUSA 等环境并分别加载mmcv/ops/csrc/pytorch/cuda、npu、mlu、musa等目录下的算子实现若检测不到任何加速硬件则只编译 CPU 算子mmcv/ops/csrc/pytorch/cpu。MMCV 2.x 的版本演进包名重命名与组件调整MMCV v2.0.0 正式版于 2023 年 4 月 6 日发布。2.x 版本带来了一系列重大变化详见兼容性文档删除了训练流程相关组件移除了mmcv.runner、mmcv.parallel、mmcv.engine、mmcv.device、mmcv.fileio等模块mmcv.utils中的Config、Registry等类迁移至 MMEngineMMCV 的根注册器也统一注册到 MMEngine 的根注册器新增数据变换模块mmcv.transforms是 2.x 的核心新增提供可组合、可自定义的数据流水线能力包名重命名从 2.x 开始原mmcv更名为mmcv-lite原mmcv-full更名为mmcv同时环境变量MMCV_WITH_OPS的默认值从 0 改为 1。包名变化对安装命令的影响可以直接对照下表MMCV 2.0旧MMCV 2.0新含算子mim install mmcv-full含算子mim install mmcv不含算子mim install mmcv 2.0.0不含算子mim install mmcv-lite需要特别说明的是2.x 的定位是纯计算机视觉基础库训练相关的通用能力由 2022 年 9 月 1 日发布的新一代训练引擎MMEngine承接。MMEngine 提供了更高级且通用的训练器、接口更统一的开放架构以及可定制化程度更高的训练流程因此如果你需要训练深度学习模型应使用 MMEngine MMCV 的组合。当前仓库的版本信息可在 mmcv/version.py 中查看__version__ 2.2.0表明本仓库对应 2.x 主线。分支维护计划读懂 main、1.x、2.x、masterMMCV 同时维护 1.x 与 2.x 两个大版本其分支经历三个阶段阶段时间分支状态说明公测期2022.9.1 - 2023.4.5公测版代码发布在 2.x 分支默认主分支 master 仍对应 1.x 版本master 和 2.x 分支正常迭代兼容期2023.4.6 - 2023.12.312.x 分支重命名为 main 分支并设为默认分支1.x 分支对应 1.x 版本保持对 1.x 的维护与开发但尽量不引入破坏兼容性的改动main 分支正常迭代维护期2024.1.1 - 待定默认主分支 main 为 2.x 版本1.x 分支对应 1.x 版本1.x 分支进入维护阶段不再支持新功能main 分支正常迭代其中2.x 是 main 分支的别名master 是 1.x 分支的别名2.x 与 master 这两个别名分支将在将来被删除。如果你在使用 1.x 版本的项目应关注 1.x 分支的维护动态并规划迁移新项目则应直接基于 main2.x分支或 PyPI 上的 mmcv 2.x 版本。常见问题、贡献与许可证遇到安装或运行问题优先查阅问题解决页面中是否已有解决方案仍未解决可向项目提交 issue参与贡献MMCV 欢迎所有贡献者具体指引见贡献指南中文版见 CONTRIBUTING_zh-CN.md许可证MMCV 主体以 Apache 2.0 许可证发布但部分功能使用其他许可证完整清单见 LICENSES.md。从事盈利性活动前请务必仔细核对该文档。结语从安装到使用的正确姿势总结来说MMCV 2.x 的选型与安装遵循三条主线功能上mmcv 与 mmcv-lite 的差异在于是否包含算子扩展CUDA 可用时优先完整版安装上优先用mim install mmcv自动匹配环境预编译包缺失时转源码编译build.md需要隔离环境时用 Dockerdocker/release/Dockerfile版本上明确 2.xmain 分支与 1.x1.x 分支的定位差异训练能力交由 MMEngine基础视觉能力由 MMCV 提供。基于这套理解你就能在 OpenMMLab 生态MMDetection、MMSegmentation、MMPose、MMOCR 等中正确落地 MMCV并在需要时通过 mmcv/transforms 与 mmcv/ops 源码进一步深入其实现细节。赞分享人工智能计算机视觉深度学习【免费下载链接】mmcvOpenMMLab Computer Vision Foundation项目地址https://gitcode.com/gh_mirrors/mm/mmcv点击查看免费下载相关推荐SQLFluff-rs 核心类型库解读sqlfluffrs_types 的表驱动语法引擎与共享数据模型SQLFluff rs 核心类型库解读sqlfluffrs_types 的表驱动语法引擎与共享数据模型 sqlfluffrs_types 是 SQLFluff人工智能计算机视觉深度学习MMCV 2.x 完全指南OpenMMLab 计算机视觉基础库的模块体系与安装实践MMCV 2.x 完全指南OpenMMLab 计算机视觉基础库的模块体系与安装实践 MMCV 是 OpenMMLab 系列项目MMDetection、MMS人工智能计算机视觉深度学习Vibe 本地语音转写指南从安装到批量处理、GPU 加速的完整上手Vibe 本地语音转写指南从安装到批量处理、GPU 加速的完整上手 Vibe 是一款开源的跨平台桌面应用口号就是 Transcribe on your o人工智能计算机视觉深度学习上一篇 如何一键解放你的阅读笔记微信读书到Notion的终极同步神器下一篇如何快速上手 TBOX多平台 C 库的终极入门指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表