panhg/Kaloscope-2.0
数据集数据集查看器文件和版本Pull Requests讨论
下载使用量0

Kaloscope-2.0 (LSNet-XL-448) - Ascend NPU Adaptation

艺术家风格分类模型在华为昇腾 NPU 上的适配与优化

模型概述

属性值
模型名称Kaloscope-2.0 Artist Style Classification
架构LSNet-XL-448 (See Large, Focus Small)
参数量183.29M
输入分辨率448×448 RGB
分类类别39,261 位艺术家
框架PyTorch 2.9.0
原始硬件8×H20 GPU
适配硬件Ascend 910 NPU (CANN 8.5.1)

模型描述

Kaloscope-2.0 基于 LSNet 架构构建,专门用于识别和分类不同艺术家的绘画风格。LSNet 是一个轻量级视觉模型,灵感来源于人类视觉系统的动态异尺度能力,即"看大局,聚焦细节"(See Large, Focus Small) 的特性。

架构特点

  • 设计理念: 基于人类视觉系统的 "See Large, Focus Small" 原理
  • 核心组件: LKP (Large Kernel Perception) + SKA (Spatial Kernel Attention) + RepVGGDW
  • 模型配置: LSNet-XL-448 (embed_dim=[192,384,576,768], depth=[8,12,16,20])
  • 优化目标: 在保持高精度分类的同时实现高效推理

NPU 适配说明

适配策略

本仓库提供 Kaloscope-2.0 模型在华为 Ascend 910 NPU 上的完整推理适配方案:

  1. 模型加载: 通过 torch.serialization.add_safe_globals 安全加载原始 .pth 权重
  2. 设备切换: 使用 torch_npu 将模型从 CPU/GPU 无缝迁移至 NPU
  3. 算子适配: SKA 模块使用 F.unfold 实现,避免 Triton 依赖,在 NPU 上高效运行
  4. 精度保持: NPU 推理与 CPU/GPU 精度误差 < 0.002%

环境要求

# 昇腾环境
CANN >= 8.5.1
torch_npu >= 2.9.0
torch >= 2.9.0

# 其他依赖
pip install torch torchvision pillow numpy timm

模型下载

# 从 ModelScope 下载模型
pip install modelscope
modelscope download --model Heathcliff02/Kaloscope-2.0 --local_dir ./models/Kaloscope-2.0

快速开始

单张图像推理

python inference.py --image path/to/artwork.jpg --topk 5

输出示例:

Image: artwork.jpg
Inference time: 43.51 ms
Top-5 predictions:
  1. [12345] artist_name_1 (87.32%)
  2. [23456] artist_name_2 (5.14%)
  3. [34567] artist_name_3 (2.81%)
  4. [45678] artist_name_4 (1.63%)
  5. [56789] artist_name_5 (0.92%)

批量推理

python inference.py --image_dir ./test_images --output results.csv

CPU 推理模式

python inference.py --image artwork.jpg --device cpu

性能基准测试

python inference.py --benchmark --iterations 100 --warmup 10

精度与性能评测

python eval.py  # 运行完整评测套件

Python API 使用

from inference import LSNetArtist, load_class_mapping, preprocess_image, infer

# 加载模型(自动切换至 NPU)
model, cfg = load_model('best_checkpoint.pth', device='npu')

# 加载类别映射
class_mapping = load_class_mapping('class_mapping.csv')

# 预处理图像
tensor, pil_img = preprocess_image('artwork.jpg')

# 推理
indices, probs, elapsed = infer(model, tensor, device='npu', topk=5)

# 输出结果
for i, (idx, prob) in enumerate(zip(indices, probs)):
    artist = class_mapping.get(int(idx), f"class_{idx}")
    print(f"{i+1}. [{idx}] {artist} ({prob*100:.2f}%)")

性能指标

Ascend 910 NPU 推理性能

指标数值
平均延迟 (bs=1)43.51 ms
P50 延迟43.46 ms
P95 延迟44.38 ms
P99 延迟44.70 ms
吞吐量 (bs=1)23.3 FPS
吞吐量 (bs=4)94.8 FPS
吞吐量 (bs=8)139.7 FPS
NPU 显存占用~6,925 MB

精度验证 (NPU vs CPU, 100 个随机输入)

