38

运用 MXNet Scala API 接口进行图像分类

 5 years ago
source link: https://www.leiphone.com/news/201806/puk2y8oSPdiEFFrW.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

雷锋网按:本文为雷锋字幕组编译的技术博客,原标题 Image Classification with MXNet Scala Inference API,作者为 Qing Lan, Roshani Nagmote

翻译 | 朱茵    整理 |  凡江

QNf67zU.jpg!web

随着 MXNet 1.2.0 版本的发布,新的 MXNet Scala API 接口也发布了。这次发布的 Scala,里面的推理应用程序致力于优化开发者体验。Scala 是一个通用目的程序语言,支持功能性编程和较强的静态类型系统,它被用于平台的高度分布式处理像 Apache Spark。

现在,你们有了新的 Scala API 接口,准备自己试验下。首先你们需要使用 mxnet-full 包来搭建环境,然后你们可以在图像分类的实例和目标侦测的实例上尝试下。(目标侦测的实例我们将在下一次的博客中公布演示)。

环境搭建 (Linux/OSX)

使用 maven 来安装 mxnet-full 包。在 pom 文件里添加属性。请转换 <你的平台> 到你们正在使用的平台。(OSX: osx-x86_64-cpu, Linux: linux-x86_64-cpu/gpu)

rQjQNjj.jpg!web

如果你正在使用 IntelliJ,你应看到安装包已被导入。你也可以根据这个教程用 MXNet Scala 包来设置 IntelliJ。
图像分类实例
在这部分,你将使用预训练的图像分类模型做推理。这个例子使用了 ResNet152 模型。你可以使用这个脚本来下载这个模型文件。
以下是重建这个例实例需要导入的库。

6NVjmmm.jpg!web

第一步:创建运行这个实例的主要功能 

RJviIfy.jpg!web

这里的环境意思是定义这个模型,代码将会运行。如果你想用 GPU(s) 来运行的话,你可以将这行代码改成 context.gpu()。本实例,我们使用了这副图片。

riumYry.jpg!web

然后给模型添加路径并添加使用 API 接口做测试的图像。

  第二步:加载模型并做推

以下代码是之前代码块的延续:

q6RBNbB.jpg!web

需要用一个输入描述符来定义输入来源和模型配置。「数据」就是输入数据的名字。输入形状是输入图像的形状。输入的矩阵是 224*224 像素大小的三个信道。

R3AvmmQ.jpg!web

在我们挑选和整理好我们所有的输入后,我们创建了一个图像分类器目标,使用它来加载图像。然后我们开始在样本图像上做分类。「Some(5)」区域意思是我们将选取最准确的前 5 个预测。这个区域是选择性的,未分类顺序的预测会是默认选项。一旦完成这一步,我们只需打印显示输出。

qmYjyqj.jpg!web

结果 

结束上一步后,你将看到类似于以下的输出(这儿我们使用了一张哈巴狗的图像):

ueY7z2J.jpg!web

uQneyuE.jpg!web

第一个元素是分类「n02110958 pug, pug-dog」,第二个值是由分类器决定的该分类的可信度值。
总结 
这次简单的试验后,你应当能够使用 MXNet Scala API 接口创建一个图像分类器。你能在 MXNet 项目资源库的 Scala 推理图像分类器实例中找到更多有关这个实例的代码信息。

在我们后续的博客中,我们将介绍使用 MXNet Scala API 接口处理目标侦测的任务。

7VjUvea.jpg!web

雷锋网雷锋网 (公众号:雷锋网)

雷锋网原创文章,未经授权禁止转载。详情见 转载须知


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK