mmdetection multi_apply
目录
partial函数
map函数
multi_apply函数
先说mmdetection的multi_apply函数的作用,作用:将输入的函数func作用在Iterable每个参数上,例如:
cate_pred, kernel_pred = multi_apply(self.forward_single, new_feats,list(range(len(self.seg_num_grids))),eval=eval, upsampled_size=upsampled_size)
SOLOv2中,将split_feats()函数返回的特征图,依次使用forward_single()函数进行计算!
在理解mmdetection的multi_apply函数之前,先温故一下partial函数和map函数。
partial函数
partial(func, *args, **keywords) - new function with partial application
of the given arguments and keywords.
partial函数位于functools模块中,导入执行命令from functools import partial即可,该函数有什么作用?
简单理解,就是把一个函数的某些参数给置为默认参数,返回一个新的带有默认参数的函数!
例如:
########################################################
# 定义加法函数
def add(a,b):return a+b# 直接调用
add(1,2) # 输出 ----> 3
################################################################################################################
# 导入partial函数
from functools import partial# 设置新函数的默认参数b=2,返回新函数funcadd
funcadd = partial(add, b=2)# 调用
funcadd(1) # 输出 ----> 3
funcadd(2) # 输出 ----> 4
funcadd(3) # 输出 ----> 5
########################################################
map函数
map函数是python内建函数,其作用是,将func函数依次作用于Iterable的每个元素上,返回一个新的Iterable
map(func, *iterables) --> map object
例如:
# 定义一个自加函数
def func(x):x = x+1return x# 定义一个数组
input = (1,2,3,4)# 调用map
results = map(func, input)# map结果为Iterable的,可使用list()将结果转成序列
print(list(results)) # [2, 3, 4, 5]# print(tuple(results)) # (2, 3, 4, 5)
multi_apply函数
def multi_apply(func, *args, **kwargs):# kwargs {'eval': False, 'upsampled_size': (192, 288)} # 将参数以字典的形式传入,并使用partial函数置为新函数pfunc的默认参数pfunc = partial(func, **kwargs) if kwargs else func# 将剩余的参数传入pfunc函数中,并进行计算map_results = map(pfunc, *args)# 将上一步的计算结果使用zip打包,最终返回为tuple(list_0, ..., list_n)形式return tuple(map(list, zip(*map_results)))
调用multi_apply函数举例:
# 定义一个函数
def func(idx, eval=False):return idx, eval# 调用
result=multi_apply(func,list(range(10)), eval=False)# 输出
'''
([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [False, False, False, False, False, False, False, False, False, False])
'''
mmdetection multi_apply相关推荐
- MMDetection理解
MMDetection理解 1. Model整体构建流程和思想 1.1 训练核心组件 1.1.1 Backbone 1.1.2 Neck 1.1.3 Head 1.1.4 Enhance 1.1.5 ...
- mmdetection学习系列(1)——SSD网络
1. 概述 本文是本人自学mmdetection的第一篇文章,因为最近一段时间在做目标检测相关的内容,为了更好地研究领域内相关知识,特意花了不少时间熟悉mmdetection框架(https://gi ...
- MMDetection的FCOS算法fcos_head注释
由于不知道如何发布代码,复制粘贴不太好看(起码我不喜欢看,哈哈),所以笔者再次便采取截图的形式. --------------------------------------------------- ...
- 【mmdetection源码解读(二)】RPN网络
以下仅为个人理解,若有不正之处还请指出,欢迎交流! 在two-stage目标检测方法中,通过骨干网络获得的特征图需要送进RPN网络产生区域建议候选框,下面就结合mmdetection中的源码详细解释这 ...
- mmdetection
参考: mmdetection检测训练和源码解读 源码解读 图像目标检测之cascade-rcnn实践 mmdetection添加focal loss mmdetection,训练自己的数据 训练自定 ...
- MMDetection的学习笔记
学习资料 A. MMDet组件整体介绍 [博文]<轻松掌握 MMDetection 整体构建流程(一)> 系统性地介绍了MMDet中的各种组件,例如:Backbone, Neck, Hea ...
- 对象检测工具包mmdetection简介、安装及测试代码
mmdetection是商汤和港中文大学联合开源的基于PyTorch的对象检测工具包,属于香港中文大学多媒体实验室open-mmlab项目的一部分.该工具包提供了已公开发表的多种流行的检测组件,通过这 ...
- 港中大、商汤开源目标检测工具包mmdetection,对比Detectron如何?
近日,香港中文大学-商汤联合实验室开源了基于 PyTorch 的检测库--mmdetection.上个月,商汤和港中大组成的团队在 COCO 比赛的物体检测(Detection)项目中夺得冠军,而 m ...
- MMDetection V2.0发布!速度精度全面提升,现有检测框架最优
本文授权转自知乎作者陈恺,https://zhuanlan.zhihu.com/p/145084667.未经作者许可,不得二次转载. MMDetection V1.0 版本发布以来,我们收到了很多用户 ...
最新文章
- 重磅~ 深度学习中的图像分割:方法和应用
- python3入门到精通pdf-Python3入门到精通实战特训
- BGP community
- Redis RDB、AOF持久化详解
- 获得本机IP和访问服务的端口号(Java)
- CPU缓存一致性协议MESI
- Javascript详解
- 介绍Flex UI测试工具:FlexMonkey
- eoe android Studio 安装使用教程
- ffmpeg java_Java 调用 FFMPEG 的坑人之处
- 使用Altium Designer软件如何导入3D模型 方法三 —— 自己用Altium Designer软件建立简单的模型
- 台式计算机性能与种类,最新台式机处理器性能排行榜
- ks 曲线_ROC曲线与KS曲线的理解
- String类常用方法解析
- python做的游戏怎么导到微信_微信跳一跳游戏的脚本-scratch导出到微信-微信小程序是怎么做的...
- 制作Windows PE启动镜像命令
- matlab画红色爱心(心形图)
- 双屏显示 鼠标不能从左侧滑入右侧竖屏
- 【gradle Composing builds】gradle依赖管理Composing builds之杂症-快速同步
- linux常用bash命令介绍