Facebook detectron2训练faster rcnn

detectron2 训练自己定义好的coco数据集 本文主要介绍如何在colab上训练自己的coco数据集实现目标检测的功能! 使用coco数据集主要的原因时 代码中 有现成的注册数据集等格式,无需自己去定义一个新的函数 1 coco数据集的存放 annotations 主要是存放对应的json文件 train2017主要存放 训练时的图像 val2017主要存放 测试时的图像 2 查看detectron2 的目录 3 基于colab的detectron2训练 3.1 查看设备切换路径、安装等一系列问题 此处无需再安装pyto... 阅读详情

Facebook detectron2训练faster rcnn

detectron2是Facebook开源的一套框架,适用于很多的deep learning task,例如instance segmentation等,本文主要就如何利用detectron2训练faster rcnn,并得到模型,主要描述大体的思路

0. 前期

前期请看官方的教程,大致了解怎么回事
github
colab

1. 安装detectron2

其进行目标检测方法不像github上一些项目,是把hub给clone下来修改,而是一个框架,我们需要安装这个框架。
如何安装,请见这里。
建议直接pip安装,而不是编译安装:
在这里插入图片描述
安装后,还需要opencv等,这里不描述了。

2. 数据集的准备

我们需要准备一个数据集,这个数据集存放在本机的一个位置,然后我们需要用一个列表装下每张图片的信息,每张图片需要用dict方式存储,举例如下:

{
    'file_name': '/exdata3/RuoyuChen/detectron2/VOC2007/JPEGImages/Black_Footed_Albatross_0009_34.jpg', 
    'image_id': 0, 
    'height': 336, 
    'width': 500, 
    'annotations': [
        {
	        'bbox': [139, 30, 292, 294], 
	        'bbox_mode': <BoxMode.XYXY_ABS: 0>, 
	        'category_id': 0, 
	        'iscrowd': 0
        }
    ]
}

这个只是一张图片的字典可视化,具体解释如下:

file_name:图片路径
image_id:图片编号,从0开始依次加1,没有顺序要求
height:图片的高度
width:图片的宽度
annotation:放box信息,1个{}代表一个框
bbox:[xmin,ymin,xmax,ymax]
bbox_mode:固定就好,详细见官方给的例子,在colab上
category_id:类别数字,从0开始
iscrowd:目标检测默认是0就行

然后假如1个图片的json字典像上面所示,我们假设在python中变量叫record,那么总的字典datasets_dict,我们只要每次求得record后,执行datasets_dict.append(record)即可得到一个完整的字典格式。

3. 注册数据集

这里每次训练前都需要执行类似的操作:

DatasetCatalog.register("CUB_train", lambda d=d: train_dataset_dicts)
MetadataCatalog.get("CUB_train").set(thing_classes=classes)

train_dataset_dicts即对应训练的字典。

4. 训练

模仿官方的配置即可

cfg = get_cfg()
    cfg.merge_from_file(model_zoo.get_config_file("COCO-Detection/faster_rcnn_R_50_FPN_3x.yaml"))
    cfg.DATASETS.TRAIN = ("CUB_train",)
    cfg.DATASETS.TEST = ()
    cfg.DATALOADER.NUM_WORKERS = 2
    cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url("COCO-Detection/faster_rcnn_R_50_FPN_3x.yaml")  # Let training initialize from model zoo
    cfg.SOLVER.IMS_PER_BATCH = 2
    cfg.SOLVER.BASE_LR = 0.00025  # pick a good LR
    cfg.SOLVER.MAX_ITER = 3000    # 300 iterations seems good enough for this toy dataset; you will need to train longer for a practical dataset
    cfg.SOLVER.STEPS = []        # do not decay learning rate
    cfg.MODEL.ROI_HEADS.BATCH_SIZE_PER_IMAGE = 128   # faster, and good enough for this toy dataset (default: 512)
    cfg.MODEL.ROI_HEADS.NUM_CLASSES = 200  # only has one class (ballon). (see https://detectron2.readthedocs.io/tutorials/datasets.html#update-the-config-for-new-datasets)

模型的yaml文件类型可在官方仓库看:https://github.com/facebookresearch/detectron2/tree/master/configs

5. 完整的伪代码,供参考

import os
import cv2
import numpy as np

from detectron2.structures import BoxMode
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, DatasetCatalog

from detectron2.engine import DefaultTrainer

from tqdm import tqdm

