detectron2是怎么建立模型的?以SparseInst代码为例

news2024/9/27 22:54:25

看SparseInst论文发现论文里有些地方没讲清楚;遂找SparseInst源码来看模型结构

我选择从推理代码来找模型结构:

经探索,在SparseInst代码里,推理需要执行代码

python demo.py --config-file configs/sparse_inst_r50_base.yaml --input datasets/coco/val2017/* --output image_results --opt MODEL.WEIGHTS sparse_inst_r50_base_ff9809.pth  INPUT.MIN_SIZE_TEST 512

查阅得知建立模型很可能在

 找到VisualizationDemo的实现:

发现关键代码在

self.predictor = DefaultPredictor(cfg)

 如此得到的self.predictor(image)可以直接接受图片,所以self.predictor就是模型网络部分。

搜索文本DefaultPredictor得知DefaultPredictor在detectron2.engine.defaults包下

 查询DefaultPredictor定义得知build_model(self.cfg)是实际用来创建模型的部分

 而build_model的定义在detectron2.modeling包下

 查找到build_model的定义如下

可知是用了detectron2.utils.registry的 Registry来建立网络结构的。查找得知detectron2.utils.registry的 Registry是直接import的别的包

from fvcore.common.registry import Registry  # for backward compatibility.

 查找fvcore.common.registry得知Registry定义在这篇文章中有详解

Detectron2和fvcore中的Registry机制详解_fvcore registry-CSDN博客

官方详解fvcore.common.registry — detectron2 0.6 documentation

发现官方源码里用了typing里的Dict包

查阅Python 中 typing 模块和类型注解的使用 | 静觅得知typing里的Dict是用来让python能像C++一样强申明变量类型的。

names: list = ['Germey', 'Guido']
version: tuple = (3, 7, 4)
operations: dict = {'show': False, 'sort': True}

以上代码:只知道 names 是一个列表 list 类型,但是不知道 names 里面的元素是str类型还是int类型;也不知道 operations这个字典的key和value是什么类型的。只能知道operations是一个字典。

 但如果用typing 模块,它提供了非常 “强 “的明确类型申明,比如 List[str]表示由 str 类型的元素组成的列表,Tuple[int, int, int] 是由 int 类型的元素组成的长度为 3 的元组。所以用typing申明以上字典的代码如下:

from typing import List, Tuple, Dict

names: List[str] = ['Germey', 'Guido']
version: Tuple[int, int, int] = (3, 7, 4)
operations: Dict[str, bool] = {'show': False, 'sort': True}

好家伙,貌似误入歧途了,debug模式下,先在下图一,

点下一步就进入下图二这个分支。

而不是之前分析的进入detectron2.engine.defaults包下的DefaultPredictor类

仔细想了想不是误入歧途,我安装了detectron2包,所以猜想这些安装的包应该在debug模式下不能看到源码。

验证猜想:

我试着把项目里的detectron2整个文件夹删去,也不影响demo.py正常执行,所以实际上执行以下代码时候用到的是我安装好的 detectron2包,所以debug看不到源码

python demo.py --config-file configs/sparse_inst_r50_base.yaml --input datasets/coco/val2017/* --output image_results --opt MODEL.WEIGHTS sparse_inst_r50_base_ff9809.pth  INPUT.MIN_SIZE_TEST 512

所以实际上在下图一的下一步就是会进入detectron2.engine.defaults包下的DefaultPredictor类

图一

图二

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2171346.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Verilog基础:时序调度中的竞争(四)(描述时序逻辑时使用非阻塞赋值)

相关阅读 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm1001.2014.3001.5482 作为一个硬件描述语言,Verilog HDL常常需要使用语句描述并行执行的电路,但其实在仿真器的底层,这些并行执行的语句是有先后顺序…

Python精选200Tips:176-180

针对图像的经典卷积网络结构进化史及可视化 P176--LeNet-5【1988】模型结构说明模型结构代码模型结构可视化 P177--AlexNet【2012】模型结构及创新性说明模型结构代码模型结构可视化 P178--VGGNet【2014】VGG19模型结构及创新性说明VGG19模型结构代码VGG19模型结构可视化 P179-…

Datawhale Leecode基础算法篇 task04:贪心算法

官方学习文档:datawhalechina 往期task01:枚举算法链接:Datawhale Leecode基础算法篇 task01:枚举算法 往期task02:递归算法and分治算法:Datawhale Leecode基础算法篇 task02:递归算法and分治…

项目实战:k8s部署考试系统

一、新建nfs服务器(192.168.1.44) 1.基础配置(IP地址防火墙等) 2.配置时间同步 [rootlocalhost ~]# yum -y install ntpdate.x86_64 [rootlocalhost ~]# ntpdate time2.aliyun.com 27 Sep 10:28:08 ntpdate[1634]: adjust tim…

风景视频素材高清无水印怎么找?推荐几个风景视频素材下载网站

那些绝美的大自然风景视频素材都在哪里找的?今天就跟大家聊聊那些可以下载高清无水印的大自然风景视频素材的网站,如果你也在苦苦寻找,快来看看吧~ 1. 稻虎网 稻虎网作为国内遥遥领先的视频素材网站,提供了大量高清无…

2024最新Linux Socket编程

我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket&am…

Meta广告资料库使用教程:Facebook、Instagram海外社媒营销统统拿下!

社交媒体现今已成为大部分商家宣传推广方案中的重要工具,尤其是Meta旗下的两个主流社媒平台Facebook和Instagram,活跃用户数量以数十亿计,分布地区也非常广。要运用好自带影响力的社媒平台的传播力量和庞大数据,优化自身的宣传推广…

【Kubernetes】常见面试题汇总(四十二)

目录 96. Kubernetes 体系结构有哪些不同的组成部分? 97.您能否简要介绍一下 Kubernetes 中主节点的工作? 特别说明: 题目 1-68 属于【Kubernetes】的常规概念题,即 “ 汇总(一)~(二十二…

亚马逊 Bedrock 平台也能使用Llama 3.2 模型了

亚马逊 Bedrock 平台推出 Llama 3.2 模型:多模态视觉和轻量级模型 概述 由 Meta 提供的最新 Llama 3.2 模型现已在 Amazon Bedrock 平台上推出。这一新模型系列标志着 Meta 在大型语言模型(LLM)领域的最新进展,它在多种应用场景…

养猫久了才发现,宠物空气净化器才是真正除猫毛的神器

相信每个打工人都在期待这个国庆小长假吧,终于等到了!这次我要把属于我的都夺回来!刚好工资到手、小长假我有,只想往家里一躺什么也不想,唯一最想做的就是要在这个节假日里好好的陪一下我家猫咪,还有就是买…

【企业微信】群机器人自动消息配置

0、群聊机器人 内部企微群聊可以添加一个机器人,这个机器人其实是个消息接口,可以外部脚本来自动定时发送消息到群里,打工人最有用的提醒就是每周提醒发周报了。 1、创建机器人 一般公司都没有人使用,我们可以手动创建一个。 …

前端练习总结(1)

前端实习练习题 前端实习笔试题0920 visibility:hidden display:none把鼠标移到按钮并点击时 hover active focus的顺序代码输出结果1代码输出结果2CSS中哪些属性可以继承cookie sessionStorage localstorage区别面向对象基本特征有哪些,请具体说明下列关于v-model的说法,哪项…

统信服务器操作系统进入【单用户模式】

统信服务器操作系统D版、E版、A版进入单用户模式的方式。 文章目录 前言一、问题现象二、问题原因三、解决方案1. D版问题解决方案2. E版及A版问题解决方案前言 D版又称企业版、E版又称欧拉版、A版又称龙蜥版。 单用户模式主要是在 grub2 引导时编辑内核引导,一般用于修改用…

STM32CUBEIDE FreeRTOS操作教程(五):mutex互斥信号量

STM32CUBEIDE FreeRTOS操作教程(五):mutex互斥信号量 STM32CUBE开发环境集成了STM32 HAL库进行FreeRTOS配置和开发的组件,不需要用户自己进行FreeRTOS的移植。这里介绍最简化的用户操作类应用教程。以STM32F401RCT6开发板为例&am…

个人网站介绍和部署(开源)

前言: 大家好,我是神的孩子都在歌唱,这是我csdn的博客 , 这是我做的一个神唱网站项目,专门是为了满足自己的需求写的,需要什么就做什么,代码完全开源github,含有安装部署教程,此项目…

Geekbench6使用指南:Linux系统性能测试,如此简单!

在当今计算机性能日益重要的时代,Geekbench 成为了测试 CPU 性能的热门工具。本文将带你深入了解如何使用 Geekbench,让你的电脑性能一目了然。 1. 什么是 Geekbench? Geekbench 是一款跨平台的基准测试工具,能够评估单核和多核…

避免glibc版本而报错,CentOS等Linux安装node.js完美方法

概述 对于Node.js v18.x或更高,Node.js官方默认是在Ubuntu 20.04, Debian 10, RHEL 8,CentOS 8等高版操作系统上编译得到的,高版本操作系统的glibc版本≥2.28。所以,下载Node.js后,也需要glibc版本≥2.28才能使用。 而CentOS 7.x等…

【YOLOv10改进[SPPF]】使用 v9的SPPELAN替换SPPF模块 + 含全部代码和详细修改方式

本文将进行在YOLOv10中使用SPPELAN改进v10 的实践,助力YOLOv10目标检测效果,文中含全部代码、详细修改方式。助您轻松理解改进的方法。 改进前和改进后的参数对比如下: 目录 一 YOLOV9 二 使用SPPELAN改进v10的实践 1 整体修改 ① 添加SPPELAN.py文件

入选ECCV 2024!覆盖5.4w+图像,MIT提出医学图像分割通用模型ScribblePrompt,性能优于SAM

外行看热闹,内行看门道,这句话在医学影像领域可谓是绝对真理。不仅如此,即便身为内行人,要想在复杂的 X 光片、CT 光片或 MRI 等医学影像上准确看出些「门道」来,也并非易事。而医学图像分割则是通过将复杂的医学图像中…

双十一有什么推荐好物?,这些你不能错过的宝藏好物推荐

随着双十一的临近,这场盛大的购物狂欢蓄势待发!为了让大家不在琳琅满目的商品中徘徊,琪琪用心归纳了一份购物清单,分享那些我亲自使用过,觉得必须拥有的商品。 这些商品不仅价格公道,而且质量上乘&#xf…