mxnet数据集的制作和训练

mxnet数据集的制作和训练,第1张

安装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指定生成数据集的图片大小

参考 https://github.com/apache/incubator-mxnet

将生成的.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每次的训练的数量 数量越少,占用显卡内存越少

参考

https://github.com/deepinsight/insightface/tree/master/recognition

最初打算买1080 Ti,发现1080 Ti+拓展坞的组合比Gigabyte AORUS GTX 1080 Gaming Box贵很多,犹豫再三,还是购买了1080,妥妥地够用。

Gigabyte AORUS GTX 1080官方驱动不支持macOS。我的系统是macOS10.13.4,查过很多资料后,发现解决方案比较麻烦,需要使用macOS 10.13.3的kext,如下图:

最终还是将系统从10.13.4降到了10.13.2。严格按照 步骤 安装:

安装成功后在Graphics/Displays和NVIDIA Driver Manager可查到外置显卡的信息:

目前无法通过pip安装GPU版本的MXNet,只能通过 源码 )安装:

安装好CUDA9.1后,测试GPU:

安装好cuDNN7.0.5,构建MXNet,最后采用基于MXNet的测试用例验证一下包:

安装过程中需要注意的是:

用install_name_tool将lib指向修改为正确的即可:

MXNet是一个深度学习框架,是亚马逊(Amazon)选择的深度学习库,旨在提高效率和灵活性。

MXNet具有轻量级、便携式、灵活的分布式/移动深度学习等优势,具有动态,突变感知的数据流Dep调度程序。

它拥有类似于 Theano和TensorFlow 的数据流图,为多GPU配置提供了良好的配置,有着类似于 Lasagne 和 Blocks 更高级别的模型构建块,并且可以在你可以想象的任何硬件上运行(包括手机)。

MXNet适用于Python,R,Julia,Scala,Go,Javascript等。

另外,MXNet也不仅仅是一个深度学习项目,它还是用于构建深度学习系统的蓝图和指南的集合,以及针对黑客的DL系统的有趣见解。

MXNet有很多的特性,今天我们来了解下。

灵活的编程模型:支持命令式和符号式编程模型以最大化效率和性能。

从云端到客户端可移植:可运行于多CPU、多GPU、集群、服务器、工作站甚至移动智能手机。

多语言支持:支持七种主流编程语言,包括C++、Python、R、Scala、Julia、Matlab和JavaScript。事实上,它是唯一支持所有 R 函数的构架。

本地分布式训练:支持在多CPU/GPU设备上的分布式训练,使其可充分利用云计算的规模优势。

性能优化:使用一个优化的C++后端引擎并行I/O和计算,无论使用哪种语言都能达到最佳性能。

云端友好,可直接与S3,HDFS和Azure兼容。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12065359.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存