# 图像分类
# 简介
图像分类是三个任务中最简单的(检测、分割、分类),它涉及将整个图像分类到一组预定义的类别中。 图像分类器的输出是单个类别标签和一个置信度分数。当您只需要知道图像属于哪个类别,而不需要知道该类别的对象位于何处或其确切形状时,图像分类非常有用。
# 安装
# 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
# 完整示例代码
本项目在 examples 文件夹下提供了多个示例工程,用于演示各功能模块的使用方法:
vision-example:通用视觉检测示例:目标检测、目标分割、图像分类等
# 运行方式
如果你只想运行某个示例,请按以下方式操作:
打开 IDEA(或你喜欢的 IDE)
选择 “Open”,然后仅导入
examples目录下对应的示例项目,例如:examples/vision-exampleIDEA 会自动识别并加载依赖。若首次导入,请等待 Maven 下载依赖完成。
请从我们提供的 百度网盘 中下载模型及其附带文件,并在示例代码中将模型路径修改为您本地的实际路径。
可通过查看每个 Java 文件顶部的注释了解对应功能,或参考 README 文件中对各 Java 文件功能的说明,运行相应的测试方法进行体验。
