Few-shot learning

数据集

小样本学习(few shot learning)里面常用的测试数据集主要有Omniglot和miniImagenet两个,但是网上能查到的下载地址都在谷歌网盘上,而且miniImagenet中还缺少标注数据的csv文件,这里写一下搜索到的地址

miniImagenet部分

miniImagenet下载地址 :

百度云链接: https://pan.baidu.com/s/1npRhZajLrLe6-KtSbJsa1A 密码: ztp5
百度云下载速度有些慢,尝试使用谷歌云盘:https://drive.google.com/open?id=1HkgrkAwukzEZA0TpO7010PkAOREb2Nuk
需要csv文件从这里获取:https://github.com/vieozhu/MAML-TensorFlow-1

开始主要是跑MAML算法测试,发现github上cbfinn提供的代码https://github.com/cbfinn/maml.git中,处理数据的部分只适用于linux,在win下运行会出错,将proc_images.py中os.system改为对应的os操作即可。
直接贴修改后的代码

"""
Script for converting from csv file datafiles to a directory for each image (which is how it is loaded by MAML code)Acquire miniImagenet from Ravi & Larochelle '17, along with the train, val, and test csv files. Put the
csv files in the miniImagenet directory and put the images in the directory
其实这里的意思就是,你要把下载的原始miniimagenet数据集解压缩之后的images文件夹移动到miniImagenet文件夹之下,
你的proc_images.py文件也在同一个文件夹之下,这样就可以对数据进行处理了。
'miniImagenet/images/'.
Then run this script from the miniImagenet directory:cd data/miniImagenet/python proc_images.py
"""
上面这部分是finn自己的代码适合linux
from __future__ import print_function
import csv
import glob
import osfrom PIL import Imagepath_to_images = 'images/'all_images = glob.glob(path_to_images + '*')# Resize images
for i, image_file in enumerate(all_images):im = Image.open(image_file)im = im.resize((84, 84), resample=Image.LANCZOS)im.save(image_file)if i % 500 == 0:print(i)# Put in correct directory
for datatype in ['train', 'val', 'test']:os.system('mkdir ' + datatype)with open(datatype + '.csv', 'r') as f:reader = csv.reader(f, delimiter=',')last_label = ''for i, row in enumerate(reader):if i == 0:  # skip the headerscontinuelabel = row[1]image_name = row[0]if label != last_label:cur_dir = datatype + '/' + label + '/'os.system('mkdir ' + cur_dir)last_label = labelos.system('mv images/' + image_name + ' ' + cur_dir)下面这部分是适用于windows的
from __future__ import print_function
import csv
import glob
import osfrom PIL import Imagepath_to_images = 'images/'all_images = glob.glob(path_to_images + '*')# Resize images
for i, image_file in enumerate(all_images):im = Image.open(image_file)im = im.resize((84, 84), resample=Image.LANCZOS)im.save(image_file)if i % 500 == 0:print(i)# Put in correct directory
for datatype in ['train', 'val', 'test']:os.mkdir(datatype)with open(datatype + '.csv', 'r') as f:reader = csv.reader(f, delimiter=',')last_label = ''for i, row in enumerate(reader):if i == 0:  # skip the headerscontinuelabel = row[1]image_name = row[0]if label != last_label:cur_dir = datatype + '/' + label + '/'os.mkdir(cur_dir)last_label = labelos.rename('images/' + image_name,  cur_dir+image_name)

Omniglot数据集

直接下载github整个项目(94M),解压取python版本,新建一个data,将所有压缩包放进data即可。

数据集简介

Omniglot 一般会被戏称为 MNIST 的转置,大家可以想想为什么?下面对 Omniglot 数据集进行简要介绍:

Omniglot 数据集包含来自 5050 个不同字母的 16231623 个不同手写字符。每一个字符都是由 2020 个不同的人通过亚马逊的 Mechanical Turk 在线绘制的。

每个图像都与笔画数据配对, 坐标序列为 [x, y, t][x,y,t], 且时间 (t)(t) 以毫秒为单位。笔画数据仅在 matlab/ 文件中可用。

数据集的引用: Lake, B. M., Salakhutdinov, R., and Tenenbaum, J. B. (2015). Human-level concept learning through probabilistic program induction. Science, 350(6266), 1332-1338.

Omniglot 数据集总共包含 5050 个字母。我们通常将这些分成一组包含 3030 个字母的背景(background)集和一组包含 2020 个字母的评估(evaluation)集。

更具挑战性的表示学习任务是使用较小的背景集 “background small 1” 和 “background small 2”。每一个都只包含 55 个字母, 更类似于一个成年人在学习一般的字符时可能遇到的经验。

为了更加直观的感受 Omniglot 的组成,我借助 brendenlake/omniglot 的源码,对该数据集进行了剖析,并以 .ipynb 的文件格式进行展示。数据集具体形式可见 omniglot/python 。查看 数据使用说明 无需解压便可直接获取数据集的相关信息。如果你更喜欢命令行的形式,可以查看 dataloader。

更进一步,如果你想要使用 Modified Hausdorff 距离测试 one-shot 在原论文 的效果如何,你可以查看 one-shot-classification。

