首页 > 其他分享 >mmcv2.0中build loop、loop.run()、从Dataloader中取数据、run_iter()函数

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

时间:2024-08-28 15:49:54浏览次数:3  
标签:mmcv2.0 __ run 函数 Dataloader build loop

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

首先进入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。

 

标签:mmcv2.0,__,run,函数,Dataloader,build,loop
From: https://www.cnblogs.com/picassooo/p/18384917

相关文章

  • 网站提示508 Loop Detected:服务器检测到请求循环怎么办
    当遇到“508LoopDetected”错误时,这意味着服务器检测到了请求循环,即客户端的请求被服务器重定向回客户端自身,形成了一个无限循环。这种错误通常发生在以下几种情况:重定向循环:客户端请求被服务器重定向,但重定向的URL最终又指向了原始请求的URL。代理或网关配置错误:代理服务器......
  • 组合逻辑环(Combinational Logic Loop)
    组合逻辑电路组合逻辑电路是数字电子学中一类基本的电路类型,它由一系列逻辑门组成,用于实现特定的逻辑功能。与时序逻辑电路不同,组合逻辑电路的输出完全取决于当前的输入信号,而不受之前输入的影响。换句话说,组合逻辑电路没有记忆功能,输出仅由当前时刻的输入决定。组合逻辑电路的......
  • HTMLTestRunner_cn测试报告不显示案例的函数注释解决方法
    找到生成函数注释的代码如下:def_generate_report_test(self,rows,cid,tid,n,t,o,e):#e.g.'pt1.1','ft1.1',etchas_output=bool(oore)#ID修改点为下划线,支持Bootstrap折叠展开特效-Findyoutid=(n==0and'p�......
  • rustlings v6.0 运行时出现 “ You are trying to run Rustlings using the old metho
    背景在之前学习rust时,使用过一段时间rustlings感觉还不错,但是之前的学习只把rustlings的题目刷了一半,然后想再从头到尾刷一遍rustlings的题目。在rustlings的README.md文档中也没有找到重置rustlings的方法,而且官方的分支也更新到了v6.2.0(我之前使用的似乎是v5.......
  • [Javascript + Performance] How to run a large number of time-consuming tasks and
    Tryoption1:Promise PromiserunninginMicrotaskqueue,andrenderingshouldwaituntilthequeueisempty;Ifyouhavealargenumberoftime-consuminginmicrotask,itwillalsoblockrenderingfunctionrunTask(task){Promise.resolve().then(()=&g......
  • Android Kotlin优化代码整洁:with、applay以及run是什么,作用,区别
    目录为什么需要使用with、applay以及runwith、applay以及run是什么、作用以及三者区别一、为什么需要使用with、applay以及run我们在开发项目的过程当中,不可避免,一个界面的内容会有很多,如下initivew方法,会有Recyclerview的初始化,长按以及触摸事件设置,以及生命周期的注册,主......
  • Android开发 - Looper 类处理异步任务和消息解析
    什么是LooperLooper是一个非常重要的概念,它与线程、消息队列和处理异步任务密切相关。是Android中用于管理线程的消息循环的类。它与线程中的MessageQueue结合工作,用于处理异步任务和消息Looper的主要概念消息队列(MessageQueue)一个用于存放要处理的消息和任务的队......
  • STHTMLTestRunner
    #-*-coding:utf-8-*-"""ATestRunnerforusewiththePythonunittestingframework.ItgeneratesaHTMLreporttoshowtheresultataglance.Thesimplestwaytousethisistoinvokeitsmainmethod.E.g.importunittestimportHTML......
  • 安防视频监控EasyCVR视频汇聚平台出现代码层面报错“panic:runtime error”的原因排查
    安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台基于云边端一体化架构,兼容性强、支持多协议接入,包括国标GB/T28181协议、部标JT808、GA/T1400协议、RTMP、RTSP/Onvif协议、海康Ehome、海康SDK、大华SDK、华为SDK、宇视SDK、乐橙SDK、萤石云SDK等。有用户反馈,启动EasyCVR......
  • facefusion整合包cuda 环境报错解决: onnxruntime::ProviderLibrary::Get [ONNXRuntim
    在b站下载了一个up提供的facefusion整合包,运行go-web.bat报错报错信息如下:2024-08-1910:53:07.6316097[E:onnxruntime:Default,provider_bridge_ort.cc:1992onnxruntime::TryGetProviderInfo_CUDA]D:\a\_work\1\s\onnxruntime\core\session\provider_bridge_ort.cc:1637......