本文记载了从Ubuntu18.04的安装到pytorch1.3环境的创建,以及mmdetection v1.2的编译,并最终成功运行了demo.py。其中借鉴了多位博主的博客,感谢!
Ubuntu18.04的安装主要借鉴了
链接: 联想拯救者Y7000P2019双系统安装与卸载(win10+ubuntu18.04+NVIDIA GeForce RTX2060+CUDA10.0+Cudnn+pytorch)
安装过程中注意以下几点:
pytorch1.3环境是在Anoconda中创建的虚拟环境,并且可以将创建的环境应用Pycharm中,主要借鉴:
链接: Ubuntu18.04 安装 Anaconda3
在官网下载对应版本,按照上面的链接就可以下载然后根据链接安装。安装完成后创建pytorch环境,配置为pytorch1.3+cuda10.0+cudnn,命令如下:
pip install torch==1.1.0 torchvision==0.3.0 cudatoolkit==10.0.130
注意安装pytorch时要与安装的cuda版本匹配。在安装之前可先分别设置pip的清华源,在安装的过程中会快很多,配置如下:
链接: pip清华源配置
若要安装其它版本的pytorch,请务必注意是是否与cuda匹配,安装完成后进入python,尝试命令import torch 是否成功。
如果喜欢使用Pycharm编辑器,可按照如下链接安装:
链接: Ubuntu+Pycharm+Anaconda配置
注意,链接中给出的时Ubuntu16.04版本的,安装时需注意选择与自己版本匹配的pycharm。另外,即使时在建立工程之后,也可以更改解释器。
首先需要在github上下载mmdetection v1.2
链接: mmdetection
注意:有的博客是使用如下命令下载的
git clone https://github.com/open-mmlab/mmdetection.git
由于现在mmdetection的版本已经更新到v2.0,如上图所示,因此上述命令会直接下载v2.0版本,本文不建议使用v2.0版本,而是使用已经成熟的v1.2。
下载完成后,以此执行以下命令
#解压到自己想要放置的文件夹,本文放置在新建的pycharm工程文件夹下
unzip -d <下载的mmdetection v1.2> <pycharm工程文件夹下>
#进入文件,注意需切换到新建的pytorch1.3环境下
cd mmdetection-1.2.0/
#安装mmcv,若已经设置pip清华源,会安装很快
pip install mmcv
#安装包
pip install -r requirements.txt
#编译
python setup.py develop
若编译失败,重新编译前需执行
python setup.py clean --all
编译成功!
首先需下载模型链接: (链接)密码:dpyl,如果只是测试,选择 其中的faster_rcnn_r50_fpn_1x_20181010-3d1b3351.pth下载即可,下载后在mmdetection文件夹中新建一个checkpoints文件夹,把下载后的模型放进去就可以了
#在demo文件夹下,新建demo.py,将代码中'testing image you want to detect.jpg',改为自己想要测试的图片
import argparse
import cv2
import torch
from mmdet.apis import inference_detector, init_detector, show_result
def parse_args():
parser = argparse.ArgumentParser(description='MMDetection webcam demo')
parser.add_argument('--config', default='../configs/faster_rcnn_r50_fpn_1x.py', help='test config file path')
parser.add_argument('--checkpoint', default='../checkpoints/faster_rcnn_r50_fpn_1x_20181010-3d1b3351.pth',
help='checkpoint file')
parser.add_argument('--device', type=int, default=0, help='CUDA device id')
parser.add_argument(
'--camera-id', type=int, default=0, help='camera device id')
parser.add_argument(
'--score-thr', type=float, default=0.5, help='bbox score threshold')
args = parser.parse_args()
return args
args = parse_args()
model = init_detector(
args.config, args.checkpoint, device=torch.device('cuda', args.device))
img = 'testing image you want to detect.jpg'
show_img = inference_detector(model, img)
show_result(img, show_img, model.CLASSES, score_thr=args.score_thr)