image_dir = "/exdata3/detectron2/VOC2007/JPEGImages"
image_list_dir = "/exdata3/CUB_200_2011/images.txt"
box_dir = "/exdata3/CUB_200_2011/bounding_boxes.txt"
if_training_dir = "/exdata3/CUB_200_2011/train_test_split.txt"

def get_json():
    boxes = np.loadtxt(box_dir)
    img_path = np.loadtxt(image_list_dir,dtype=bytes).astype(str)
    if_training = np.loadtxt(if_training_dir)
    # datasets
    train_dataset_dicts = []
    test_dataset_dicts = []
    train_id = 0
    test_id = 0
    for i in tqdm(range(boxes.shape[0])):
        record = {}
        image_name = os.path.join(image_dir,img_path[i][1].split('/')[-1])
        # print(image_name)
        class_name = img_path[i][1].split('/')[0]
        class_id = int(class_name.split('.')[0])-1
        xmin = int(boxes[i][1])
        xmax = int(boxes[i][1]+boxes[i][3])
        ymin = int(boxes[i][2])
        ymax = int(boxes[i][2]+boxes[i][4])
        image = cv2.imread(image_name)
        height,width,_ = image.shape
        
        record['file_name'] = image_name
        if(if_training[i][1]==1):
            record['image_id'] = train_id
            train_id += 1
        else:
            record['image_id'] = test_id
            test_id += 1
        record['height']= height
        record['width']= width
        objs = []
        obj = {
            "bbox": [xmin,ymin,xmax,ymax],
            "bbox_mode": BoxMode.XYXY_ABS,
            #"segmentation": [poly], To draw a line, along to ballon
            #you will need this for mask RCNN
            "category_id": class_id,
            "iscrowd": 0
        }
        objs.append(obj)
        record["annotations"] = objs
        if(if_training[i][1]==1):
            train_dataset_dicts.append(record)
        else:
            test_dataset_dicts.append(record)
    return train_dataset_dicts,test_dataset_dicts

def get_classes_name():
    classes_name_dir = "/exdata3/RuoyuChen/CUB_200_2011/classes.txt"
    classes_path = np.loadtxt(classes_name_dir,dtype=bytes).astype(str)
    classes = []
    for i in tqdm(range(classes_path.shape[0])):
        classes.append(classes_path[i][1])
    return classes

def register():
    train_dataset_dicts,test_dataset_dicts = get_json()
    classes = get_classes_name()
    for d in ["train", "test"]:
        # train
        if d == "train":
            DatasetCatalog.register("CUB_" + d, lambda d=d: train_dataset_dicts)
            MetadataCatalog.get("CUB_" + d).set(thing_classes=classes)
        else:
            DatasetCatalog.register("CUB_" + d, lambda d=d: test_dataset_dicts)
            MetadataCatalog.get("CUB_" + d).set(thing_classes=classes)

def main():
    register()
    cfg = get_cfg()
    cfg.merge_from_file(model_zoo.get_config_file("COCO-Detection/faster_rcnn_R_50_FPN_3x.yaml"))
    cfg.DATASETS.TRAIN = ("CUB_train",)
    cfg.DATASETS.TEST = ()
    cfg.DATALOADER.NUM_WORKERS = 2
    cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url("COCO-Detection/faster_rcnn_R_50_FPN_3x.yaml")  # Let training initialize from model zoo
    cfg.SOLVER.IMS_PER_BATCH = 2
    cfg.SOLVER.BASE_LR = 0.00025  # pick a good LR
    cfg.SOLVER.MAX_ITER = 3000    # 300 iterations seems good enough for this toy dataset; you will need to train longer for a practical dataset
    cfg.SOLVER.STEPS = []        # do not decay learning rate
    cfg.MODEL.ROI_HEADS.BATCH_SIZE_PER_IMAGE = 128   # faster, and good enough for this toy dataset (default: 512)
    cfg.MODEL.ROI_HEADS.NUM_CLASSES = 200  # only has one class (ballon). (see https://detectron2.readthedocs.io/tutorials/datasets.html#update-the-config-for-new-datasets)
    # NOTE: this config means the number of classes, but a few popular unofficial tutorials incorrect uses num_classes+1 here.

    os.makedirs(cfg.OUTPUT_DIR, exist_ok=True)
    trainer = DefaultTrainer(cfg) 
    trainer.resume_or_load(resume=False)
    trainer.train()

if __name__ == '__main__':
    os.environ["CUDA_VISIBLE_DEVICES"] = "2"
    main()

在这里插入图片描述

