小样本学习(2)--LibFewShot使用

目录

一、LibFewShot安装

1、LibFewShot代码仓库

2、配置环境

3、测试安装是否正确

二、LibFewShot结构

1、config文件夹

2、core文件夹

3、reproduce文件夹

4、results文件夹

三、如何训练自己的数据集

1、调用主配置文件

2、修改主配置文件


一、LibFewShot安装

1、LibFewShot代码仓库

复制代码
cd ~
git clone https://github.com/RL-VIG/LibFewShot.git

2、配置环境

(1)创建anaconda环境

复制代码
cd <path-to-LibFewShot> # 进入clone好的LibFewShot目录
conda create -n libfewshot python=3.7
conda activate libfewshot

(2) 安装pytorch和torchvision

https://pytorch.org/get-started/locally/

(3)pip安装依赖包

复制代码
cd <path-to-LibFewShot> # cd 进入`LibFewShot` 目录
pip install -r requirements.txt

安装包依赖如下:

复制代码
numpy >= 1.19.5
pandas >= 1.1.5
Pillow >= 8.1.2
PyYAML >= 5.4.1
scikit-learn >= 0.24.1
scipy >= 1.5.4
tensorboard >= 2.4.1
torch >= 1.5.0
torchvision >= 0.6.0
python >= 3.6.0

3、测试安装是否正确

(1)修改run_trainer.py中config设置一行为

复制代码
config = Config("./config/test_install.yaml").get_config_dict()

(2) 修改config/headers/data.yaml中的data_root为当前数据集路径,博主使用阿里云GPU,数据集在根目录下,根目录为../

(3)执行run_trainer.py

复制代码
python run_trainer.py 

(4)若可以训练成功,跑通1个epoch则安装正确。

二、LibFewShot结构

1、config文件夹

config文件夹,主要为LibFewShot内置的模型的初始化模型文件yaml ,及模型中的backbone,classifier和header文件。

下属若干文件的yaml中,首先调用yaml文件中罗列的参数,如果没有再去访问includes中包括的data.yaml,device.yaml等文件。

下属classfiers文件夹中,其中基于微调的方法,如SKD,RFS是需要添加预训练的emb_func和cls_classfier路径的,这一部分路径来源于reproduce文件夹的md文件中有一定说明。

下属headers文件夹中包含五个yaml文件,分别是数据集,硬件设备,保存模型与生成日志,模型预训练、支持集参数、batchsize等,优化器和学习方式。

2、core文件夹

core文件夹中为核心模块,实现了模型架构,损失函数和优化器的内部结构。另外有train和test训练所调用的内部类架构。

简而言之,core文件实现基本函数,和基本的类,包括损失函数,神经网络,数据集的构建,而config文件夹作为core文件中若干函数,类的参数。

3、reproduce文件夹

值得一提的是,reproduce文件夹下的readme.md,这个文件介绍了不同的神经网络在预训练模型上的训练分数,对比了5-way 1-shot和5-way 5-shot,miniimagenet和tieredimagenet,conv64、resnet12和resnet18在不同网络的分数。

其中一般来说,在tieredimagenet训练集上训练的分数高,resnet比conv网络显著提升,resnet12在有些情况下甚至高于resnet18,所以要注意看一下对比实验的训练效果。

下面给出readme.md的一部分参考。

另外,在微调模型上,再加上resnet网络模型,可能会导致显存爆炸,所以需要降低batchsize。

reproduce中存在若干文件夹,这些是当时训练预训练模型时的参数,可以进行参考,但是不能照搬照抄,甚至你改了若干路径之后,也是存在一些无法修改的问题,暂时没有查出来问题。

4、results文件夹

results文件夹,显而易见,就是在模型训练之后保存模型checkpoints和日志log的地方。

三、如何训练自己的数据集

1、调用主配置文件

参考上面第一条中测试安装是否正确这一点,我们将修改run_trainer中添加config的这一行,可以先使用config文件夹下的一个网络的初始化的config.yaml调用。如博主调用skd.yaml。

2、修改主配置文件

(1)如果对于非微调方法的网络,是没有cls和emb路径的,所以不用考虑,对于微调方法来说,如果基于tiercedimage数据集的,在reproduce文件夹下的readme中会介绍这两者的预训练模型,而miniimage数据集没有处理这两者的预训练模型(所以优先考虑使用tiercedimage数据集的预训练模型)。

(2)修改神经网络预训练模型为指定路径,这个要么在config/model.yaml,要么文件里已经写出可以直接修改,(要同时修改还是修改一个,记住yaml里罗列的参数优先,如果找不到该参数才会找includes中的yaml文件)

(3)修改config/data.yaml文件夹中的数据集路径为所训练数据集路径

(4)观察主配置文件夹中的backbone,classfier是否对应预训练模型的要求,若不满足则修改

(5)观察config/model.yaml文件夹中的way_num、shot_num、query_num是否满足条件,前两者就是K way-C shot的K和C,query_num是指每次运用支持集时用了多少张测试图片来评判,test_way、test_shot、test_query一般来说跟上面相同即可

相关推荐
昨日之日20061 小时前
Moonshine - 新型开源ASR(语音识别)模型,体积小,速度快,比OpenAI Whisper快五倍 本地一键整合包下载
人工智能·whisper·语音识别
浮生如梦_1 小时前
Halcon基于laws纹理特征的SVM分类
图像处理·人工智能·算法·支持向量机·计算机视觉·分类·视觉检测
深度学习lover1 小时前
<项目代码>YOLOv8 苹果腐烂识别<目标检测>
人工智能·python·yolo·目标检测·计算机视觉·苹果腐烂识别
热爱跑步的恒川2 小时前
【论文复现】基于图卷积网络的轻量化推荐模型
网络·人工智能·开源·aigc·ai编程
阡之尘埃4 小时前
Python数据分析案例61——信贷风控评分卡模型(A卡)(scorecardpy 全面解析)
人工智能·python·机器学习·数据分析·智能风控·信贷风控
孙同学要努力6 小时前
全连接神经网络案例——手写数字识别
人工智能·深度学习·神经网络
Eric.Lee20216 小时前
yolo v5 开源项目
人工智能·yolo·目标检测·计算机视觉
一个通信老学姐7 小时前
专业130+总400+武汉理工大学855信号与系统考研经验电子信息与通信工程,真题,大纲,参考书。
考研·信息与通信·信号处理·1024程序员节
其实吧37 小时前
基于Matlab的图像融合研究设计
人工智能·计算机视觉·matlab
丕羽7 小时前
【Pytorch】基本语法
人工智能·pytorch·python