mmdetection源码阅读

2023-11-01

阅读从tools/train.py开始。

功能模块

  1. Register
    位置:utils/registry.py
    用于注册起到相同作用的(例如coco/voc数据类、模型类、数据处理流程类)类别。具体功能是这样的。
    Register__init__加载了两个属性,分别是name,module_dict.
    Register有两个主要功能函数,分别是register_module,get.
    假设我们要生成一个实例,用于注册一些数据集类。我们记这个实例为DATASET.DATASET=Register('dataset'),也就是name属性为dataset。通过使用register_module函数能够向module_dict中添加模块。例如我们可以向该实例中添加coco,voc。则module_dict={‘coco’:coco_class,'voc':voc_class}
    在mmdetection里,主要通过@修饰符的方法来使用这个类。例如在coco.py文件中首先加载DATASET实例,在coco类定义时添加@DATASETS.register_module,则coco类别被注册到DATASET实例中去了。
  2. build_from_cfg函数
    位置:utils/registry.py
    输入:cfg, registry, default_args=None
    其中cfg是字典类型,一般为config文件的一部分内容;registryRegister类的一个实例。该函数主要使用registryget功能,来得到cfg所指定的模型或数据集所对应的类(事先registry已经加载过了),然后将default_args作为该类的参数进行输出。

数据集加载

  1. tain中的build_dataset用于加载数据集类(如coco、voc等)。首先调用了datasets/builder.pybuild_dataset函数。在调用datasets/builder.py时,在import时对coco、voc、pipelines等都通过Register类进行了注册。 build_dataset函数则调用了build_from_cfg函数。
  2. 以voc数据集为例讲一下数据集类的实现。
    # 类的构成
    torch.utils.data.Dataset -> CustomDataset -> XMLDataset -> VOCDataset
    
    查看torch.utils.data.Dataset的代码,其中提到,所有基于Dataset的类,都必须实现__getitem__方法,该方法根据给定的key能够给出相应的数据。那么在CustomDataset类中,可以看到该方法的实现:
        def __getitem__(self, idx):
            if self.test_mode:
                return self.prepare_test_img(idx)
            while True:
                data = self.prepare_train_img(idx)
                if data is None:
                    idx = self._rand_another(idx)
                    continue
                return data
    
    XMLDataset中实现了两个函数,分别是load_annotations,get_ann_info,用于读取xml内容。VOCDataset中增加了self.year属性。

模型加载
build_detector用于加载模型,调用了models/builder.py中的build_detector函数。这里的加载形式与加载数据集相同,不再赘述。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mmdetection源码阅读 的相关文章

  • 快速理解ES6的解构赋值?

    function arr return 苹果 茶 蛋糕 我们将上述数组中的值依次赋值给三个变量 并在后续的程序中输出 传统的实现方法 var testArr arr var fruit testArr 0 tea testArr 1 cak
  • java无法解析符号什么意思,Intellij:无法解析符号'springframework'

    我试图用Spring开始我的第一个项目 我使用intellij的想法 我也很新 但无论如何 我跟着在jetbrain网站上写下的步骤 我不知道我做错了什么 但是我在第一个到默认创建的文件上有很多错误 Intellij 无法解析符号 spri
  • SpringSecurity+Oauth2+JWT

    SpringSecurity Oauth2 JWT SpringSecurity Oauth2 JWT 快速入门 自定义登入 自定义登入成功失败处理器 权限判断 自定义异常返回 自定义方法实现权限控制 注解实现权限控制 记住我实现 退出登入
  • WIN7搜索不到共享打印机怎么办? 亲测成功

    1 开启的服务 右键点击 计算机 右键菜单中选择 管理 找到 服务和应用程序 打开 服务 或者用WIN R打开 运行 对话框 输入services msc 按回车键打开 服务 然后 将以下服务的 启动类型 选为 自动 并确保 服务状态 为
  • 【数据库技术】NineData数据复制,加速实时数仓构建

    8 月 30 日 由 NineData 和 SelectDB 共同举办的主题为 实时数据驱动 引领企业智能化数据管理 的线上联合发布会 圆满成功举办 双方聚焦于实时数据仓库技术和数据开发能力 展示如何通过强大的生态开发兼容性 对接丰富的大数

