热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MMDetection安装

一、MMDetection下载:地址环境:anaconda3cuda10.1(10.0应该也可以)python3.6torch1.3opencv4

一、MMDetection

下载:地址

 

环境:


  • anaconda3
  • cuda10.1 (10.0应该也可以)
  • python3.6
  • torch >= 1.3
  • opencv 4.1

 

二、MMCV 安装


1)两种版本:


  • mmcv&#xff1a;精简版&#xff0c;没有CUDA操作&#xff0c;但具有所有其他功能&#xff0c;类似于mmcv <1.0.0。当您不需要那些CUDA操作时&#xff0c;它很有用。
  • mmcv-full&#xff1a;全面&#xff0c;具有完整功能和各种CUDA操作。构建需要更长的时间。

 


2&#xff09;版本选择&#xff1a;

 

3&#xff09;文档&#xff1a;地址

 

4&#xff09;安装&#xff08;我是torch 1.6、MMDetection 2.7 &#xff09;&#xff1a;

pip install mmcv-full&#61;&#61;&#61;1.1.5 -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.6.0/index.html# pip install mmcv-full&#61;&#61;&#61;{mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.6.0/index.html# pip install mmcv-full&#61;&#61;latest&#43;torch1.6.0&#43;cu101 -f https://download.openmmlab.com/mmcv/dist/index.html#其他方式# pip install mmcv
# pip install mmcv-full

PS&#xff1a;mmcv 与 mmcv-full 不能同时存在

pip uninstall mmcv

 

5&#xff09;编译方式安装&#xff08;若上面方式都不行&#xff09;&#xff1a;

git clone https://github.com/open-mmlab/mmcv.git
cd mmcv
MMCV_WITH_OPS&#61;1 pip install -e . # package mmcv-full will be installed after this step

 

6&#xff09;针对 win10 用户&#xff1a;


  •  确保 cl 有效

C:\Users\yuki>cl
用于 x64 的 Microsoft (R) C/C&#43;&#43; 优化编译器 19.00.24245 版
版权所有(C) Microsoft Corporation。保留所有权利。用法: cl [ 选项... ] 文件名... [ /link 链接选项... ]

  • 若不能调用 环境变量添加&#xff1a;

添加内容&#xff08;按实际版本&#xff09;&#xff1a;C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.23.28105\bin\Hostx86\x64

 

 

三、安装 Cpython

pip install cython # conda install cython

 


四、安装 MMDetection

git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetectionpip install -r requirements/build.txt
pip install -v -e . # python setup.py develop# pip install -v -e . -i https://mirrors.aliyun.com/pypi/simple

ps:按自己需要选择版本

ps:若win10的话&#xff0c;管理员 cmd 打开窗口进行操作

 

五、测试