Detectron2-基于bosch交通灯数据集训练交通灯检测模型 思路和代码参考这位小哥的,他使用的是百度数据集,但已经找不到了,所以我使用了bosch的数据集。 https://zhuanlan.zhihu.com/p/89877517 数据集是bosch的, http://link.zhihu.com/?target=https%3A//hci.iwr.uni-heidelberg.de/node/6132 数据集介绍 https://hci.iwr.uni-heidelberg.de/content/bosch-small-traffic-li.. 阅读详情

相关推荐

Detectron2 训练配置与流程说明(Faster-RCNN为例)

本文详细介绍了使用Detectron2框架训练Faster R-CNN模型的全流程,包括数据集注册、模型选择与配置、关键参数说明、显存优化和分布式训练设置。重点阐述了以COCO格式注册自定义数据集的方法,Faster R-CNN模型的基础配置选项,以及学习率、批次大小等超参数的优化原则。文档还包含训练过程中的评估机制说明和CUDA显存管理技巧,为基于Detectron2的目标检测任务实施提供了完整的技术参考。

weixin_70043030的博客 1500

windows10+detectron2中faster_rcnn训练自己的数据

环境:windows10+ cundn10.1+ cudnn7.6 vs2019编译 显卡RTX2080 8G显存 pythorch1.3或pythorch1.4都可以 需重新编译coco的PythonAPI和detectron2编译vs2019+pythorch1.4可网上查找,不在详细说明。 ...

niuyuanye的博客 2479

Detectron安装与用GPU训练自己数据集(voc格式)

FAIR的Detectron平台是facebook基于coco数据集训练的,虽然官方建议使用coco格式数据集训练模型,但很多人习惯于用voc格式标记数据,也有现成的xml不知如何使用Detectron。本博文假设已经做好voc格式数据,稍做转换使其能够在Detectron上训练。本博文主要以resnet-50-fpn-faster-rcnn训练为例,只测试目标检测,说明如何使用自己的voc数据训...

灰烬之灵丶的博客 6301

【Faster RCNN & detectron2】detectron2实现Faster RCNN目标检测

在上一篇博客记录了SlowFast的复现过程,slowfast其中有一部分是detectron2实现Faster RCNN对人的目标检测。 这一篇博客就单独记录detectron2实现Faster RCNN目标检测的解析 1. 背景介绍 detectron2项目地址 detectron2文档 2.安装步骤 我使用的是云端服务器,没在自己的电脑上跑代码(云端服务器跑出问题可以直接释放掉,快速重新搭建一个,用自己的电脑在重新搭建过程中会有很多麻烦,特别是cuda的安装) 我用的是极链AI云平台,有50元的白

CSPhD-winston的博客 6483

实现faster RCNN的开源项目梳理

1.Detectron(Caffe2)https://github.com/facebookresearch/Detectron14863 starsDetectron is Facebook AI Research's software system that implements state-of-the-art object detection algorithms, including M...

cdyx369的博客 1260

告别手动标注!用Detectron2的Faster R-CNN为SlowFast数据集自动框人(附完整脚本)

本文详细介绍了如何利用Detectron2中的Faster R-CNN预训练模型为SlowFast数据集实现自动化人物边界框标注。通过完整的脚本和实战指南,开发者可以大幅提升数据准备效率,节省人工标注成本,同时保持较高的标注质量。文章还提供了环境配置、视频预处理、检测实现及后处理优化的全流程解决方案。

weixin_30335353的博客 465

detectron2的简介和配置

