Machine Box的创始人Mat Ryer在medium上分享了一篇博文,意在教你在硬盘上快速的建立一个机器学习图像分类器。在这篇博文中,他用到了一个图像分类工具imageclass。
imgclass工具可以让你把一个文件夹装满图片,然后教一个分类器学会如何自动对未来的图像进行分类。它通过创建一个模型并将80%的示例图像发布到Classificationbox中,然后Classificationbox会学习不同类别的图像是什么样子,以及它们的共同特征是什么。剩下的(20%)图像被用来测试模型。然后,开发人员可以使用Classificationbox API来预测它以前从未见过的图像。
这个项目是开源的并在Go语言中编写,本文将解释如何使用它。
go get github.com/machinebox/toys/imgclass
$ which imgclass
/path/to/somewhere/bin/imgclass
两个文件夹Gophers和Humans
在每个文件夹中,添加尽可能多的图片示例。通常,你提供的图片越多,你的模型就越好。
docker run -p 8080:8080 -e "MB_KEY=$MB_KEY" machinebox/classificationbox
当你在本地运行Classificationbox时,你可以直接从container中访问文档
你将看到的图片和数量概述并要求确认创建模型
分类器可以更好地使用数量平衡的例子,因此,如果你能做到的话,可以在每个类中都使用相同数量的例子。
一旦创建了模型,就会提示你是否要教一个选择的(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容器中,因此开发者可以很容易地将自然语言处理、面部识别、对象识别等应用到你自己的应用中。它比任何云服务都要便宜,而且你的数据不会离开你的基础设施。