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

news2024/11/18 15:48:23

目录

一、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路径的,所以不用考虑,对于微调方法来说,如果基于fiercedimage数据集的,在reproduce文件夹下的readme中会介绍这两者的预训练模型,而miniimage数据集没有处理这两者的预训练模型(所以优先考虑使用fiercedimage数据集的预训练模型)。

(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一般来说跟上面相同即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1129197.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

实时流量监控

任何企业的IT管理员的主要目标都是交付一个高度稳定的网络&#xff0c;没有任何压力或重大故障&#xff0c;但是考虑到动态在今天的技术和网络中&#xff0c;这可能需要付出巨大的努力来获得可见性并避免负面影响。 交付高响应的网络和应用程序意味着保持网络正常运行&#xf…

C#开发的OpenRA游戏之金钱系统(5)

C#开发的OpenRA游戏之金钱系统(5) 前面分析了采矿车到矿场采矿的过程,那么采矿车什么时候采满呢?采满之后又是怎么样运送到精炼工厂呢? 首先我们来分析采矿车是怎么样判断采满矿产的,毕竟采矿车不能无限装载矿产资源。所以我们再次回到采矿车类Harvester,来分析它怎么…

推荐几个程序员必逛的个人技术博客网站

1、美团技术团队 地 址: 美团技术团队简 介&#xff1a;美团技术团队的博客&#xff0c;干货满满。推荐指数&#xff1a;⭐⭐⭐⭐⭐ ​ 2、阮一峰的网络日志 地 址: 阮一峰的个人网站 - Ruan YiFengs Personal Website简 介&#xff1a;大神阮一峰&#xff0c;博客风格真正…

期中考核复现

web 1z_php ?0o0[]1A&OoO[]2023a include "flag.php"&#xff1a;尝试包含名为 "flag.php" 的文件。这意味着它会尝试引入一个名为 "flag.php" 的脚本文件&#xff0c;其中可能包含一些敏感信息或标志。 error_reporting(0)&#xff1a;…

Python中使用cv2.resize()函数批量自定义缩放图像尺寸

目录 常用插值缩放方法缩放示例代码总结 常用插值缩放方法 cv2.resize()函数中的interpolation参数指定了图像缩放时使用的插值方法。以下是常用的插值方法&#xff1a; cv2.INTER_NEAREST&#xff1a;最近邻插值。该方法通过选择最接近目标像素的原始像素来进行插值。它是最…

javaEE -8(9000字详解网络编程)

一&#xff1a;网络编程基础 1.1 网络资源 所谓的网络资源&#xff0c;其实就是在网络中可以获取的各种数据资源&#xff0c;而所有的网络资源&#xff0c;都是通过网络编程来进行数据传输的。 用户在浏览器中&#xff0c;打开在线视频网站&#xff0c;如优酷看视频&#xff…

管理类联考——英语二——阅读篇——题材:环保

文章目录 环保2017 年&#xff0c;Text 4——题材&#xff1a;环保-社会细节题-第一步定位&#xff1b;第二步原文复现细节题-推理细节题-人物观点细节题-原因-原词重现&#xff0c;同义替换细节题-人物观点-排除法 2019 年&#xff0c;Text 4——题材&#xff1a;社会-环保细节…

智慧公厕建设方案 - 点击进入

随着城市化进程的不断推进&#xff0c;传统公共厕所的管理问题变得越来越突出。封闭空间、脏乱差的环境以及管理不善所带来的恶臭和卫生问题&#xff0c;成为城市居民心中的痛点。为了解决这一问题&#xff0c;广州中期科技有限公司全新推出了智慧公厕建设方案&#xff0c;以引…

IDEA配置HTML和Thymeleaf热部署开发

IDEA配置HTML和Thymeleaf热部署开发 1.项目配置2. IDEA配置3. 使用 需求&#xff1a;现在我们在开发不分离项目的时候&#xff08;SpringBootThmeleaf&#xff09;经常会改动了类或者静态html文件就需要重启一下服务器&#xff0c; 这样不仅时间开销很大&#xff0c;而且经常重…

云数据库及RDS数据库介绍

1.云数据库概念 云数据库是指被优化或部署到一个虚拟计算环境中的数据库&#xff0c;具有按需付费、按需扩展、高可用性以及存储整合等能力。 2.云数据库特性 云数据库的特性有&#xff1a;实例创建快速、支持只读实例、读写分离、故障自动切换、数据备份、Binlog备份、SQL审…

基于OFDM的通信系统模拟实现

文章目录 前言一、OFDM 基本知识1、OFDM 理论知识及仿真2、OFDM 调制3、OFDM 解调 二、2ASK&#xff08;二进制振幅键控&#xff09;1、2ASK 基本原理①、OOK②、2ASK 2、2ASK/OOK 信号产生方法3、2ASK/OOK 信号解调方法 三、基于 OFDM 的通信系统模拟实现1、整体流程2、MATLAB…

力扣-python-两数相加

题解 1: # Definition for singly-linked list. # class ListNode(object): # def __init__(self, val0, nextNone): # self.val val # self.next nextclass Solution(object):def addTwoNumbers(self, l1, l2):""":type l1: ListNode:t…

数据结构:阶段测试(查漏补缺)

目录 选择题&#xff1a; 题一&#xff1a; 题二&#xff1a; 题三&#xff1a; 题四&#xff1a; 编程题&#xff1a; 题一&#xff1a;左叶子之和 思路一&#xff1a; 题二&#xff1a;约瑟夫问题&#xff08;用单链表实现&#xff09; 思路一&#xff1a; 本人实…

Redis设计与实现(3)字典

Redis的字典使用哈希表作为底层实现&#xff0c;一个哈希表里面可以有多个哈希表节点&#xff0c;而每一个哈希表节点就保存了字典中的一个键值对 redis字典所使用的哈希表由dict.h/dictht typedef struct dictht{//哈希表数组dictEntry **table;//哈希表大小unsigned long si…

【MATLAB源码-第56期】基于WOA白鲸优化算法和PSO粒子群优化算法的三维路径规划对比。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 1.粒子群算法&#xff08;Particle Swarm Optimization&#xff0c;简称PSO&#xff09;是一种模拟鸟群觅食行为的启发式优化方法。以下是其详细描述&#xff1a; 基本思想&#xff1a; 鸟群在寻找食物时&#xff0c;每只鸟都…

Unity游戏开发中打造游戏攻击技能架构与设计

一、技能系统的设计 在 MOBA 游戏中&#xff0c;每个英雄角色都会有多个技能&#xff0c;这些技能可以分为普通攻击和技能攻击两种。普通攻击是英雄角色的基本攻击方式&#xff0c;而技能攻击则需要消耗一定的资源&#xff08;如蓝量&#xff09;才能使用。在设计技能系统时&a…

《数字图像处理》作业一:题目+学习笔记

Hi,学习进步,共同加油💪 1、选择题 (每小题3分,总计24分) (1)下列哪种图像属于数字图像( ) A、电影胶片;B、普通照片;C、手机拍照;D、眼前看到的景物 数字图像是由离散的像素点组成的图像,可以通过数值表示。根据选项,可以排除A(电影胶片)和B(普通…

【力扣刷题】删除链表的倒数第 N 个结点、两两交换链表中的节点、随机链表的复制

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaEE 操作系统 Redis 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 刷题篇 一、删除链表的倒数第 N 个结点1.1 …

一起学数据结构(12)——归并排序的实现

1. 归并排序原理&#xff1a; 归并排序的大概原理如下图所示&#xff1a; 从图中可以看出&#xff0c;归并排序的整体思路就是把已给数组不断分成左右两个区间&#xff0c;当这个区间中的数据数量到达一定数值时&#xff0c;便返回去进行排序&#xff0c;整体的结构类似二叉树…

【Master公式】对于这一类符合的递归可以直接确定时间复杂度

Master公式 T(N) a T(N/b) O(N^d) 对于这一类符合的递归可以直接确定时间复杂度 a,b,c为常数 1、子问题调用了a次 2、子问题的规模一致&#xff0c;N/b指每个子问题处理总规模/b个规模&#xff08;只看规模&#xff0c;常数个忽略&#xff0c;如L,mid,mid1,R&#xff09; 3、…