本文目录一览:
- 1、Python 制作Pascal VOC数据集
- 2、mxnet数据集的制作和训练
- 3、如何用python imageio制作图像数据集
- 4、Python实操:手把手教你用Matplotlib把数据画出来
- 5、如何使用Python的Pandas库绘制折线图
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
最后我们运行完善好后的文件,就可以看到如下图所示的折线图了,到此我们的折线图绘制也就完成了