您的位置:

用python制作图像数据集(python生成数据集)

本文目录一览:

Python 制作Pascal VOC数据集

下图是 Pascal VOC 数据集格式。

1、 Annotations 目录是存放 xml 文件;

2、 ImageSets 目录是存放 txt 文件,主要是测试集、训练集、验证集等文件名称的集合;

3、 JPEGImages 目录是存放图片文件( jpg );

1、从 Annotations 目录下读取 xml 目录;

2、把 xml 目录,随机重置一下,这样在训练的时候,各个分类是随机读取,不会出现某一个分类聚集读取,从而影响训练效果。当然,你也可以在训练的时候选择随机重置,道理是一样的;

3、创建将要写入的 txt 文件。这里示范了训练集、验证集,其他的可自行添加;

4、读取目录文件,通过前缀判断,写入 txt 文件。

有时候不需要指定数据集,只是从一个大的原始数据集中,随机选取一部分当中训练集、一部分当作验证集、一部分当作测试集。

mxnet数据集的制作和训练

安装mxnet

Cpu版:pip install mxnet

Gpu版:pip install mxnet-cu80

若cuda版本为cuda-9.0,改为pip install mxnet-90

pip或apt安装sklearn,easydict

制作数据集

将图片分类并放入不同文件夹

运行python im2rec.py train --list ./可生成.list文件,包含图片列表

运行python im2rec.py train ./ train.rec和train.idx训练文件

--train-ratio 0.9生成验证数据集.bin文件参数为训练数据集和验证数据集之比

--resize 128 128指定生成数据集的图片大小

参考

将生成的.rec,.idx,.bin(非必须)文件放入datasets/faces_emore中

新建property文本,写入图片数量,图片长宽 example : 86545 128 128

例:

python -u  train.py --network m1 --loss softmax --dataset emore,1

使用softma、nosoftmax、arcface或cosface训练完成后,使用生成模型运行三元组损失训练

例:

Python -u train.py --network m1 -loss triplet --lr 0.005 --pretrained ./models/m1-softmax-emore

参数说明

--dataset训练集位置,具体位置查看config.py 108至120行

--network网络模型 候选参数 : r100 r100fc r50 r50v1(基于resnet) d169 d201(基于densenet) y1 y2(基于mobilefacenet) m1 m0.5(基于mobilenet) mnas mnas05 mnas025(基于mnasnet)

--loss损失函数 候选参数 :softmax(标准损失函数) nsoftmax (组合损失函数)arcface cosface combined triplet(三元组损失) atriplet

--ckpt模型存储时间。0: 放弃存储 1:必要时存储(验证集准确率达标时,若无验证集则不存储 3:总是存储)

--lr学习率

--lr-steps学习率改变方法 例:’10000,20000,2200000’即达到图片数量时学习率*0.1

--per-batch-size每次的训练的数量 数量越少,占用显卡内存越少

参考

如何用python imageio制作图像数据集

声明在此使用的彩色图转灰度图进行的单通道的图像存储,对于多通道的图像随后进行总结

主要流程是将图像数据读出

将图像转换成numpy的数组形式

将图像进行行的处理编程行向量的存储

之后是将数据与标签进行合并存储

存储在一个list中

将这个数据集进行数据的打乱顺序,(随机化的过程)

主要的过程就是这些了

下面是代码的

===========================

# -*-coding:utf-8-*-

import numpy

import theano

from PIL import Image

from pylab import *

import os

import theano.tensor as T

import random

import pickle

def dataresize(path=r'D:\worksapce_python\20160426_cp\testing'):

# test path

path_t =r"D:\worksapce_python\20160426_cp\training"

# train path

datas = []

train_x= []

train_y= []

valid_x= []

valid_y= []

test_x= []

test_y= []

for dirs in os.listdir(path):

# print dirs

for filename in os.listdir(os.path.join(path,dirs)):

imgpath =os.path.join(os.path.join(path,dirs),filename)

img = Image.open(imgpath)

img =img.convert('L').resize((28,28))

width,hight=img.size

img = numpy.asarray(img,dtype='float64')/256.

Python实操:手把手教你用Matplotlib把数据画出来

作者:迈克尔·贝耶勒(Michael Beyeler)

如需转载请联系华章 科技

如果已安装Anaconda Python版本,就已经安装好了可以使用的 Matplotlib。否则,可能要访问官网并从中获取安装说明:

正如使用np作为 NumPy 的缩写,我们将使用一些标准的缩写来表示 Matplotlib 的引入:

在本书中,plt接口会被频繁使用。

让我们创建第一个绘图。

假设想要画出正弦函数sin(x)的线性图。得到函数在x坐标轴上0≤x<10内所有点的值。我们将使用 NumPy 中的 linspace 函数来在x坐标轴上创建一个从0到10的线性空间,以及100个采样点:

