Machine Box创始人教你快速建立一个ML图像分类器

时间:2022-05-06
本文章向大家介绍Machine Box创始人教你快速建立一个ML图像分类器,主要内容包括安装、准备教学数据、Spin up Classificationbox、教学和验证、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

AiTechYun

编辑:Yining

Machine Box的创始人Mat Ryer在medium上分享了一篇博文,意在教你在硬盘上快速的建立一个机器学习图像分类器。在这篇博文中,他用到了一个图像分类工具imageclass。

imgclass工具可以让你把一个文件夹装满图片,然后教一个分类器学会如何自动对未来的图像进行分类。它通过创建一个模型并将80%的示例图像发布到Classificationbox中,然后Classificationbox会学习不同类别的图像是什么样子,以及它们的共同特征是什么。剩下的(20%)图像被用来测试模型。然后,开发人员可以使用Classificationbox API来预测它以前从未见过的图像。

  • Classificationbox地址:https://machinebox.io/docs/classificationbox?utm_source=matblog&utm_medium=imgclass&utm_campaign=imgclass&utm_term=imgclass&utm_content=imgclass

这个项目是开源的并在Go语言中编写,本文将解释如何使用它。

  • 地址:https://github.com/machinebox/toys/tree/master/imgclass

安装

安装imgclass工具:

go get github.com/machinebox/toys/imgclass

如果你没有安装Go,这有一个安装地址:https://golang.org/doc/install

验证它是否安装正确:

$ which imgclass
/path/to/somewhere/bin/imgclass

准备教学数据

创建一个文件夹,并在此文件夹中为每个类创建一个子文件夹。

两个文件夹Gophers和Humans

在每个文件夹中,添加尽可能多的图片示例。通常,你提供的图片越多,你的模型就越好。

如果你想要在不需要收集大量图像数据的情况下使用它,那么你可以使用一个经典的猫与狗例子的样本数据集。本文的其余部分将使用此数据集。

  • 猫与狗例子的样本数据集下载地址:http://machinebox.io/samples/images/classification/catsvsdogs.zip

Spin up Classificationbox

Spin-up大意为“磁盘交错启动”,指的是一个硬盘驱动器或光盘驱动器加速了它的磁盘盘片或将光盘从一个停止的状态嵌入到运算的速度的过程。假设你已经安装了Docker,你可以用下面这个单行代码来Spin-up Classificationbox :

  • Docker安装:https://machinebox.io/docs/setup/docker?utm_source=matblog&utm_medium=imgclass&utm_campaign=imgclass&utm_term=imgclass&utm_content=imgclass#installing-docker
docker run -p 8080:8080 -e "MB_KEY=$MB_KEY" machinebox/classificationbox
  • 如果你需要一个MB_KEY,你可以以下网站中免费获得:

https://machinebox.io/account?utm_source=matblog&utm_medium=imgclass&utm_campaign=imgclass&utm_term=imgclass&utm_content=imgclass

运行之后,到http://localhost:8080,然后你能够看到API文档:

当你在本地运行Classificationbox时,你可以直接从container中访问文档

教学和验证

找到你的类文件夹所在的文件夹,并执行imgclass工具:

你将看到的图片和数量概述并要求确认创建模型

分类器可以更好地使用数量平衡的例子,因此,如果你能做到的话,可以在每个类中都使用相同数量的例子。

一旦创建了模型,就会提示你是否要教一个选择的(80%)图像。点击y和按下回车就会开始这个过程:

imgclass工具会将每个图像放入Classificationbox以便让它学习

教学(Teaching)本质上涉及打开每个图像,将其转换为一个base64字符串,并按要求将其提交到/classificationbox/teach API终端,就像这样:

POST /classificationbox/teach
{
 "inputs": [
 {
 "type": "image_base64",
 "key": "image",
 "value": "...base64 data..."
 ]
}

一旦教学完成,验证过程就会开始。

验证(validate)本质上是保留剩余的图像(20%),并要求Classificationbox来预测它们属于哪个类。如果它做对了,我们就把它当作正确的,否则就错了。

结果显示在终端:

没有任何机器学习模型是100%准确的,但是你可以通过一组好的教学数据来获得一些令人印象深刻的结果——在这种情况下,98%准确!

Machine Box将现有技术的机器学习能力运用到Docker容器中,因此开发者可以很容易地将自然语言处理、面部识别、对象识别等应用到你自己的应用中。它比任何云服务都要便宜,而且你的数据不会离开你的基础设施。