# 图像分类

# 简介

图像分类是三个任务中最简单的(检测、分割、分类),它涉及将整个图像分类到一组预定义的类别中。 图像分类器的输出是单个类别标签和一个置信度分数。当您只需要知道图像属于哪个类别,而不需要知道该类别的对象位于何处或其确切形状时,图像分类非常有用。

# 安装

# Maven

在项目的 pom.xml 中添加以下依赖,详细引入方式参考 Maven 引入

如需引入全部功能,请使用 【不推荐 ❌】 all 模块。

<dependency>
    <groupId>cn.smartjavaai</groupId>
    <artifactId>vision</artifactId>
    <version>1.0.27</version>
</dependency>

# 获取图像分类模型

ClsModelConfig config = new ClsModelConfig();
config.setModelEnum(ClsModelEnum.YOLOV8);
config.setModelPath("yolo11m-cls.onnx");
config.setDevice(device);
config.setThreshold(0.5f);
ClsModel clsModel = ClsModelFactory.getInstance().getModel(config);

初始化模型:

请确保模型文件与 synset.txt 位于同一目录下。

模型需使用 SmartJavaAI 官方百度网盘 提供的版本。

若您希望自行下载模型,可将 YOLO 官方模型 转换为 TorchScript 格式 后使用。

若使用 基于 YOLO 的自训练模型,请根据您的训练类别,修改 synset.txt 文件中的分类内容。

# ClsModelConfig参数说明

字段名称 字段类型 默认值 说明
modelEnum ClsModelEnum 模型枚举
modelPath String 模型路径
allowedClasses List<String> 允许的分类列表
threshold double 0.3 置信度阈值,分数低于这个值的结果将被过滤掉。值越高越严格,越低越宽松
device DeviceEnum CPU 指定运行设备,支持 CPU/GPU
gpuId int 0 gpu设备ID 当device为GPU时生效
predictorPoolSize int 默认为cpu核心数 模型预测器线程池大小
customParams Map<String, Object> 个性化配置(按模型类型动态解析)

初始化模型:

模型支持从 JAR 包中加载。请将模型文件及其附带资源打包为一个 ZIP 文件,并放置在 JAR 包内的指定目录(默认路径为 META-INF/models)。 如需自定义目录,可自行修改路径配置。 代码中指定模型路径时,请使用以下格式: modelPath = "jar:/META-INF/models/cls.zip"

# 图像分类模型

模型名称 引擎
YOLOV11 OnnxRuntime
YOLOV8 OnnxRuntime

支持基于 YOLO 的自训练模型


# ActionRecModel API 方法说明

# 图像分类

Image图片源请查看文档Image使用说明

R<Classifications> detect(Image image);
R<Classifications> detect(String imagePath)

# Classifications主要功能

  • items()
    获取所有类别及其对应概率组成的列表。

  • topK() / topK(int k)
    获取 Top-K 的预测结果,结果按概率从高到低排序。

  • best()
    获取概率最高的分类结果。

  • get(String className)
    根据类别名称查询对应的预测结果。

# 模型下载

百度网盘:https://pan.baidu.com/s/15ETXlD89MUaAnHAzbrnzSg?pwd=1234 提取码: 1234

# 完整示例代码

示例代码 (opens new window)

本项目在 examples 文件夹下提供了多个示例工程,用于演示各功能模块的使用方法:

  • vision-example:通用视觉检测示例:目标检测、目标分割、图像分类等

# 运行方式

如果你只想运行某个示例,请按以下方式操作:

  1. 打开 IDEA(或你喜欢的 IDE)

  2. 选择 “Open”,然后仅导入 examples 目录下对应的示例项目,例如:

    examples/vision-example
    
  3. IDEA 会自动识别并加载依赖。若首次导入,请等待 Maven 下载依赖完成。

  4. 请从我们提供的 百度网盘 中下载模型及其附带文件,并在示例代码中将模型路径修改为您本地的实际路径。

  5. 可通过查看每个 Java 文件顶部的注释了解对应功能,或参考 README 文件中对各 Java 文件功能的说明,运行相应的测试方法进行体验。

# 离线使用

离线使用请看文档