mmclassification
文章平均质量分 78
mmclassification工程源码阅读
jingbo1801
机器视觉、图像,TX2,python,c++
展开
-
mmclassification项目阅读系列文章目录
1、教程文档翻译1、mmclassification-安装使用(一)2、mmclassification-模型微调(二)3、mmclassification-添加新数据集(三)4、mmclassification-自定义数据管道(四)5、mmclassification-添加新模块(五)2、源码阅读1、setup.py工程环境配置(一)2、mmcls库组织结构说明(二)3、registry类注册机制(三)...原创 2020-08-07 21:11:59 · 1867 阅读 · 0 评论 -
mmsegment数据集说明(六)
目录1、数据集加载2、加载图片及标记3、定义自己的数据集4、数据集操作4.1、重复数据集4.2、连接数据集https://mmsegmentation.readthedocs.io/en/latest/tutorials/customize_datasets.html1、数据集加载依据tools/train.py中调用方式,提取单独的数据集加载逻辑。from mmcv.utils import Configfrom mmseg.datasets import...原创 2021-02-01 22:18:15 · 2182 阅读 · 2 评论 -
mmclassification源码阅读(六) train_model执行过程
以训练过程为例,执行以下脚本。python tools/train.py configs/cifar10/resnet50.py --resume-from=work_dirs/resnet50/epoch_20.pth1、整体流程执行代码:# file: apis/train.pytrain_model( model, # 实例化模型类 datasets, # 实例化数据类 cfg, # 全部配置参数 distributed=distribute原创 2020-08-08 22:32:06 · 1912 阅读 · 0 评论 -
mmclassification源码阅读(五) 数据加载过程
以训练过程为例,执行以下脚本。python tools/train.py configs/cifar10/resnet50.py --resume-from=work_dirs/resnet50/epoch_20.pth1、整体流程执行代码:datasets = [build_dataset(cfg.data.train)]其中cfg.data.train为:# file: configs/_base_/datasets/cifar10.pytrain_pipeline =原创 2020-08-08 22:26:08 · 1107 阅读 · 0 评论 -
mmclassification源码阅读(四) 模型加载过程
以训练过程为例,执行以下脚本。python tools/train.py configs/cifar10/resnet50.py --resume-from=work_dirs/resnet50/epoch_20.pth1、整体流程首先加载配置,args为用户输入参数,cfg为配置文件配置参数。只有将参数统一合并至cfg管理。args = parse_args()cfg = Config.fromfile(args.config)... # 参数合并,预处理过程2、cfg参数解析原创 2020-08-08 22:22:25 · 2005 阅读 · 2 评论 -
mmclassification源码阅读(三) registry类注册机制
1、为什么使用注册类对于需要支持许多不同的模型的大型框架,如mmdetection、detectron2,理想情况下所有的模型的参数都写在配置文件中,如何根据配置文件,决定加载不同的类,注册器类是一个常用的解决方式。注册器类主要实现对同类型类的管理。扩展性超级低的代码:if class_name == 'VGG': model = build_VGG(args)elif class_name == 'ResNet': model = build_ResNet(args).原创 2020-08-06 20:34:43 · 1691 阅读 · 1 评论 -
mmclassification源码阅读(二) mmcls库组织结构说明
1、示例说明以tools/train.py运行时,加载过程为例。执行命令:python tools/train.py configs/cifar10/resnet50.py导入代码为:from mmcls import __version__from mmcls.apis import set_random_seed, train_modelfrom mmcls.datasets import build_datasetfrom mmcls.models import build_原创 2020-08-06 20:23:17 · 2349 阅读 · 0 评论 -
mmclassification源码阅读(一) setup.py工程环境配置
1、write_version_py读取.git中哈希值,mmcls包下VERSION文件内容,将信息写入mmcls包下的version.py文件中。写入字符串格式如下:content = """# GENERATED VERSION FILE# TIME: {}__version__ = '{}'short_version = '{}'version_info = ({})"""字符串格式化逻辑如下:version_file_str = content.format(time原创 2020-08-06 20:14:28 · 889 阅读 · 0 评论 -
mmclassification-添加新模块(五)
1、开发新组件我们基本上将模型组件分为3种类型。骨干网:通常是一个特征提取网络,例如ResNet,MobileNet。瓶颈:骨干和头部之间的组件,例如GlobalAveragePooling。头:用于特定任务(例如分类或回归)的组件。1.1、添加新的主干在这里,我们以ResNet_CIFAR为例说明如何开发新组件。由于CIFAR的输入大小为32x32,因此该主干将kernel_size=7,stride=2替换为kernel_size=3,stride=1,并删除stem后的M...翻译 2020-08-04 22:50:58 · 2012 阅读 · 0 评论 -
mmclassification-自定义数据管道(四)
1、数据管道设计遵循典型的约定,我们使用Dataset并DataLoader用于多个工作单元的数据加载。Dataset返回与模型正向方法的参数相对应的数据项的字典。数据准备管道和数据集是分开的。通常,数据集定义如何处理标记数据,数据管道定义所有准备数据字典的步骤。管道由一系列操作组成,每个操作都将一个dict作为输入,并为下一个转换输出一个dict。这些操作分为数据加载,预处理和格式化。这是在ImageNet上进行ResNet-50训练的管道示例。img_norm_cfg = dict(翻译 2020-08-04 22:45:11 · 1726 阅读 · 0 评论 -
mmclassification-添加新数据集(三)
1、通过重组数据来自定义数据集1.1、将数据集重新组织为现有格式最简单的方法是将数据集转换为现有的数据集格式(ImageNet)。为了进行训练,它通过文件夹区分类别。训练数据目录如下:imagenet├── ...├── train│ ├── n01440764│ │ ├── n01440764_10026.JPEG│ │ ├── n01440764_10027.JPEG│ │ ├── ...│ ├── ...│ ├── n15075141翻译 2020-08-04 22:39:53 · 2996 阅读 · 1 评论 -
mmclassification-模型微调(二)
有两个步骤可以微调新数据集上的模型。1)添加新数据集的支持;2)修改配置文件。以对CIFAR10数据集的微调为例,用户需要修改配置中的五个部分。1、继承基本配置要在不同配置之间重用公共部分,我们支持从多个现有配置继承配置。要微调ResNet-50模型,需要继承新配置_base_/models/resnet50.py以构建模型的基本结构。要使用CIFAR10数据集,新配置也可以简单地继承_base_/datasets/cifar10.py。对于运行时设置(例如训练计划),新配置需要继承_.翻译 2020-08-04 22:29:09 · 2323 阅读 · 0 评论 -
mmclassification-安装使用(一)
项目地址:https://github.com/open-mmlab/mmclassification1、环境安装python 3.6+mmcv 1.0.3opencv-contrib-python 4.3.0.36opencv-python 4.3.0.36Pillow 7.2.0pycocotools 2.0.1torch 1.5.1torchvision 0.6.1cuda 10.1conda install pytorch=1.5.1 cudatoolkit=10.1翻译 2020-08-04 22:22:28 · 7153 阅读 · 4 评论