detectron2 前言:距离上一篇博客过了两年,几近放弃DL和RL这非常有趣的领域,近日重拾DL,在摸索中打算整理一下深度学习框架,争取做到“探索”和“利用“相统一hhh,还是要紧跟潮流啊。因为重装了一遍服务器并且更新了显卡驱动,很多基础的库需要重新安装。 detectron2简介(以下简称DET2) detectron2是facebook AI research(FAIR)重构detectron的深度学习框架,是2020年最火的深度学习框架(另外还有mmdetection,simplede..

d948142375的博客 3万+

别再只用三次多项式了!用MATLAB手把手教你搞定七次多项式轨迹规划(附完整代码)

本文详细介绍了七次多项式在轨迹规划中的优势与应用,通过MATLAB实现从理论推导到实际代码的全过程。相比传统的三次多项式,七次多项式能精确控制位置、速度、加速度和加加速度,实现更平滑的运动控制,特别适用于工业机器人和数控机床等高精度场景。文章包含完整的MATLAB代码示例和优化技巧,帮助工程师快速掌握这一高级轨迹规划方法。

weixin_30872337的博客 297

Ubuntu18.04 配置detectron2实现Faster RCNN目标检测和Mask RCNN实例分割(一)

1. 背景介绍 detectron2项目地址:https://github.com/facebookresearch/detectron2 FasterRCNN论文:https://arxiv.org/abs/1506.01497 COCO数据集:http://cocodataset.org/#home VOC数据集:http://host.robots.ox.ac.uk/pascal/VOC/...

linghu8812的博客 4458

采购订单定价策略 超详细

‘需求’字段里填写的是一个例程编号(例程是一段判断程序),如果我们在需求中维护了例程编号,那只有这个例程条件被满足时,这个条件表才会被系统自动读取。一部分的条件表只有在凭证项目满足一定的条件时才会被读取。 ‘排斥的’字段如果别勾中的话,那表明如果这个条件表被系统成功读取到数据后,系统将停止这个存取顺序的执行,否则,系统将继续执行下去。 注意:a、如果我们给某个条件类型设定了有效期的话,那我们必须给这个条件类型分配一个存取顺序。 b、不能给一个抬头条件分配存取顺序。 是...

竹大的博客 1万+

Palantir的本体论建模跟数仓建模的异同

Palantir的Foundry Ontology通过构建组织的数字孪生体,将数据集和模型映射为对象类型、属性、链接和操作类型,形成完整的语义知识网络。与传统数仓建模相比,本体建模以业务问题为驱动,强调细粒度语义和实时决策能力,采用图语义技术实现灵活的映射关系。

轩哥的个人研究和成长记录 1588

Facebook开源检测工具包 Detectron (by Caffe2)

一. Detectron 特征        大名鼎鼎的 FAIR 开发的软件包,可以从【github】了解一下。        个人感觉比较有用的是 基于 ResNet 基础框架的 Faster RCNN和Mask RCNN。        Detectron 基于 Caffe2(貌似被诟病的不轻),就目前阶段来看,caffe2 还有待于完善(pytorch也是一个意思),其工程化程度远不如 T...

跟随技术的脚步-linolzhang的专栏 5485

实现敌人跟随玩家。(Unity)

首先和玩家设置一模一样,给敌人添加一个刚体,设置一个碰撞器,并设置一个触发器。然后在对场景里面的组件添加导航网格代理并且进行bake烘焙,那样的话敌人就可以在进行烘焙的位置进行移动。创建脚本,并且挂载脚本到敌人的组件上,用代码进行实现效果,并且要挂载目标对象。

weixin_57813136的博客 1867

使用Detectron2分6步进行目标检测

作者|Aakarsh Yelisetty 编译|Flin 来源|towardsdatascience 让我们看看如何在涉及文本识别的自定义数据集上使用FAIR(Facebook AI Research)的Detectron 2进行实例检测。 你是否尝试过使用你自己选择的自定义数据集从头开始训练对象检测模型? 如果是的话,你就会知道这个过程有多乏味。如果我们选择基于区域建议的方法,如更快的R-CNN,或者我们也可以使用SSD和YOLO等一次性检测器算法,我们需要从使用特征金字塔网络和区域建议网络来构建模型。

TensorFlowNews 1571

9 硬件工程师笔面试高频知识考点真题解析——运算放大器

运算放大器(运放)摘要 运放是一种高增益、差分输入的模拟集成电路,具有虚短(线性区输入电压相等)和虚断(输入电流为零)特性,支持负反馈(线性放大)和开环/正反馈(饱和区比较)两种工作模式。关键特性包括高输入阻抗、低输出阻抗,理想运放参数(如无限增益)与实际参数(如有限带宽)的差异。 选型要点: 信号特性:直流/低频信号关注失调电压(Vos)、温漂;高频信号侧重带宽(GBW)和压摆率(SR)。 电源条件:单/双电源供电、电压范围及功耗需求(如电池设备需低静态电流)。 精度与噪声:微弱信号需低噪声运放,高精度场

XU157303764的博客 1671

【WorkBuddy专栏27】WorkBuddy 和 CodeBuddy 到底什么关系——一篇文章终结所有混淆

WorkBuddy 和 CodeBuddy 到底什么关系——一篇文章终结所有混淆

AI人人懂 2564

Detectron安装与Mask RCNN介绍

现在,官方版开源代码终于来了。同时发布的,是这项研究背后的一个基础平台:Detectron。官方地址:https://github.com/facebookresearch/DetectronDetectron是Facebook的物体检测平台,今天宣布开源,它基于Caffe2,用Python写成,这次开放的代码中就包含了Mask R-CNN的实现。除此之外,Detectron还包含了ICCV 20...

Xiongchao99的博客 7714

嵌入式开发之瑞芯微RK356x--基本环境搭建

嵌入式环境搭建

NexyHO的博客 617

告别手动标注!用Detectron2+Faster R-CNN为SlowFast数据集自动框人(附完整脚本)

本文详细介绍了如何利用Detectron2的Faster R-CNN模型为SlowFast数据集实现自动化人物检测标注,构建端到端的视频动作识别解决方案。通过预训练模型优化、视频帧提取策略和AVA格式转换,大幅提升标注效率,适用于大规模视频数据处理。

weixin_30740581的博客 416

RK3588网卡出现丢包或者带宽不足的问题验证排查

注意除了有最大的TCP数据接收缓冲,还有/proc/sys/net/core/wmem_max — 最大的TCP数据发送缓冲可以调整,这里暂时没用到,针对具体需要可适当调整。比如把ethx接口中断从默认的cpu0迁移到其它cpu,例如将eth0中断234移到cpu7 (10是16进制, cpu0 =3588的cpu有8个核,4个A55(小核)+4个A76(大核),可以找到对应中断 将中断从默认cpu0核切到cpu7。tcp_rmem:单位是字节,接收缓存区大小,缓存从对端接收的数据,后续会被应用程序读取。

Android/Linux驱动开发传帮带学习,让驱动入门门槛更低! 2026

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

快速上手 DynamicHead:Detectron2 环境安装与首个检测模型运行指南

DynamicHead(Dynamic Head)是 CVPR 2021 发表的统一目标检测头框架,它用注意力机制把"尺度感知、空间感知、任务感知"三类能力整合进同一个检测头中,在不增加计算开销的前提下显著提升目标检测精度。本文面向新手,手把手带你完成 Detectron2 环境安装、DynamicHead 编译安装,并成功运行你的第一个检测模型。 --- ## DynamicHead 是什么

gitblog_00280的博客 446

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

经典论文--目标检测--Faster RCNN--信息汇总

Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks(CVPR 2016) faster-rcnn原版论文:https://arxiv.org/abs/1506.01497 faster-rcnn官方代码-matlab:https://github.com/ShaoqingRen/faster_...

u014410989的专栏 327

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

初识MMDetection

MMdetection目标检测

wangzaojun的博客 1166

认识 DynamicHead:CVPR 2021 官方开源的目标检测注意力框架全解读

DynamicHead 是 CVPR 2021 论文《Dynamic Head: Unifying Object Detection Heads with Attentions》的官方开源实现,也是一个面向目标检测的注意力框架,其核心思想是把尺度感知、空间感知、任务感知三种注意力统一进检测头中,在不增加计算开销的前提下大幅提升目标检测精度。本文将用通俗易懂的方式,带新手完整认识 DynamicHe

gitblog_00612的博客 266

PyTorch自定义Faster R-CNN工业落地实战:数据对齐、锚框重构与轻量部署

Faster R-CNN作为经典两阶段目标检测框架,其工程化落地远不止调参或换数据集——核心在于模型结构、数据分布与部署约束的深度协同。本文从目标检测基础原理出发,解析RPN机制、RoI特征对齐与FPN多尺度融合的技术本质,强调在小目标密集、低对比度、金属反光等真实工业场景中,anchor先验失配、特征金字塔冗余、归一化偏差等关键问题如何导致mAP断崖式下跌。通过定制AnchorGenerator、重构数据预处理流水线、裁剪Mask/Keypoint分支及适配Jetson TensorRT部署链路,实现精度

weixin_30751947的博客 330

PubLayNet文档布局分析终极指南:从数据集到实战应用

在人工智能和计算机视觉领域,文档布局分析是一个关键但常被忽视的技术方向。无论是学术论文、商业报告还是技术文档,理解文档的结构化布局对于信息提取、内容分析和自动化处理至关重要。今天,我们将深入探索**PubLayNet**——目前最大的文档布局分析数据集,为您提供从基础概念到实战应用的完整指南。 ## 为什么需要文档布局分析? 文档布局分析(Document Layout Analysis)是计

gitblog_01064的博客 725
上一篇: Ubuntu20.04安装xampp 8部署php html网页与mysql数据库
下一篇: 英文投稿过程中的十种状态
CExploer
博客等级 码龄8年 147粉丝 24原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值