跳到主要内容

图像分类

在本快速指南中,我们从图像分类开始。图像分类是一种让计算机根据图像内容进行识别和标注的方法。例如,模型可以查看一张照片并判断其中是猫、狗还是汽车。

备注

如果您尚未配置开发板并安装示例,请参考快速入门

信息

本快速指南兼容所有预装 OOBE 镜像且已安装 pippython 的 Machina SL2600 系列开发套件,并针对以下配置进行了优化:

NPU(适用于 SL2610 系列)

MobileNet 模型

我们将使用 MobileNet,这是一个最初由 Google 于 2017 年专为移动端和嵌入式设备设计的视觉模型。

MobileNet v2 模型已预装在您的 Astra 开发板上。该模型在 ImageNet 数据库上完成预训练后,经过量化并编译至 Synaptics Astra 的 NPU,以实现更高的性能。

  • 输入:224 x 224 的图像
  • 输出:1000 个 ImageNet 类别的置信度分数——我们将选取最高分的类别作为分类结果

配置您的环境

如果尚未完成配置,请先设置您的环境。

克隆我们的 Examples GitHub 仓库并进入仓库目录:

git clone https://github.com/synaptics-astra-demos/sl2610-examples
cd sl2610-examples

配置 Python 虚拟环境,确保所有必要依赖已安装在虚拟环境中:

python3 -m venv .venv --system-site-packages
source .venv/bin/activate
pip install -r requirements.txt

配置显示环境(视觉输出所必需)。

export XDG_RUNTIME_DIR=/var/run/user/0
export WAYLAND_DISPLAY=wayland-1

在边缘侧运行图像分类

使用以下 Torq 示例在 Synaptics Astra 上运行图像分类:

cd Image_classification/standalone_class

python3 classification.py \
--model mbv2.vmfb \
--image goldfish.jpg \
--labels labels.json \
--device torq
Use Case Image

您应该会得到如下结果:

Classification Results:
1. goldfish, Carassius auratus : 0.921875
2. starfish, sea star : 0.675781
3. sea slug, nudibranch : 0.617188
4. rock beauty, Holocanthus tricolor : 0.613281
5. hummingbird : 0.582031

Top Prediction: goldfish, Carassius auratus

您可以在 ImageNet 类别列表中查找对应类别。模型应该能够正确识别出金鱼!

对另一张图像进行分类

我们可以修改命令行参数来对另一张图像进行分类。运行:

python3 classification.py \
--model mbv2.vmfb \
--image cat.jpg \
--labels labels.json \
--device torq
Use Case Image

应该会输出以下结果:

Classification Results:
1. Persian cat : 0.800781
2. tabby, tabby cat : 0.714844
3. tiger cat : 0.691406
4. Egyptian cat : 0.683594
5. lynx, catamount : 0.671875

Top Prediction: Persian cat

MobileNet 正确地将其识别为一只猫。

输入来源

到目前为止,我们一直在对单张图像示例进行图像分类。不过,Astra 管道还可以接受 *.jpg 图像、*.mp4 视频以及 /dev/video 摄像头画面。

图像分类并非用于处理多个对象或识别对象在图像中的位置。要实现这些功能,我们需要目标检测。在下一篇快速指南中,您将学习目标检测。