可以使用 NumPy 中的sin函数得到所有x点的值,并通过调用plt中的plot函数把结果画出来:

你亲自尝试了吗?发生了什么吗?有没有什么东西出现?

实际情况是,取决于你在哪里运行脚本,可能无法看到任何东西。有下面几种可能性:

1. 从.py脚本中绘图

如果从一个脚本中运行 Matplotlib,需要加上下面的这行调用:

在脚本末尾调用这个函数,你的绘图就会出现!

2. 从 IPython shell 中绘图

这实际上是交互式地执行Matplotlib最方便的方式。为了让绘图出现,需要在启动 IPython 后使用所谓的%matplotlib魔法命令。

接下来,无须每次调用plt.show()函数,所有的绘图将会自动出现。

3. 从 Jupyter Notebook 中绘图

如果你是从基于浏览器的 Jupyter Notebook 中看这段代码,需要使用同样的%matplotlib魔法命令。然而,也可以直接在notebook中嵌入图形,这会有两种输出选项:

在本书中,将会使用inline选项:

现在再次尝试一下:

上面的命令会得到下面的绘图输出结果:

如果想要把绘图保存下来留作以后使用,可以直接在 IPython 或者 Jupyter Notebook 使用下面的命令保存:

仅需要确保你使用了支持的文件后缀,比如.jpg、.png、.tif、.svg、.eps或者.pdf。

作为本章最后一个测试,让我们对外部数据集进行可视化,比如scikit-learn中的数字数据集。

为此,需要三个可视化工具:

那么开始引入这些包吧:

第一步是载入实际数据:

如果没记错的话,digits应该有两个不同的数据域:data域包含了真正的图像数据,target域包含了图像的标签。相对于相信我们的记忆,我们还是应该对digits稍加 探索 。输入它的名字,添加一个点号,然后按Tab键:digits.TAB,这个操作将向我们展示digits也包含了一些其他的域,比如一个名为images的域。images和data这两个域,似乎简单从形状上就可以区分。

两种情况中,第一维对应的都是数据集中的图像数量。然而,data中所有像素都在一个大的向量中排列,而images保留了各个图像8×8的空间排列。

因此,如果想要绘制出一副单独的图像,使用images将更加合适。首先,使用NumPy的数组切片从数据集中获取一幅图像:

这里是从1797个元素的数组中获取了它的第一行数据,这行数据对应的是8×8=64个像素。下面就可以使用plt中的imshow函数来绘制这幅图像:

上面的命令得到下面的输出:

此外,这里也使用cmap参数指定了一个颜色映射。默认情况下,Matplotlib 使用MATLAB默认的颜色映射jet。然而,在灰度图像的情况下,gray颜色映射更有效。

最后,可以使用plt的subplot函数绘制全部数字的样例。subplot函数与MATLAB中的函数一样,需要指定行数、列数以及当前的子绘图索引(从1开始计算)。我们将使用for 循环在数据集中迭代出前十张图像,每张图像都分配到一个单独的子绘图中。

这会得到下面的输出结果:

关于作者:Michael Beyeler,华盛顿大学神经工程和数据科学专业的博士后,主攻仿生视觉计算模型,用以为盲人植入人工视网膜(仿生眼睛),改善盲人的视觉体验。 他的工作属于神经科学、计算机工程、计算机视觉和机器学习的交叉领域。同时他也是多个开源项目的积极贡献者。

本文摘编自《机器学习:使用OpenCV和Python进行智能图像处理》,经出版方授权发布。

如何使用Python的Pandas库绘制折线图

我们经常会使用Python的Pandas绘制各种数据图形,那么如何使用它绘制折线图呢?下面我给大家分享一下。

工具/材料

Pycharm

01

首先我们需要打开Excel软件准备需要的数据,这里多准备几列数据,一列就是一条折线,如下图所示

02

然后我们打开Pycharm软件,新建Python文件,导入Pandas库,接着将Excel中的数据读取进数据集缓存,如下图所示

03

接下来我们利用plot方法绘制折线图,如下图所示,这里只添加了一列标题

04

运行文件以后我们就可以看到折线图显示出来了,但是比较的简单,下面我们逐渐的丰富它

05

然后在plot方法中将excel里面的多列标题都添加进来,如下图所示

06

这次在运行文件的时候我们就可以看到折线图上有多条线了,如下图所示

07

接下来我们在为折线图设置标题,X,Y坐标轴的内容,如下图所示

08

然后通过plot方法下面的area方法对折线图的空白区域进行叠加填充,如下图所示

09

最后我们运行完善好后的文件,就可以看到如下图所示的折线图了,到此我们的折线图绘制也就完成了