全国免费咨询:

13245491521

VR图标白色 VR图标黑色
X

中高端软件定制开发服务商

与我们取得联系

13245491521     13245491521

2018-10-17_资源 | 一个基于PyTorch的目标检测工具箱,商汤联合港中文开源mmdetection

您的位置:首页 >> 新闻 >> 行业资讯

资源 | 一个基于PyTorch的目标检测工具箱,商汤联合港中文开源mmdetection 机器之心整理 参与:路、思 近日,商汤和港中文联合开源了 mmdetection,这是一个基于 PyTorch 的开源目标检测工具包,属于香港中文大学多媒体实验室 open-mmlab 项目的一部分。该工具包支持 Mask RCNN 等多种流行的检测框架,读者可在 PyTorch 环境下测试不同的预训练模型及训练新的检测分割模型。 项目地址:https://github.com/open-mmlab/mmdetection 根据 GitHub 项目所述,mmdetection 的主要特征可以总结为以下几个方面: 模块化设计:你可以通过连接不同组件轻松构建自定义目标检测框架。 支持多个框架,开箱即用:该工具包直接支持多种流行的检测框架,如 Faster RCNN、Mask RCNN、RetinaNet 等。 高效:所有基础边界框和掩码运算都在 GPU 上运行。不同模型的训练速度大约比 FAIR 的 Detectron 快 5% ~ 20%。 当前最优:这是 MMDet 团队的代码库,该团队赢得了 2018 COCO 检测挑战赛的冠军。 除了 mmdetection,研究者们还开源了用于计算机视觉研究的 mmcv 库,mmdetection 很多算法的实现都依赖于 mmcv 库。 此次项目的参与者之一,香港中文大学陈恺博士介绍说:「mmcv 和 mmdetection 同属于 open-mmlab 项目,这个项目会将我们 lab 的一些 research project 有计划、系统性地开源。mmcv 是一个基础库,主要分为两个部分,一部分是和 deep learning framework 无关的一些工具函数,比如 IO/Image/Video 相关的一些操作,另一部分是为 PyTorch 写的一套训练工具,可以大大减少用户需要写的代码量,同时让整个流程的定制变得容易。」 对比 Detection 据陈恺博士介绍,10 月 12 日商汤正式开源了两个项目,即 mmcv 和 mmdetection: mmdetection 是基于 MMDet 队伍 COCO 比赛(Detection 2018 winner)时的 codebase 重构,先放一张 test-dev 的结果。 mmdetection 原计划九月底 release,由于某些不可抗力(比如拖延症)延迟到了现在,感觉如释重负。第一个版本中实现了 RPN、Fast R-CNN、Faster R-CNN、Mask R-CNN,近期还计划放出 RetinaNet 和 Cascade R-CNN。(如果由于赶 CVPR 跳票了,请不要介意,介意也不会 release 的。) 先简单介绍一下和 Detectron 的对比 performance 稍高 训练速度稍快 所需显存稍小 但更重要的是,基于 PyTorch 和基于 Caffe2 的 code 相比,易用性是有代差的。成功安装 Detectron 的时间,大概可以装好一打的 mmdetection 吧。 当然 Detectron 有些优势也很明显,作为第一个全面的 detection codebase,加上 FAIR 的金字招牌,关注人数和用户很多(虽然吐槽也比较多),release 的模型也比较全面。我们也在努力扩充 model zoo,奈何人力和算力还是有很大差距,所以还需要时间。 具体说说上面提到的三个方面吧。首先是 performance,由于 PyTorch 官方 model zoo 里面的 ResNet 结构和 Detectron 所用的 ResNet 有细微差别(mmdetection 中可以通过 backbone 的 style 参数指定),导致模型收敛速度不一样,所以我们用两种结构都跑了实验,一般来说在 1x 的 lr schedule 下 Detectron 的会高,但 2x 的结果 PyTorch 的结构会比较高。 速度方面 Mask R-CNN 差距比较大,其余的很小。采用相同的 setting,Detectron 每个 iteration 需要 0.89s,而 mmdetection 只需要 0.69s。Fast R-CNN 比较例外,比 Detectron 的速度稍慢。另外在我们的服务器上跑 Detectron 会比官方 report 的速度慢 20% 左右,猜测是 FB 的 Big Basin 服务器性能比我们好? 显存方面优势比较明显,会小 30% 左右。但这个和框架有关,不完全是 codebase 优化的功劳。一个让我们比较意外的结果是现在的 codebase 版本跑 ResNet-50 的 Mask R-CNN,每张卡(12 G)可以放 4 张图,比我们比赛时候小了不少。 除了陈恺博士在知乎上的回答,mmdetection 的 GitHub 项目页面上还有很多实现性能与对比数据: 1. 性能 开发者报告了使用使用 caffe-style 和 pytorch-style ResNet 骨干网络的结果,前者的权重来自 Detectron 中 MODEL ZOO 的预训练模型,后者的权重来自官方 model zoo。 2. 训练速度 训练速度的单位是 s/iter,数值越低代表速度越高。 3. 推断测试 推断速度的单位是 fps (img/s),数值越高代表效果越好。 测试与训练 首先安装 mmdetection 需要以下环境: Linux (tested on Ubuntu 16.04 and CentOS 7.2) Python 3.4+ PyTorch 0.4.1 and torchvision Cython mmcv 使用预训练模型进行推断 1. 测试数据集 开发者允许在一块 GPU 上运行一或多个进程,如在 8 块 GPU 运行 8 个进程或 16 个进程。当单个进程的 GPU 工作负载并不是很大时,运行多个进程将加速测试,这由参数 --proc_per_gpu PROCESS_NUM 指定。 测试和保存结果: pythontools/test.pyCONFIG_FILECHECKPOINT_FILE--gpusGPU_NUM--outOUT_FILE 要想执行测试后的评估,你需要添加 --eval EVAL_TYPES。支持类型包括: proposal_fast:使用 mmdetection 的代码求 proposal 的召回率。(应该可以得到和官方估计同样的结果。) proposal:使用 COCO 提供的官方代码求 proposal 的召回率。 bbox:使用 COCO 提供的官方代码求 box AP 值。 segm:使用 COCO 提供的官方代码求 mask AP 值。 keypoints:使用 COCO 提供的官方代码求 keypoint AP 值。 例如,估计使用 8 个 GPU 的 Mask R-CNN,并将结果保存为 results.pkl: pythontools/test.pyconfigs/mask_rcnn_r50_fpn_1x.pyCHECKPOINT_FILE--gpus8--outresults.pkl--evalbboxsegm 在测试过程中可视化结果同样很方便,只需添加一个参数 --show: pythontools/test.pyCONFIG_FILECHECKPOINT_FILE--show 2. 测试图像 开发者提供了一些高级 api 来测试图像: importmmcv frommmcv.runnerimportload_checkpoint frommmdet.modelsimportbuild_detector frommmdet.apisimportinference_detector,show_result cfg=mmcv.Config.fromfile('configs/faster_rcnn_r50_fpn_1x.py') cfg.model.pretrained=None #constructthemodelandloadcheckpoint model=build_detector(cfg.model,test_cfg=cfg.test_cfg) _=load_checkpoint(model,'https://s3.ap-northeast-2.amazonaws.com/open-mmlab/mmdetection/models/faster_rcnn_r50_fpn_1x_20181010-3d1b3351.pth') #testasingleimage img=mmcv.imread('test.jpg') result=inference_detector(model,img,cfg) show_result(img,result) #testalistofimages imgs=['test1.jpg','test2.jpg'] fori,resultinenumerate(inference_detector(model,imgs,cfg,device='cuda:0')): print(i,imgs[i]) show_result(imgs[i],result) 训练模型 mmdetection 使用 MMDistributedDataParallel 和 MMDataParallel 分别实现分布式训练和非分布式训练。 开发者建议在单个机器上也要使用分布式训练,因为它速度更快,而非分布式训练可以用于 debug 或其他目的。 1. 分布式训练 mmdetection 潜在支持多种 launch 方法,如 PyTorch 的内置 launch utility、 slurm 和 MPI。 开发者使用 PyTorch 内置的 launch utility 提供训练脚本: ./tools/dist_train.shCONFIG_FILEGPU_NUM[optionalarguments] 支持的参数有: --validate:训练过程中每 k(默认值为 1)个 epoch 执行估计。 --work_dir WORK_DIR:如果指定,配置文件中的路径将被重写。 2. 非分布式训练 pythontools/train.pyCONFIG_FILE--gpusGPU_NUM--work_dirWORK_DIR--validate 知乎问答参考链接:https://www.zhihu.com/question/294578141

上一篇:2022-08-15_文化科技成果应用的三大趋势 下一篇:2024-05-21_VSCode深度配置 - settings.json

TAG标签:

18
网站开发网络凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设网站改版域名注册主机空间手机网站建设网站备案等方面的需求...
请立即点击咨询我们或拨打咨询热线:13245491521 13245491521 ,我们会详细为你一一解答你心中的疑难。
项目经理在线

相关阅读 更多>>

猜您喜欢更多>>

我们已经准备好了,你呢?
2022我们与您携手共赢,为您的企业营销保驾护航!

不达标就退款

高性价比建站

免费网站代备案

1对1原创设计服务

7×24小时售后支持

 

全国免费咨询:

13245491521

业务咨询:13245491521 / 13245491521

节假值班:13245491521()

联系地址:

Copyright © 2019-2025      ICP备案:沪ICP备19027192号-6 法律顾问:律师XXX支持

在线
客服

技术在线服务时间:9:00-20:00

在网站开发,您对接的直接是技术员,而非客服传话!

电话
咨询

13245491521
7*24小时客服热线

13245491521
项目经理手机

微信
咨询

加微信获取报价