指标数值阈值状态
平均相对误差0.0013%< 1%✅ PASS
余弦相似度 (均值)0.999998> 0.999✅ PASS
余弦相似度 (最小值)0.999995> 0.999✅ PASS
最大绝对误差0.000018< 0.01✅ PASS
Top-1 准确率匹配100.0%100%✅ PASS

训练性能 (原始 GPU 数据)

指标数值
训练硬件8×H20 GPU
训练时长400+ 小时
批次大小256 (每GPU)
Top-1 准确率90.13%

模型训练(已预训练)

本仓库提供的是已训练完成的模型权重。如需重新训练,请参考原始 LSNet 训练仓库:spawner1145/lsnet-test。

训练配置参考

参数值
优化器AdamW
学习率4e-6
学习率调度Cosine Annealing
权重衰减0.1
数据增强RandAugment, Mixup, CutMix
输入分辨率448×448
模型参数量~183M

文件结构

kaloscope-npu/
├── inference.py                          # NPU 推理脚本
├── eval.py                               # 精度与性能评测脚本
├── README.md                             # 本文档
└── eval_output/                          # 评测输出目录
    ├── EVALUATION_REPORT.md              # 评测报告
    ├── evaluation.log                    # 运行日志
    ├── accuracy_results.csv              # 精度对比结果
    ├── performance_results.json          # 性能基准数据
    ├── precision_analysis.csv            # 100样本精度分析
    └── test_images/                      # 评测用测试图像

评测材料

精度评测

  • eval.py - NPU vs CPU 精度对比评测源代码
  • eval_output/accuracy_results.csv - 10 张测试图像逐张对比
  • eval_output/precision_analysis.csv - 100 个随机输入精度分析
  • eval_output/evaluation.log - 完整运行日志

性能评测

  • eval.py - 性能基准测试源代码
  • eval_output/performance_results.json - 延迟、吞吐量、显存占用数据
  • eval_output/evaluation.log - 包含不同 batch size 的 FPS 数据

评测结果摘要

=========================================================
NPU vs CPU Accuracy Validation:
  Avg Relative Error:  0.0017%  ✅ (< 1%)
  Avg Cosine Similarity: 0.999994  ✅ (> 0.999)
  Top-1 Match Rate:    100.0%   ✅

NPU Performance (Ascend 910):
  Mean Latency:  43.51 ms
  Throughput:    23.3 FPS (bs=1), 139.7 FPS (bs=8)
  Memory:        6,925 MB
=========================================================

训练数据

数据来源

  • 数据集: Danbooru (截止到 2025年9月)
  • 数据筛选: 选取图像数量在 40 张以上的艺术家
  • 总分类数: 39,260 个艺术家类别
  • 数据采样: 所有艺术家图像通过数据增强统一扩展至 100 张

数据预处理

  • 图像尺寸: 448×448 像素
  • 数据增强: 镜像旋转、RandAugment、Mixup、CutMix
  • 图像去重: 使用 imgutils 库

引用信息

@misc{wang2025lsnetlargefocussmall,
      title={LSNet: See Large, Focus Small},
      author={Ao Wang and Hui Chen and Zijia Lin and Jungong Han and Guiguang Ding},
      year={2025},
      eprint={2503.23135},
      archivePrefix={arXiv},
      primaryClass={cs.CV},
      url={https://arxiv.org/abs/2503.23135},
}

相关资源

  • 论文: LSNet: See Large, Focus Small
  • 代码仓库: spawner1145/lsnet-test
  • ComfyUI 节点: comfyui-lsnet
  • ModelScope 模型: Heathcliff02/Kaloscope-2.0
  • 昇腾社区: Ascend SACT

更新日志

NPU 适配 (2026-05-20)

  • ✅ 完成 Ascend 910 NPU 推理适配
  • ✅ NPU vs CPU 精度误差 < 0.002%
  • ✅ 性能基准: 43.51ms 延迟, 23.3 FPS (bs=1)
  • ✅ 完整评测材料生成

v2.0 (2025年11月)

  • 数据集更新至 2025年9月
  • 分辨率提升至 448×448
  • 艺术家扩展至 39,260 个类别
  • Top-1 准确率达到 90.13%

免责声明: 本模型仅供研究和教育用途。在商业应用中使用时,请确保遵守相关法律法规和伦理准则。

NPU 适配: 本仓库为 Heathcliff02/Kaloscope-2.0 的昇腾 NPU 适配版本,所有推理代码和评测均在 Ascend 910 NPU 上验证通过。