随机推荐

  • mysql输入密码后闪退问题的解决

    1 找到配置文件my ini 然后用记事本将其打开 2 打开后 搜索mysqld关键字 找到后 在mysqld下面添加skip grant tables 保存退出 若提示不让保存时 可以将文件剪切到桌面 更改保存后再复制到mySQL目录下
  • 安装opencv和opencv-contrib库

    快速安装的方法在最后 速度超快 1 安装opencv python Win R 输入cmd 然后输入activate 进入base环境 或者其他自己创建的环境 输入 pip install opencv python 如果报错 显示的是拒绝
  • 正则表达式之ip地址匹配(详细讲解)

    正则表达式之ip地址匹配 一 正则匹配基本知识及概念 二 ip地址匹配 一 正则匹配基本知识及概念 在练习之前 需要大家知道一些基本知识 如果有一定基础的可以跳过该步骤 直接往下看 正则表达式 字符类 abc 代表a或者b 或者c字符中的一
  • lambda函数

    lambda函数也叫匿名函数 就是没有函数名的函数 lambda表达式基于数学中的 演算得名 直接对应于其中的lambda抽象 lambda函数的语法只包含一个语句 lambda arg1 arg2 argn expression 冒号前面
  • 设计模式(十九) 备忘录模式

    备忘录模式是一种行为型模式 作用是将对象的内部状态保存下来 在必要的时候恢复 备忘录模式可以用于游戏存档恢复 文件的历史记录等场合 下面是一个简单的代码例子 首先是文档管理器 用于保存文档的状态 public class DocumentM
  • 【Eclipse】Maven安装配置&Eclipse配置Maven插件

    文章目录 前言 一 下载安装Maven 二 配置Maven环境变量 三 修改Maven仓库配置 四 Eclipse配置 maven
  • JS提取链接参数

    假如要提取当前网络链接上面的参数 那么请看下去 比如要提取 var url http www baidu com x 10 y 20 c 30 d 40 中的 xycd的值 那么
  • 【已解决】SpringBoot 后端开发中console中中文乱码问题,以及其他解决方法。

    项目场景 在IDEA中 使用Maven构建SpringBoot Web后端项目 黑马程序员中的javaWeb 2023最新课程中的案例 有同样问题的同学欢迎一起讨论学习 问题描述 前端网页请求发出后 后端成功响应 但是在控制台中 中文数据会
  • C标准库文件&常用函数

    编号 头文件 C标准版本 介绍 1
  • MIPI DPHY接口的若干种实现方案概述

    一 MIPI DPHY接口简介 MIPI DPHY是MIPI的一种物理层 其协议层有CSI和DSI两种 其中CSI主要用于图像接入 如图像传感器Sensor DSI主要用于图像输出 如手机屏幕等 有关MIPI DPHY及CSI和DSI的技术
  • 涡阳2021年高考成绩查询,2021年涡阳县高考状元名单资料,今年涡阳县高考状元多少分...

    高考状元一直都备受大家的关注 不管对于学校和还是当地教育系统 都是一件荣誉的事情 高考状元历来都诞生于艳羡的目光中 大家为他们的高分叫好 羡慕他们可以一步踏入国内知名学府 本文高考升学网为大家介绍历年涡阳县高考状元的相关资料和考分情况 看看
  • 互斥锁、读写锁、自旋锁、条件变量的特点总结

    读写锁特点 1 多个读者可以同时进行读 2 写者必须互斥 只允许一个写者写 也不能读者写者同时进行 3 写者优先于读者 一旦有写者 则后续读者必须等待 唤醒时优先考虑写者 互斥锁特点 一次只能一个线程拥有互斥锁 其他线程只有等待 互斥锁是在
  • 新闻管理系统

    1 项目介绍 新闻管理系统拥有两个角色 分别为用户和管理员 具体功能如下 2 项目技术 后端框架 Jfinal mvc 前端框架 Freemarker html css JavaScript JQuery 3 开发环境 JAVA版本 JDK
  • css transparent张鑫旭,【灵感杂谈】张鑫旭和他的《CSS世界》

    原标题 灵感杂谈 张鑫旭和他的 CSS世界 说到本书的作者 前端圈里没见过他的人有很多 但没读过他文章的人很少 他就是很多前端同行眼中的 张老师 张大神 张鑫旭 以下简称 张 前一段时间 去参加 前端体验大会 有一位张的同事作为分享嘉宾 当
  • 清风数学建模学习笔记——熵权法(客观赋权法)

    熵权法 熵权法是一种客观赋权方法 客观 数据本身就可以告诉我们权重 依据的原理 指标的变异程度越小 所反映的信息量也越少 其对应的权值也应该越低 本文借鉴了数学建模清风老师的课件与思路 如果大家发现文章中有不正确的地方 欢迎大家在评论区留言
  • Vue.js用cdn方式引入

    Vue js用cdn方式引入 前言 注意本次用cdn形式引入js学习 有node js的玩家可以用node js CDN下载地址 https vuejs org js vue min js以及Node js Vue系列 windows下np
  • 解决asterisk sip错误提示Not Acceptable Here(488)或Not Found(404)

    安装好asterisk后对接到VOS3000使用 可发现VOS死活送不通asterisk 于是回头检查asterisk系统是否安装正确以及是否正常工作 经过反复检查 都没有发现问题 可VOS上面话单显示 开始一直显示488错误 于是我看了下
  • policy gradient详解(附代码)

    1 引言 policy gradient是强化学习中一种基于概率策略的方法 智能体通过与环境的交互获得特定时刻的状态信息 并直接给出下一步要采取各种动作的概率 然后根据该状态动作的策略分布采取下一步的行动 所以每种动作都有可能被选中 只是选
  • 计算 属性

    一 定义 计算属性就是当其依赖属性的值发生变化时 这个属性的值会自动更新 预支相关的DOM部分也会同步自动更新 有缓存 二 用法 1 基础用法 computed getN return this n 1 2 传递参数 返回一个函数 h1 t
  • mmdetection源码阅读

    阅读从tools train py开始 功能模块 Register类 位置 utils registry py 用于注册起到相同作用的 例如coco voc数据类 模型类 数据处理流程类 类别 具体功能是这样的 Register的 init