from argparse import ArgumentParserfrom mmdet.apis import inference_detector, init_detector, show_result_pyplot
import mmcv
import cv2
from scipy import ndimage
import numpy as npdef show_result_ins(img,result,class_names,score_thr&#61;0.3,sort_by_density&#61;False,out_file&#61;None):assert isinstance(class_names, (tuple, list))img &#61; mmcv.imread(img)img_show &#61; img.copy()h, w, _ &#61; img.shapecur_result &#61; result[0]seg_label &#61; cur_result[0]seg_label &#61; seg_label.cpu().numpy().astype(np.uint8)cate_label &#61; cur_result[1]cate_label &#61; cate_label.cpu().numpy()score &#61; cur_result[2].cpu().numpy()vis_inds &#61; score > score_thrseg_label &#61; seg_label[vis_inds]num_mask &#61; seg_label.shape[0]cate_label &#61; cate_label[vis_inds]cate_score &#61; score[vis_inds]if sort_by_density:mask_density &#61; []for idx in range(num_mask):cur_mask &#61; seg_label[idx, :, :]cur_mask &#61; mmcv.imresize(cur_mask, (w, h))cur_mask &#61; (cur_mask > 0.5).astype(np.int32)mask_density.append(cur_mask.sum())orders &#61; np.argsort(mask_density)seg_label &#61; seg_label[orders]cate_label &#61; cate_label[orders]cate_score &#61; cate_score[orders]np.random.seed(42)color_masks &#61; [np.random.randint(0, 256, (1, 3), dtype&#61;np.uint8)for _ in range(num_mask)]for idx in range(num_mask):idx &#61; -(idx &#43; 1)cur_mask &#61; seg_label[idx, :, :]cur_mask &#61; mmcv.imresize(cur_mask, (w, h))cur_mask &#61; (cur_mask > 0.5).astype(np.uint8)if cur_mask.sum() &#61;&#61; 0:continuecolor_mask &#61; color_masks[idx]cur_mask_bool &#61; cur_mask.astype(np.bool)img_show[cur_mask_bool] &#61; img[cur_mask_bool] * 0.5 &#43; color_mask * 0.5cur_cate &#61; cate_label[idx]cur_score &#61; cate_score[idx]label_text &#61; class_names[cur_cate]# label_text &#43;&#61; &#39;|{:.02f}&#39;.format(cur_score)center_y, center_x &#61; ndimage.measurements.center_of_mass(cur_mask)vis_pos &#61; (max(int(center_x) - 10, 0), int(center_y))cv2.putText(img_show, label_text, vis_pos,cv2.FONT_HERSHEY_COMPLEX, 0.3, (255, 255, 255)) # greenif out_file is None:return imgelse:mmcv.imwrite(img_show, out_file)def main():parser &#61; ArgumentParser()parser.add_argument(&#39;--img&#39;, help&#61;&#39;Image file&#39;,default&#61;&#39;demo.jpg&#39;)parser.add_argument(&#39;--config&#39;, help&#61;&#39;Config file&#39;,default&#61;&#39;../configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py&#39;)parser.add_argument(&#39;--checkpoint&#39;, help&#61;&#39;Checkpoint file&#39;,default&#61;&#39;../checkpoints/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth&#39;)parser.add_argument(&#39;--device&#39;, default&#61;&#39;cuda:0&#39;, help&#61;&#39;Device used for inference&#39;)parser.add_argument(&#39;--score-thr&#39;, type&#61;float, default&#61;0.3, help&#61;&#39;bbox score threshold&#39;)args &#61; parser.parse_args()# build the model from a config file and a checkpoint filemodel &#61; init_detector(args.config, args.checkpoint, device&#61;args.device)# test a single imageresult &#61; inference_detector(model, args.img)# show the resultsshow_result_pyplot(model, args.img, result, score_thr&#61;args.score_thr)# show_result_ins(args.img, result, model.CLASSES, score_thr&#61;0.25, out_file&#61;"demo_out.jpg")if __name__ &#61;&#61; &#39;__main__&#39;:main()

 

六、已测试系统


  • win10
  • ubuntu18.04
  • Jetpack4.4

推荐阅读
  • CentOS7.8下编译muduo库找不到Boost库报错的解决方法
    本文介绍了在CentOS7.8下编译muduo库时出现找不到Boost库报错的问题,并提供了解决方法。文章详细介绍了从Github上下载muduo和muduo-tutorial源代码的步骤,并指导如何编译muduo库。最后,作者提供了陈硕老师的Github链接和muduo库的简介。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • Commit1ced2a7433ea8937a1b260ea65d708f32ca7c95eintroduceda+Clonetraitboundtom ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 本文详细介绍了git常用命令及其操作方法,包括查看、添加、提交、删除、找回等操作,以及如何重置修改文件、抛弃工作区修改、将工作文件提交到本地暂存区、从版本库中删除文件等。同时还介绍了如何从暂存区恢复到工作文件、恢复最近一次提交过的状态,以及如何合并多个操作等。 ... [详细]
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • Android日历提醒软件开源项目分享及使用教程
    本文介绍了一款名为Android日历提醒软件的开源项目,作者分享了该项目的代码和使用教程,并提供了GitHub项目地址。文章详细介绍了该软件的主界面风格、日程信息的分类查看功能,以及添加日程提醒和查看详情的界面。同时,作者还提醒了读者在使用过程中可能遇到的Android6.0权限问题,并提供了解决方法。 ... [详细]
  • Node.js学习笔记(一)package.json及cnpm
    本文介绍了Node.js中包的概念,以及如何使用包来统一管理具有相互依赖关系的模块。同时还介绍了NPM(Node Package Manager)的基本介绍和使用方法,以及如何通过NPM下载第三方模块。 ... [详细]
  • Carve库在Visual Studio2015中的编译方法及注意事项
    本文介绍了在Visual Studio2015中编译Carve库的方法及注意事项。首先下载Carve库,并使用Visual Studio2015打开,生成后在bin目录下会生成.lib文件。同时,本文还指出了之前在Visual Studio2017中编译的问题,并提醒需要根据对应的平台进行编译,否则会出现报错。详细的步骤和注意事项请参考原文链接。 ... [详细]
  • 1.利用node实现页面实时更新,主要 ... [详细]
  • Sublime P4语法高亮设置
    Github插件链接:p4-syntax-highlighter首先安装PackageControl。进入Package界面,我的目录:U ... [详细]
author-avatar
总裁班的草根
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有