安装使用了一波detectron2 ,感觉没有mmdetection好用…但是还是记一下安装和使用的过程

安装

确保你的python版本是3.6以上

查看你的机器的cuda版本(如果没安装的话安装),通过

nvcc --version

命令查看,然后去安装或者更新相应版本的pytorch。

比如我的cuda版本是10.0的,就执行以下命令安装或者更新对应cuda版本的pytorch,不然会报错

pip3 install torch==1.4.0+cu100 torchvision==0.5.0+cu100 -f https://download.pytorch.org/whl/torch_stable.html

然后继续安装

pip3 install opencv-python

pip3 install cython pyyaml==5.1

pip3 install -U 'git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI'

然后clone

git clone https://github.com/zhanghang1989/detectron2-ResNeSt.git

编译

cd detectron2 && python3 -m pip install -e .

成功!

运行

# You may need to restart your runtime prior to this, to let your installation take effect

# Some basic setup:

# Setup detectron2 logger

import detectron2

from detectron2.utils.logger import setup_logger

setup_logger()

# import some common libraries

import numpy as np

import cv2

import os

import random

from matplotlib import pyplot as plt

# import some common detectron2 utilities

from detectron2 import model_zoo

from detectron2.engine import DefaultPredictor

from detectron2.config import get_cfg

from detectron2.utils.visualizer import Visualizer

from detectron2.data import MetadataCatalog

from detectron2.data import DatasetCatalog

#

from detectron2.data.datasets import register_coco_instances

先要注册你的COCO格式的数据集,比如我有一份训练集train.json和验证集val.json,我在detectron2里注册,并分别命名为mobile_train和mobile_val。

register_coco_instances("mobile_train", {}, "train.json", "/workspace/nas-data/train/")

register_coco_instances("mobile_val", {}, "/workspace/nas-data/fuck_china_moble/mnt/3/fuck_chinMobile_val.json", "/workspace/nas-data/train/")

说明一下

"/workspace/nas-data/train/"

是我的图像所在的绝对路径,比如我的annotations里面的images里面的是这样的

{

"file_name": "train_r1062.jpeg",

"height": 216,

"width": 235,

"id": 1048

},

那么

/workspace/nas-data/train/train_r1062.jpeg

这个就是我的这个图像的路径

可以看一下你的数据集有没有正确注册,通过下面这个代码检查一下

dataset_dicts = DatasetCatalog.get("mobile_val")

balloon_metadata = MetadataCatalog.get("mobile_val")

for d in random.sample(dataset_dicts, 1):

img = cv2.imread(d["file_name"])

visualizer = Visualizer(img[:, :, ::-1], metadata=balloon_metadata, scale=0.5)

vis = visualizer.draw_dataset_dict(d)

plt.figure(figsize=(12,12))

plt.imshow(vis.get_image()[:, :, ::-1])

就会输出

ok我们开始训练

from detectron2.engine import DefaultTrainer

from detectron2.config import get_cfg

import os

cfg = get_cfg()

#配置文件路径

cfg.merge_from_file(

"/root/detectron2-ResNeSt/configs/COCO-Detection/faster_cascade_rcnn_ResNeSt_200_FPN_syncbn_range-scale_1x.yaml"

)

cfg.DATASETS.TRAIN = ("mobile_train",)

cfg.DATASETS.TEST = ()

cfg.DATALOADER.NUM_WORKERS = 2

#预训练文件

cfg.MODEL.WEIGHTS = "/root/detectron2-ResNeSt/faster_cascade_rcnn_ResNeSt_200_FPN_syncbn_range-scale_1x-1be2a87e.pth" # initialize from model zoo

cfg.SOLVER.IMS_PER_BATCH = 4

cfg.SOLVER.BASE_LR = 0.00125 * 1 * 4

cfg.SOLVER.MAX_ITER = (int(34*8*89*2/4))

cfg.SOLVER.STEPS = (int(24*8*89*2/4), int(33*8*89*2/4))

cfg.MODEL.ROI_HEADS.BATCH_SIZE_PER_IMAGE = (

512

) # faster, and good enough for this toy dataset

cfg.MODEL.ROI_HEADS.NUM_CLASSES = 3

#输出权重目录

cfg.OUTPUT_DIR = "/root/detectron2-ResNeSt/output/baseline"

os.makedirs(cfg.OUTPUT_DIR, exist_ok=True)

trainer = DefaultTrainer(cfg)

trainer.resume_or_load(resume=False)

trainer.train()

训练完测试

cfg.MODEL.WEIGHTS = os.path.join(cfg.OUTPUT_DIR, "model_final.pth")

cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.5 # set the testing threshold for this model

cfg.DATASETS.TEST = ("mobile_val", )

predictor = DefaultPredictor(cfg)

from detectron2.utils.visualizer import ColorMode

for d in random.sample(dataset_dicts, 1):

im = cv2.imread(d["file_name"])

outputs = predictor(im)

v = Visualizer(im[:, :, ::-1],

metadata=balloon_metadata,

scale=0.8,

# instance_mode=ColorMode.IMAGE_BW # remove the colors of unsegmented pixels

)

v = v.draw_instance_predictions(outputs["instances"].to("cpu"))

plt.imshow(v.get_image()[:, :, ::-1])

看mAP

from detectron2.evaluation import COCOEvaluator, inference_on_dataset

from detectron2.data import build_detection_test_loader

evaluator = COCOEvaluator("mobile_val", cfg, False, output_dir="./output/")

val_loader = build_detection_test_loader(cfg, "mobile_val")

inference_on_dataset(trainer.model, val_loader, evaluator)

