mmcv2.0中build loop、loop.run()、从Dataloader中取数据、run_iter()函数

news/2024/10/10 2:23:07

本篇博客中,我们以推理为例。

首先进入Runer类中的test函数:

然后进入Runer类中的build_test_loop函数:

然后经过Registry中的build_from_cfg等函数,进入TestLoop类的__init__进行初始化。初始化的时候,会进入父类BaseLoop,在BaseLoop中,会对Dataloader进行build,关于mmcv2.0是如何构建Dataloader的,可以参考:mmcv2.0中build dataloader的流程 - Picassooo - 博客园 (cnblogs.com)

build完test_loop之后,继续运行Runer类中的test函数剩余代码,包括执行一些带有before_run的钩子函数、load checkpoint等,然后是开始跑test_loop的run函数了:

test_loop的run函数包括需要执行一些钩子函数、从Dataloader中取样本数据、执行run_iter函数等:

这里对从从Dataloader中取样本数据的流程进行展开介绍。在执行enumerate(self.dataloader)时,会进入到Dataloader的__iter__函数:

这个__iter__函数会初始化一个迭代器_MultiProcessingDataLoaderIter:

执行上图中第988行代码的时候,会跳转到_BaseDataLoaderIter类中,执行__init__函数,对这个类初始化:

在初始化完_BaseDataLoaderIter和_MultiProcessingDataLoaderIter之后,将会回到Dataloader的__iter__函数,执行这个函数的retrun的时候,也就是执行第433行的时候,会跳转到_BaseDataLoaderIter的__next__函数,这个函数将会返回读取到的data,这个data是经过pipeline处理之后的images和meta_infos。

 

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

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

相关文章

【Linux网络编程】网络编程常见概念

【Linux网络编程】网络编程常见概念 阻塞与非阻塞 阻塞 IO:执行的系统调用可能因为无法立即完成而被操作系统挂起,直到等待的事件发生为止。如服务端的 accept(),在客户端未 connect() 时,其一直处于阻塞状态直至发生为止,但我们可以对监听的文件描述符通过 fcntl() 设置 …

【一】开始篇

概述 之前在暑假有空学习了一下mprpc项目,这是一个基于陈硕大佬写的muduo库、protobuf的分布式rpc框架,现在想整理一下内容(众所周知,学了不整理等于白学) 技术栈集群和分布式概念以及原理 RPC远程过程调用原理以及实现 Protobuf数据序列化和反序列化协议 Protobuf数据序列…

.net MAUI 发布时报错,无法识别指定的 RuntimeIdentifier“win10-x64”的原因

是因为MAUI项目引用了普通的C#类库导致的。MAUI只能引用MAUI类库,不能引用普通的类库。虽然能运行但用vs发布时会报错。可以使用命令行打包。dotnet publish -f net8.0-windows10.0.19041.0 -c Release -p:RuntimeIdentifierOverride=win10-x64 参考https://learn.microsoft.c…

【Linux网络编程】字节序

【Linux网络编程】字节序 字节序 字节序就是字节在内存中存储的顺序,如32位整数0x01234567,在内存中存储时,有如下两种顺序:大端序将数值的高位存储在低位地址中,小端序则相反。 网络字节序 网络中传输数据均采用大端序。 Linux字节序转换函数 在 #include <netinet/in…

简化登录流程,助力应用建立用户体系

随着智能手机和移动应用的普及,用户需要在不同的应用中注册和登录账号,传统的账号注册和登录流程需要用户输入用户名和密码,这不仅繁琐而且容易造成用户流失。 华为账号服务(Account Kit)提供简单、快速、安全的登录功能,让用户快捷地使用华为账号登录应用。用户授权后,…

【SQL练习】demo1

为了适应技术发展的需求,SQL 标准于 2016 年增加了以下 JSON 功能: JSON 对象的存储与检索。将 JSON 对象表示成 SQL 数据。将 SQL 数据表示成 JSON 对象。如今,主流关系型数据库都增加了原生 JSON 数据类型和相关函数的支持,使得我们可以将 SQL 的强大功能与 JSON 文档存储…

Spring Boot 整合 Kafka

项目目录结构pom.xml<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Spring Kafka Starter --><dependency><groupId&…

.NET8 接入qwen2大语言模型

前言 dotnet8项目接入qwen大模型,这个主要用到了大模型管理工具叫做 ollama 有了它,接入大模型so easy。使用ollama可以接入很多大模型,详见:https://ollama.com/library 环境vs2022 preview dotent8 Windows 10 企业版1、下载ollama https://github.com/ollama/ollama安装…