blastml是一个快速的机器学习原型库
BlastML的Python项目详细描述
blastml
blastml是一个快速的机器学习原型库
使用blastml,您可以轻松地创建cnn网络的原型(nlp将在将来添加)。 blastml使用keras(tflow)作为下划线库,但它比keras本身要简单得多。
项目
blastml允许您创建一个新项目,该项目旨在帮助 整个机器学习成单文件夹结构。
如何创建新项目:
note:在对我们的数据进行任何训练/推断之前,最好确保 我们先收集资料。blastml使用此数据集格式:
root/
----project/
---------dataset/
------------Class1/
----------------File1
----------------File2
----------------File3
----------------<...>
------------Class2/
----------------File1
----------------File2
----------------File3
----------------<...>
------------<...>
一旦以该格式设置数据集,并指定
在项目配置设置中正确的路径,只需调用
create_project()方法在您的网络实例中。
bt默认,blastml使用标准的80:20训练、推理、验证文件分发。
一旦数据处理完毕,您就可以使用
你选择的CNN。
卷积神经网络
blastml包含各种知名和经过测试的cnn的实现,例如:
- 简单(基本CNN)
- VGG-16
- resnet-18
CNN建设者
blastml包含简单的cnn构建块,允许您集中精力构建和测试自己的cnn 而不会在函数名、参数和其他混合设置上花费太多时间。 要构建自定义网络,只需调用create()函数。
自定义CNN示例:
Net.create()
.add_2d(filters=32, kernel=(3, 3), activation="relu", padding='same', input_shape=(224, 224, 3))
.add_2d(filters=32, kernel=(3, 3), activation='relu')
.add_max_pooling()
.add_dropout()
.add_basic_block()
.add_basic_block()
.add_flatten()
.add_dense(size=512, activation='relu', name="layer_features")
.add_dense(size=cfg.get_num_classes(), activation='softmax', name="layer_classes")
.show_model_summary()
.compile()
.train()
.evaluate()
如何使用blastml
培训和评估
blastml使它非常易于使用,您只需要:
- 使用数据创建数据集文件夹:
- 创建a/train文件夹
- 创建/验证文件夹
- 创建/推断文件夹
- 创建a/model文件夹(保存模型的位置)
- 创建blastml配置(cfg):
- 设置训练/验证/推理/模型文件夹。
- 输入纪元数。
- 输入批数(要处理每个批的图像)。
- 输入类数。
- 输入线程数(如果启用多线程)。
- 选择优化器(例如:adam、sgd、rmsprop等等)。
- 选择“损失函数”(例如:稀疏分类交叉熵、二进制交叉熵等)。
- 选择型号名称
- 类模式:稀疏、分类、二进制(分类类型)
- [可选]启用全局保存模式:
- 保存模型
- 节省重量
- 保存历史记录
- 选择增强参数
- 创建blastml(cfg)实例(将配置附加到blastml)
- 把CNN连接到BLASTML。
- 编辑CNN。
- 训练(获得准确性+模型损失+验证准确性+损失)。
- 评估(查看模型如何根据从未见过的数据进行评估)。
训练很简单:
net = BlastML(cfg=cfg)
net.vgg16().compile().train().evaluate()
推断和绘制结果
- 将“线程数”设置为1(确保线程不会与数据集重叠)
- 将模型从磁盘加载到内存
- [可选]将历史记录打印到/model文件夹(为丢失和准确性创建两个图像)
- 推断数据集(获取嵌入/分类结果)
目标检测
blastml支持用于对象检测的darknet(yolo v3)。
见:https://github.com/qqwweee/
功能:
- 将暗权重转换为路缘石权重(h5文件)
- 使用我们自己的数据集训练Darknet(使用Yolo V3预先训练并将权重转换为H5)
- 创建模型/黑暗/数据
- 放置anchors.txt
- put classes.txt
- 输入train.txt
- 创建model/darknet/data/log/(用于Tensorboard日志结果)
- 创建模型/黑暗/数据
note:培训部分是donE分两个阶段:
- 1-50个时期,冻结42/44层
- 51-100层,未冷冻。
我上传了一个演示(压缩)darknet/文件夹,请点击这里: here
训练很简单:
net = BlastML(cfg=cfg)
net.darknet().create().compile().train()
训练完成后,将创建2.h5(重量)文件
- 1-50阶段.h5<;project name>;.darknet.trained.stage.h5)
- 51-100训练.h5(即:<;project name>;.darknet.trained.h5)
接下来我们可以推断我们的视频/图像。