大家好,我是马建仓。
2018年中,香港中文大学多媒体实验室(MMLab)启动了 OpenMMLab 计划。这项计划的初衷是为计算机视觉的一些重要方向建立统一而开放的代码库,并不断把新的算法沉淀其中。当年10月,MMLab实验室开放初版 MMCV 计算机视觉基础库和第一代 MMDetection 物体检测工具箱,这样的举动是整个 OpenMMLab 统一开源体系进化的开端。后来,商汤科技将 OpenMMLab 贡献到了OpenI 启智社区。
OpenMMLab并非一个单独的开源项目,除了在深度学习领域耳熟能详的MMCV 和MMDetection之外,还有许多其他方向的代码库和数据集,且他们都是基于深度学习 PyTorch 框架。
时至今日,OpenMMLab 已经累计发布了超过 15 个算法库,涵盖分类、检测、分割、视频理解等众多算法领域,拥有超过 300 种算法实现和 2000 个预训练模型。五一假期前,OpenMMLab 正式入驻 Gitee。项目地址:gitee.com/open-mmlab。
OpenMMLab 有许多实用的框架。如下:
今天,我们就给大家推荐 OpenMMLab 框架里的三款优质的开源项目:MMDetection,MMSegmentation,MMDeploy,因篇幅问题,其他项目暂时不详细展开,若有对此感兴趣的开发者可前往此处地址一一学习、研究与复现。
01MMDetection
MMDetection是什么?
MMDetection是一个基于 PyTorch 的深度学习目标检测开源工具箱,也是 OpenMMLab 项目的一部分,目前支持 Faster R-CNN、Mask R-CNN、RetinaNet等等。
2018年,这个模型还曾在 COCO Detection 竞赛中拿下了冠军,目前许多深度学习的论文和比赛常会用到这个框架,所以各位开发者直接在大佬们的基础上进行优化完善是较为方便的。
项目地址: gitee.com/open-mmlab/… 开源许可证: Apache 2.0
特点
- 模块化设计
- 算法与模型即插即用
- 占显存小
- 训练速度快
如何安装?
前提: 需版本对应,安装 MMDetection 需要提前安装 MMCV(面向计算机视觉的基础库)。
流程:
- 创建一个 conda 虚拟环境并激活它
conda create -n open-mmlab python=3.7 -y
conda activate open-mmlab
复制代码
- 按照官方说明安装 PyTorch 和Torchvision
例如:
conda install pytorch torchvision -c pytorch
复制代码
- 克隆 MMDetection存储库
git clone https://gitee.com/open-mmlab/mmdetection.git
cd mmdetection
复制代码
- 安装 MMDetection(其他依赖库将自动安装)
pip install mmcv
python setup.py develop # or "pip install -v -e ."
复制代码
验证代码
为了验证是否正确安装了 MMDetection 和所需的环境,可以按照下列运行示例的 Python 代码来初始化检测器并推理一个演示图像。
如果成功安装 MMDetection,则下列代码可以完整地运行。
from mmdet.apis import init_detector, inference_detector
config_file = 'configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py'
# 从 model zoo 下载 checkpoint 并放在 `checkpoints/` 文件下
# 网址为: http://download.openmmlab.com/mmdetection/v2.0/faster_rcnn/faster_rcnn_r50_fpn_1x_coco/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth
checkpoint_file = 'checkpoints/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth'
device = 'cuda:0'
# 初始化检测器
model = init_detector(config_file, checkpoint_file, device=device)
# 推理演示图像
inference_detector(model, 'demo/demo.jpg')
复制代码
演示 Demo:
02MMSegmentation
MMSegmentation是什么?
MMSegmentation是一个基于 PyTorch 的语义分割的工具箱,能够为社区提供灵活的代码工具,供用户复现已有算法并开发自己的新模型。
语义分割是计算机视觉中的一项基础任务,常应用在自动驾驶或者视频编辑领域。
项目地址: gitee.com/open-mmlab/… 开源许可证: Apache 2.0
特点
- 集成统一的工具箱基准
- 模块化设计
- 开箱即用
- 训练速度快,效率高
如何安装?
- 创建一个 conda 虚拟环境并激活它
conda create -n open-mmlab python=3.10 -y
conda activate open-mmlab
复制代码
- 按照官方教程 安装 PyTorch 和 totchvision, 这里 MMSegmentation 使用的是 PyTorch1.11.0 和 CUDA11.3, 开发者们在实操过程种也可以切换至其他版本
conda install pytorch=1.11.0 torchvision cudatoolkit=11.3 -c pytorch
复制代码
- 按照教程安装 MMCV(视觉底层框架) , MMCV 或 MMCV-full 和 MMSegmentation 均兼容,但对于 CCNet 和 PSANet,mmcv-full 里的 CUDA 运算是必须的
在 Linux 下安装 MMCV:
为了安装 MMCV, 我们推荐使用下面的这种预编译好的 MMCV.
pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/{cu_version}/{torch_version}/index.html
复制代码
请替换 url
里面的 {cu_version}
和 {torch_version}
为您想要使用的版本。
注意: MMCV-full 仅在 PyTorch 1.x.0 上面编译, 因为在 1.x.0 和 1.x.1 之间通常是兼容的。如果您MMCV-full 而它通常是可以正常使用的。
例如: 用 CUDA 11.1 and PyTorch 1.11.0
安装使用 MMCV-full, 使用如下命令:
pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu113/torch1.11/index.html
复制代码
此外,也可以采用下面的命令来从源码编译 MMCV (可选)
git clone https://gitee.com/open-mmlab/mmcv.git
cd mmcv
MMCV_WITH_OPS=1 pip install -e . # package mmcv-full, which contains cuda ops, will be installed after this step
# OR pip install -e . # package mmcv, which contains no cuda ops, will be installed after this step
cd ..
复制代码
安装注意: 如果已经安装了 MMCV, 您需要先运行
pip uninstall mmcv
,因为如果 MMCV 和 MMCV-full 被同时安装, 将会报错ModuleNotFoundError
。
在 Windows 下安装 mmcv (有风险):
- MMCV 的安装需要本地 C++ 编译工具,例如
cl.exe
。 请添加编译工具至%PATH%
。 - 如果您已经在电脑上安装好Windows SDK 和 Visual Studio,cl.exe 的一个典型路径看起来如下:
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.26.28801\bin\Hostx86\x64
复制代码
- 从 github 克隆 mmcv 并通过 pip 安装:
git clone https://gitee.com/open-mmlab/mmcv.git
cd mmcv
pip install -e .
复制代码
或直接:
pip install mmcv
复制代码
注意: MMCV-full 并不完全在 Windows 上支持。
- 安装 MMSegmentation
pip install mmsegmentation # 安装最新版本
复制代码
或者
pip install git+https://gitee.com/open-mmlab/mmsegmentation.git # 安装 master 分支
复制代码
- 如果想安装 dev 模式的 MMSegmentation, 运行如下命令:
git clone https://gitee.com/open-mmlab/mmsegmentation.git
cd mmsegmentation
pip install -e . # 或者 "python setup.py develop"
复制代码
如何验证?
开发者在复现过程中若是想要验证 MMSegmentation 和它所需要的环境是否正确安装,可以使用样例 Python 代码来初始化一个 segmentor 并推理一张 Demo 图像,若是完成 MMSegmentation 的安装时,下列代码应该可以成功运行。
from mmseg.apis import inference_segmentor, init_segmentor
import mmcv
config_file = 'configs/pspnet/pspnet_r50-d8_512x1024_40k_cityscapes.py'
checkpoint_file = 'checkpoints/pspnet_r50-d8_512x1024_40k_cityscapes_20200605_003338-2966598c.pth'
# 从一个 config 配置文件和 checkpoint 文件里创建分割模型
model = init_segmentor(config_file, checkpoint_file, device='cuda:0')
# 测试一张样例图片并得到结果
img = 'test.jpg' # 或者 img = mmcv.imread(img), 这将只加载图像一次.
result = inference_segmentor(model, img)
# 在新的窗口里可视化结果
model.show_result(img, result, show=True)
# 或者保存图片文件的可视化结果
# 您可以改变 segmentation map 的不透明度(opacity),在(0, 1]之间。
model.show_result(img, result, out_file='result.jpg', opacity=0.5)
# 测试一个视频并得到分割结果
video = mmcv.VideoReader('video.mp4')
for frame in video:
result = inference_segmentor(model, frame)
model.show_result(frame, result, wait_time=1)
复制代码
Demo演示
03MMDeploy
MMDeploy是什么?
这是一个开源的深度学习模型部署工具箱,它以各算法库的模型为输入,并把模型转化为推理后端所要求的模型格式,从而运行在多样化的设备中。
项目模块包含 2 个核心要素:模型转换器(Model Converter)和应用开发工具包(SDK)。
目前支持6个算法库和5种后端推理引擎,后续 MMDeploy 仍将不停迭代。MMDeploy 的诞生不仅打通了从算法模型到应用程序的"最后一公里",同时也打通产学研的边界。
项目地址: gitee.com/open-mmlab/…** Apache-2.0
特点
- 全面对接 OpenMMLab 各算法体系,并提供算法快速落地的通道
- 模型转换框架统一管理、运行效率高、支持多后端
- SDK开发框架可扩展性强
- 输出灵活、开发、多样化,满足不同用户需求
如何安装?
1.下载 MMDeploy 代码仓库
git clone -b master [email protected]:open-mmlab/mmdeploy.git MMDeploy
cd MMDeploy
git submodule update --init --recursive
复制代码
2.按照目标平台,进行编译 因平台不同导致操作差异,开发者们可根据自身目标平台前往mmdeploy.readthedocs.io/zh_CN/lates…,按照说明进行编译。
项目架构图
关于我们
Gitee星球 是 Gitee 旗下的创新研究所。在这里,我们收集整理了 Gitee 上高品质、有意思的开源项目,同时也挖掘 Gitee 项目作者的一手开源故事,邀请优秀的开发者们讲述自己的开源经历,举办有趣的开源活动。
喜欢就点个Star
如果你对本期项目推荐感兴趣,也欢迎各位转发、评论、点个 star。关于 OpenMMLab 的更多信息,开发者们可前往本期微信次条查阅。
如果你对OpenMMLab的系列项目其他的见解,欢迎在后台留言与我们一同讨论。
同时也欢迎给我推荐有趣的开源项目,如果成功收录 Gitee星球将有小礼品噢~