- 1、mxnet数据集的制作和训练
- 2、制作cifar10数据集的python版代码
- 3、如何用python imageio制作图像数据集
- 4、Python 制作Pascal VOC数据集
安装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每次的训练的数量 数量越少,占用显卡内存越少
参考
MNIST 数据集
混合的国家标准和技术 (简称 MNIST) 由红外研究员,作为基准来比较不同的红外算法创建数据集。 其基本思想是如果你有你想要测试红外的算法或软件的系统,可以运行您的算法或系统针对 MNIST 的数据集和比较您的结果与其他系统以前发布成果。
数据集包含的共 70,000 图像 ; 60,000 训练图像 (用于创建红外模型) 和 10,000 测试图像 (用于评估模型的精度)。 每个 MNIST 图像是一个单一的手写的数字字符的数字化的图片。 每个图像是 28 x 28 像素大小。 每个像素值是 0,表示白色,至 255,表示黑。 中间像素值表示的灰度级。 图 2 显示了训练集的前八位的图像。 对应于每个图像的实际数字是显然对人,但确定数字是非常困难的挑战的计算机。
图 2 首八 MNIST 训练图像
奇怪的是,训练数据和测试数据均存储在两个文件中,而不是在单个文件中。 其中一个文件包含图像的像素值和,另一个包含图像的标签信息 (0 到 9)。 每个的四个文件还包含标头信息,和所有的四个文件都存储在已经使用 gzip 格式压缩的二进制格式。
注意在图 1,该演示程序使用仅 60,000 项目训练集。 测试集的格式是相同的训练集。 MNIST 文件的主存储库是目前位于 yann.lecun.com/exdb/mnist。 培训的像素数据存储在文件火车-图像-idx3-ubyte.gz 和培训标签数据存储在文件火车-标签-idx1-ubyte.gz。 若要运行该演示程序,您需要转到 MNIST 的存储库站点,下载并解压的两个培训数据文件。 将文件解压缩,我用的免费的开源 7-Zip 实用程序。
创建 MNIST 查看器
若要创建 MNIST 演示程序,我发起了 Visual Studio,创建一个名为 MnistViewer 的新 C# Windows 窗体项目。 演示有没有重大的.NET 版本依赖关系,因此,任何版本的 Visual Studio 应该工作。
模板代码加载到 Visual Studio 编辑器后,我设置的 UI 控件。 我添加了两个 TextBox 控件 (textBox1,textBox2) 要坚持两个解压后的培训文件的路径。 我添加一个按钮控件 (button1),并给了它一个标签加载图像。 我添加了两个多个 TextBox 控件 (textBox3,textBox4) 以保存当前图像索引和下一个图像索引的值。 我使用 Visual Studio 设计器,分别设置”NA”和”0,”这些控件的初始值。
我添加了一个 ComboBox 控件 (comboBox1) 的图像放大倍数值。 使用设计器,我去到该控件的项集合,添加字符串”1″到”10″。我添加了第二个按钮控件 (button2),并给了它一个标签的显示下一次。 我添加了 PictureBox 控件 (pictureBox1),将其背景色属性设置为 ControlDark,以便看到控件的轮廓。 我将图片框大小设置为 280 x 280 允许最多 10 倍的放大倍率 (回顾 MNIST 图像是 28 x 28 像素为单位)。 我添加了第五个 (textBox5) 文本框以显示十六进制值的图像,然后将其多行属性设置为 True 和其字体属性设置为 8.25 磅 Courier New 和扩大其大小到 606 x 412。 而且,最后,我添加了一个列表框控件 (listBox1) 的日志记录消息。
声明在此使用的彩色图转灰度图进行的单通道的图像存储,对于多通道的图像随后进行总结
主要流程是将图像数据读出
将图像转换成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.
下图是 Pascal VOC 数据集格式。
1、 Annotations 目录是存放 xml 文件;
2、 ImageSets 目录是存放 txt 文件,主要是测试集、训练集、验证集等文件名称的集合;
3、 JPEGImages 目录是存放图片文件( jpg );
1、从 Annotations 目录下读取 xml 目录;
2、把 xml 目录,随机重置一下,这样在训练的时候,各个分类是随机读取,不会出现某一个分类聚集读取,从而影响训练效果。当然,你也可以在训练的时候选择随机重置,道理是一样的;
3、创建将要写入的 txt 文件。这里示范了训练集、验证集,其他的可自行添加;
4、读取目录文件,通过前缀判断,写入 txt 文件。
有时候不需要指定数据集,只是从一个大的原始数据集中,随机选取一部分当中训练集、一部分当作验证集、一部分当作测试集。
原创文章,作者:0H0WP,如若转载,请注明出处:https://www.506064.com/n/126354.html