更甚者,如果你仅仅是想要在线查看该数据集,而不想将其下载下来。你可以在 https://mybinder.org/上在线对该数据集进行一些你想要的操作,包括跑程序。具体的做法是:

  1. 点击 Omniglot 进入在线编辑模式;
  2. 数据集见 omniglot/ 目录;数据使用说明.ipynb 文件可以用来操作 Omniglot 数据集;
  3. 测试 one-shot 的数据集见 omniglot/python/one-shot-classification 目录。文件 test_demo.ipynb 可以做一些测试工作。

MAML中few-shot (小样本)learning中数据集的处理相关推荐

  1. 关于hands on machine learning中datasets数据无法下载的问题

    文章目录 背景 解决办法 其他信息 背景 我在重复hands on machine learning with scikit-learn,keras&tensorflow中的10.2.2中的代 ...

  2. 基于SE的半监督元学习网络在小样本故障诊断中的应用

    Semi-supervised meta-learning networks with squeeze-and-excitation attention for few-shot fault diag ...

  3. Deep Learning 中的 benchmark 与 baseline

    Deep Learning 中的 benchmark 与 baseline benchmark benchmark是一个参考点,通常指一个数据集或一系列标准化的测试任务,用于评估模型的性能.bench ...

  4. R语言使用caret包中的createFolds函数对机器学习数据集进行交叉验证抽样、返回的样本列表长度为k个

    R语言使用caret包中的createFolds函数对机器学习数据集进行交叉验证抽样.返回的样本列表长度为k个 目录

  5. R语言使用caret包中的createMultiFolds函数对机器学习数据集进行交叉验证抽样、返回的样本列表长度为k×times个、times为组内抽样次数

    R语言使用caret包中的createMultiFolds函数对机器学习数据集进行交叉验证抽样.返回的样本列表长度为k×times个.times为组内抽样次数 目录

  6. Python使用matplotlib绘制数据去重前后的柱状图对比图(在同一个图中显示去重操作之后同一数据集的变化情况)

    Python使用matplotlib绘制数据去重前后的柱状图对比图(在同一个图中显示去重操作之后同一数据集的变化情况) #仿真数据 import pandas as pd import numpy a ...

  7. R语言使用broom包将回归模型(线性回归、逻辑回归、比例风险回归)的结果整理成dataframe并导出到excel等文件中:基于mtcars和colon数据集

    R语言使用broom包将回归模型(线性回归.逻辑回归.比例风险回归)的结果整理成dataframe并导出到excel等文件中:基于mtcars和colon数据集 目录

  8. learning中的数学

    在网上看到一篇帖子,有点意思,这里转一下: 从大学到现在,课堂上学的和自学的数学其实不算少了,可是在研究的过程中总是发现需要补充新的数学知识.Learning和Vision都是很多种数学的交汇场.看着 ...

  9. Learning中的代数结构的建立

    Learning中的代数结构的建立 转自:http://blog.sina.com.cn/s/blog_6833a4df0100nazk.html Learning是一个融会多种数学于一体的领域.说起 ...

  10. 机器学习 Machine Learning中多元线性回归的学习笔记~

    1 前言 今天在做 Machine Learning中多元线性回归的作业~ 2 Machine Learning中多元线性回归 2.1 Feature Scaling和 Mean Normalizat ...

最新文章

  1. Python Re 模块超全解读!详细
  2. Unity应用架构设计(9)——构建统一的 Repository
  3. 2014迅雷校园招聘笔试题答案
  4. android OkHttp form 上传图片和参数
  5. LINUX驱动注册过程失败处理不当引起的恶果
  6. iOS下音视频通信-基于WebRTC
  7. HDU 1010题解这是一道简单的DFS加回溯题,看懂后就会对递归和回溯有较深刻的理解。...
  8. mysql text与blog的区别
  9. 谷歌开源的 GAN 库--TFGAN
  10. Apache 虚拟主机的配置[Ubuntu]
  11. html获取一条一条的li,html – 在一个li中定位一个span
  12. ModuleNotFoundError: No module named ‘pip‘
  13. 更新sql语句 sql注入_SQL更新语句– SQL中的更新查询
  14. 各种进制的学习与转换
  15. 优先队列——Priority_Queue 详解
  16. excel根据数据得出公式
  17. TranslateAnimation祥解
  18. 微信html下拉刷新页面,微信公众号内的页面的下拉刷新,兼容手机端和PC端
  19. python求图形面积_如何使用python语言中的if语句实现求取图形面积
  20. 无线网络攻防实战 WEP密钥如何被攻破的 图

热门文章

  1. VS Code加载 Web 视图时出错
  2. 7-4 大炮打蚊子 (20分)__C++
  3. 等额本息贷款每月还款金额推导过程
  4. C语言中字符数组的初始化与赋值,字符串相关函数
  5. python 列表迭代_Python | 以相反的顺序迭代列表
  6. 把Excel批注的“红三角”放在单元格左上角_44个Excel使用技巧:怪不得同事表格类工作那么快完成,学以致用...
  7. SQL 常用基础语句
  8. Ubuntu系统的SSH出现“Connection reset by IP port 22 ”
  9. Android 人脸识别了解一下 (上)
  10. ROS学习系列(一):ubuntu16.04下安装 ROS IDE RoboWare Studio 教程