DONE (t=0.05s).

Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.334

Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.655

Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.285

Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.305

Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.469

Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.471

Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.250

Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.462

Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.463

Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.412

Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.551

Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.490

如何在ubuntu下安装detectron2_Ubuntu下detectron2 的安装使用笔记相关推荐

  1. linux下安装虚拟天文馆,如何在Ubuntu 20.04、18.04中安装Stellarium 0.20.0虚拟天文馆

    如何在Ubuntu 20.04.18.04中安装Stellarium 0.20.0虚拟天文馆 几天前发布了Stellarium 0.20.0,它时一个免费开源的桌面虚拟天文馆软件.以下是在Ubuntu ...

  2. 如何在ubuntu 14.04系统下开启nfs网络文件系统

    之前安装过ubuntu 11.04和ubuntu 12.04的系统时,分别研究过如何开启NFS网络文件系统.今天将系统更新到了ubuntu 14.04,发现之前的办法都不行了,有些步骤得更新一下,于是 ...

  3. linux cad 安装教程,如何在Ubuntu 18.04/16.04/Linux中安装FreeCAD 0.18

    FreeCAD,免费和开源3D参数化建模器,最近发布了0.18版,支持Python 3和Qt 5. 以下是如何在Ubuntu 16.04,Ubuntu 18.04和Ubuntu 19.04中安装它. ...

  4. ubuntu18和php视频,如何在Ubuntu 18.04和Debian 9上安装PHP 5.6

    正如您已经知道的那样,Ubuntu 18.04和Debian 9可能安装了PHP 7,并且设计用于PHP 5的应用程序(如vnStat PHP前端,PHP服务器监视器等),可能由于兼容性问题而无法正常 ...

  5. linux编译mesa,如何在Ubuntu 16.04,17.10中安装Mesa 17.3.3

    最新的MESA 3D图形库17.3.3现在在Ubuntu-X team PPA存储库中为Ubuntu 16.04和Ubuntu 17.10提供. Mesa 17.3.3实现了OpenGL 4.5 AP ...

  6. 如何在ubuntu 12.04系统下开启nfs网络文件系统

    之前装ubuntu 11.04的时候,曾经把nfs搞定过了.但是现在换成了ubuntu 12.04,那么就得重新来过一次了. 1.首先得安装nfs: #sudo apt-get install nfs ...

  7. ubuntu安装grafana_如何在Ubuntu 20.04 LTS Focal Fossa上安装Grafana

    步骤1.首先,通过apt在终端中运行以下以下命令,确保所有系统软件包都是最新的. sudo apt update sudo apt upgrade 第2步.在Ubuntu 20.04上安装Grafan ...

  8. 在Ubuntu 16.04 LTS下编译安装OpenCV 4.1.1

    目录 一 安装前的准备 二 编译并安装OpenCV 4.1.1 注:原创不易,转载请务必注明原作者和出处,感谢支持! OpenCV目前(2019-8-1)的最新版本为4.1.1.本文将介绍如何在Ubu ...

  9. 如何在 Ubuntu 20.04 / KylinOS-V10-SP1 上安装 Sublime Text 4

    Sublime Text是一个跨平台的专有源代码编辑器.它提供了大量的功能和插件,极大地帮助了应用程序的开发.Sublime Text 是用 C++ 和 Python 编写的. 显着的功能包括拆分编辑 ...

最新文章

  1. 哈佛博士生教你轻松愉快地读博
  2. 图解GitHub和SourceTree入门教程
  3. C++加号运算符重载
  4. git 提交文件_GIT不小心提交了大文件导致提交失败怎么办?
  5. 「Python基础知识」Python中的封装有什么作用
  6. RCNN学习笔记(1):Rich feature hierarchies for accurate object detection and semantic segmentation
  7. SSM整理笔记3——配置解析
  8. 7 月编程语言指数榜:Python 与 Java 逐渐拉开差距
  9. 3-unit4 postfix+mysql
  10. vb视屏教程计算机二级b,计算机二级vb教程|二级vb视频教程|计算机二级视频教程|快速通过计算机二级VB|猎豹网校视频...
  11. c# socket 服务器端如何判断客户端掉线
  12. 路径详解(绝对路径,相对路径,根相对路径)
  13. 雷军做程序员时写的博客,有点东西!
  14. [原创]记某app内购破解 – 安卓逆向菜鸟的初体验
  15. Uboot 使用串口Kermit协议传输文件
  16. DOM实现元素拖拽,滚轮事件和特效动画缓冲运动处理
  17. MYSQL 删除百万级数据
  18. java set list map_Java中的Set,List,Map
  19. 网络文件夹目前是以其他用户名和密码进行映射的 解决方案
  20. R语言ggplot画双坐标-柱状图、折线图

热门文章

  1. c++ 形参用指针 还是对象_C语言:聚会上,我发现只有我没有对象!
  2. pythonpostapi_python post接口测试第一个用例日记
  3. 安全是一个系统问题包括服务器安全,信息安全技术题库:信息泄露对于Web服务器的危害在于( )。...
  4. python 最小二乘回归 高斯核_最经典的回归模型参数估计算法—最小二乘
  5. 手机蓝牙连不上jimu机器人_蓝牙连接出现问题到解决问题,一件小事,感慨实时逆向思维的重要...
  6. [BUUCTF-pwn]——pwnable_orw
  7. python获取当前文件夹下所有文件名
  8. 使用sphinx为python注释生成docAPI文档
  9. java调用spark_spark中的并行方法调用以及传递方法中使用spark会话
  10. vscode 代码莫名爆红(未定义标识符 “nullptr“)解决办法(VSCode 如何快速打开c_c++_properties.json文件)