detectron2安装(ubuntu)及训练自定义数据集(maskrcnn)

本文档详细介绍了在Ubuntu系统中如何搭建Detectron2环境,包括创建虚拟环境、解决gcc版本问题,以及安装依赖。接着,演示了测试预训练模型的过程,并指导如何将数据集转换为COCO格式,注册自定义数据集。在训练自定义数据集时,还解决了可能出现的模块找不到错误。最后,讨论了在推理阶段可能遇到的类别顺序不一致问题及其解决方案。
摘要由CSDN通过智能技术生成

目录

环境搭建

测试demo

自定义数据集注册

训练自己的数据集

推理图片

常见问题


环境搭建

1、创建虚拟环境

conda create -n det-maskrcnn python=3.7

2、进入环境安装依赖包

conda activate det-maskrcnn    # 进入虚拟环境
pip install opencv-python matplotlib cython tensorboardX   
conda install pytorch==1.7.0 torchvision==0.8.0 torchaudio==0.7.0 cudatoolkit=10.1 -c pytorch  # 根据自己电脑情况到官网https://pytorch.org/安装
# 需要注意detectron2不同版本对pytorch版本要求不同,安装前可先查看detectron2的setup.py文件

下载cocoapi放到项目目录下
cd cocoapi/PythonAPI
python setup.py build_ext install

安装detectron2,回到detectron2根目录
python -m pip install -e .

可能出现问题:

报错:ERROR: Command errored out with exit status 1: /root/miniconda3/envs/det-maskrcnn/bin/python -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/root/workspace/maskrcnn/detectron2-maskrcnn/setup.py'"'"'; __file__='"'"'/root/workspace/maskrcnn/detectron2-maskrcnn/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' develop --no-deps Check the logs for full command output.

原因:gcc版本有问题,卸载重新安装


测试demo

python demo/demo.py --config-file configs/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_1x.yaml --input demo/demo.jpg --opts MODEL.WEIGHTS weights/model_final_r50_fpn_1x.pkl

预训练模型可以通过官方的 MODEL_ZOO 下载。


自定义数据集注册

1、将自己的数据集转换为coco格式,并按照以下格式放置数据集

datasets
   -| coco
      -| annotations      # 存放注释文件
          -| instances_train2017.json
          -| instances_val2017.json
      -| train2017        # 存放训练图片
      -| val2017          # 存放验证图片

2、在train_net.py的基础上,对其进行更改并另存为train.py文件

import logging
import os
from collections import OrderedDict
import torch

import detectron2.utils.comm as comm
from detectron2.checkpoint import DetectionCheckpointer
from detectron2.config import get_cfg
from detectron2.data.datasets import load_coco_json
from detectron2.data import MetadataCatalog, DatasetCatalog
from detectron2.engine import DefaultTrainer, default_argument_parser, default_setup, hooks, launch
from detectron2.evaluation import (
    CityscapesInstanceEvaluator,
    CityscapesSemSegEvaluator,
    COCOEvaluator,
    COCOPanopticEvaluator,
    DatasetEvaluators,
    LVISEvaluator,
    PascalVOCDetectionEvaluator,
    SemSegEvaluator,
    verify_results,
)
from detectron2.modeling import GeneralizedRCNNWithTTA
from detectron2.data.datasets import register_coco_instances


# 单GPU
os.environ["CUDA_VISIBLE_DEVICES"] = "0"
#声明类别,尽量保持
CLASS_NAMES = ["bv", "rb"]
DATASET_CATEGORIES = [
    {"name": "bv", "id": 1, "isthing": 1, "color": [220, 20, 60]},
    {"name": "rb", "id": 2, "isthing": 1, "color": [219, 142, 185]},
]
# 声明数据集的子集
PREDEFINED_SPLITS_DATASET = {
    "coco_my_train": ("./datasets/coco/train2017", "./datasets/coco/annotations/instances_train2017.json"),
    "coco_my_val": ("./datasets/coco/val2017", "./datasets/coco/annotations/instances_val2017.json"),
}
# 注册数据集
def register_dataset():
    """
    purpose: register all splits of dataset with PREDEFINED_SPLITS_DATASET
    """
    for key, (image_root, json_file) in PREDEFINED_SPLITS_DATASET.items():
        register_dataset_instances(name=key,
                                   metadate=get_dataset_instances_meta(),
                           
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值