导图社区 data文件夹和model文件夹
这是一篇关于data文件夹和model文件夹思维导图,data文件夹和model文件夹在项目中分别负责存储数据和模型相关的文件,是项目管理和运行的重要组成部分。
编辑于2024-02-08 15:42:24中心主题
data文件夹
Cub
Split
Test.csv
测试集
Train.csv
训练集
Val.csv
验证集
Miniimagenet
Split
Get_unlabel.py
定义图像类别列表
从与Mini-ImageNet数据集相关的三个CSV文件(train.csv,val.csv和test.csv)中提取数据,将文件名和类别标签整理成一个字典(mini_info),其中类别标签按顺序排序
从tieredimagenet/split目录中的三个CSV文件读取数据,并将文件名和类别标签整理成另一个字典(tiered_info)
识别了在tiered_class_list中出现但不在mini_class_list中的类别,并将这些未标记的类别存储在列表unlabel中。然后,打印未标记类别的数量和它们的内容
将未标记的信息写入CSV文件,形成unlabel.csv文件
原始数据集
train.csv
val.csv
test.csv
生成的数据集
unlabel.csv
额外的测试和验证数据
Aux_test.csv
Aux_val.csv
Tieredimagenet
Split
Get_spilt.py
遍历数据集的不同部分(train、val、test),生成相应的CSV文件,并将文件路径和标签写入CSV文件,用于后续的数据处理和模型训练等任务。
生成的数据集
train.csv
val.csv
test.csv
model文件夹
Dataloader
Cub.py
一个用于加载 CUB(Caltech-UCSD Birds-200-2011)数据集的 PyTorch 数据集类 CUB。
定义了数据集图片路径、分割路径和缓存路径等常量
数据预处理函数 get_transforms:
根据输入参数生成数据转换所需的变换,包括随机裁剪、随机水平翻转、颜色扰动和标准化等。
根据不同的 backbone 类型设置不同的数据标准化,以适应不同的模型训练需求。
数据集类 CUB:
继承了 PyTorch 的 Dataset 类,用于加载 CUB 数据集。
初始化函数 __init__ 中进行了以下操作:解析 CSV 文件,获取数据和标签。
计算数据集的类别数量。
调用 get_transforms 方法获取数据转换所需的变换。
parse_csv 方法用于解析 CSV 文件,获取数据和标签信息。
__len__ 方法返回数据集的长度。
__getitem__ 方法用于获取指定索引的样本,其中包括:尝试使用 jpeg4py 库解码 JPEG 图片,如果失败则使用 PIL 库打开图片。
应用数据变换(预处理)并返回图像和标签。
Mini_imagenet.py
创建一个用于处理MiniImageNet数据集的PyTorch数据集类(MiniImageNet类)。该数据集类用于加载图像数据,并提供相应的数据增强和预处理操作,以便用于训练神经网络模型。
数据增强函数 get_transforms: 根据指定的图像大小、神经网络结构(backbone)、以及数据增强强度,返回两种图像转换方法(增强和非增强)的转换序列
MiniImageNet数据集类 MiniImageNet: 包含了数据加载、图像路径解析、数据增强等功能。
__init__ 方法: 初始化数据集类,接受数据集划分的名称和一些参数,调用 get_transforms 函数获取数据转换方法。
parse_csv 方法: 从CSV文件中解析图像路径和标签,用于构建数据集。
__len__ 方法: 返回数据集的长度(图像数量)。
__getitem__ 方法: 根据索引获取数据项,尝试使用 jpeg4py 库解码JPEG格式的图像,如果失败则使用 PIL 库。
Samplers.py
元学习(meta-learning)和分类任务,代码实现了不同的采样器类,目的是为元学习任务提供灵活的数据采样和加载方式,为元学习任务提供了一个灵活的数据采样和加载框架,使得研究者和开发者可以更方便地实现和测试不同的元学习算法。
CategoriesSampler类:
初始化时,传入标签(label)、每批次的样本数(n_batch)、每个类别的样本数(n_cls)、每个类别每批次采样的样本数(n_per)。
通过__iter__方法生成每批次的数据,每个类别随机选择n_per个样本,并返回扁平化的一维张量。
CategoriesViewSampler类:
初始化时,传入标签(label)、每批次的样本数(n_batch)、每个类别的样本数(n_cls)、每个类别用于支持集的样本数(n_shot)、每个类别用于查询集的样本数(n_query)、每个任务的视图数(n_view)。
__iter__方法生成每批次的数据,对于每个类别,随机选择n_shot + n_query个样本,其中前n_shot个用于支持集,后n_query个用于查询集。支持集的标签带有额外的信息,表示视图编号。
RandomSampler类:
初始化时,传入标签(label)、每批次的样本数(n_batch)、每批次每个样本的标签数(n_per)。
__iter__方法生成每批次的数据,每个批次随机选择n_per个样本。
ClassSampler类:
初始化时,传入标签(label)和每个类别每批次采样的样本数(n_per)。
__iter__方法生成每批次的数据,对于每个类别,随机选择n_per个样本。
InSetSampler类:
用于ResNet Fine-Tune,初始化时传入每批次的样本数(n_batch)、每批次每个样本的标签数(n_sbatch)、样本池(pool)。
__iter__方法生成每批次的数据,每个批次从样本池中随机选择n_sbatch个样本。
Tiered_imagenet_raw.py
主要用于加载Tiered ImageNet数据集,提供了数据预处理、图像加载和标签处理的功能
Models
_init_.py
如果一个目录包含了一个名为 __init__.py 的文件,Python 就会将该目录视为一个包,允许你使用 import 语句导入该目录下的模块或子包。
告诉Python在导入当前包时也导入了 model.models.base 模块中的 FewShotModel 类。
Maml.py
使用 PyTorch 实现的 Model-Agnostic Meta-Learning (MAML) 框架,用于元学习(meta-learning),实现 MAML 模型,并提供了不同的评估方式,包括排列评估和集成评估。这是一个用于元学习的通用框架,适用于各种任务。
段落 1: 导入库和模块
段落 2: update_params 函数
这个函数接受损失值、参数字典(params),并使用梯度下降更新参数。函数返回更新后的参数。
段落 3: inner_train_step 函数
inner_train_step 函数代表元学习中的内部训练步骤。它接受一个模型、支持数据和一些参数,然后执行内部训练,返回内部训练后的更新参数。
段落 4: MAML 类
执行 MAML 的前向传播,使用内部训练后的参数。还有其他用于评估的方法,如 forward_eval、forward_eval_perm 和 forward_eval_ensemble。
段落 5: 模型具体实现
根据给定的背骨网络类别选择 ResNetMAML 作为主干网络,初始化模型参数。参数的更新在 inner_train_step 中执行,使用交叉熵损失函数进行内部训练。使用温度参数对预测结果进行缩放。
MAMLUnicorn.py
实现了一个元学习算法,具体来说是基于模型无关的元学习(Model-Agnostic Meta-Learning,MAML)的变体,用于Few-Shot学习任务
Networks
Convnet.py
定义了一个基本的卷积神经网络(ConvNet)模型
主要作用是将输入图像经过卷积和池化操作,最终输出具有 z_dim 个通道的特征张量,可用于各种任务,如图像分类、特征提取等。
Convnet_maml.py
实现了一个基于元学习(meta-learning)的模型,具体来说是 MAML(Model-Agnostic Meta-Learning)算法,用于在小样本学习任务上进行元学习。
Dropblock.py
定义了一个名为DropBlock的PyTorch模块,它实现了一种称为DropBlock的正则化技术
Res12.py
基于ResNet架构设计的神经网络,主要用于Few-Shot Learning的任务
整个网络采用了 ResNet 的结构,但在设计上考虑了 Few-Shot Learning 任务的特点,包括 DropBlock 的引入以及一些参数的动态调整。同时,代码中也包含了对模型参数的初始化操作。
Res12_maml.py
一个基于ResNet架构的神经网络,主要用于元学习(Meta-Learning)中的模型适应性(Model-Agnostic Meta-Learning, MAML)和模型参数的共享。