MMCV解析
0.MMCV源码结构
1.cnn
看名字可以猜到是和模型相关的代码
1.1bricks
看名字应该是各种网络层
1.1.1activation 激活函数
把torch上的激活函数注册到ACTIVATION_LAYERS,还实现了clamp和GELU
1.1.2 context_block
ContextBlock module in GCNet 通道注意力
1.2 utils
1.2.1 flops_counter
理解为计算量。可以用来衡量算法/模型的复杂度
1.2.2 fuse_conv_bn
https://blog.csdn.net/qq_42191914/article/details/103306066
2.fileio
2.1handlers (读写文件)
base.py是一个抽象类,其他的继承base ,(io.py)整合所有的handler通过注册机制,向外提供了load 和dump方法
2.2fileclient()
BaseStorageBackend是一个抽象类,其他的继承,file_client 整合所有的_backends 通过注册机制,向外提供了get和get_text方法
3.image
颜色转换,形态学,图像读取,tensortoimg,图像归一化
3.1hooks
钩子编程(hooking),也称作“挂钩”,是计算机程序设计术语,指通过拦截软件模块间的函数调用、消息传递、事件传递来修改或扩展操作系统、应用程序或其他软件组件的行为的各种技术。处理被拦截的函数调用、事件、消息的代码,被称为钩子(hook)
3.2 base_runner ()
Runner 对象初始化
注册各类 Hook 到 Runner 中
调用 Runner 的 resume 或者 load_checkpoint 方法对权重进行加载
运行给定的工作流,此时才真正开启了工作流
4.utils
4.1 config
通过 dict 生成 config
通过配置文件生成 config
自动替换预定义变量
导入自定义模块
合并多个配置文件
从 base 文件中合并
从多个 base 文件中合并
合并字典到配置
allow_list_keys 模式合并
允许删掉特定内容
pretty_text 和 dump
4.2 registry
Registry 类可以提供一种完全相似的对外装饰函数来管理构建不同的组件,例如 backbones、head 和 necks 等等,Registry 类内部其实维护的是一个全局 key-value 对。通过 Registry 类,用户可以通过字符串方式实例化任何想要的模块。