# Technical Documentation: CVHub520/X-AnyLabeling

> ℹ️ **Provenance:** Multi-Tier Ingestion · [CodeWiki Reference](https://codewiki.google/github.com/CVHub520/X-AnyLabeling)

### Overview (README.md)

<div align="center">
  <p>
    <a href="https://github.com/CVHub520/X-AnyLabeling/" target="_blank">
      <img alt="X-AnyLabeling" height="200px" src="anylabeling/resources/images/logo.png"></a>
  </p>

[English](README.md) | [简体中文](README_zh-CN.md)

</div>

<p align="center">
    <a href="./LICENSE"><img src="https://img.shields.io/badge/License-GPL%20v3-blue.svg"></a>
    <a href="https://github.com/CVHub520/X-AnyLabeling/releases/latest"><img src="https://img.shields.io/github/v/release/CVHub520/X-AnyLabeling?color=ffa"></a>
    <a href="https://pypi.org/project/x-anylabeling-cvhub/"><img src="https://img.shields.io/pypi/v/x-anylabeling-cvhub?logo=pypi&logoColor=white"></a>
    <a href="./pyproject.toml"><img src="https://img.shields.io/badge/python-3.11+-aff.svg"></a>
    <a href="https://github.com/CVHub520/X-AnyLabeling/releases/latest"><img src="https://img.shields.io/badge/os-linux%2C%20win%2C%20mac-pink.svg"></a>
    <a href="https://github.com/CVHub520/X-AnyLabeling/releases"><img src="https://img.shields.io/github/downloads/CVHub520/X-AnyLabeling/total?label=downloads"></a>
    <a href="https://modelscope.cn/collections/X-AnyLabeling-7b0e1798bcda43"><img src="https://img.shields.io/badge/modelscope-X--AnyLabeling-6750FF?link=https%3A%2F%2Fmodelscope.cn%2Fcollections%2FX-AnyLabeling-7b0e1798bcda43"></a>
</p>

<img src="https://github.com/user-attachments/assets/aa819dae-e38c-4b1c-a4a7-53a873d870e3" alt="X-AnyLabeling interface" width="100%" />

<p align="center">
  <a href="https://xanylabeling.com/docs/x-anylabeling/point_cloud" target="_blank"><img src="assets/resources/pointcloud/pointcloud-3d-det.png" alt="3D Point Cloud Detection" width="50%" /></a><a href="https://xanylabeling.com/docs/x-anylabeling/point_cloud" target="_blank"><img src="assets/resources/pointcloud/pointcloud-3d-seg.png" alt="3D Point Cloud Segmentation" width="50%" /></a>
<br />
  <img src="assets/resources/pointcloud/pointcloud-captions-en.svg" alt="Left: 3D Point Cloud Detection; right: 3D Point Cloud Segmentation" width="100%" />
</p>

## 🥳 What's New

- `2026-10-18`: Add support for [GroundingPI, GroundAnything, and GroundAnything-VLM](./examples/vision_foundation/groundingpi/README.md) with detection, grounding, referring and category-based pointing, OCR, document layout, GUI grounding, and visual prompting.
- `2026-10-01`: Add [3D point cloud annotation](./docs/en/point_cloud.md), supporting 3D point cloud detection and segmentation.
- `2026-08-19`: Add support for [image tagging](https://xanylabeling.com/docs/x-anylabeling/user_guide#37-image-tags), with tag creation, editing, reordering, and batch deletion.
- `2026-08-12`: Add support for [D-FINE-seg](https://github.com/ArgoHA/D-FINE-seg) instance segmentation models.
- `2026-08-08`: Add support for the [RT-DETRv2-OBB](https://xanylabeling.com/examples/detection/obb) rotated object detection model.
- `2026-08-08`: Add the [Magic Wand tool](https://xanylabeling.com/docs/x-anylabeling/user_guide#21-creating-shapes) for quickly creating polygons from contiguous color regions.
- `2026-08-05`: Release [X-AnyLabeling v4.0.0](https://mp.weixin.qq.com/s/RUb8ge-_7br0YeIImuK6YQ).
- For more details, please refer to the [CHANGELOG](./CHANGELOG.md)

## Introduction

**X-AnyLabeling** is a lightweight, efficient, and unified cross-platform desktop application for AI-assisted annotation of text, image, video, point cloud, and multimodal data. It combines versatile built-in tools, automated labeling workflows, state-of-the-art deep learning models, and flexible multi-format import and export. For remote inference, [X-AnyLabeling-Server](https://github.com/CVHub520/X-AnyLabeling-Server) provides a lightweight, extensible backend for connecting custom models and compute resources.

## Key Features

<img src="https://github.com/user-attachments/assets/2925bc88-e22b-4e81-873c-45fd85164f6b" width="100%" />

* Unified support for annotating and processing text, image, video, point cloud, and multimodal data.
* Covers tasks such as 2D image classification, object detection, instance segmentation, pose estimation, oriented object detection, multi-object tracking, optical character recognition, lane annotation, image captioning, visual question answering, document parsing, and 3D point clouds.
* Provides polygons, rectangles, cuboids, rotated boxes, quadrilaterals, circles, lines, polylines, points, masks, and task-specific tools for text detection, text recognition, and KIE.
* Integrates a wide range of state-of-the-art deep learning models for AI-assisted annotation, automated labeling, and batch dataset prediction.
* Supports both local and remote inference through engines and serving frameworks such as `ONNX Runtime`, `TensorRT`, `OpenCV DNN`, `vLLM`, and `SGLang`.
* Supports importing and exporting formats such as `COCO`, `VOC`, `YOLO`, `DOTA`, `MOT`, `MASK`, `PPOCR`, `MMGD`, `VLM-R1`, and `ShareGPT`.
* Runs on Windows, Linux, and macOS, with interfaces available in English, Simplified Chinese, Japanese, and Korean.
* Supports custom model integration, flexible extension, and secondary development.

## Model library

| **Task Category** | **Supported Models** |
| :--- | :--- |
| 🖼️ Image Classification | YOLOv5-Cls, YOLOv8-Cls, YOLO11-Cls, InternImage, PULC |
| 🎯 Object Detection | YOLOv5/6/7/8/9/10, YOLO11/12/26, YOLOX, YOLO-NAS, D-FINE, DAMO-YOLO, Gold_YOLO, RT-DETR, RF-DETR, DEIMv2 |
| 🖌️ Instance Segmentation | YOLOv5-Seg, YOLOv8-Seg, YOLO11-Seg, YOLO26-Seg, Hyper-YOLO-Seg, RF-DETR-Seg, D-FINE-seg |
| 🎨 Semantic Segmentation | U-Net |
| 🏃 Pose Estimation | YOLOv8-Pose, YOLO11-Pose, YOLO26-Pose, DWPose, RTMO |
| 😀 Face Estimation | SCRFD, YOLOv6Lite-Face |
| 👣 Tracking | TrackTrack, Bot-SORT, ByteTrack, SAM2/3-Video |
| 🔄 Rotated Object Detection | YOLOv5-Obb, YOLOv8-Obb, YOLO11-Obb, YOLO26-Obb, RT-DETRv2-OBB |
| 📏 Depth Estimation | Depth Anything |
| 🧩 Segment Anything | SAM 1/2/3, SAM-HQ, SAM-Med2D, EdgeSAM, EfficientViT-SAM, MobileSAM |
| ✂️ Image Matting | RMBG 1.4/2.0 |
| 💡 Proposal | UPN |
| 🏷️ Tagging | RAM, RAM++ |
| 📄 OCR | PP-OCRv4, PP-OCRv5, PP-OCRv6 |
| 🧾 Layout Analysis | PP-DocLayoutV3 |
| 📑 Document Parsing | PaddleOCR-VL, PaddleOCR-VL-1.6 |
| 🗣️ Vision Foundation Models | Rex-Omni, Florence2, LocateAnything, GroundingPI, GroundAnything, GroundAnything-VLM |
| 👁️ Vision Language Models | Qwen3-VL, Gemini, ChatGPT, GLM |
| 🛣️ Lane Detection | CLRNet |
| 🔢 Object Counting | CountGD, GeCO, GeCo2 |
| 📍 Grounding | Grounding DINO, YOLO-World, YOLOE, SAM 3 |
| 📚 Other | 👉 [model_zoo](./docs/en/model_zoo.md) 👈 |

## Docs

0. [Remote Inference Service](https://github.com/CVHub520/X-AnyLabeling-Server)
1. [Installation & Quickstart](./docs/en/get_started.md)
2. [Usage](./docs/en/user_guide.md)
3. [Command Line Interface](./docs/en/cli.md)
4. [Customize a model](./docs/en/custom_model.md)
5. [Chatbot](./docs/en/chatbot.md)
6. [VQA](./docs/en/vqa.md)
7. [Image Classifier](./docs/en/image_classifier.md)
8. [Video Classifier](./docs/en/video_classifier.md)
9. [Document Parsing and Intelligent Text Recognition](./docs/en/paddle_ocr.md)
10. [3D Point Cloud Annotation](./docs/en/point_cloud.md)

## Examples

- [Classification](./examples/classification/)
  - [Image-Level](./examples/classification/image-level/README.md)
  - [Shape-Level](./examples/classification/shape-level/README.md)
- [Detection](./examples/detection/)
  - [HBB Object Detection](./examples/detection/hbb/README.md)
  - [OBB Object Detection](./examples/detection/obb/README.md)
- [Segmentation](./examples/segmentation/README.md)
  - [Instance Segmentation](./examples/segmentation/instance_segmentation/)
  - [Binary Semantic Segmentation](./examples/segmentation/binary_semantic_segmentation/)
  - [Multiclass Semantic Segmentation](./examples/segmentation/multiclass_semantic_segmentation/)
- [Description](./examples/description/)
  - [Tagging](./examples/description/tagging/README.md)
  - [Captioning](./examples/description/captioning/README.md)
- [Estimation](./examples/estimation/)
  - [Face Estimation](./examples/estimation/face_estimation/README.md)
  - [Pose Estimation](./examples/estimation/pose_estimation/README.md)
  - [Depth Estimation](./examples/estimation/depth_estimation/README.md)
- [OCR](./examples/optical_character_recognition/)
  - [Text Recognition](./examples/optical_character_recognition/text_recognition/)
  - [Key Information Extraction](./examples/optical_character_recognition/key_information_extraction/README.md)
- [MOT](./examples/multiple_object_tracking/README.md)
  - [Tracking by HBB Object Detection](./examples/multiple_object_tracking/README.md)
  - [Tracking by OBB Object Detection](./examples/multiple_object_tracking/README.md)
  - [Tracking by Instance Segmentation](./examples/multiple_object_tracking/README.md)
  - [Tracking by Pose Estimation](./examples/multiple_object_tracking/README.md)
- [iVOS](./examples/interactive_video_object_segmentation)
  - [SAM2-Video](./examples/interactive_video_object_segmentation/sam2/README.md)
  - [SAM3-Video](./examples/interactive_video_object_segmentation/sam3/README.md)
- [Matting](./examples/matting/)
  - [Image Matting](./examples/matting/image_matting/README.md)
- [Vision Foundation Models](./examples/vision_foundation/)
  - [Rex-Omni](./examples/vision_foundation/rexomni/README.md)
  - [Florence 2](./examples/vision_foundation/florence2/README.md)
  - [LocateAnything](./examples/vision_foundation/locateanything/README.md)
  - [GroundingPI / GroundAnything / GroundAnything-VLM](./examples/vision_foundation/groundingpi/README.md)
- [Counting](./examples/counting/)
  - [GeCo](./examples/counting/geco/README.md)
  - [GeCo2](./examples/counting/geco2/README.md)
- [Grounding](./examples/grounding/)
  - [YOLOE](./examples/grounding/yoloe/README.md)
  - [SAM 3](./examples/grounding/sam3/README.md)
- [Training](./examples/training/)
  - [Ultralytics](./examples/training/ultralytics/README.md)

## Contribute

We believe in open collaboration! **X‑AnyLabeling** continues to grow with the support of the community. Whether you're fixing bugs, improving documentation, or adding new features, your contributions make a real impact.

To get started, please read our [Contributing Guide](./CONTRIBUTING.md) and make sure to agree to the [Contributor License Agreement (CLA)](./CLA.md) before submitting a pull request.

If you find this project helpful, please consider giving it a ⭐️ star! Have questions or suggestions? Open an [issue](https://github.com/CVHub520/X-AnyLabeling/issues) or email us at cv_hub@163.com.

A huge thank you 🙏 to everyone helping to make X‑AnyLabeling better.

## License

This project is licensed under the [GNU General Public License v3.0](./LICENSE). You may use, modify, and redistribute the software, including for commercial purposes, provided that you comply with the terms of the license.

## Sponsor

Your [sponsorship](https://xanylabeling.com/sponsor) supports X-AnyLabeling's feature development, model integration, documentation, and community maintenance.

## Acknowledgement

I extend my heartfelt thanks to the developers and contributors of [AnyLabeling](https://github.com/vietanhdev/anylabeling), [LabelMe](https://github.com/wkentaro/labelme), [LabelImg](https://github.com/tzutalin/labelImg), [roLabelImg](https://github.com/cgvict/roLabelImg), [PPOCRLabel](https://github.com/PFCCLab/PPOCRLabel) and [CVAT](https://github.com/opencv/cvat), whose work has been crucial to the success of this project.

## Citing

If you use this software in your research, please cite it as below:

```
@misc{X-AnyLabeling,
  year = {2023},
  author = {Wei Wang},
  publisher = {Github},
  organization = {CVHub},
  journal = {Github repository},
  title = {X-AnyLabeling: A Unified Desktop Platform for AI-Assisted Data Annotation},
  howpublished = {\url{https://github.com/CVHub520/X-AnyLabeling}}
}
```

<div align="center"><a href="#top">🔝 Back to Top</a></div>

---

### En Chatbot (`docs/en/chatbot.md`)

# Overview

The X-AnyLabeling Chatbot is an AI assistant integrated into the annotation workflow. It supports natural-language conversations, batch image-question answering, and importing or exporting single-turn and multi-turn multimodal data in [ShareGPT](https://github.com/hiyouga/LLaMA-Factory/blob/main/data/README.md#multi-modal-image-dataset) format for frameworks such as [LLaMA-Factory](https://github.com/hiyouga/LLaMA-Factory).

<video src="https://github.com/user-attachments/assets/c97b943a-71e6-470c-bb73-b4c8d299687f" width="100%" controls>
</video>


# Getting Started

## Accessing the Chatbot

To open the Chatbot, click the Chatbot icon in the left toolbar of X-AnyLabeling or use the following keyboard shortcut to quickly launch the Chatbot interface:

- Windows/Linux: `Ctrl` + `1`
- macOS: `⌘` + `1`

## Initial Setup

On the first launch, you need to configure the necessary API credentials and models in the right panel of the `Chatbot` window.

# User Interface

The Chatbot features a three-panel interface designed for streamlined interaction.

<video src="https://github.com/user-attachments/assets/41c30839-4b49-4de2-8252-fe856956daa7" width="100%" controls>
</video>

## Left Panel - Model Providers

| Provider   | API Key                                                       | API Docs                                                      | Model Docs                                                                  |
| :--------- | :------------------------------------------------------------ | :------------------------------------------------------------ | :-------------------------------------------------------------------------- |
| Anthropic  | [Link](https://console.anthropic.com/settings/keys)           | [Link](https://docs.anthropic.com/en/docs)                    | [Link](https://docs.anthropic.com/en/docs/about-claude/models/all-models)   |
| DeepSeek   | [Link](https://platform.deepseek.com/api_keys)                | [Link](https://platform.deepseek.com/docs)                    | [Link](https://platform.deepseek.com/models)                                |
| Google AI  | [Link](https://aistudio.google.com/app/apikey)                | [Link](https://ai.google.dev/gemini-api/docs)                 | [Link](https://ai.google.dev/gemini-api/docs/models)                        |
| Ollama     | -                                                             | [Link](https://github.com/ollama/ollama/blob/main/docs/api.md) | [Link](https://ollama.com/search)                                           |
| OpenAI     | [Link](https://platform.openai.com/api-keys)                  | [Link](https://platform.openai.com/docs)                    | [Link](https://platform.openai.com/docs/models)                             |
| OpenRouter | [Link](https://openrouter.ai/settings/keys)                   | [Link](https://openrouter.ai/docs/quick-start)                | [Link](https://openrouter.ai/models)                                        |
| Qwen       | [Link](https://bailian.console.aliyun.com/?apiKey=1#/api-key) | [Link](https://help.aliyun.com/document_detail/2590237.html)   | [Link](https://help.aliyun.com/zh/model-studio/developer-reference/what-is-qwen-llm) |

> [!NOTE]
> The Custom provider supports configuring any custom endpoint that is compatible with the OpenAI API format. Enter the model name manually when using Custom; other providers list the available models for selection.

## Middle Panel - Chat Interface

- **Chat Window**: View your conversation history with the AI. Supports copy, edit, delete, and rerun functions.
- **Message Input**: Enter your questions or instructions. Includes a one-click option to clear the current conversation history.
- **Special Command**: After importing an image, use the `@image` prompt to include the current image in your query.

## Right Panel - Image Preview and Settings

- **Image Preview**: Displays the current image.
- **Function Components**:
  - **Image Navigation**: Switch between the previous and next images.
  - **Image Import**: Import a single image file or an entire directory.
  - **Data Export**: Export annotation results.
  - **Batch Processing**: Run processing tasks on multiple images.
- **Backend Settings**: Configure API endpoints, keys, and select models.
- **Generation Parameters**: Input system prompts, temperature settings, and maximum output length.

# Key Features

## Visual Question Answering (VQA)

<video src="https://github.com/user-attachments/assets/1119fa89-b885-4d4f-ad76-499a74aa81eb" width="100%" controls>
</video>

Ask questions about the current image to efficiently generate single-turn or multi-turn image-text dialogues:

> @image Please describe this image.

## Batch Image Processing

<video src="https://github.com/user-attachments/assets/4ec36aaa-2f0b-442f-9315-cc6ab1d1e0c2" width="100%" controls>
</video>

Process multiple images with the same prompt to speed up your workflow:

1. Load an image folder.
2. Click the "Run All Images" button.
3. Enter the prompt to apply to all images.
4. You can set the concurrency level to control processing speed (default is 80% of CPU cores, maximum is 95%).

## Dataset Import/Export

<video src="https://github.com/user-attachments/assets/8dc44d1c-0317-4b00-9967-105274dee59f" width="100%" controls>
</video>

Supports one-click export of multimodal image data in the ShareGPT format.

# Other

## Configuration Files

The Chatbot stores its configuration in the following directory:

```
~/xanylabeling_data/chatbot/
```

This directory contains:

- `models.json`: Contains user preferences and model configurations.
- `providers.json`: API provider settings.

---

### En Cli (`docs/en/cli.md`)

# Command Line Interface

X-AnyLabeling provides a powerful command-line interface for label format conversion and system management.

> [!NOTE]
> Before using these commands, ensure all dependencies are installed. See the [Quick Start Guide](./get_started.md) for details.

## 0. Table of Contents

- [1. GUI Launch Options](#1-gui-launch-options)
- [2. System Commands](#2-system-commands)
    - [2.1 Display Help Information](#21-display-help-information)
    - [2.2 Display System and Package Information](#22-display-system-and-package-information)
    - [2.3 Display Application Version](#23-display-application-version)
    - [2.4 Display Configuration File Path](#24-display-configuration-file-path)
- [3. Label Format Conversion](#3-label-format-conversion)
    - [3.1 List All Available Conversion Tasks](#31-list-all-available-conversion-tasks)
    - [3.2 Show Detailed Help for a Specific Task](#32-show-detailed-help-for-a-specific-task)
    - [3.3 Run a Conversion Task](#33-run-a-conversion-task)
    - [3.4 Conversion Parameters](#34-conversion-parameters)
- [4. FAQ](#4-faq)

## 1. GUI Launch Options

```bash
# Standard launch
xanylabeling

# Open a specific image file
xanylabeling --filename /path/to/image.jpg

# Open an image directory
xanylabeling --filename /path/to/folder

# Set output directory
xanylabeling --output /path/to/output

# Use a custom configuration file
xanylabeling --config /path/to/config.yaml

# Set logging level
xanylabeling --logger-level debug

# Disable automatic update check
xanylabeling --no-auto-update-check

# Raise Qt image allocation limit to 1024 MB
xanylabeling --qt-image-allocation-limit 1024
```

## 2. System Commands

### 2.1 Display Help Information

- Input

```bash
xanylabeling --help
```

- Output

```
/* Detailed source-code truncated for AI context efficiency. */
```

### 2.2 Display System and Package Information

- Input

```bash
xanylabeling checks
```

- Output

```bash
Application
────────────────────────────────────────────────────────────
  App Name:          X-AnyLabeling
  App Version:       4.0.0
  Preferred Device:  CPU
────────────────────────────────────────────────────────────
System
────────────────────────────────────────────────────────────
  Operating System:  Linux-6.6.87.2-microsoft-standard-WSL2-x86_64-with-glibc2.31
  CPU:               x86_64
  CPU Count:         20
  RAM:               31.2 GB
  Disk:              841.6/1006.9 GB
  GPU:               CUDA:0 (NVIDIA GeForce RTX 3060, 12288MiB)
  CUDA:              V11.6.124
  Python Version:    3.12.10
────────────────────────────────────────────────────────────
Packages
────────────────────────────────────────────────────────────
  PyQt6 Version:                           6.9.1
  ONNX Version:                            1.19.1
  ONNX Runtime Version:                    1.23.2
  ONNX Runtime GPU Version:                None
  OpenCV Contrib Python Headless Version:  4.11.0.86
────────────────────────────────────────────────────────────
```

### 2.3 Display Application Version

- Input

```bash
xanylabeling version
```

- Output

```bash
4.0.0
```

### 2.4 Display Configuration File Path

- Input

```bash
xanylabeling config
```

- Output

```bash
~/.xanylabelingrc
```

## 3. Label Format Conversion

### 3.1 List All Available Conversion Tasks

- Input

```bash
xanylabeling convert
```

- Output

```bash
================================================================================
SUPPORTED CONVERSION TASKS
================================================================================

📥 IMPORT TO XLABEL
--------------------------------------------------------------------------------
  • yolo2xlabel [detect, segment, obb, pose]
  • voc2xlabel [detect, segment]
  • coco2xlabel [detect, segment, pose]
  • dota2xlabel
  • mot2xlabel
  • ppocr2xlabel [rec, kie]
  • mask2xlabel
  • vlmr12xlabel
  • odvg2xlabel

📤 EXPORT FROM XLABEL
--------------------------------------------------------------------------------
  • xlabel2yolo [detect, segment, obb, pose]
  • xlabel2voc [detect, segment]
  • xlabel2coco [detect, segment, pose]
  • xlabel2dota
  • xlabel2mask
  • xlabel2mot
  • xlabel2mots
  • xlabel2odvg
  • xlabel2vlmr1
  • xlabel2ppocr [rec, kie]

================================================================================
Total: 19 conversion tasks
================================================================================

Usage:
  xanylabeling convert                          # Show all tasks
  xanylabeling convert --task <task>            # Show detailed help for a task
  xanylabeling convert --task <task> [options]  # Run conversion
```

### 3.2 Show Detailed Help for a Specific Task

- Input (using `yolo2xlabel` as an example)

```bash
xanylabeling convert --task yolo2xlabel
```

- Output

```bash
================================================================================
TASK: yolo2xlabel
================================================================================

Description:
  Convert YOLO format to XLABEL

Modes:
  detect, segment, obb, pose

Required Arguments:
  --images
  --labels
  --output

Mode-Specific Arguments:
  detect: --classes
  segment: --classes
  obb: --classes
  pose: --pose_cfg

Examples:
  # Detection
  xanylabeling convert --task yolo2xlabel --mode detect --images ./images --labels ./labels \
    --output ./output --classes classes.txt

  # Segmentation
  xanylabeling convert --task yolo2xlabel --mode segment --images ./images --labels ./labels \
    --output ./output --classes classes.txt

  # OBB (Oriented Bounding Box)
  xanylabeling convert --task yolo2xlabel --mode obb --images ./images --labels ./labels \
    --output ./output --classes classes.txt

  # Pose
  xanylabeling convert --task yolo2xlabel --mode pose --images ./images --labels ./labels \
    --output ./output --pose-cfg pose_config.yaml

================================================================================
```

### 3.3 Run a Conversion Task

- Input (using `yolo2xlabel:detect` as an example)

```bash
xanylabeling convert --task yolo2xlabel --mode detect --images ./images --labels ./labels \
    --output ./output --classes classes.txt
```

- Output

```bash
Converting YOLO detect to XLABEL: 100%|█████████████████████████████████████| 128/128 [00:00<00:00, 2456.47it/s]
✓ Converted 128 files to XLABEL format: ./output
```

### 3.4 Conversion Parameters

| Parameter             | Description                                                          | Required |
|-----------------------|----------------------------------------------------------------------|----------|
| `--task`              | Conversion task name                                                 | Yes      |
| `--images`            | Path to the image directory                                          | No       |
| `--labels`            | Path to the label directory                                          | No       |
| `--output`            | Path to the output directory                                         | Yes      |
| `--classes`           | Path to the classes file                                             | No       |
| `--pose-cfg`          | Path to the pose configuration file                                  | No       |
| `--mode`              | Conversion mode (e.g., detect, segment, obb, pose)                   | No       |
| `--mapping`           | Path to the mapping table file                                       | No       |
| `--skip-empty-files`  | Skip creating empty output files (supported by xlabel2yolo and xlabel2voc only) | No |

> For more details, refer to [Annotation Formats (Import/Export)](./user_guide.md#4-annotation-formats-importexport) in the user guide.

## 4. FAQ

### Q1: What is the XLABEL format?

XLABEL is X-AnyLabeling's native JSON format. It stores all annotation information in a human-readable format, including shape data, labels, attributes, and metadata.

### Q2: Do I need to provide class names for all conversions?

Class names are required for:
- YOLO conversions (detect, segment, obb modes)
- COCO conversions (detect, segment modes)
- MOT conversions

VOC format embeds class names directly in the XML files, so a separate classes file is not required.

### Q3: How do I create a classes.txt file?

Simply create a text file with one class name per line:

```
person
car
bicycle
dog
cat
```

The line number (0-indexed) corresponds to the class ID.

### Q4: What's the difference between MOT and MOTS?

- **MOT**: Multiple Object Tracking with bounding boxes
- **MOTS**: Multiple Object Tracking with segmentation masks

### Q5: Can I convert directly between formats without using XLABEL?

Not currently. All conversions use XLABEL as an intermediate format:
1. Convert to XLABEL first
2. Then convert from XLABEL to the target format

### Q6: What if my images are in subdirectories?

The converter currently processes images in the specified directory only. For nested directory structures, you'll need to either run the conversion multiple times or flatten your directory structure.

### Q7: How do I handle non-ASCII paths on Windows?

The converter has built-in support for non-ASCII paths. Ensure your terminal encoding is set to UTF-8:

```bash
chcp 65001  # For Windows CMD
```

### Q8: What does the `--skip-empty-files` option do?

This option (supported by `xlabel2yolo` and `xlabel2voc`) prevents the creation of empty label files for images without annotations. This is useful when you need to distinguish between "unlabeled" and "labeled but empty" images.

### Q9: Can I use relative paths?

Yes, both relative and absolute paths are supported. Relative paths are resolved from your current working directory.

### Q10: How do I convert a single file?

Place your file in a directory and run the conversion on that directory. The converter processes all matching files in the specified directory.

---

### En Coco Rle Import (`docs/en/coco_rle_import.md`)

# COCO RLE import

COCO polygon import accepts compressed and uncompressed RLE segmentations.
Install the optional decoder in the environment running X-AnyLabeling:

```bash
pip install pycocotools
```

Disconnected regions are imported as polygons with a shared group ID.
The conversion checks that filling the resulting polygons reproduces the
decoded mask exactly. Holes and thin regions that cannot be preserved by this
conversion cause the import to fail with the annotation and image IDs.
Missing decoder dependencies also cause an explicit failure.

All annotations are converted before any output label files are written, so
these failures leave existing annotations unchanged. Resolve the reported
annotation or dependency before retrying. This import does not silently
approximate unsupported regions.

---

### En Custom Model (`docs/en/custom_model.md`)

# Model Loading

X-AnyLabeling includes a variety of built-in models. See the [Model Zoo](./model_zoo.md) for the complete list.

> [!TIP]
> If you need to deploy a model inference service via a remote server with multi-user collaboration support, please refer to [X-AnyLabeling-Server](https://github.com/CVHub520/X-AnyLabeling-Server).

## Loading Built-in Models

Before enabling the AI-assisted labeling feature, you need to load a model. This can be done via the `AI` icon button in the left sidebar or by using the shortcut `Ctrl+A`.

When you select a model, the application checks `~/xanylabeling_data/models/${model_name}` for its files. Existing files are loaded directly; otherwise, they are downloaded automatically. When `--work-dir` is set, the data directory is created under that working directory instead.

Built-in models are downloaded from the URLs in their configuration files. Some models can also use ModelScope as the download source, so ensure the selected source is accessible from your network.

For users who fail to load models due to network issues, options include downloading the model offline and loading it manually, or modifying the model download source.

### Offline Model Download

- Open the [model_zoo.md](./model_zoo.md) file and find the configuration file corresponding to the desired model.
- Edit the configuration file, modify the model path, and optionally adjust other hyperparameters as needed.
- In the tool's interface, click **Load Custom Model** and select the path to the configuration file.

### Modify Model Download Source

For details, see [Model Download Source](./user_guide.md#77-model-download-source).

## Loading Adapted User Custom Models

> **Adapted models** already have an inference implementation in X-AnyLabeling. You only need the model and configuration files. See the [Model Zoo](./model_zoo.md) for supported adapters.

In this tutorial, we will use the [YOLOv5s](https://github.com/ultralytics/yolov5) model as an example to detail how to load a custom adapted model.

**a. Model Conversion**

Suppose you have trained a model locally. First, you can convert the `PyTorch` trained model to X-AnyLabeling's default `ONNX` file format (optional). Specifically, execute:

```bash
python export.py --weights yolov5s.pt --include onnx
```

The export parameters must match the selected adapter's input and output contract. Unless the implementation explicitly supports dynamic shapes, use a fixed input size.

Additionally, it is highly recommended to import the exported `*.onnx` file using the [Netron](https://netron.app/) online tool to check the input and output node information, ensuring dimensions and other details are as expected.

<p align="center">
  <img src="../../assets/resources/netron.png" alt="Netron">
</p>

**b. Model Configuration**

After preparing the ONNX file, find and copy the corresponding configuration from the [Model Zoo](./model_zoo.md).

Taking [yolov5s.yaml](../../anylabeling/configs/auto_labeling/yolov5s.yaml) as an example, let's look at its content:

```YAML
type: yolov5
name: yolov5s-r20230520
provider: Ultralytics
display_name: YOLOv5s
model_path: https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov5s.onnx
iou_threshold: 0.45
conf_threshold: 0.25
max_det: 300
classes:
  - person
  - bicycle
  - car
  ...
```

| Field          | Description                                                     | Modifiable |
|----------------|-----------------------------------------------------------------|------------|
| `type`         | Model type identifier, cannot be customized.                    | ❌         |
| `name`         | Index name of the model configuration file, keep default.       | ❌         |
| `provider`     | Model provider, can be modified based on actual situation.      | ✔️         |
| `display_name` | Name shown in the model dropdown list in the UI, customizable. | ✔️         |
| `model_path`   | Model loading path, supports relative and absolute paths.      | ✔️         |
| `iou_threshold`| IoU threshold for Non-Maximum Suppression (NMS).               | ✔️         |
| `conf_threshold`| Confidence threshold for NMS.                                  | ✔️         |
| `max_det`      | Maximum number of detections.                                  | ✔️         |
| `classes`      | List of model labels, must match the training labels.          | ✔️         |

Note that not all fields apply to every model. Refer to the definition of the specific model.

For example, looking at the implementation of the [YOLO](../../anylabeling/services/auto_labeling/__base__/yolo.py) base model, it offers additional optional configuration items:

| Field           | Description                   |
|-----------------|-------------------------------|
| `filter_classes`| Specify classes used during inference. |
| `agnostic`      | Use class-agnostic NMS.      |

Here's a typical example:

```YAML
type: yolov5
name: yolov5s-r20230520
provider: Ultralytics
display_name: YOLOv5s
model_path: /path/to/your/custom_yolov5s.onnx # Modified path
iou_threshold: 0.60
conf_threshold: 0.25
agnostic: True
filter_classes:
  - person
  - car
classes:
  - person
  - bicycle
  - car
  - ...
```

Specifically, only when using older versions of YOLOv5 (v5.0 and below), you need to specify the `anchors` and `stride` fields in the configuration file. Otherwise, **do not** specify these fields to avoid inference errors. Example:

```YAML
type: yolov5
...
stride: 32
anchors:
  - [10,13, 16,30, 33,23]  # P3/8
  - [30,61, 62,45, 59,119]  # P4/16
  - [116,90, 156,198, 373,326]  # P5/32
```

> [!TIP]
>   1. For segmentation models, you can specify the `epsilon_factor` parameter to control the smoothness of the output contour points. The default value is `0.005`.
>   2. For `YOLO26` series models, if the exported `ONNX` file already includes `NMS` post-processing, inherit from the `YOLO11` template for adaptation; the default `YOLO26` template is intended for `nms-free` outputs.

**Optional: Switch YOLO Inference Backends (`engine` field)**

For YOLO series models, you can also switch inference backends through the `engine` field in the configuration file. This field is part of the model configuration and is usually modified together with `model_path`:

| Value | Description | Dependency |
|-------|-------------|------------|
| `ort` | Default, use ONNX Runtime inference (`*.onnx`) | Built-in |
| `dnn` | Use OpenCV DNN inference (`*.onnx`) | Built-in |
| `trt` | Use NVIDIA TensorRT inference (`*.engine`) | Requires additional TensorRT runtime dependencies |

> TensorRT is not included in X-AnyLabeling's default dependencies. Install it only when you want to accelerate NVIDIA GPU inference through the TensorRT backend. If these dependencies are not installed, other features of the application are not affected.

To use TensorRT inference, complete the following additional steps:

- **Prepare the environment**

Make sure the NVIDIA driver and CUDA are installed correctly, then install the TensorRT runtime dependencies in the Python environment used by X-AnyLabeling:

```bash
uv pip install tensorrt cuda-python
```

> [!NOTE]
> If you are not using `uv` to manage the environment, you can replace the command above with `pip install tensorrt cuda-python`. Make sure the installed `tensorrt` version is compatible with your local CUDA version. The `*.engine` file used for inference must be exported with the same major TensorRT version and the same GPU architecture; otherwise, deserialization may fail.

- **Prepare the `.engine` file**

Taking `YOLO26` as an example, you can refer to the official [Ultralytics YOLO26](https://docs.ultralytics.com/modes/export/#how-do-i-export-a-yolo26-model-to-onnx-format) guide to export a TensorRT backend model file.

The exported `.engine` file may include a JSON metadata header written by Ultralytics. X-AnyLabeling handles this automatically, so you do not need to remove it manually.

- **Configure the model**

Refer to [yolo26s_trt.yaml](../../anylabeling/configs/auto_labeling/yolo26s_trt.yaml), point `model_path` to the `.engine` file, and explicitly set `engine: trt`:

```YAML
type: yolo26
model_path: /path/to/yolo26s.engine
engine: trt
```

Then follow the [Offline Model Download](#offline-model-download) workflow and import the YAML file through **Load Custom Model** to use TensorRT inference.

**c. Model Loading**

After understanding the above, modify the `model_path` field in the configuration file and optionally adjust other hyperparameters as needed.

The software currently supports both **relative paths** and **absolute paths** for model loading. When entering the model path, be mindful of escape characters.

Finally, in the model dropdown list in the top menu bar of the interface, find the `...Load Custom Model` option, and then import the prepared configuration file to complete the custom model loading process.

## Loading Unadapted User Custom Models

> **Unadapted Models** refer to models that have not yet been integrated into X-AnyLabeling. Users need to follow the implementation steps below for integration.

Here, we use a multi-class semantic segmentation model, `U-Net`, as an example. Follow these implementation steps:

**a. Training and Exporting Model**

Export the `ONNX` model, ensuring the output node dimension is `[1, C, H, W]`, where `C` is the total number of classes (including the background class).

> ONNX is not the only supported format; an adapter may use PyTorch, OpenVINO, or TensorRT instead. For a SAM 2 video-tracking example, see the [installation guide](../../examples/interactive_video_object_segmentation/sam2/README.md), [configuration](../../anylabeling/configs/auto_labeling/sam2_hiera_base_video.yaml), and [implementation](../../anylabeling/services/auto_labeling/segment_anything_2_video.py).

**b. Define Configuration File**

First, create a new configuration file, e.g., `unet.yaml`, in the [configuration directory](../../anylabeling/configs/auto_labeling):

```YAML
type: unet
name: unet-r20250101
display_name: U-Net (ResNet34)
provider: xxx
conf_threshold: 0.5
model_path: /path/to/best.onnx
classes:
  - cat
  - dog
  - _background_
```

Where:

| Field          | Description                                                      |
|----------------|------------------------------------------------------------------|
| `type`         | Specifies the model type. Ensure it's unique from existing types to maintain identifier uniqueness. |
| `name`         | Defines the model index for internal reference and management. Avoid conflicts with existing indices. |
| `display_name` | The model name displayed in the UI for easy identification. Ensure uniqueness. |

These three fields are mandatory. Add other fields as needed, such as provider, model path, hyperparameters, etc.

**c. Add Configuration File**

Next, add the above configuration file to the [model management file](../../anylabeling/configs/models.yaml):

```yaml
...

- model_name: "unet-r20250101"
  config_file: ":/unet.yaml"
...
```

**d. Configure UI Components**

This step can add UI components as needed. Simply add the `model_type` to the corresponding list in the [file](../../anylabeling/services/auto_labeling/__init__.py).

**e. Define Inference Service**

A key step in defining the inference service is inheriting the [Model](../../anylabeling/services/auto_labeling/model.py) base class, which allows you to implement model-specific forward inference logic.

Specifically, create a new file `unet.py` in the [model inference service directory](../../anylabeling/services/auto_labeling/). Here's an example:

```
/* Detailed source-code truncated for AI context efficiency. */
```

Here:

-   In the `Meta` class:
    -   `required_config_names`: Specifies mandatory fields in the model config file for proper initialization.
    -   `widgets`: Specifies controls (buttons, dropdowns, etc.) to display for this service. See [this file](../../anylabeling/services/auto_labeling/__init__.py) for definitions.
    -   `output_modes`: Specifies the output shape types supported (e.g., polygon, rectangle, rotated box).
    -   `default_output_mode`: Specifies the default output shape type.
-   `predict_shapes` and `unload` are abstract methods that **must** be implemented. They define the inference process and resource release logic, respectively.

**f. Add to Model Management**

After the above steps, open the [model configuration file](../../anylabeling/services/auto_labeling/__init__.py). Add the corresponding model type field (e.g., `unet`) to the `_CUSTOM_MODELS` list and, if necessary, add the model name to relevant configuration sections.

> **Tip**: If you don't know how to implement specific widgets, use the search panel, enter relevant keywords, and examine the implementation logic of available widgets.

Finally, go to the [Model Manager class file](../../anylabeling/services/auto_labeling/model_manager.py). In the `_load_model` method, initialize your instance as follows:

```python
...

class ModelManager(QObject):
    """Model manager"""

    def __init__(self):
        ...
    ...
    def _load_model(self, model_id):
        """Load and return model info"""
        if self.loaded_model_config is not None:
            self.loaded_model_config["model"].unload()
            self.loaded_model_config = None
            self.auto_segmentation_model_unselected.emit()

        model_config = copy.deepcopy(self.model_configs[model_id])
        if model_config["type"] == "yolov5":
            ...
        elif model_config["type"] == "unet":
            from .unet import UNet

            try:
                model_config["model"] = UNet(
                    model_config, on_message=self.new_model_status.emit
                )
                self.auto_segmentation_model_unselected.emit()
            except Exception as e:  # noqa
                self.new_model_status.emit(
                    self.tr(
                        "Error in loading model: {error_message}".format(
                            error_message=str(e)
                        )
                    )
                )
                print(
                    "Error in loading model: {error_message}".format(
                        error_message=str(e)
                    )
                )
                return
          ...
    ...
```

> [!NOTE]
> The model type must match the `type` field defined in **b. Define Configuration File**. For a model that uses SAM-style interaction, emit `self.auto_segmentation_model_selected` instead of `self.auto_segmentation_model_unselected`, or use a configuration flag as shown in the example.

# Model Export

> This section provides specific examples of converting custom models to the ONNX format for quick integration into X-AnyLabeling.

For more model export examples, see the [`tools/onnx_exporter`](../../tools/onnx_exporter/) directory.

## Classification

### [InternImage](https://github.com/OpenGVLab/InternImage)

InternImage introduces a large-scale Convolutional Neural Network (CNN) model utilizing deformable convolutions as core operators. This achieves large effective receptive fields, adaptive spatial aggregation, and reduced inductive bias, enabling the learning of stronger, more robust patterns from extensive data. It surpasses current CNNs and Vision Transformers on benchmarks.

| Attribute         | Value                                                                                   |
|-------------------|-----------------------------------------------------------------------------------------|
| Paper Title       | InternImage: Exploring Large-Scale Vision Foundation Models with Deformable Convolutions |
| Publishing Units  | Shanghai AI Laboratory, Tsinghua University, Nanjing University, etc.                 |
| Publication Date  | CVPR'23                                                                                 |

Please refer to this [tutorial](../../tools/onnx_exporter/export_internimage_model_onnx.py).

### [PersonAttribute](https://github.com/PaddlePaddle/PaddleClas/blob/release/2.5/docs/zh_CN/models/PULC/PULC_person_attribute.md)

This tutorial provides users with a method to quickly build lightweight, high-precision, and practical person attribute classification models using PaddleClas PULC (Practical Ultra-Lightweight image Classification). The model can be widely used in pedestrian analysis, tracking scenarios, etc.

| Attribute         | Value                                                                                   |
|-------------------|-----------------------------------------------------------------------------------------|
| Publishing Units  | PaddlePaddle Team (Baidu)                                                               |

Please refer to this [tutorial](../../tools/onnx_exporter/export_pulc_attribute_model_onnx.py).

### [VehicleAttribute](https://github.com/PaddlePaddle/PaddleClas/blob/release/2.5/docs/zh_CN/models/PULC/PULC_vehicle_attribute.md)

This tutorial provides users with a method to quickly build lightweight, high-precision, and practical vehicle attribute classification models using PaddleClas PULC. The model is suitable for vehicle recognition, road monitoring, etc.

| Attribute         | Value                                                                                   |
|-------------------|-----------------------------------------------------------------------------------------|
| Publishing Units  | PaddlePaddle Team (Baidu)                                                               |

Please refer to this [tutorial](../../tools/onnx_exporter/export_pulc_attribute_model_onnx.py).

## Object Detection

### [RF-DETR](https://github.com/roboflow/rf-detr)

`RF-DETR` is the first real-time model to exceed 60 AP on the Microsoft COCO benchmark alongside competitive performance at base sizes. It also achieves state-of-the-art performance on RF100-VL, an object detection benchmark that measures model domain adaptability to real world problems. RF-DETR is comparable speed to current real-time objection models.

> Organization: Roboflow

Please refer to this [tutorial](../../tools/onnx_exporter/export_rfdetr_onnx.py).

### [YOLOv5_OBB](https://github.com/hukaixuan19970627/yolov5_obb)

> Author: Kaixuan Hu

Please refer to this [tutorial](https://github.com/CVHub520/yolov5_obb/tree/main).

### [YOLOv7](https://github.com/WongKinYiu/yolov7)

| Attribute         | Value                                                                                     |
|-------------------|-------------------------------------------------------------------------------------------|
| Paper Title       | YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors |
| Publishing Units  | Institute of Information Science, Academia Sinica, Taiwan                                |

```bash
python export.py --weights yolov7.pt --img-size 640 --grid
```

> **Note:** The `--grid` parameter must be included when running this command.

### [Gold-YOLO](https://github.com/huawei-noah/Efficient-Computing/tree/master/Detection/Gold-YOLO)

| Attribute         | Value                                                                   |
|-------------------|-------------------------------------------------------------------------|
| Paper Title       | Gathering Information Helps Explain The Locality In Structured Object Detection (Preprint includes Gold-YOLO) |
| Publishing Units  | Huawei Noah's Ark Lab                                                   |
| Publication Date  | NeurIPS'23                                                              |

```bash
# Clone the repository first
git clone https://github.com/huawei-noah/Efficient-Computing.git
cd Efficient-Computing/Detection/Gold-YOLO
# Run export for desired model weight
python deploy/ONNX/export_onnx.py --weights Gold_n_dist.pt --simplify --ort
# Or other weights: Gold_s_pre_dist.pt, Gold_m_pre_dist.pt, Gold_l_pre_dist.pt
```

### [DAMO-YOLO](https://github.com/tinyvision/DAMO-YOLO)

`DAMO-YOLO` is a fast and accurate object detection method developed by the TinyML team at Alibaba DAMO Academy's Data Analytics and Intelligence Lab. It achieves state-of-the-art performance by incorporating new techniques, including a Neural Architecture Search (NAS) backbone, an efficient re-parameterized Generalized-FPN (RepGFPN), a lightweight head, AlignedOTA label assignment, and distillation enhancement.

| Attribute         | Value                                                                 |
|-------------------|-----------------------------------------------------------------------|
| Paper Title       | DAMO-YOLO: A Report on Real-Time Object Detection                     |
| Publishing Units  | Alibaba Group                                                         |
| Publication Date  | Arxiv'22                                                              |

```bash
# Clone the repository first
git clone https://github.com/tinyvision/DAMO-YOLO.git
cd DAMO-YOLO
# Run converter for a specific config and checkpoint
python tools/converter.py -f configs/damoyolo_tinynasL25_S.py -c damoyolo_tinynasL25_S.pth --batch_size 1 --img_size 640
```

### [RT-DETR](https://github.com/lyuwenyu/RT-DETR)

Real-Time Detection Transformer (`RT-DETR`) is the first known real-time end-to-end object detector. RT-DETR-L achieves 53.0% AP on COCO val2017 at 114 FPS on a T4 GPU, while RT-DETR-X achieves 54.8% AP at 74 FPS, surpassing all YOLO detectors of the same scale in speed and accuracy. RT-DETR-R50 achieves 53.1% AP at 108 FPS, outperforming DINO-Deformable-DETR-R50 by 2.2% AP with about 21x faster FPS.

| Attribute         | Value                                                                 |
|-------------------|-----------------------------------------------------------------------|
| Paper Title       | RT-DETR: DETRs Beat YOLOs on Real-time Object Detection               |
| Publishing Units  | Baidu Inc.                                                            |
| Publication Date  | Arxiv'22 (Accepted to ICCV 2023)                                      |

Please refer to external tutorials or the official repository for ONNX export instructions, as direct commands might vary. Example article (Chinese): [https://zhuanlan.zhihu.com/p/628660998](https://zhuanlan.zhihu.com/p/628660998).

### [Hyper-YOLO](https://github.com/iMoonLab/Hyper-YOLO)

Hyper-YOLO is a novel object detection method that integrates hypergraph computation to capture complex high-order associations between visual features. It introduces a Hypergraph Computation-enhanced Semantic Collection and Scattering (HGC-SCS) framework, transforming visual feature maps into semantic space and constructing hypergraphs for high-order information propagation.

| Attribute         | Value                                                                 |
|-------------------|-----------------------------------------------------------------------|
| Paper Title       | Hyper-YOLO: When Visual Object Detection Meets Hypergraph Computation |
| Publishing Units  | Tsinghua University, Xi'an Jiaotong University                        |
| Publication Date  | TAPMI'25 (Preprint available)                                         |

Download the model, install dependencies, then modify the `Hyper-YOLO/ultralytics/export.py` file (or a similar export script within that project), setting `batch=1` and `half=False`:

```python
# Example modification within export_onnx.py or a similar script
# Ensure necessary imports (Path, YOLO, torch, os) are present
from pathlib import Path
from ultralytics import YOLO
import torch
import os

if __name__ == '__main__':
    model_path = 'hyper-yolon-seg.pt' # Or your specific model weight file
    if isinstance(model_path, (str, Path)):
        model = YOLO(model_path)

    # Ensure export arguments are set correctly
    output_filename = model.export(
        imgsz=640,
        batch=1,         # Set batch size to 1
        format='onnx',   # Specify ONNX format
        int8=False,
        half=False,      # Set half to False
        device="0",      # Or "cpu"
        verbose=False
    )
    print(f"Model exported to {output_filename}")

```

Then run the export script (adjust path as needed):

```bash
python3 Hyper-YOLO/ultralytics/export.py
```


### [D-FINE](https://github.com/Peterande/D-FINE)

`D-FINE` is a powerful real-time object detector that redefines the bounding box regression task in DETRs as Fine-grained Distribution Refinement (FDR) and introduces Global Optimal Localization Self-Distillation (GO-LSD), achieving outstanding performance without introducing additional inference and training costs.

| Attribute         | Value                                                                             |
|-------------------|-----------------------------------------------------------------------------------|
| Paper Title       | D-FINE: Redefine Regression Task of DETRs as Fine-grained Distribution Refinement |
| Publishing Units  | OUniversity of Science and Technology of China                                    |
| Publication Date  | ICLR'25 Spotlight                                                                 |

Please refer to this [tutorial](../../tools/onnx_exporter/export_dfine_onnx.py).

### [D-FINE-seg](https://github.com/ArgoHA/D-FINE-seg)

`D-FINE-seg` introduces a lightweight instance segmentation head on top of the D-FINE detection architecture. It fuses multi-scale features with query mask embeddings to generate high-quality instance masks while supporting real-time multi-backend deployment. The model provides N, S, M, L, and X variants for different accuracy and performance requirements.

| Attribute        | Value                                                                                                  |
|------------------|--------------------------------------------------------------------------------------------------------|
| Paper Title      | D-FINE-seg: Object Detection and Instance Segmentation Framework with Multi-Backend Deployment        |
| Authors          | Argo Saakyan & Dmitry Solntsev                                                                         |
| Publication Date | Arxiv'26                                                                                               |

Please refer to the [official export guide](https://github.com/ArgoHA/D-FINE-seg#export).

### [DEIMv2](https://github.com/Intellindust-AI-Lab/DEIMv2)

`DEIMv2` is an evolution of the DEIM framework while leveraging the rich features from DINOv3. Our method is designed with various model sizes, from an ultra-light version up to S, M, L, and X, to be adaptable for a wide range of scenarios. Across these variants, DEIMv2 achieves state-of-the-art performance, with the S-sized model notably surpassing 50 AP on the challenging COCO benchmark.

| Attribute        | Value                                    |
|------------------|------------------------------------------|
| Paper Title      | Real-Time Object Detection Meets DINOv3  |
| Publishing Units | Intellindust AI Lab & Xiamen University  |
| Publication Date | Arxiv'25                                 |

请参考此[教程](../../tools/onnx_exporter/export_deimv2_onnx.py)。

## Segment Anything

### [SAM](https://github.com/facebookresearch/segment-anything)

The Segment Anything Model (`SAM`) generates high-quality object masks from input prompts like points or boxes. It can produce masks for all objects in an image and was trained on a dataset of 11 million images and 1.1 billion masks. SAM demonstrates strong zero-shot performance on various segmentation tasks.

| Attribute         | Value                                                                 |
|-------------------|-----------------------------------------------------------------------|
| Paper Title       | Segment Anything                                                      |
| Publishing Units  | Meta AI Research, FAIR                                                |
| Publication Date  | ICCV'23                                                               |

For ONNX export, refer to community exporters like [https://github.com/vietanhdev/samexporter#sam-exporter](https://github.com/vietanhdev/samexporter#sam-exporter) or the official repository for potential tools.

### [Efficient-SAM](https://github.com/yformer/EfficientSAM)

`EfficientViT` (underlying EfficientSAM) is a family of vision models designed for efficient high-resolution dense prediction. It uses a novel lightweight multi-scale linear attention module as its core building block, achieving global receptive fields and multi-scale learning with hardware-efficient operations. EfficientSAM adapts this for promptable segmentation.

| Attribute         | Value                                                                                 |
|-------------------|---------------------------------------------------------------------------------------|
| Paper Title       | EfficientViT: Multi-Scale Linear Attention for High-Resolution Dense Prediction       |
| Publishing Units  | MIT HAN Lab                                                                           |
| Publication Date  | ICCV'23                                                                               |

For ONNX export, refer to the specific EfficientSAM project (e.g., linked via EfficientViT or search directly) or check benchmarking scripts like those mentioned in the EfficientViT repo: [https://github.com/microsoft/Cream/tree/main/EfficientViT#benchmarking-with-onnxruntime](https://github.com/microsoft/Cream/tree/main/EfficientViT#benchmarking-with-onnxruntime) (Note: Original provided link `CVHub520/efficientvit` seems like a fork, official repo might differ).

### [SAM-Med2D](https://github.com/OpenGVLab/SAM-Med2D)

`SAM-Med2D` is a specialized model developed to address the challenges of applying state-of-the-art image segmentation techniques to medical images.

| Attribute         | Value                                                                 |
|-------------------|-----------------------------------------------------------------------|
| Paper Title       | SAM-Med2D                                                             |
| Publishing Units  | OpenGVLab                                                             |
| Publication Date  | Arxiv'23                                                              |

Refer to the deployment instructions in the official repository: [https://github.com/OpenGVLab/SAM-Med2D#%EF%B8%8F-deploy](https://github.com/OpenGVLab/SAM-Med2D#%EF%B8%8F-deploy). (Note: Original provided link `CVHub520/SAM-Med2D` seems like a fork).

### [HQ-SAM](https://github.com/SysCV/sam-hq)

`HQ-SAM` is an enhanced version of the Segment Anything Model (SAM) designed to improve mask prediction quality, especially for complex structures, while maintaining SAM's efficiency and zero-shot capabilities. It achieves this through an improved decoding process and additional training on a specialized dataset.

| Attribute         | Value                                                                 |
|-------------------|-----------------------------------------------------------------------|
| Paper Title       | Segment Anything in High Quality                                      |
| Publishing Units  | ETH Zurich, HKUST                                                     |
| Publication Date  | NeurIPS'23                                                            |

Refer to the official HQ-SAM repository or potentially forks like [https://github.com/CVHub520/sam-hq](https://github.com/CVHub520/sam-hq) for ONNX export tutorials or scripts.

### [EdgeSAM](https://github.com/chongzhou96/EdgeSAM)

`EdgeSAM` is an accelerated variant of the Segment Anything Model (SAM), optimized for efficient execution on edge devices with minimal performance compromise. It claims significant speedups over the original SAM and MobileSAM on edge hardware.

| Attribute         | Value                                                                 |
|-------------------|-----------------------------------------------------------------------|
| Paper Title       | EdgeSAM: Prompt-In-the-Loop Distillation for On-Device Deployment of SAM |
| Publishing Units  | S-Lab, Nanyang Technological University; Shanghai AI Laboratory       |
| Publication Date  | Arxiv'23                                                              |

Refer to the official repository's export script: [https://github.com/chongzhou96/EdgeSAM/blob/main/scripts/export_onnx_model.py](https://github.com/chongzhou96/EdgeSAM/blob/main/scripts/export_onnx_model.py).

## Grounding

### [Grounding DINO](https://github.com/IDEA-Research/GroundingDINO)

`Grounding DINO` is a state-of-the-art (SOTA) zero-shot object detection model excelling at detecting objects not defined during training. Its ability to adapt to new objects and scenes makes it highly versatile for real-world applications. It performs well in Referring Expression Comprehension (REC), identifying and locating specific objects or regions in images based on text descriptions. Grounding DINO simplifies object detection by eliminating hand-designed components like Non-Maximum Suppression (NMS).

| Attribute         | Value                                                                                     |
|-------------------|-------------------------------------------------------------------------------------------|
| Paper Title       | Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection    |
| Publishing Units  | IDEA-CVR, IDEA-Research                                                                   |
| Publication Date  | Arxiv'23                                                                                  |

Please refer to this [tutorial](../../tools/onnx_exporter/export_grounding_dino_onnx.py).

### [YOLO-World](https://github.com/AILab-CVC/YOLO-World)

`YOLO-World` enhances the YOLO series by incorporating vision-language modeling, enabling efficient open-vocabulary object detection that excels in various tasks.

| Attribute         | Value                                                                 |
|-------------------|-----------------------------------------------------------------------|
| Paper Title       | YOLO-World: Real-Time Open-Vocabulary Object Detection                 |
| Publishing Units  | Tencent AI Lab, ARC Lab, Tencent PCG, Huazhong University of Science and Technology |
| Publication Date  | Arxiv'24                                                              |

```bash
# Ensure ultralytics package is installed and updated
# pip install -U ultralytics
# Clone the ultralytics repo if needed for specific export scripts, otherwise use the pip package
# git clone https://github.com/ultralytics/ultralytics.git
# cd ultralytics
# Use the yolo command line interface
yolo export model=yolov8s-worldv2.pt format=onnx opset=13 simplify
```

### [GeCo](https://github.com/jerpelhan/GeCo)

`GeCo` is a unified architecture for few-shot counting, achieving high-precision object detection, segmentation, and counting through novel dense queries and a counting loss.

| Attribute         | Value                                                                                         |
|-------------------|-----------------------------------------------------------------------------------------------|
| Paper Title       | GeCo: Query-Based Anchors for Fine-Grained Multi-Object Counting, Detection, and Segmentation |
| Publishing Units  | University of Ljubljana                                                                       |
| Publication Date  | NeurIPS'24                                                                                    |

Please refer to this [tutorial](../../tools/onnx_exporter/export_geco_onnx.py).

## Image Tagging

### [Recognize Anything (RAM)](https://github.com/xinyu1205/recognize-anything)

`RAM` (Recognize Anything Model) is a robust image tagging model known for its exceptional image recognition capabilities. RAM excels in zero-shot generalization, is cost-effective, reproducible, and relies on open-source, annotation-free datasets. Its flexibility makes it suitable for a wide range of applications.

| Attribute         | Value                                                                 |
|-------------------|-----------------------------------------------------------------------|
| Paper Title       | Recognize Anything: A Strong Image Tagging Model                      |
| Publishing Units  | OPPO Research Institute, IDEA-Research, AI Robotics                   |
| Publication Date  | Arxiv'23                                                              |

Please refer to this [tutorial](../../tools/onnx_exporter/export_recognize_anything_model_onnx.py). (Note: Original linked repo `Tag2Text` seems related but RAM is often associated with `recognize-anything`).

---

### En Get Started (`docs/en/get_started.md`)

# Quick Start Guide

## 1. Installation and Deployment

X-AnyLabeling provides multiple installation methods. You can install the official package directly via `pip` to get the latest stable version, install from source by cloning the official GitHub repository, or use the convenient GUI installer package.

> [!NOTE]
> **Advanced Features**: The following advanced features are only available through Git clone installation. Please refer to the corresponding documentation for configuration instructions.
>
> 0. **Remote Inference Service**: X-AnyLabeling-Server based remote inference service - [Installation Guide](https://github.com/CVHub520/X-AnyLabeling-Server)
> 1. **Video Object Tracking**: Segment Anything video object tracking ([SAM 2](../../examples/interactive_video_object_segmentation/sam2/README.md) | [SAM 3](../../examples/interactive_video_object_segmentation/sam3/README.md))
> 2. **Bounding Box Generation**: UPN-based bounding box generation - [Installation Guide](../../examples/detection/hbb/README.md)
> 3. **Interactive Detection & Segmentation**: Interactive object detection and segmentation with visual and text prompts - [Installation Guide](../../examples/detection/hbb/README.md)
> 4. **Smart Detection & Segmentation**: Detection and segmentation with visual prompts, text prompts, or prompt-free modes ([YOLOE](../../examples/grounding/yoloe/README.md) | [SAM 3](../../examples/grounding/sam3/README.md) | [LocateAnything](../../examples/vision_foundation/locateanything/README.md))
> 5. **One-Click Training Platform**: Ultralytics framework-based training platform - [Installation Guide](../../examples/training/ultralytics/README.md)
> 6. **Multimodal Vision Model**: Rex-Omni based object detection, keypoint detection (person/hand/animal), OCR, Pointing, visual prompt localization - [Installation Guide](../../examples/vision_foundation/rexomni/README.md)

### 1.1 Prerequisites

#### 1.1.1 Miniconda

If you are already using Miniconda, follow these steps:

**Step 0.** Download and install Miniconda from the [official website](https://docs.anaconda.com/miniconda/).

**Step 1.** Create a conda environment with Python 3.11 ~ 3.13 (Python 3.12 is recommended) and activate it.

> [!NOTE]
> Other Python versions require compatibility verification on your own.

```bash
# CPU Environment [Windows/Linux/macOS]
conda create --name x-anylabeling-cpu python=3.12 -y
conda activate x-anylabeling-cpu

# CUDA 11.x Environment [Windows/Linux]
conda create --name x-anylabeling-cu11 python=3.12 -y
conda activate x-anylabeling-cu11

# CUDA 12.x Environment [Windows/Linux]
conda create --name x-anylabeling-cu12 python=3.12 -y
conda activate x-anylabeling-cu12

# CUDA 13.x Environment [Windows/Linux]
conda create --name x-anylabeling-cu13 python=3.12 -y
conda activate x-anylabeling-cu13
```

#### 1.1.2 Venv

You can also use Python's built-in `venv` module to create virtual environments:

```bash
# CPU [Windows/Linux/macOS]
python3.12 -m venv venv-cpu
source venv-cpu/bin/activate  # Linux/macOS
# venv-cpu\Scripts\activate    # Windows

# CUDA 12.x [Windows/Linux]
python3.12 -m venv venv-cu12
source venv-cu12/bin/activate  # Linux
# venv-cu12\Scripts\activate    # Windows

# CUDA 11.x [Windows/Linux]
python3.12 -m venv venv-cu11
source venv-cu11/bin/activate  # Linux
# venv-cu11\Scripts\activate    # Windows

# CUDA 13.x [Windows/Linux]
python3.12 -m venv venv-cu13
source venv-cu13/bin/activate  # Linux
# venv-cu13\Scripts\activate    # Windows
```

#### 1.1.3 uv

**Step 0.** Install uv:

```bash
# Linux / macOS / WSL2
curl -LsSf https://astral.sh/uv/install.sh | sh

# Windows (PowerShell)
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
```

**Step 1.** Create a virtual environment (uv downloads the required Python automatically) and activate it:

```bash
# CPU Environment [Windows/Linux/macOS]
uv venv --python 3.12 .venv-cpu
source .venv-cpu/bin/activate      # Linux/macOS/WSL2
# .venv-cpu\Scripts\activate       # Windows

# CUDA 12.x Environment [Windows/Linux]
uv venv --python 3.12 .venv-cu12
source .venv-cu12/bin/activate     # Linux
# .venv-cu12\Scripts\activate      # Windows

# CUDA 11.x Environment [Windows/Linux]
uv venv --python 3.12 .venv-cu11
source .venv-cu11/bin/activate     # Linux
# .venv-cu11\Scripts\activate      # Windows

# CUDA 13.x Environment [Windows/Linux]
uv venv --python 3.12 .venv-cu13
source .venv-cu13/bin/activate     # Linux
# .venv-cu13\Scripts\activate      # Windows
```

### 1.2 Installation



#### 1.2.1 Pip Installation

You can install the latest stable version of X-AnyLabeling with the following commands (using `uv pip` is recommended):

```bash
pip install -U uv

# CPU [Windows/Linux/macOS]
uv pip install "x-anylabeling-cvhub[cpu]"

# CUDA 12.x is the default GPU option [Windows/Linux]
uv pip install "x-anylabeling-cvhub[gpu]"

# CUDA 11.x [Windows/Linux]
uv pip install "x-anylabeling-cvhub[gpu-cu11]"

# CUDA 13.x [Windows/Linux]
uv pip install "x-anylabeling-cvhub[gpu-cu13]"
```

#### 1.2.2 Git Clone (Recommended)

**Step a.** Clone the repository.

```bash
git clone https://github.com/CVHub520/X-AnyLabeling.git
cd X-AnyLabeling
```

After cloning the repository, you can choose to install the dependencies in either developer mode or regular mode according to your needs.

**Step b.** Install the dependencies.

```bash
pip install -U uv

# CPU [Windows/Linux/macOS]
uv pip install -e ".[cpu]"

# CUDA 12.x is the default GPU option [Windows/Linux]
uv pip install -e ".[gpu]"

# CUDA 11.x [Windows/Linux]
uv pip install -e ".[gpu-cu11]"

# CUDA 13.x [Windows/Linux]
uv pip install -e ".[gpu-cu13]"
```

If you need to perform secondary development or package compilation, you can install the `dev` dependencies simultaneously, for example:

```bash
uv pip install -e ".[cpu,dev]"
```

> [!NOTE]
> If you switch to a new project directory, rerun the install command there, otherwise the environment will reference the source code from the previous directory.

After installation, you can verify it by running the following command:

```bash
xanylabeling checks   # Display system and version information
```

You can also run the following commands to get other information:

```bash
xanylabeling help     # Display help information
xanylabeling version  # Display version number
xanylabeling config   # Display configuration file path
```

After verification, you can run the application directly:

```bash
xanylabeling
```

> [!TIP]
> You can use `xanylabeling --help` to view all available command line options. Please refer to the **Command Line Parameters** table below for complete parameter descriptions.

| Option                     | Description                                                                                                   |
|----------------------------|---------------------------------------------------------------------------------------------------------------|
| `filename`                 | Specify the image or label filename. If a directory path is provided, all files in the folder will be loaded. |
| `--help`, `-h`             | Display help information and exit.                                                                            |
| `--reset-config`           | Reset Qt configuration, clearing all settings.                                                                |
| `--logger-level`           | Set the logging level: "debug", "info", "warning", "fatal", "error".                                          |
| `--output`, `-O`, `-o`     | Specify the output file or directory. Paths ending with `.json` are treated as files.                         |
| `--config`                 | Specify a configuration file or YAML-formatted configuration string. Defaults to a user-specific path.        |
| `--work-dir`               | Specify the working directory for configuration and data files. Defaults to home directory.                   |
| `--qt-image-allocation-limit` | Override the Qt image allocation limit in MB. Qt default is `256 MB`. Use `0` to disable the limit.     |
| `--nodata`                 | Prevent storing image data in JSON files.                                                                     |
| `--autosave`               | Enable automatic saving of annotation data.                                                                   |
| `--nosortlabels`           | Disable label sorting.                                                                                        |
| `--flags`                  | Comma-separated list of flags or path to a file containing flags.                                             |
| `--labelflags`             | YAML-formatted string for label-specific flags or a file containing a JSON-formatted string.                  |
| `--labels`                 | Comma-separated list of labels or path to a file containing labels.                                           |
| `--validatelabel`          | Specify the type of label validation.                                                                         |
| `--keep-prev`              | Keep annotations from the previous frame.                                                                     |
| `--no-auto-update-check`   | Disable automatic update checks on startup.                                                                   |

> [!NOTE]
> Please refer to the X-AnyLabeling [pyproject.toml](../../pyproject.toml) file for a list of dependencies. Note that all the examples above install all required dependencies.

We also supports batch conversion between multiple annotation formats:

```bash
xanylabeling convert         # List all supported conversion tasks
xanylabeling convert <task>  # Show detailed help and examples for a specific task, i.e., xlabel2yolo
```

> [!IMPORTANT]
> For GPU acceleration, please follow the instructions below to ensure that your local CUDA and cuDNN versions are compatible with the ONNX Runtime version, and install the required dependencies to ensure GPU-accelerated inference works properly:
>
> - Ⅰ. [CUDA Execution Provider](https://onnxruntime.ai/docs/execution-providers/CUDA-ExecutionProvider.html)
> - Ⅱ. [Get started with ONNX Runtime in Python](https://onnxruntime.ai/docs/get-started/with-python.html)
> - Ⅲ. [ONNX Runtime Compatibility](https://onnxruntime.ai/docs/reference/compatibility.html)

| CUDA environment | Package extra | ONNX Runtime GPU | cuDNN |
|------------------|---------------|------------------|-------|
| CUDA 11.x | `gpu-cu11` | `>= 1.15.0, < 1.19.0` | 8.x |
| CUDA 12.x | `gpu` | `>= 1.18.1, < 1.27.0` | 9.x |
| CUDA 13.x | `gpu-cu13` | `>= 1.27.0, < 1.28.0` | 9.x |

> [!WARNING]
> Install only one of the `cpu`, `gpu-cu11`, `gpu`, or `gpu-cu13` extras in an environment. CUDA 11.x additionally requires `onnx >= 1.15.0, < 1.16.1`.

**Optional Step**: Refresh Translation and Resource Files

If you update UI text or maintain localization files, refresh the translation artifacts for all supported interface languages (`en_US`, `zh_CN`, `ja_JP`, `ko_KR`) with:

```bash
# Regenerate .ts catalogs from source strings
python scripts/generate_languages.py

# Compile .qm files and rebuild Qt resources
python scripts/compile_languages.py
```

**Optional Step**: Set Environment Variables

```bash
# Linux or macOS
export PYTHONPATH=/path/to/X-AnyLabeling

# Windows
set PYTHONPATH=C:\path\to\X-AnyLabeling
```

> [!CAUTION]
> **Avoid Dependency Conflicts**: To avoid conflicts with third-party packages, please uninstall the old version first:
> ```bash
> pip uninstall anylabeling -y
> ```

> [!NOTE]
> **Special Note for Fedora KDE Users**: If you encounter slow mouse movement or response lag, try using the `--qt-platform xcb` parameter to improve performance:
> ```bash
> xanylabeling --qt-platform xcb
> ```

#### 1.2.3 GUI Installer Package

> **Download Link**: [GitHub Releases](https://github.com/CVHub520/X-AnyLabeling/releases)

Compared to running from source code, the GUI installer package provides a more convenient user experience. Users don't need to understand the underlying implementation and can use it directly after extraction. However, the GUI installer package also has some limitations:

- **Difficult Troubleshooting**: If crashes or errors occur, it may be difficult to quickly identify the specific cause, increasing the difficulty of troubleshooting.
- **Feature Lag**: The GUI version may lag behind the source code version in functionality, potentially leading to missing features and compatibility issues.
- **GPU Runtime Requirements**: Select the package matching CUDA 11, 12, or 13 and install the corresponding CUDA and cuDNN runtime libraries. The application falls back to CPU when the required GPU libraries cannot be loaded.

Therefore, it is recommended to choose between running from source code and using the GUI installer package based on your specific needs and usage scenarios to optimize the user experience.

## 2. Usage

For detailed instructions on how to use X-AnyLabeling, please refer to the corresponding [User Guide](./user_guide.md).

## 3. Packaging and Compilation

> [!NOTE]
> Please note that the following steps are optional. This section is intended for users who may need to customize and compile the software to adapt to specific deployment scenarios. If you use the software without such requirements, you can skip this section.

<details>
<summary>Expand/Collapse</summary>

To facilitate users running `X-AnyLabeling` on different platforms, this tool provides packaging and compilation instructions along with relevant notes. Install the dependency extra for the target runtime before executing the corresponding packaging command.

### 3.1 Notes

- **Verify GPU Environment**: If compiling the GPU version, please activate the corresponding GPU runtime environment first and execute `pip list | grep onnxruntime-gpu` to ensure it is properly installed.

- **GPU Compilation**: The GPU specifications automatically collect the ONNX Runtime provider libraries. Install `gpu-cu11`, `gpu`, or `gpu-cu13` before building to select CUDA 11, 12, or 13. For detailed compatibility information, refer to the [official documentation](https://onnxruntime.ai/docs/execution-providers/CUDA-ExecutionProvider.html).

### 3.2 Build Commands

```bash
# Windows-CPU
bash scripts/build_executable.sh win-cpu

# Windows-GPU
bash scripts/build_executable.sh win-gpu

# Linux-CPU
bash scripts/build_executable.sh linux-cpu

# Linux-GPU
bash scripts/build_executable.sh linux-gpu

# macOS
bash scripts/build_executable.sh macos
```

> [!TIP]
> If you encounter permission issues when executing the above commands on Windows, after ensuring the above preparation steps are completed, you can directly execute the following commands:
> ```bash
> pyinstaller --noconfirm packaging/pyinstaller/specs/x-anylabeling-win-cpu.spec
> pyinstaller --noconfirm packaging/pyinstaller/specs/x-anylabeling-win-gpu.spec
> ```

</details>

---

### En Image Classifier (`docs/en/image_classifier.md`)

# Overview

The X-AnyLabeling Image Classifier is a dedicated annotation window for multi-class (single-label) and multi-label classification. It supports label management, AI-assisted classification for individual images or batches, dataset statistics, keyboard navigation, and category-based image export.

<video src="https://github.com/user-attachments/assets/0652adfb-48a4-4219-9b18-16ff5ce31be0" width="100%" controls>
</video>

# Getting Started

To open the Image Classifier window, first load an image directory in the main window, then click the Image Classifier icon in the left toolbar, or use the shortcut  `Ctrl+3` (Windows/Linux) / `⌘+3` (macOS).

> [!NOTE]
> The main window will be automatically hidden when opening the Image Classifier window. If the taskbar icon disappears after minimizing, use `Alt` + `Tab` (Windows) or `⌘` + `Tab` (macOS) to switch back to the window. The main window will reappear after closing the classifier window.

# Tutorial

The Image Classifier features a dual-panel design with the image preview area on the left and the annotation control panel on the right.

<img src="../../assets/resources/image_classifier/entire_panel.png" width="100%" />

## Left Panel - Image Preview Area

- **Filename and Progress Indicator**: Displays the current image filename and its position in the dataset (for example, `husky.png (1/3)`).
- **Image Preview Area**: Centers the image with adaptive scaling. When labels are selected, the label text appears in real-time at the top-right corner of the preview area for quick verification.

> [!TIP]
> ✅ indicates an annotated image; ❌ indicates an unannotated image.

## Right Panel - Annotation Control Area

- **Function Components**:

| Button | Description |
|--------|-------------|
| Export | Export classified images into category-specific folders (MultiClass mode only) |
| MultiClass | Multi-class classification mode, only one label per image |
| MultiLabel | Multi-label classification mode, multiple labels per image |
| AutoRun | Use AI models to automatically classify all images in batch |

> [!NOTE]
> - MultiClass mode: Suitable for mutually exclusive classification tasks, such as animal species recognition (one image can only be one species)
> - MultiLabel mode: Suitable for multi-attribute annotation tasks, such as image tagging (one image can have multiple attributes)
> - After switching from MultiLabel to MultiClass, review existing multilabel annotations image by image and select the category to keep. Switching modes does not automatically clean up annotations across all images.

Classification edits follow the main window's autosave setting. If autosave is disabled, close the classifier and return to the main window to save the current changes before exporting. Export reads saved annotation files and copies classified images into category-specific folders, leaving the original images unchanged:

```bash
classified/
├── husky/
│   ├── husky_playing.jpg
│   └── husky_sleeping.jpg
├── psyduck/
│   ├── psyduck_swimming.png
│   └── psyduck_standing.png
└── ragdoll/
    ├── ragdoll_grooming.jpg
    └── ragdoll_sitting.jpg
```

- **Annotation Components**:

The right center panel contains the title and the following 5 annotation components.

Use the category search box for case-insensitive keyword matching. Separate multiple keywords with spaces; category names must contain all keywords. Searching only filters the displayed categories and preserves selections. Clear the search to restore the full list. The search and action row stays fixed while the category list scrolls.

### AI Assistance

#### Image Classification Models

Run single-image or batch pre-annotation with image classification model in the main window, then open the Image Classifier to review and correct the predictions. See the [image classification example](../../examples/classification/image-level/README.md#model-assisted-classification) for supported models and the workflow.

#### Vision Language Models

Before using AI assistance, configure a model as described in the [Chatbot guide](./chatbot.md).

<img src="../../assets/resources/vqa/chatbot.png" width="100%" />

Once configured, click the magic-wand icon on the right side of the annotation area to open the AI dialog.

<img src="../../assets/resources/image_classifier/assistance.png" width="100%" />

The software includes a built-in standard prompt template that automatically adjusts based on the current mode (MultiClass or MultiLabel). You can use it directly or customize according to your specific requirements.

**MultiClass Mode Example:**

```prompt
@image
You are an expert image classifier. Your task is to perform multi-class classification.

Task Definition: Analyze the given image and classify it based on the provided categories.

Available Categories: ["husky", "psyduck", "ragdoll"]

Instructions:
1. Carefully examine the image and identify the main subject and their activity
2. Be precise - only select categories that clearly match what you observe

Return your result in strict JSON format:
{"husky": false, "psyduck": false, "ragdoll": false}

Set exactly ONE category to 'true' that best matches the image, keep all others as 'false'.
```

**MultiLabel Mode Example:**

```prompt
@image
You are an expert image classifier. Your task is to perform multi-label classification.

Task Definition: Analyze the given image and classify it based on the provided categories.

Available Categories: ["outdoor", "sunny", "people", "building"]

Instructions:
1. Carefully examine the image and identify the main subject and their activity
2. Be precise - only select categories that clearly match what you observe

Return your result in strict JSON format:
{"outdoor": false, "sunny": false, "people": false, "building": false}

Set ALL applicable categories to 'true', keep non-applicable ones as 'false'.
```

> For advanced usage of the intelligent dialog, including special references and template library settings, please refer to the [VQA Annotation Documentation](./vqa.md).

### Add Labels

<img src="../../assets/resources/image_classifier/add_label.png" width="100%" />

The software provides two methods for adding labels:

1. **Manual Input**: Suitable for small numbers of labels. Enter label names directly in the text field, one per line. Label names must be unique.
2. **File Import**: Suitable for large numbers of labels. Prepare a [classes.txt](../../assets/classes.txt) file in advance (one label per line) and import it using the upload button on the left. The file content will be automatically parsed into the text field.

After confirming the label list is correct, click the Add button to complete the label addition.

> [!NOTE]
> This interface only supports adding new labels, not modifying existing ones. To edit or delete existing labels, please refer to the following sections.

### Delete Labels

<img src="../../assets/resources/image_classifier/delete_label.png" width="100%" />

The delete labels component allows you to remove existing labels. Select one or more labels by clicking (selected labels will be highlighted), then click the delete button. After confirming in the confirmation dialog, the system will automatically traverse all label files in the current task and remove all content related to the selected labels.

### Edit Labels

<img src="../../assets/resources/image_classifier/edit_label.png" width="100%" />

The label editing component displays labels in table format, with current labels shown in the left column (read-only) and editable new label names in the right column. To modify a label, double-click the right cell to enter edit mode and input the new label name. After completing all modifications, click the Save button to apply the changes.

### Dataset Statistics

<img src="../../assets/resources/image_classifier/dataset_statistics.png" width="100%" />

The dataset statistics component provides statistical information about the current task's dataset, including:

1. **Overall Statistics**: Shows total samples, annotated count, and unannotated count in the dataset.
2. **Label Distribution**: Displays the usage frequency and percentage of each label in a horizontal bar chart format. Different colors distinguish different labels, with specific counts and percentages shown after each label.

- **Navigation Components**

Users can manually click the left/right arrows to switch between previous/next images, or use the page number input box to jump to a specific image. Additionally, the following keyboard shortcuts are available for quick image navigation:

| Shortcut | Function |
|----------|----------|
| A | Previous image |
| D | Next image |
| Ctrl+A or ⌘+A | Previous unlabeled image |
| Ctrl+D or ⌘+D | Next unlabeled image |
| 0–9 | Select or deselect categories numbered 0–9 in the original category list |

# Data Format

The Image Classifier's annotation information is stored in the `flags` field of X-AnyLabeling label files. For details, please refer to the [User Guide - 1.4 Saving Label Data](./user_guide.md#14-saving-label-data) section.

```json
{
  "version": "4.0.0",
  "flags": {
    "husky": true,
    "psyduck": false,
    "ragdoll": false
  },
  "shapes": [],
  "imagePath": "husky.png",
  "imageData": null,
  "imageHeight": 200,
  "imageWidth": 200,
  "description": ""
}
```

---

### En Model Zoo (`docs/en/model_zoo.md`)

# X-AnyLabeling Model Zoo


## Classification

|Name|Description|Configuration|Size|Link|
| --- | --- | --- | --- | --- |
| pulc_person_attribute.onnx | [PersonAttribute](https://github.com/PaddlePaddle/PaddleClas/blob/release%2F2.5/docs/en/PULC/PULC_person_attribute_en.md)-PULC | [pulc_person_attribute.yaml](../../anylabeling/configs/auto_labeling/pulc_person_attribute.yaml) | 6.59MB | [baidu](https://pan.baidu.com/s/1AyPXvnV6BSe4We0nrA5KYA?pwd=qw96) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.0.0/pulc_person_attribute.onnx) |
| pulc_vehicle_attribute.onnx | [VehicleAttribute](https://github.com/PaddlePaddle/PaddleClas/blob/release%2F2.5/docs/en/PULC/PULC_vehicle_attribute_en.md)-PULC | [pulc_vehicle_attribute.yaml](../../anylabeling/configs/auto_labeling/pulc_vehicle_attribute.yaml) | 6.55MB | [baidu](https://pan.baidu.com/s/1RZqDK7-CKw-vcbscZKgBDw?pwd=3qp0) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.0.0/pulc_vehicle_attribute.onnx) |
| internimage_l_22kto1k_384.onnx | [InternImage](https://github.com/OpenGVLab/InternImage)-Large | [internimage_l_22kto1k_384.yaml](../../anylabeling/configs/auto_labeling/internimage_l_22kto1k_384.yaml) | 853.16MB | [Baidu](https://pan.baidu.com/s/1_eg_SyMxqVKcTIzOL27XeA?pwd=9ima) \| [GitHub](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.1.0/internimage_l_22kto1k_384.onnx) |
| yolov5s-cls.onnx | [YOLOv5-Cls](https://github.com/ultralytics/yolov5)-ImageNet | [yolov5s_cls.yaml](../../anylabeling/configs/auto_labeling/yolov5s_cls.yaml) | 20.81MB | [baidu](https://pan.baidu.com/s/1ftQ-CpbfsBOU1iaRgGsl0A?pwd=k2sm) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.2.0/yolov5s-cls.onnx) |
| yolov8s-cls.onnx | [YOLOv8-Cls](https://github.com/ultralytics/ultralytics)-ImageNet | [yolov8s_cls.yaml](../../anylabeling/configs/auto_labeling/yolov8s_cls.yaml) | 24.28MB | [baidu](https://pan.baidu.com/s/1-V_h-LJWbmuooMy9yRKq4g?pwd=klrg) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.2.0/yolov8s-cls.onnx) |
| yolo11s-cls.onnx | [YOLO11-Cls](https://github.com/ultralytics/ultralytics)-ImageNet | [yolo11s_cls.yaml](../../anylabeling/configs/auto_labeling/yolo11s_cls.yaml) | 25.67MB | [baidu](https://pan.baidu.com/s/1zz6Q3mMJp7btd0vTz2krUQ?pwd=9h63) \| [GitHub](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.4/yolo11s-cls.onnx) |


## Keypoint Detection

- Facial Landmark Detection

|Name|Description|Configuration|Size|Link|
| --- | --- | --- | --- | --- |
| yolov6lite_l_face.onnx | [Facial Landmark Detection](https://github.com/meituan/YOLOv6/tree/yolov6-face) | [yolov6lite_l_face.yaml](../../anylabeling/configs/auto_labeling/yolov6lite_l_face.yaml) | 4.16MB | [baidu](https://pan.baidu.com/s/1Ot14duf7GUPMcHHIUY4TSg?pwd=xy1m) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov6lite_l_face.onnx) |
| yolov6lite_m_face.onnx | [Facial Landmark Detection](https://github.com/meituan/YOLOv6/tree/yolov6-face) | [yolov6lite_m_face.yaml](../../anylabeling/configs/auto_labeling/yolov6lite_m_face.yaml) | 3.00MB | [baidu](https://pan.baidu.com/s/1uL01_pqldSXdFnlDM0OFZg?pwd=n9xl) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov6lite_m_face.onnx) |
| yolov6lite_s_face.onnx | [Facial Landmark Detection](https://github.com/meituan/YOLOv6/tree/yolov6-face) | [yolov6lite_s_face.yaml](../../anylabeling/configs/auto_labeling/yolov6lite_s_face.yaml) | 2.10MB | [baidu](https://pan.baidu.com/s/1nN_b4_WutwhnJYEhyqjDYg?pwd=ig4d) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov6lite_s_face.onnx) |
| scrfd_10g_bnkps.onnx | [SCRFD](https://github.com/deepinsight/insightface/tree/master/detection/scrfd)-Face Detection & Landmarks | [scrfd_10g_bnkps.yaml](../../anylabeling/configs/auto_labeling/scrfd_10g_bnkps.yaml) | 16.16MB | [baidu](https://pan.baidu.com/s/1B_1bxnZ_WmE00axjObhjlQ?pwd=k85b) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/scrfd_10g_bnkps.onnx) |

- Pose Estimation

|Name|Description|Configuration|Size|Link|
| --- | --- | --- | --- | --- |
| yolo26s-pose.onnx | [YOLO26](https://docs.ultralytics.com/tasks/pose/)-COCO | [yolo26s_pose.yaml](../../anylabeling/configs/auto_labeling/yolo26s_pose.yaml) | 39.86MB | [baidu](https://pan.baidu.com/s/1LifSl5V5lMk7GOqwtPHO1w?pwd=8kta) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/yolo26s-pose.onnx) |
| yolo11s-pose.onnx | [YOLO11](https://github.com/ultralytics/ultralytics)-COCO | [yolo11s_pose.yaml](../../anylabeling/configs/auto_labeling/yolo11s_pose.yaml) | 38.09MB | [baidu](https://pan.baidu.com/s/1LzdbGYO215UiG7na2NgkJA?pwd=5jcu) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.4/yolo11s-pose.onnx) |
| yolov8n-pose.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-COCO | [yolov8n_pose.yaml](../../anylabeling/configs/auto_labeling/yolov8n_pose.yaml) | 12.75MB | [baidu](https://pan.baidu.com/s/1nFxtNTuLn9vQJWId-EOAKQ?pwd=37ej) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v1.0.0/yolov8n-pose.onnx) |
| yolov8x-pose-p6.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-COCO | [yolov8x_pose_p6.yaml](../../anylabeling/configs/auto_labeling/yolov8x_pose_p6.yaml) | 378.92MB | [baidu](https://pan.baidu.com/s/1VRszCtMnHo2zeshuk93Aew?pwd=xvko) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v1.0.0/yolov8x-pose-p6.onnx) |
| dw-ll_ucoco_384.onnx | [DWPose](https://github.com/IDEA-Research/DWPose/tree/main)(2D human whole-body pose estimation) | [yolox_l_dwpose_ucoco.yaml](../../anylabeling/configs/auto_labeling/yolox_l_dwpose_ucoco.yaml)  | 128.17MB  | [baidu](https://pan.baidu.com/s/1I6CAFhW2YAowN80yweGVpg?pwd=pzf4) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.0/dw-ll_ucoco_384.onnx) |
| yolox_l.onnx | [YOLOX](https://github.com/Megvii-BaseDetection/YOLOX)(2D human whole-body pose estimation) | [yolox_l_dwpose_ucoco.yaml](../../anylabeling/configs/auto_labeling/yolox_l_dwpose_ucoco.yaml)  | 206.71MB  | [baidu](https://pan.baidu.com/s/1NpFiX1JN-0jIvd38tQIDcQ?pwd=aqk5) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.0/yolox_l.onnx) |
| rtmo_m.onnx | [RTMO](https://github.com/open-mmlab/mmpose/tree/main/projects/rtmpose)（2D human whole-body pose estimation）| [rtmdet_m_coco_person_rtmo_m.yaml](../../anylabeling/configs/auto_labeling/rtmdet_m_coco_person_rtmo_m.yaml) | 85.13MB  | [baidu](https://pan.baidu.com/s/1yPJnIpOEep09qAjYUxY7AQ?pwd=dwba) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.0/rtmo_m.onnx) |
| rtmdet_m_640-8xb32_coco-person.onnx | [RTMDet](https://github.com/open-mmlab/mmyolo/tree/main/configs/rtmdet)（2D human whole-body pose estimation）| [rtmdet_m_640-8xb32_coco-person.onnx](../../anylabeling/configs/auto_labeling/rtmdet_m_coco_person_rtmo_m.yaml) | 104.25MB | [baidu](https://pan.baidu.com/s/1BOoBNihoejvqoB7viBzbQQ?pwd=5ki4) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.0/rtmdet_m_640-8xb32_coco-person.onnx) |


## Lane Detection

|Name|Description|Configuration|Size|Link|
| --- | --- | --- | --- | --- |
| clrnet_tusimple_r18.onnx | [CLRNet](https://github.com/Turoad/CLRNet)-Tusimple (CVPR2022)  | [clrnet_tusimple_r18.yaml](../../anylabeling/configs/auto_labeling/clrnet_tusimple_r18.yaml)  | 59.04MB  | [baidu](https://pan.baidu.com/s/1Ptzji5x2dRBmJtijTmO4tA?pwd=zzuf) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.0/clrnet_tusimple_r18.onnx) |


## Multi-Object Tracking

|Name|Description|Configuration|Size|Link|
| --- | --- | --- | --- | --- |
| yolov5s.onnx | YOLOv5s-Det-BoT-SORT | [yolov5s_det_botsort.yaml](../../anylabeling/configs/auto_labeling/yolov5s_det_botsort.yaml) | 27.98MB | [baidu](https://pan.baidu.com/s/18I8ugM29NKjNlVEsnYYuWA?pwd=z8dl) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov5s.onnx) |
| yolov8s.onnx | YOLOv8s-Det-BoT-SORT | [yolov8s_det_botsort.yaml](../../anylabeling/configs/auto_labeling/yolov8s_det_botsort.yaml) | 42.75MB | [baidu](https://pan.baidu.com/s/1_1-9dFF_BfqcghE_0LDidg?pwd=oy9d) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov8s.onnx) |
| yolov8n_obb_car_bus.onnx | YOLOv8n-Obb-BoT-SORT | [yolov8n_obb_botsort.yaml](../../anylabeling/configs/auto_labeling/yolov8n_obb_botsort.yaml) | 12.02MB | [baidu](https://pan.baidu.com/s/1hQpkBlH6Wc7yAADOxt9yeQ?pwd=o23t) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.0/yolov8n_obb_car_bus.onnx) |
| yolov8m-seg.onnx | YOLOv8m-Seg-Bytetrack | [yolov8m_seg_bytetrack.yaml](../../anylabeling/configs/auto_labeling/yolov8m_seg_bytetrack.yaml) | 104.23MB | [baidu](https://pan.baidu.com/s/1PmKsiatP2YfHtnDCJEnhRw?pwd=bo85) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov8m-seg.onnx) |
| yolov8x-pose-p6.onnx | YOLOv8x-Pose-P6-BoT-SORT | [yolov8x_pose_p6_botsort.yaml](../../anylabeling/configs/auto_labeling/yolov8x_pose_p6_botsort.yaml) | 378.92MB | [baidu](https://pan.baidu.com/s/1VRszCtMnHo2zeshuk93Aew?pwd=xvko) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v1.0.0/yolov8x-pose-p6.onnx) |
| yolo11s.onnx | YOLO11s-Det-BoT-SORT | [yolo11s_det_botsort.yaml](../../anylabeling/configs/auto_labeling/yolo11s_det_botsort.yaml) | 36.27MB | [baidu](https://pan.baidu.com/s/1a3H-cMRzP-YFSLsKMRXTKA?pwd=uyrw) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.4/yolo11s.onnx) |
| yolov11s_obb_car_bus.onnx | YOLO11s-OBB-BoT-SORT | [yolo11s_obb_botsort.yaml](../../anylabeling/configs/auto_labeling/yolo11s_obb_botsort.yaml) | 37.36MB | [Baidu](https://pan.baidu.com/s/1caHKHZvVnyuAqrXaTvklLA?pwd=x2v7) \| [GitHub](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.4/yolov11s_obb_car_bus.onnx) |
| yolo11s-seg.onnx | YOLO11s-Seg-BoT-SORT | [yolo11s_seg_botsort.yaml](../../anylabeling/configs/auto_labeling/yolo11s_seg_botsort.yaml) | 38.77MB | [baidu](https://pan.baidu.com/s/11O7b0qUMQb1SQPoSYOsf9A?pwd=tthu) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.4/yolo11s-seg.onnx) |
| yolo11s-pose.onnx | YOLO11s-Pose-BoT-SORT | [yolo11s_pose_botsort.yaml](../../anylabeling/configs/auto_labeling/yolo11s_pose_botsort.yaml) | 38.09MB | [baidu](https://pan.baidu.com/s/1LzdbGYO215UiG7na2NgkJA?pwd=5jcu) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.4/yolo11s-pose.onnx) |
| yolo26s.onnx | YOLO26s-Det-TrackTrack | [yolo26s_det_tracktrack.yaml](../../anylabeling/configs/auto_labeling/yolo26s_det_tracktrack.yaml) | 36.47MB | [baidu](https://pan.baidu.com/s/1EYN6xIFVrUdkHm2mgcLgKA?pwd=z51j) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/yolo26s.onnx) |
| yolo26s-seg.onnx | YOLO26s-Seg-TrackTrack | [yolo26s_seg_tracktrack.yaml](../../anylabeling/configs/auto_labeling/yolo26s_seg_tracktrack.yaml) | 39.91MB | [baidu](https://pan.baidu.com/s/1Bjzf4aX3Pq2jW67k_DxGNA?pwd=599s) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/yolo26s-seg.onnx) |
| yolo26s-obb.onnx | YOLO26s-OBB-TrackTrack | [yolo26s_obb_tracktrack.yaml](../../anylabeling/configs/auto_labeling/yolo26s_obb_tracktrack.yaml) | 37.56MB | [baidu](https://pan.baidu.com/s/1eKmD0iYPCF0K2KPH32PJvQ?pwd=8grq) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/yolo26s-obb.onnx) |
| yolo26s-pose.onnx | YOLO26s-Pose-TrackTrack | [yolo26s_pose_tracktrack.yaml](../../anylabeling/configs/auto_labeling/yolo26s_pose_tracktrack.yaml) | 39.86MB | [baidu](https://pan.baidu.com/s/1LifSl5V5lMk7GOqwtPHO1w?pwd=8kta) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/yolo26s-pose.onnx) |


## Object Detection

- Horizontal Bounding Box

|Name|Description|Configuration|Size|Link|
| --- | --- | --- | --- | --- |
| yolo26s.onnx | [YOLO26s](https://docs.ultralytics.com/tasks/detect/)-COCO | [yolo26s.yaml](../../anylabeling/configs/auto_labeling/yolo26s.yaml) | 36.47MB | [baidu](https://pan.baidu.com/s/1EYN6xIFVrUdkHm2mgcLgKA?pwd=z51j) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/yolo26s.onnx) |
| yolo26s.engine | [YOLO26s](https://docs.ultralytics.com/tasks/detect/)-COCO-TensorRT | [yolo26s_trt.yaml](../../anylabeling/configs/auto_labeling/yolo26s_trt.yaml) | 42.38MB | [baidu](https://pan.baidu.com/s/1CM3QHFVWOuNRz8AyAH4bYg?pwd=hahe) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/yolo26s.engine) |
| yolo26s.onnx | [YOLO26s](https://docs.ultralytics.com/tasks/detect/) with [SAHI](https://github.com/obss/sahi)-COCO | [yolo26s_sahi.yaml](../../anylabeling/configs/auto_labeling/yolo26s_sahi.yaml) | 36.47MB | [baidu](https://pan.baidu.com/s/1EYN6xIFVrUdkHm2mgcLgKA?pwd=z51j) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/yolo26s.onnx) |
| deimv2_hgnetv2_n_coco.onnx | [DEIMv2-HGNetv2-N-COCO](https://github.com/Intellindust-AI-Lab/DEIMv2) | [deimv2_hgnetv2_n_coco.yaml](../../anylabeling/configs/auto_labeling/deimv2_hgnetv2_n_coco.yaml) | 14.15MB  | [baidu](https://pan.baidu.com/s/1Q-zK8W6w0mRm6DHXTWvMvg?pwd=v67d) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/deimv2_hgnetv2_n_coco.onnx) |
| deimv2_dinov3_s_coco.onnx | [DEIMv2-DINOv3-S-COCO](https://github.com/Intellindust-AI-Lab/DEIMv2) | [deimv2_dinov3_s_coco.yaml](../../anylabeling/configs/auto_labeling/deimv2_dinov3_s_coco.yaml) | 38.22MB  | [baidu](https://pan.baidu.com/s/10JU1KOFjnI8XnS7H7VOzQg?pwd=a3ij) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/deimv2_dinov3_s_coco.onnx) |
| deimv2_dinov3_m_coco.onnx | [DEIMv2-DINOv3-M-COCO](https://github.com/Intellindust-AI-Lab/DEIMv2) | [deimv2_dinov3_m_coco.yaml](../../anylabeling/configs/auto_labeling/deimv2_dinov3_m_coco.yaml) | 70.35MB  | [baidu](https://pan.baidu.com/s/1brgSg_Avc_-T1b9bJSwNpA?pwd=r3cq) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/deimv2_dinov3_m_coco.onnx) |
| dfine_s_obj2coco.onnx | [D-FINE-S](https://github.com/Peterande/D-FINE)-COCO | [dfine_s_obj2coco.yaml](../../anylabeling/configs/auto_labeling/dfine_s_obj2coco.yaml) | 39.80MB  | [baidu](https://pan.baidu.com/s/1S_wLQ_637N7i2pu4zvuAVA?pwd=nr7v) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/dfine_s_obj2coco.onnx) |
| dfine_m_obj2coco.onnx | [D-FINE-M](https://github.com/Peterande/D-FINE)-COCO | [dfine_m_obj2coco.yaml](../../anylabeling/configs/auto_labeling/dfine_m_obj2coco.yaml) | 74.22MB  | [baidu](https://pan.baidu.com/s/1pFXlSBIrBtXf5A8oWzjMNw?pwd=v18h) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/dfine_m_obj2coco.onnx) |
| dfine_l_obj2coco.onnx | [D-FINE-L](https://github.com/Peterande/D-FINE)-COCO | [dfine_l_obj2coco.yaml](../../anylabeling/configs/auto_labeling/dfine_l_obj2coco.yaml) | 118.35MB  | [baidu](https://pan.baidu.com/s/1_fGvqxloAsPe8EeyZq5Q-g?pwd=3mnr) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/dfine_l_obj2coco.onnx) |
| dfine_x_obj2coco.onnx | [D-FINE-X](https://github.com/Peterande/D-FINE)-COCO | [dfine_x_obj2coco.yaml](../../anylabeling/configs/auto_labeling/dfine_x_obj2coco.yaml) | 236.60MB  | [baidu](https://pan.baidu.com/s/1n8g3LVpCahKBbTIAYYP95Q?pwd=ywvv) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/dfine_x_obj2coco.onnx) |
| rtdetr_l.onnx | [Ultralytics RT-DETR-L](https://docs.ultralytics.com/models/rtdetr/) | [rtdetr_l.yaml](../../anylabeling/configs/auto_labeling/rtdetr_l.yaml) | 122.88MB | [Baidu](https://pan.baidu.com/s/1-e3Vle_bUtdjgfk3igd-XQ?pwd=u7fr) \| [GitHub](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/rtdetr_l.onnx) |
| rtdetr_x.onnx | [Ultralytics RT-DETR-X](https://docs.ultralytics.com/models/rtdetr/) | [rtdetr_x.yaml](../../anylabeling/configs/auto_labeling/rtdetr_x.yaml) | 250.83MB | [Baidu](https://pan.baidu.com/s/1KLV1UozJ46BqZyXGJIhq9A?pwd=q3u8) \| [GitHub](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/rtdetr_x.onnx) |
| rf-detr-nano.onnx | [RF-DETR Nano](https://github.com/roboflow/rf-detr) | [rfdetr_nano.yaml](../../anylabeling/configs/auto_labeling/rfdetr_nano.yaml) | 109.98MB | [百度网盘](https://pan.baidu.com/s/1fTL3CUrY1BykRrc0ata0tQ?pwd=dmet) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/rf-detr-nano.onnx) |
| rf-detr-small.onnx | [RF-DETR Small](https://github.com/roboflow/rf-detr) | [rfdetr_small.yaml](../../anylabeling/configs/auto_labeling/rfdetr_small.yaml) | 117.06MB | [百度网盘](https://pan.baidu.com/s/1e8tIzUxdFXv9r4aMfOWivQ?pwd=bue6) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/rf-detr-small.onnx) |
| rf-detr-medium.onnx | [RF-DETR Nano](https://github.com/roboflow/rf-detr) | [rfdetr_medium.yaml](../../anylabeling/configs/auto_labeling/rfdetr_medium.yaml) | 123.88MB | [百度网盘](https://pan.baidu.com/s/1n0pJAK3OMkwTGYSlsoGvug?pwd=r5ny) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/rf-detr-medium.onnx) |
| rf-detr-base-coco.onnx | [RF-DETR Base COCO](https://github.com/roboflow/rf-detr) | [rfdetr_base_coco.yaml](../../anylabeling/configs/auto_labeling/rfdetr_base_coco.yaml) | 110.24MB | [baidu](https://pan.baidu.com/s/18jS1ufutyQK4KYSbMcR-HA?pwd=4wse) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/rf-detr-base-coco.onnx) |
| rf-detr-base.onnx | [RF-DETR Base](https://github.com/roboflow/rf-detr) | [rfdetr_base.yaml](../../anylabeling/configs/auto_labeling/rfdetr_base.yaml) | 110.24MB | [baidu](https://pan.baidu.com/s/1GMlx137YNybLw5Gbka9y2A?pwd=a598) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/rf-detr-base.onnx) |
| rf-detr-large.onnx | [RF-DETR Large](https://github.com/roboflow/rf-detr) | [rfdetr_large.yaml](../../anylabeling/configs/auto_labeling/rfdetr_large.yaml) | 473.06MB | [baidu](https://pan.baidu.com/s/1KRfDa82xOuaZ-aqg2rwFCw?pwd=6sqi) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/rf-detr-large.onnx) |
| upn_large.pth | [UPN-Large](../../examples/detection/hbb/README.md) | [upn.yaml](../../anylabeling/configs/auto_labeling/upn.yaml) | 834.23MB | [baidu](https://pan.baidu.com/s/1e092YPQthvAFV49YXlPLdg?pwd=2hbp) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.0/upn_large.pth) |
| damoyolo_tinynasL20_T_420.onnx | [DAMO-YOLO](https://github.com/tinyvision/DAMO-YOLO)-COCO  | [damo_yolo_t.yaml](../../anylabeling/configs/auto_labeling/damo_yolo_t.yaml)  | 32.45MB  | [baidu](https://pan.baidu.com/s/1V3yWsdOqPhYQYsguW_672A?pwd=b8vv) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.3.0/damoyolo_tinynasL20_T_420.onnx) |
| damoyolo_tinynasL25_S_460.onnx | [DAMO-YOLO](https://github.com/tinyvision/DAMO-YOLO)-COCO  | [damo_yolo_s.yaml](../../anylabeling/configs/auto_labeling/damo_yolo_s.yaml)  | 62.09MB  | [baidu](https://pan.baidu.com/s/1NfHl2dQAwJer0yFprovnuA?pwd=ml1m) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.3.0/damoyolo_tinynasL25_S_460.onnx) |
| damoyolo_tinynasL35_M_492.onnx | [DAMO-YOLO](https://github.com/tinyvision/DAMO-YOLO)-COCO  | [damo_yolo_m.yaml](../../anylabeling/configs/auto_labeling/damo_yolo_m.yaml)  | 107.58MB  | [baidu](https://pan.baidu.com/s/1XX0eUJ9idLRFfscjDHkXnQ?pwd=591v) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.3.0/damoyolo_tinynasL35_M_492.onnx) |
| damoyolo_tinynasL45_L_508.onnx | [DAMO-YOLO](https://github.com/tinyvision/DAMO-YOLO)-COCO  | [damo_yolo_l.yaml](../../anylabeling/configs/auto_labeling/damo_yolo_l.yaml)  | 160.52MB  | [baidu](https://pan.baidu.com/s/116ETSUw_R0FSVWPIQXXQOw?pwd=44j3) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.3.0/damoyolo_tinynasL45_L_508.onnx) |
| Gold_n_dist.onnx | [Gold-YOLO](https://github.com/huawei-noah/Efficient-Computing/tree/master/Detection/Gold-YOLO)-COCO | [gold_yolo_n.yaml](../../anylabeling/configs/auto_labeling/gold_yolo_n.yaml) | 23.58MB | [baidu](https://pan.baidu.com/s/1f-i2DdUNPDohkxTMdpBn7Q?pwd=0hfu) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.3.0/Gold_n_dist.onnx) |
| Gold_s_pre_dist.onnx | [Gold-YOLO](https://github.com/huawei-noah/Efficient-Computing/tree/master/Detection/Gold-YOLO)-COCO  | [gold_yolo_s.yaml](../../anylabeling/configs/auto_labeling/gold_yolo_s.yaml) | 89.06MB | [baidu](https://pan.baidu.com/s/1Sfnp1NLklJXvG7Z2ZLoIcw?pwd=thg7) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.3.0/Gold_s_pre_dist.onnx) |
| Gold_m_pre_dist.onnx | [Gold-YOLO](https://github.com/huawei-noah/Efficient-Computing/tree/master/Detection/Gold-YOLO)-COCO  | [gold_yolo_m.yaml](../../anylabeling/configs/auto_labeling/gold_yolo_m.yaml) | 169.88MB | [baidu](https://pan.baidu.com/s/1lY5VljoL9pZxadpe9DEUdQ?pwd=ephp) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.3.0/Gold_m_pre_dist.onnx) |
| Gold_l_pre_dist.onnx | [Gold-YOLO](https://github.com/huawei-noah/Efficient-Computing/tree/master/Detection/Gold-YOLO)-COCO  | [gold_yolo_l.yaml](../../anylabeling/configs/auto_labeling/gold_yolo_l.yaml) | 286.79MB | [baidu](https://pan.baidu.com/s/1ySxB3R18oWuIdYzKRLrflg?pwd=1wlk) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.3.0/Gold_l_pre_dist.onnx) |
| rtdetr_r50vd_6x_coco.onnx | [RT-DETR](https://github.com/PaddlePaddle/PaddleDetection/blob/develop/configs/rtdetr/README.md)-COCO  | [rtdetr_r50.yaml](../../anylabeling/configs/auto_labeling/rtdetr_r50.yaml)  | 160.96MB  | [baidu](https://pan.baidu.com/s/11vkwveTeZWwOFUpk8qrqVg?pwd=3sc4) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/rtdetr_r50vd_6x_coco.onnx) |
| rtdetrv2_r101vd_6x_coco.onnx | [RT-DETRv2-X](https://github.com/lyuwenyu/RT-DETR/tree/main/rtdetrv2_pytorch)-COCO | [rtdetrv2x.yaml](../../anylabeling/configs/auto_labeling/rtdetrv2x.yaml) | 286.48MB | [baidu](https://pan.baidu.com/s/11lpaWt4IyFb39jJxKtlxnQ?pwd=t2kv) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.0/rtdetrv2_r101vd_6x_coco.onnx) |
| rtdetrv2_r50vd_6x_coco.onnx | [RT-DETRv2-L](https://github.com/lyuwenyu/RT-DETR/tree/main/rtdetrv2_pytorch)-COCO | [rtdetrv2l.yaml](../../anylabeling/configs/auto_labeling/rtdetrv2l.yaml) | 161.38MB | [baidu](https://pan.baidu.com/s/1ex1fzc18wnIa7YREBGD3_g?pwd=qrab) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.0/rtdetrv2_r50vd_6x_coco.onnx) |
| rtdetrv2_r50vd_m_7x_coco.onnx | [RT-DETRv2-M*](https://github.com/lyuwenyu/RT-DETR/tree/main/rtdetrv2_pytorch)-COCO | [rtdetrv2m7x.yaml](../../anylabeling/configs/auto_labeling/rtdetrv2m7x.yaml) | 126.52MB | [baidu](https://pan.baidu.com/s/1wzf6wJoysHfvAbgtv337oA?pwd=v8lw) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.0/rtdetrv2_r50vd_m_7x_coco.onnx) |
| rtdetrv2_r34vd_120e_coco.onnx | [RT-DETRv2-M](https://github.com/lyuwenyu/RT-DETR/tree/main/rtdetrv2_pytorch)-COCO | [rtdetrv2m.yaml](../../anylabeling/configs/auto_labeling/rtdetrv2m.yaml) | 119.73MB | [baidu](https://pan.baidu.com/s/1ByaV67J7yBKtznvwHvtRiQ?pwd=oeny) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.0/rtdetrv2_r34vd_120e_coco.onnx) |
| rtdetrv2_r18vd_120e_coco.onnx | [RT-DETRv2-S](https://github.com/lyuwenyu/RT-DETR/tree/main/rtdetrv2_pytorch)-COCO | [rtdetrv2s.yaml](../../anylabeling/configs/auto_labeling/rtdetrv2s.yaml) | 76.80MB | [baidu](https://pan.baidu.com/s/1jEuzrrn3P1GQcQ28qY-Q2Q?pwd=axm2) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.0/rtdetrv2_r18vd_120e_coco.onnx) |
| yolo_nas_l.onnx | [YOLO-NAS](https://github.com/Deci-AI/super-gradients/tree/master)-COCO  | [yolo_nas_l.yaml](../../anylabeling/configs/auto_labeling/yolo_nas_l.yaml)  | 160.38MB  | [baidu](https://pan.baidu.com/s/1ckVfkul8ZckiQd3PfM-Htw?pwd=wmk8) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolo_nas_l.onnx) |
| yolo_nas_m.onnx | [YOLO-NAS](https://github.com/Deci-AI/super-gradients/tree/master)-COCO  | [yolo_nas_m.yaml](../../anylabeling/configs/auto_labeling/yolo_nas_m.yaml)  | 121.87MB  | [baidu](https://pan.baidu.com/s/1bPH1m6dSxxG2KG3zrDywAA?pwd=1mlh) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolo_nas_m.onnx) |
| yolo_nas_s.onnx | [YOLO-NAS](https://github.com/Deci-AI/super-gradients/tree/master)-COCO  | [yolo_nas_s.yaml](../../anylabeling/configs/auto_labeling/yolo_nas_s.yaml)  | 46.62MB  | [baidu](https://pan.baidu.com/s/1yA_n6QxJGXoR38xlY25q_w?pwd=4wdw) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolo_nas_s.onnx) |
| yolov5x.onnx | [YOLOv5](https://github.com/ultralytics/yolov5)-COCO  | [yolov5x.yaml](../../anylabeling/configs/auto_labeling/yolov5x.yaml)  | 331.19MB  | [baidu](https://pan.baidu.com/s/1atAEN7JbjjrQewNPQU3ULw?pwd=qk9k) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov5x.onnx) |
| yolov5l.onnx | [YOLOv5](https://github.com/ultralytics/yolov5)-COCO  | [yolov5l.yaml](../../anylabeling/configs/auto_labeling/yolov5l.yaml)  | 177.94MB  | [baidu](https://pan.baidu.com/s/1RFs44UfCAgJMSHMf3DfMaw?pwd=0e31) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov5l.onnx) |
| yolov5m.onnx | [YOLOv5](https://github.com/ultralytics/yolov5)-COCO  | [yolov5m.yaml](../../anylabeling/configs/auto_labeling/yolov5m.yaml)  | 81.19MB  | [baidu](https://pan.baidu.com/s/1oB9Vp-s7viOaLxAhjzAnFQ?pwd=vc4v) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov5m.onnx) |
| yolov5s.onnx | [YOLOv5](https://github.com/ultralytics/yolov5)-COCO  | [yolov5s.yaml](../../anylabeling/configs/auto_labeling/yolov5s.yaml)  | 27.98MB  | [baidu](https://pan.baidu.com/s/18I8ugM29NKjNlVEsnYYuWA?pwd=z8dl) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov5s.onnx) |
| yolov5n.onnx | [YOLOv5](https://github.com/ultralytics/yolov5)-COCO  | [yolov5n.yaml](../../anylabeling/configs/auto_labeling/yolov5n.yaml)  | 7.54MB  | [baidu](https://pan.baidu.com/s/1E_RZK3ERyOxbEe5Ckrp0PA?pwd=0wex) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov5n.onnx) |
| yolov6x_mbla.onnx | [YOLOv6](https://github.com/meituan/YOLOv6)-COCO  | [yolov6x_mbla.yaml](../../anylabeling/configs/auto_labeling/yolov6x_mbla.yaml)  | 300.95MB  | [baidu](https://pan.baidu.com/s/1gF1HUyJtGTuuslmFXJM_LA?pwd=edw4) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov6x_mbla.onnx) |
| yolov6l_mbla.onnx | [YOLOv6](https://github.com/meituan/YOLOv6)-COCO  | [yolov6l_mbla.yaml](../../anylabeling/configs/auto_labeling/yolov6l_mbla.yaml)  | 176.72MB  | [baidu](https://pan.baidu.com/s/1rjs8n8cZpHp8vKnDqkPZOA?pwd=wc4z) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov6l_mbla.onnx) |
| yolov6m_mbla.onnx | [YOLOv6](https://github.com/meituan/YOLOv6)-COCO  | [yolov6m_mbla.yaml](../../anylabeling/configs/auto_labeling/yolov6m_mbla.yaml)  | 99.61MB  | [baidu](https://pan.baidu.com/s/1q_11RxVEiJRC0ClCaQpvhQ?pwd=hkcr) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov6m_mbla.onnx) |
| yolov6s_mbla.onnx | [YOLOv6](https://github.com/meituan/YOLOv6)-COCO  | [yolov6s_mbla.yaml](../../anylabeling/configs/auto_labeling/yolov6s_mbla.yaml)  | 44.49MB  | [baidu](https://pan.baidu.com/s/12ZlipM39i9IXbtUEdWRxjw?pwd=npsj) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov6s_mbla.onnx) |
| yolov6s.onnx | [YOLOv6](https://github.com/meituan/YOLOv6)-COCO  | [yolov6s.yaml](../../anylabeling/configs/auto_labeling/yolov6s.yaml)  | 70.88MB  | [baidu](https://pan.baidu.com/s/17eA0BJYAET1ITGLyos8ZKA?pwd=ixba) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov6s.onnx) |
| yolov6s6.onnx | [YOLOv6](https://github.com/meituan/YOLOv6)-COCO  | [yolov6s6.yaml](../../anylabeling/configs/auto_labeling/yolov6s6.yaml)  | 158.47MB  | [baidu](https://pan.baidu.com/s/1CAJQdUCo9X_g1FfvvWttqw?pwd=rga8) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov6s6.onnx) |
| yolov7.onnx | [YOLOv7](https://github.com/WongKinYiu/yolov7)-COCO  | [yolov7.yaml](../../anylabeling/configs/auto_labeling/yolov7.yaml)  | 140.90MB  | [baidu](https://pan.baidu.com/s/1Ovrs0cemCoBSFPn4HFAXuA?pwd=qlmi) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov7.onnx) |
| yolov8x.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-COCO  | [yolov8x.yaml](../../anylabeling/configs/auto_labeling/yolov8x.yaml)  | 260.37MB  | [baidu](https://pan.baidu.com/s/1bITA7hX9NdTXnYHkP-0R0A?pwd=satq) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov8x.onnx) |
| yolov8l.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-COCO  | [yolov8l.yaml](../../anylabeling/configs/auto_labeling/yolov8l.yaml)  | 166.79MB  | [baidu](https://pan.baidu.com/s/1QSV-GS5cu00L-WW2McWCpQ?pwd=nvwt) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov8l.onnx) |
| yolov8m.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-COCO  | [yolov8m.yaml](../../anylabeling/configs/auto_labeling/yolov8m.yaml)  | 98.94MB  | [baidu](https://pan.baidu.com/s/14AexWennXtViqIqy-obhRQ?pwd=j673) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov8m.onnx) |
| yolov8s.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-COCO  | [yolov8s.yaml](../../anylabeling/configs/auto_labeling/yolov8s.yaml)  | 42.75MB  | [baidu](https://pan.baidu.com/s/1_1-9dFF_BfqcghE_0LDidg?pwd=oy9d) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov8s.onnx) |
| yolov8n.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-COCO  | [yolov8n.yaml](../../anylabeling/configs/auto_labeling/yolov8n.yaml)  | 12.21MB  | [baidu](https://pan.baidu.com/s/1j8Jx4tsL97KlSeNe9aGdVg?pwd=u000) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov8n.onnx) |
| yolov8s.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics) with [SAHI](https://github.com/obss/sahi)-COCO  | [yolov8s_sahi.yaml](../../anylabeling/configs/auto_labeling/yolov8s_sahi.yaml)  | 42.75MB  | [baidu](https://pan.baidu.com/s/1_1-9dFF_BfqcghE_0LDidg?pwd=oy9d) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov8s.onnx) |
| yolov8x6-oiv7.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-Open Image V7 | [yolov8x6_oiv7.yaml](../../anylabeling/configs/auto_labeling/yolov8x6_oiv7.yaml) | 374.51MB | [baidu](https://pan.baidu.com/s/1gpjkbkRGNtqhq0e3DUA1bQ?pwd=g8lq) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.7/yolov8x6-oiv7.onnx) |
| yolov8x-oiv7.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-Open Image V7 | [yolov8x_oiv7.yaml](../../anylabeling/configs/auto_labeling/yolov8x_oiv7.yaml) | 262.24MB | [baidu](https://pan.baidu.com/s/1in76UG8GhsXw6ACNqOVYKA?pwd=o07s) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.7/yolov8x-oiv7.onnx) |
| yolov8l-oiv7.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-Open Image V7 | [yolov8l_oiv7.yaml](../../anylabeling/configs/auto_labeling/yolov8l_oiv7.yaml) | 168.28MB | [baidu](https://pan.baidu.com/s/1p9-oYvkV-IXvy6RlTxLWfQ?pwd=fs07) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.7/yolov8l-oiv7.onnx) |
| yolov8m-oiv7.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-Open Image V7 | [yolov8m_oiv7.yaml](../../anylabeling/configs/auto_labeling/yolov8m_oiv7.yaml) | 100.05MB | [baidu](https://pan.baidu.com/s/1E7c-XIriTLH-gmBm5UmdWA?pwd=36n6) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.7/yolov8m-oiv7.onnx) |
| yolov8s-oiv7.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-Open Image V7 | [yolov8s_oiv7.yaml](../../anylabeling/configs/auto_labeling/yolov8s_oiv7.yaml) | 43.47MB | [baidu](https://pan.baidu.com/s/1a6bP_x76Gk7LIf8uisWqfA?pwd=53lu) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.7/yolov8s-oiv7.onnx) |
| yolov8n-oiv7.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-Open Image V7 | [yolov8n_oiv7.yaml](../../anylabeling/configs/auto_labeling/yolov8n_oiv7.yaml) | 13.47MB | [baidu](https://pan.baidu.com/s/1u8sUFr2LmBGwqZCbGb6Xww?pwd=l6ip) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.7/yolov8n-oiv7.onnx) |
| yolov9c.onnx | [YOLOv9](https://github.com/WongKinYiu/yolov9)-COCO | [yolov9c.yaml](../../anylabeling/configs/auto_labeling/yolov9c.yaml) | 195.34MB | [baidu](https://pan.baidu.com/s/1iHZH29HE8s4fG8X7aHcn5g?pwd=zb5w) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.2/yolov9c.onnx) |
| yolov9e.onnx | [YOLOv9](https://github.com/WongKinYiu/yolov9)-COCO | [yolov9e.yaml](../../anylabeling/configs/auto_labeling/yolov9e.yaml) | 265.43MB | [baidu](https://pan.baidu.com/s/1oJJQ1L5UfKi43kT96tauSA?pwd=vpa1) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.2/yolov9e.onnx) |
| gelan-c.onnx | [YOLOv9](https://github.com/WongKinYiu/yolov9)-COCO | [gelan-c.yaml](../../anylabeling/configs/auto_labeling/yolov9_gelan_c.yaml) | 97.43MB | [baidu](https://pan.baidu.com/s/1cM0Tc056ICuA5jvesacCng?pwd=whb3) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.2/gelan-c.onnx) |
| gelan-e.onnx | [YOLOv9](https://github.com/WongKinYiu/yolov9)-COCO | [gelan-e.yaml](../../anylabeling/configs/auto_labeling/yolov9_gelan_e.yaml) | 221.94MB | [baidu](https://pan.baidu.com/s/1Iy0w5Cgga0-GmOLNSvYflg?pwd=s1p2) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.2/gelan-c.onnx) |
| yolov10n.onnx | [YOLOv10](https://github.com/THU-MIG/yolov10)-COCO | [yolov10n.yaml](../../anylabeling/configs/auto_labeling/yolov10n.yaml) | 8.98MB | [baidu](https://pan.baidu.com/s/12h4-UBbCdbgAYCTBroZh_g?pwd=mo5k) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.6/yolov10n.onnx) |
| yolov10s.onnx | [YOLOv10](https://github.com/THU-MIG/yolov10)-COCO | [yolov10s.yaml](../../anylabeling/configs/auto_labeling/yolov10s.yaml) | 27.86MB | [baidu](https://pan.baidu.com/s/1cRZk-eSdaqmsQLdKqX_-Iw?pwd=pwa2) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.6/yolov10s.onnx) |
| yolov10m.onnx | [YOLOv10](https://github.com/THU-MIG/yolov10)-COCO | [yolov10m.yaml](../../anylabeling/configs/auto_labeling/yolov10m.yaml) | 58.81MB | [baidu](https://pan.baidu.com/s/19iKuQ9DhJqzPqN7zBuZQ9Q?pwd=3hn2) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.6/yolov10m.onnx) |
| yolov10b.onnx | [YOLOv10](https://github.com/THU-MIG/yolov10)-COCO | [yolov10b.yaml](../../anylabeling/configs/auto_labeling/yolov10b.yaml) | 72.95MB | [baidu](https://pan.baidu.com/s/15rabV7mFyy6HQVgTE1Wv6Q?pwd=dol1) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.6/yolov10b.onnx) |
| yolov10l.onnx | [YOLOv10](https://github.com/THU-MIG/yolov10)-COCO | [yolov10l.yaml](../../anylabeling/configs/auto_labeling/yolov10l.yaml) | 93.20MB | [baidu](https://pan.baidu.com/s/1dJGVhtPRC31ssbnhQWpztw?pwd=13ax) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.6/yolov10l.onnx) |
| yolov10x.onnx | [YOLOv10](https://github.com/THU-MIG/yolov10)-COCO | [yolov10x.yaml](../../anylabeling/configs/auto_labeling/yolov10x.yaml) | 112.68MB | [baidu](https://pan.baidu.com/s/1o6rCcq-NyIBe4ftcOJlKzQ?pwd=c73x) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.6/yolov10x.onnx) |
| yolo11s.onnx | [YOLO11](https://github.com/ultralytics/ultralytics)-COCO | [yolo11s.yaml](../../anylabeling/configs/auto_labeling/yolo11s.yaml) | 36.27MB | [baidu](https://pan.baidu.com/s/1a3H-cMRzP-YFSLsKMRXTKA?pwd=uyrw) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.4/yolo11s.onnx) |
| yolo11s.onnx | [YOLO11](https://github.com/ultralytics/ultralytics) with [SAHI](https://github.com/obss/sahi)-COCO | [yolo11s_sahi.yaml](../../anylabeling/configs/auto_labeling/yolo11s_sahi.yaml) | 36.27MB | [baidu](https://pan.baidu.com/s/1a3H-cMRzP-YFSLsKMRXTKA?pwd=uyrw) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.4/yolo11s.onnx) |
| yolo12n.onnx | [YOLO12](https://github.com/ultralytics/ultralytics)-COCO | [yolo12n.yaml](../../anylabeling/configs/auto_labeling/yolo12n.yaml) | 10.13MB | [baidu](https://pan.baidu.com/s/14A6Sp4cA1tA4puWpU-CUDQ?pwd=krvf) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/yolo12n.onnx) |
| yolo12s.onnx | [YOLO12](https://github.com/ultralytics/ultralytics)-COCO | [yolo12s.yaml](../../anylabeling/configs/auto_labeling/yolo12s.yaml) | 35.57MB | [baidu](https://pan.baidu.com/s/1cvy9WAsmgggpULJb7wlJ_g?pwd=7nsw) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/yolo12s.onnx) |
| yolo12m.onnx | [YOLO12](https://github.com/ultralytics/ultralytics)-COCO | [yolo12m.yaml](../../anylabeling/configs/auto_labeling/yolo12m.yaml) | 77.18MB | [baidu](https://pan.baidu.com/s/1K40cJLp_FmsIL39g32Gf0w?pwd=6xek) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/yolo12m.onnx) |
| yolo12l.onnx | [YOLO12](https://github.com/ultralytics/ultralytics)-COCO | [yolo12l.yaml](../../anylabeling/configs/auto_labeling/yolo12l.yaml) | 101.02MB | [baidu](https://pan.baidu.com/s/18gYXXRt7zhlkrFuf2CW3_g?pwd=dgmm) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/yolo12l.onnx) |
| yolo12x.onnx | [YOLO12](https://github.com/ultralytics/ultralytics)-COCO | [yolo12x.yaml](../../anylabeling/configs/auto_labeling/yolo12x.yaml) | 225.89MB | [baidu](https://pan.baidu.com/s/1BbKsl5svcSqnLlKvRqQUHg?pwd=t8cy) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/yolo12x.onnx) |
| hyper-yolot.onnx | [Hpyer-YOLO](https://github.com/iMoonLab/Hyper-YOLO)-COCO | hyper-yolot.yaml | 12.19MB | [baidu](https://pan.baidu.com/s/1e29ZhbO6zWqeLXpSEeO5VA?pwd=bqqq) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.1/hyper-yolot.onnx) |
| hyper-yolon.onnx | [Hpyer-YOLO](https://github.com/iMoonLab/Hyper-YOLO)-COCO | hyper-yolon.yaml | 15.80MB | [baidu](https://pan.baidu.com/s/1NWlrd8VvhwCBsdKFRl5-ig?pwd=j7hq) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.1/hyper-yolon.onnx) |
| hyper-yolos.onnx | [Hpyer-YOLO](https://github.com/iMoonLab/Hyper-YOLO)-COCO | [hyper-yolos.yaml](../../anylabeling/configs/auto_labeling/hyper_yolos.yaml) | 56.83MB | [baidu](https://pan.baidu.com/s/1xFFqlpqScL3_R4unKzRWtA?pwd=ddg7) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.1/hyper-yolos.onnx) |
| hyper-yolom.onnx | [Hpyer-YOLO](https://github.com/iMoonLab/Hyper-YOLO)-COCO | hyper-yolom.yaml | 127.56MB | [baidu](https://pan.baidu.com/s/1rY3I0I5N6hBKkRfZh8AXuA?pwd=t4fm) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.1/hyper-yolom.onnx) |
| hyper-yolol.onnx | [Hpyer-YOLO](https://github.com/iMoonLab/Hyper-YOLO)-COCO | hyper-yolol.yaml | 215.12MB | [baidu](https://pan.baidu.com/s/1895I4MgBKYTo5MHeL4VvPA?pwd=wr3n) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.1/hyper-yolol.onnx) |

- Oriented Bounding Box

|Name|Description|Configuration|Size|Link|
| --- | --- | --- | --- | --- |
| rtdetrv2_obb_hgnetv2_n_diorr.onnx | [RT-DETRv2-OBB-N](https://github.com/RicePasteM/RiO-DETR)-DIOR-R | [rio_detr_n_diorr.yaml](../../anylabeling/configs/auto_labeling/rio_detr_n_diorr.yaml) | 15.68MB | [baidu](https://pan.baidu.com/s/1LXyUMf6Vm10BM6eVbdqP7A?pwd=j5e9) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/rtdetrv2_obb_hgnetv2_n_diorr.onnx) |
| rtdetrv2_obb_hgnetv2_s_diorr.onnx | [RT-DETRv2-OBB-S](https://github.com/RicePasteM/RiO-DETR)-DIOR-R | [rio_detr_s_diorr.yaml](../../anylabeling/configs/auto_labeling/rio_detr_s_diorr.yaml) | 31.90MB | [baidu](https://pan.baidu.com/s/1SckVkd0POdJTcPfaSRurDg?pwd=j5e9) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/rtdetrv2_obb_hgnetv2_s_diorr.onnx) |
| rtdetrv2_obb_hgnetv2_m_diorr.onnx | [RT-DETRv2-OBB-M](https://github.com/RicePasteM/RiO-DETR)-DIOR-R | [rio_detr_m_diorr.yaml](../../anylabeling/configs/auto_labeling/rio_detr_m_diorr.yaml) | 71.77MB | [baidu](https://pan.baidu.com/s/1Z5jg7tMH-P0q7ThaNnePkA?pwd=j5e9) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/rtdetrv2_obb_hgnetv2_m_diorr.onnx) |
| rtdetrv2_obb_hgnetv2_l_diorr.onnx | [RT-DETRv2-OBB-L](https://github.com/RicePasteM/RiO-DETR)-DIOR-R | [rio_detr_l_diorr.yaml](../../anylabeling/configs/auto_labeling/rio_detr_l_diorr.yaml) | 105.65MB | [baidu](https://pan.baidu.com/s/1H_ueN2wzXMN42w182oYgYw?pwd=j5e9) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/rtdetrv2_obb_hgnetv2_l_diorr.onnx) |
| rtdetrv2_obb_hgnetv2_x_diorr.onnx | [RT-DETRv2-OBB-X](https://github.com/RicePasteM/RiO-DETR)-DIOR-R | [rio_detr_x_diorr.yaml](../../anylabeling/configs/auto_labeling/rio_detr_x_diorr.yaml) | 239.24MB | [baidu](https://pan.baidu.com/s/1DY7U38gPIZRLCNLqcwj9fg?pwd=j5e9) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/rtdetrv2_obb_hgnetv2_x_diorr.onnx) |
| rtdetrv2_obb_hgnetv2_n_dota_1_ss.onnx | [RT-DETRv2-OBB-N](https://github.com/RicePasteM/RiO-DETR)-DOTA-v1.0 | [rio_detr_n_dota_1_ss.yaml](../../anylabeling/configs/auto_labeling/rio_detr_n_dota_1_ss.yaml) | 15.92MB | [baidu](https://pan.baidu.com/s/1tIIqdbl5fd4QoYrHHKcpHA?pwd=j5e9) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/rtdetrv2_obb_hgnetv2_n_dota_1_ss.onnx) |
| rtdetrv2_obb_hgnetv2_s_dota_1_ss.onnx | [RT-DETRv2-OBB-S](https://github.com/RicePasteM/RiO-DETR)-DOTA-v1.0 | [rio_detr_s_dota_1_ss.yaml](../../anylabeling/configs/auto_labeling/rio_detr_s_dota_1_ss.yaml) | 32.42MB | [baidu](https://pan.baidu.com/s/1AkTS-XJzym7fAPbrxOS1GQ?pwd=j5e9) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/rtdetrv2_obb_hgnetv2_s_dota_1_ss.onnx) |
| rtdetrv2_obb_hgnetv2_m_dota_1_ss.onnx | [RT-DETRv2-OBB-M](https://github.com/RicePasteM/RiO-DETR)-DOTA-v1.0 | [rio_detr_m_dota_1_ss.yaml](../../anylabeling/configs/auto_labeling/rio_detr_m_dota_1_ss.yaml) | 72.34MB | [baidu](https://pan.baidu.com/s/1ddihQeJFsXrlqs3fkzSPlQ?pwd=j5e9) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/rtdetrv2_obb_hgnetv2_m_dota_1_ss.onnx) |
| rtdetrv2_obb_hgnetv2_l_dota_1_ss.onnx | [RT-DETRv2-OBB-L](https://github.com/RicePasteM/RiO-DETR)-DOTA-v1.0 | [rio_detr_l_dota_1_ss.yaml](../../anylabeling/configs/auto_labeling/rio_detr_l_dota_1_ss.yaml) | 106.23MB | [baidu](https://pan.baidu.com/s/10qYsfgl8yK5nk5RpOI8Lkw?pwd=j5e9) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/rtdetrv2_obb_hgnetv2_l_dota_1_ss.onnx) |
| rtdetrv2_obb_hgnetv2_x_dota_1_ss.onnx | [RT-DETRv2-OBB-X](https://github.com/RicePasteM/RiO-DETR)-DOTA-v1.0 | [rio_detr_x_dota_1_ss.yaml](../../anylabeling/configs/auto_labeling/rio_detr_x_dota_1_ss.yaml) | 240.00MB | [baidu](https://pan.baidu.com/s/1WPElWR_UStvkT1eyL-QNAA?pwd=j5e9) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/rtdetrv2_obb_hgnetv2_x_dota_1_ss.onnx) |
| yolov5n_obb_drone_vehicle.onnx | [YOLOv5-OBB](https://github.com/hukaixuan19970627/yolov5_obb)-DroneVehicle | [yolov5n_obb_drone_vehicle.yaml](../../anylabeling/configs/auto_labeling/yolov5n_obb_drone_vehicle.yaml)  | 8.39MB  | [baidu](https://pan.baidu.com/s/1JPuhA03wgH8wnMBveSk5Ew?pwd=2ds7) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v1.0.0/yolov5n_obb_drone_vehicle.onnx) |
| yolov5s_obb_csl_dotav10.onnx | [YOLOv5-OBB](https://github.com/hukaixuan19970627/yolov5_obb)-DOTA-v1.0 | [yolov5s_obb_csl_dotav10.yaml](../../anylabeling/configs/auto_labeling/yolov5s_obb_csl_dotav10.yaml)  | 29.77MB  | [baidu](https://pan.baidu.com/s/1JBe9ACJNPnNbdpsNsNAy8A?pwd=cfj1) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v1.0.0/yolov5n_obb_drone_vehicle.onnx) |
| yolov5m_obb_csl_dotav15.onnx | [YOLOv5-OBB](https://github.com/hukaixuan19970627/yolov5_obb)-DOTA-v1.5 | [yolov5m_obb_csl_dotav15.yaml](../../anylabeling/configs/auto_labeling/yolov5m_obb_csl_dotav15.yaml)  | 83.59MB  | [baidu](https://pan.baidu.com/s/1upX5OtjjD3hmlmPbZo7IXQ?pwd=vk6x) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v1.0.0/yolov5m_obb_csl_dotav15.onnx) |
| yolov5m_obb_csl_dotav20.onnx | [YOLOv5-OBB](https://github.com/hukaixuan19970627/yolov5_obb)-DOTA-v2.0 | [yolov5m_obb_csl_dotav20.yaml](../../anylabeling/configs/auto_labeling/yolov5m_obb_csl_dotav20.yaml)  | 83.62MB  | [baidu](https://pan.baidu.com/s/1IXo65WLAcxHYkz9bQgzhNQ?pwd=7r7b) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v1.0.0/yolov5m_obb_csl_dotav20.onnx) |
| yolov8s-obb.onnx | [YOLOv8-OBB](https://github.com/ultralytics/ultralytics)-DOTA-v1.0 | [yolov8s_obb.yaml](../../anylabeling/configs/auto_labeling/yolov8s_obb.yaml) | 43.84MB | [baidu](https://pan.baidu.com/s/1gz6fR_Js0MOXLtL06mMr5w?pwd=8cb8) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.0/yolov8s-obb.onnx) |
| yolo11s-obb.onnx | [YOLO11s-Obb](https://github.com/ultralytics/ultralytics)-DOTA-v1.0  | [yolo11s_obb.yaml](../../anylabeling/configs/auto_labeling/yolo11s_obb.yaml) | 37.36MB | [baidu](https://pan.baidu.com/s/1caHKHZvVnyuAqrXaTvklLA?pwd=x2v7) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.4/yolo11s-obb.onnx) |
| yolo26s-obb.onnx | [YOLO26s-Obb](https://docs.ultralytics.com/tasks/obb/)-DOTA-v1.0| [yolo26s_obb.yaml](../../anylabeling/configs/auto_labeling/yolo26s_obb.yaml) | 37.56MB | [baidu](https://pan.baidu.com/s/1eKmD0iYPCF0K2KPH32PJvQ?pwd=8grq) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/yolo26s-obb.onnx) |


## Optical Character Recognition

|Name|Description|Configuration|Size|Link|
| --- | --- | --- | --- | --- |
| doclayout_yolo_docstructbench_imgsz1024.onnx | [DocLayout-YOLO](https://github.com/opendatalab/DocLayout-YOLO) | [doclayout_yolo.yaml](../../anylabeling/configs/auto_labeling/doclayout_yolo.yaml) | 72.22MB | [baidu](https://pan.baidu.com/s/1pX1sdEHglifeEIxDn3p-dg?pwd=ah4f) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.0/doclayout_yolo_docstructbench_imgsz1024.onnx) |
| ppocrv5_mobile_det_infer.onnx| [Ultra-lightweight PPOCR-v5 detection model](https://paddle-model-ecology.bj.bcebos.com/paddlex/official_inference_model/paddle3.0.0/PP-OCRv5_mobile_det_infer.tar) | [ch_chinese_cht_en_japan_ppocr_v5.yaml](../../anylabeling/configs/auto_labeling/ch_chinese_cht_en_japan_ppocr_v5.yaml) | 4.55MB | [baidu](https://pan.baidu.com/s/1eOdc-cV_JDj7KlkTGX3B5A?pwd=hdx3) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/ppocrv5_mobile_det_infer.onnx) |
| ppocrv5_mobile_rec_infer.onnx| [Ultra-lightweight PPOCR-v5 recognition model](https://paddle-model-ecology.bj.bcebos.com/paddlex/official_inference_model/paddle3.0.0/PP-OCRv5_mobile_rec_infer.tar) supporting Simplified Chinese, Chinese Pinyin, Traditional Chinese, English, and Japanese | [ch_chinese_cht_en_japan_ppocr_v5.yaml](../../anylabeling/configs/auto_labeling/ch_chinese_cht_en_japan_ppocr_v5.yaml) | 15.76MB | [baidu](https://pan.baidu.com/s/10BRdpDCNoAfsitj8pgE7vw?pwd=311p) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/ppocrv5_mobile_rec_infer.onnx) |
| ppocrv6_tiny_det_infer.onnx | PP-OCRv6 Tiny detection model | [ch_chinese_cht_en_japan_ppocr_v6_tiny.yaml](../../anylabeling/configs/auto_labeling/ch_chinese_cht_en_japan_ppocr_v6_tiny.yaml) | 1.70MB | [baidu](https://pan.baidu.com/s/19TxCrTA_y770h7MePi2B4Q?pwd=k95u) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/ppocrv6_tiny_det_infer.onnx) |
| ppocrv6_tiny_rec_infer.onnx | PP-OCRv6 Tiny recognition model supporting Simplified Chinese, Chinese Pinyin, Traditional Chinese, English, and Japanese | [ch_chinese_cht_en_japan_ppocr_v6_tiny.yaml](../../anylabeling/configs/auto_labeling/ch_chinese_cht_en_japan_ppocr_v6_tiny.yaml) | 4.26MB | [baidu](https://pan.baidu.com/s/1WnH9Yd6sIAxaeb0xPnv4Zg?pwd=bxnd) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/ppocrv6_tiny_rec_infer.onnx) |
| ppocrv6_small_det_infer.onnx | PP-OCRv6 Small detection model | [ch_chinese_cht_en_japan_ppocr_v6_small.yaml](../../anylabeling/configs/auto_labeling/ch_chinese_cht_en_japan_ppocr_v6_small.yaml) | 9.42MB | [baidu](https://pan.baidu.com/s/1muh53jGtQeH_hcheLKaH1w?pwd=p8vg) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/ppocrv6_small_det_infer.onnx) |
| ppocrv6_small_rec_infer.onnx | PP-OCRv6 Small recognition model supporting Simplified Chinese, Chinese Pinyin, Traditional Chinese, English, and Japanese | [ch_chinese_cht_en_japan_ppocr_v6_small.yaml](../../anylabeling/configs/auto_labeling/ch_chinese_cht_en_japan_ppocr_v6_small.yaml) | 20.18MB | [baidu](https://pan.baidu.com/s/1DE5peLs8374ueXWZ4OFqqg?pwd=qeh1) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/ppocrv6_small_rec_infer.onnx) |
| ppocrv6_medium_det_infer.onnx | PP-OCRv6 Medium detection model | [ch_chinese_cht_en_japan_ppocr_v6_medium.yaml](../../anylabeling/configs/auto_labeling/ch_chinese_cht_en_japan_ppocr_v6_medium.yaml) | 59.16MB | [baidu](https://pan.baidu.com/s/1lgLMJTK_PsRFMYKVeakIGA?pwd=xwam) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/ppocrv6_medium_det_infer.onnx) |
| ppocrv6_medium_rec_infer.onnx | PP-OCRv6 Medium recognition model supporting Simplified Chinese, Chinese Pinyin, Traditional Chinese, English, and Japanese | [ch_chinese_cht_en_japan_ppocr_v6_medium.yaml](../../anylabeling/configs/auto_labeling/ch_chinese_cht_en_japan_ppocr_v6_medium.yaml) | 73.01MB | [baidu](https://pan.baidu.com/s/18qEDh7FHB-4TLGIXEoFB6w?pwd=dfq4) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/ppocrv6_medium_rec_infer.onnx) |
| ch_ppocr_mobile_v2.0_cls_infer.onnx | [Classifier model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_infer.tar), classifying the detected text line angles | [ch_chinese_cht_en_japan_ppocr_v5.yaml](../../anylabeling/configs/auto_labeling/ch_chinese_cht_en_japan_ppocr_v5.yaml) | 569KB | [baidu](https://pan.baidu.com/s/1Lhka9fHHxYwvrN55ue8UtQ?pwd=t0se) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.2/ch_ppocr_mobile_v2.0_cls_infer.onnx) |
| ch_PP-OCRv4_det_infer.onnx | [Ultra-lightweight PPOCR-v4 detection model](https://paddleocr.bj.bcebos.com/PP-OCRv4/chinese/ch_PP-OCRv4_det_infer.tar) | [ch_ppocr_v4.yaml](../../anylabeling/configs/auto_labeling/ch_ppocr_v4.yaml) | 4.53MB | [baidu](https://pan.baidu.com/s/1EhZkTfWha1K7R2axBXvn0Q?pwd=wd9h) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.2/ch_PP-OCRv4_det_infer.onnx) |
| ch_PP-OCRv4_rec_infer.onnx | [Ultra-lightweight PPOCR-v5 recognition model](https://paddleocr.bj.bcebos.com/PP-OCRv4/chinese/ch_PP-OCRv4_rec_infer.tar) supporting Chinese, English, and digits | [ch_ppocr_v4.yaml](../../anylabeling/configs/auto_labeling/ch_ppocr_v4.yaml) | 10.33MB | [baidu](https://pan.baidu.com/s/16GDxeyNf8w_-y4Pi6Zyqnw?pwd=76ry) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.2/ch_PP-OCRv4_rec_infer.onnx) |
| ch_ppocr_mobile_v2.0_cls_infer.onnx | [Classifier model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_infer.tar), classifying the detected text line angles | [ch_ppocr_v4.yaml](../../anylabeling/configs/auto_labeling/ch_ppocr_v4.yaml) | 569KB | [baidu](https://pan.baidu.com/s/1Lhka9fHHxYwvrN55ue8UtQ?pwd=t0se) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.2/ch_ppocr_mobile_v2.0_cls_infer.onnx) |
| ch_PP-OCRv4_det_infer.onnx | [Ultra-lightweight PPOCR-v4 detection model](https://paddleocr.bj.bcebos.com/PP-OCRv4/chinese/ch_PP-OCRv4_det_infer.tar) | [japan_ppocr.yaml](../../anylabeling/configs/auto_labeling/japan_ppocr.yaml) | 4.53MB | [baidu](https://pan.baidu.com/s/1EhZkTfWha1K7R2axBXvn0Q?pwd=wd9h) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.2/ch_PP-OCRv4_det_infer.onnx) |
| japan_PP-OCRv3_rec_infer.onnx | [Lightweight model for Japanese recognition model](https://paddleocr.bj.bcebos.com/PP-OCRv3/multilingual/japan_PP-OCRv3_rec_infer.tar) | [japan_ppocr.yaml](../../anylabeling/configs/auto_labeling/japan_ppocr.yaml) | 9.62MB | [baidu](https://pan.baidu.com/s/1sMPb-b1w8m_WohB7JHcOxw?pwd=d058) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.0/japan_PP-OCRv3_rec_infer.onnx) |
| ch_ppocr_mobile_v2.0_cls_infer.onnx | [Classifier model](https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_infer.tar), classifying the detected text line angles | [japan_ppocr.yaml](../../anylabeling/configs/auto_labeling/japan_ppocr.yaml) | 569KB | [baidu](https://pan.baidu.com/s/1Lhka9fHHxYwvrN55ue8UtQ?pwd=t0se) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.2/ch_ppocr_mobile_v2.0_cls_infer.onnx) |


## Segment Anything Models

- General Scenario

|Name|Description|Configuration|Size|Link|
| --- | --- | --- | --- | --- |
| sam3_image_encoder.onnx | [SAM3](https://github.com/facebookresearch/sam3) ViT-H image encoder | [sam3_vit_h.yaml](../../anylabeling/configs/auto_labeling/sam3_vit_h.yaml) | 2.39MB | [baidu](https://pan.baidu.com/s/1fTRfWMSsm1Ci3n2YEexOHw?pwd=a48n) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/sam3_image_encoder.onnx) |
| sam3_image_encoder.onnx.data | [SAM3](https://github.com/facebookresearch/sam3) ViT-H image encoder data | [sam3_vit_h.yaml](../../anylabeling/configs/auto_labeling/sam3_vit_h.yaml) | 1.70GB | [baidu](https://pan.baidu.com/s/1k6k7prMx7ut9b_ADMkrIdw?pwd=9msx) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/sam3_image_encoder.onnx.data) |
| sam3_language_encoder.onnx | [SAM3](https://github.com/facebookresearch/sam3) ViT-H language encoder | [sam3_vit_h.yaml](../../anylabeling/configs/auto_labeling/sam3_vit_h.yaml) | 1.33MB | [baidu](https://pan.baidu.com/s/1fu1IYzZjrTEe-iaiudnaEw?pwd=kesd) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/sam3_language_encoder.onnx) |
| sam3_language_encoder.onnx.data | [SAM3](https://github.com/facebookresearch/sam3) ViT-H language encoder data | [sam3_vit_h.yaml](../../anylabeling/configs/auto_labeling/sam3_vit_h.yaml) | 1.50GB | [baidu](https://pan.baidu.com/s/1GpSTbHIs9-1FEvOIRP95eA?pwd=2zd8) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/sam3_language_encoder.onnx.data) |
| sam3_decoder.onnx | [SAM3](https://github.com/facebookresearch/sam3) ViT-H decoder | [sam3_vit_h.yaml](../../anylabeling/configs/auto_labeling/sam3_vit_h.yaml) | 123.84MB | [baidu](https://pan.baidu.com/s/1GeyliOXpzAQiHIo21JPalg?pwd=m5km) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/sam3_decoder.onnx) |
| sam3_decoder.onnx.data | [SAM3](https://github.com/facebookresearch/sam3) ViT-H decoder data | [sam3_vit_h.yaml](../../anylabeling/configs/auto_labeling/sam3_vit_h.yaml) | 111.13MB | [baidu](https://pan.baidu.com/s/1oeKbieQNIVWxqn3lKQbn7Q?pwd=9j3g) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/sam3_decoder.onnx.data) |
| sam2.1_hiera_tiny.encoder.onnx | [SAM2](https://github.com/facebookresearch/sam2) | [sam2_hiera_tiny.yaml](../../anylabeling/configs/auto_labeling/sam2_hiera_tiny.yaml) | 128.04MB | [baidu](https://pan.baidu.com/s/1wuf7VmxztvorXwLtBbENLw?pwd=cmad) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.0/sam2.1_hiera_tiny.encoder.onnx) |
| sam2.1_hiera_tiny.decoder.onnx | [SAM2](https://github.com/facebookresearch/sam2) | [sam2_hiera_tiny.yaml](../../anylabeling/configs/auto_labeling/sam2_hiera_tiny.yaml) | 19.68MB | [baidu](https://pan.baidu.com/s/1TOKUPFUwE_vOZQIhsLs7FA?pwd=eb8g) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.0/sam2.1_hiera_tiny.decoder.onnx) |
| sam2.1_hiera_small.encoder.onnx | [SAM2](https://github.com/facebookresearch/sam2) | [sam2_hiera_small.yaml](../../anylabeling/configs/auto_labeling/sam2_hiera_small.yaml) | 155.17MB | [baidu](https://pan.baidu.com/s/1VGVyU1-fNfOHRPWzsXUXyQ?pwd=min2) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.0/sam2.1_hiera_small.encoder.onnx) |
| sam2.1_hiera_small.decoder.onnx | [SAM2](https://github.com/facebookresearch/sam2) | [sam2_hiera_small.yaml](../../anylabeling/configs/auto_labeling/sam2_hiera_small.yaml) | 19.68MB | [baidu](https://pan.baidu.com/s/1qfDJiyEXdnmNjsB9ygE1bw?pwd=abyj) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.0/sam2.1_hiera_small.decoder.onnx) |
| sam2.1_hiera_base_plus.encoder.onnx | [SAM2](https://github.com/facebookresearch/sam2) | [sam2_hiera_base.yaml](../../anylabeling/configs/auto_labeling/sam2_hiera_base.yaml) | 324.04MB | [baidu](https://pan.baidu.com/s/1COTTRGNOYTGEIJeOM9kzQA?pwd=rytm) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.0/sam2.1_hiera_base_plus.encoder.onnx) |
| sam2.1_hiera_base_plus.decoder.onnx | [SAM2](https://github.com/facebookresearch/sam2) | [sam2_hiera_base.yaml](../../anylabeling/configs/auto_labeling/sam2_hiera_base.yaml) | 19.68MB | [baidu](https://pan.baidu.com/s/1ING_8V-QTnEMI4OP52qlZw?pwd=iqsn) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.0/sam2.1_hiera_base_plus.decoder.onnx) |
| sam2.1_hiera_large.encoder.onnx | [SAM2](https://github.com/facebookresearch/sam2) | [sam2_hiera_large.yaml](../../anylabeling/configs/auto_labeling/sam2_hiera_large.yaml) | 848.16MB | [baidu](https://pan.baidu.com/s/14UaLzS7VINarzrKHVIp0KA?pwd=x6jr) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.0/sam2.1_hiera_large.encoder.onnx) |
| sam2.1_hiera_large.decoder.onnx | [SAM2](https://github.com/facebookresearch/sam2) | [sam2_hiera_large.yaml](../../anylabeling/configs/auto_labeling/sam2_hiera_large.yaml) | 19.68MB | [baidu](https://pan.baidu.com/s/1iirCRz_KFe3d1fVPteVybA?pwd=nfib) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.0/sam2.1_hiera_large.decoder.onnx) |
| edge_sam_encoder.onnx | [EdgeSAM](https://github.com/chongzhou96/EdgeSAM) | [edge_sam.yaml](../../anylabeling/configs/auto_labeling/edge_sam.yaml) | 21.02MB | [baidu](https://pan.baidu.com/s/1jKK1OQYS9PsRrZM75GposA?pwd=2okt) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.2.0/edge_sam_encoder.onnx) |
| edge_sam_decoder.onnx | [EdgeSAM](https://github.com/chongzhou96/EdgeSAM) | [edge_sam.yaml](../../anylabeling/configs/auto_labeling/edge_sam.yaml) | 17.78MB | [baidu](https://pan.baidu.com/s/1THr_TLO0zmoZZ_gw5mQuow?pwd=ewyv) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.2.0/edge_sam_decoder.onnx) |
| sam_vit_b_01ec64.encoder.onnx | [SAM](https://arxiv.org/abs/2304.02643) ViT-base encoder  | [segment_anything_vit_b.yaml](../../anylabeling/configs/auto_labeling/segment_anything_vit_b.yaml)  | 342.58MB  | [baidu](https://pan.baidu.com/s/1ILcJ_ct1gAv21IS5fQ-Mbw?pwd=kpz2) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.0/sam_vit_b_01ec64.encoder.onnx) |
| sam_vit_b_01ec64.decoder.onnx | [SAM](https://arxiv.org/abs/2304.02643) ViT-base decoder  | [segment_anything_vit_b.yaml](../../anylabeling/configs/auto_labeling/segment_anything_vit_b.yaml)  | 15.74MB  | [baidu](https://pan.baidu.com/s/1eBxU5F33GCyzFMs1EJAb-g?pwd=e73e) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.0/sam_vit_b_01ec64.decoder.onnx) |
| sam_vit_b_01ec64.encoder.quant.onnx | [SAM](https://arxiv.org/abs/2304.02643) ViT-base encoder(Quantized) | [segment_anything_vit_b_quant.yaml](../../anylabeling/configs/auto_labeling/segment_anything_vit_b_quant.yaml)  | 103.78MB  | [baidu](https://pan.baidu.com/s/1KaabmKC6M_sxWCoMIMBN6A?pwd=1rs7) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.0/sam_vit_b_01ec64.encoder.quant.onnx) |
| sam_vit_b_01ec64.decoder.quant.onnx | [SAM](https://arxiv.org/abs/2304.02643) ViT-base decoder(Quantized) | [segment_anything_vit_b_quant.yaml](../../anylabeling/configs/auto_labeling/segment_anything_vit_b_quant.yaml)  | 8.34MB  | [baidu](https://pan.baidu.com/s/1iW3tVjJfaIVGYFTeKKkIzg?pwd=gnuf) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.0/sam_vit_b_01ec64.decoder.quant.onnx) |
| sam_vit_l_0b3195.encoder.onnx | [SAM](https://arxiv.org/abs/2304.02643) ViT-large encoder  | [segment_anything_vit_l.yaml](../../anylabeling/configs/auto_labeling/segment_anything_vit_l.yaml)  | 1.15GB  | [baidu](https://pan.baidu.com/s/1O8Fy4Tz7hvgIFMGOER9Y9w?pwd=2rt4) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.0/sam_vit_l_0b3195.encoder.onnx) |
| sam_vit_l_0b3195.decoder.onnx | [SAM](https://arxiv.org/abs/2304.02643) ViT-large decoder  | [segment_anything_vit_l.yaml](../../anylabeling/configs/auto_labeling/segment_anything_vit_l.yaml)  | 15.74MB  | [baidu](https://pan.baidu.com/s/1ftSh3oedErfM1TNOcjy4fQ?pwd=4oez) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.0/sam_vit_l_0b3195.decoder.onnx) |
| sam_vit_l_0b3195.encoder.quant.onnx | [SAM](https://arxiv.org/abs/2304.02643) ViT-large encoder(Quantized) | [segment_anything_vit_l_quant.yaml](../../anylabeling/configs/auto_labeling/segment_anything_vit_l_quant.yaml)  | 317.18MB  | [baidu](https://pan.baidu.com/s/1W8elbCXKIHk8c37_kKGl1w?pwd=a2mi) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.0/sam_vit_l_0b3195.encoder.quant.onnx) |
| sam_vit_l_0b3195.decoder.quant.onnx | [SAM](https://arxiv.org/abs/2304.02643) ViT-large decoder(Quantized) | [segment_anything_vit_l_quant.yaml](../../anylabeling/configs/auto_labeling/segment_anything_vit_l_quant.yaml)  | 8.34MB  | [baidu](https://pan.baidu.com/s/1LzXk0e-jvJFYYFiXYbD_vA?pwd=wgwp) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.0/sam_vit_l_0b3195.decoder.quant.onnx) |
| mobile_sam.encoder.onnx | [MobileSAM](https://arxiv.org/abs/2306.14289) encoder  | [mobile_sam_vit_h.yaml](../../anylabeling/configs/auto_labeling/mobile_sam_vit_h.yaml)  | 26.85MB  | [baidu](https://pan.baidu.com/s/1knn_NkrRAgfJms6d9FsErg?pwd=xbi6) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.0/mobile_sam.encoder.onnx) |
| sam_vit_h_4b8939.decoder.quant.onnx | [MobileSAM](https://arxiv.org/abs/2306.14289) decoder  | [mobile_sam_vit_h.yaml](../../anylabeling/configs/auto_labeling/mobile_sam_vit_h.yaml)  | 8.34MB  | [baidu](https://pan.baidu.com/s/1L5RGeTWK7d5vkLmgir8x5w?pwd=f287) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.0/sam_vit_h_4b8939.decoder.quant.onnx) |
| sam_vit_h_4b8939.encoder.quant.onnx | [SAM](https://arxiv.org/abs/2304.02643) ViT-huge encoder(Quantized) | [segment_anything_vit_h_quant.yaml](../../anylabeling/configs/auto_labeling/segment_anything_vit_h_quant.yaml)  | 626.40MB  | [baidu](https://pan.baidu.com/s/1LJqKvxEmhzr8xQfwWk9SMg?pwd=n6ol) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.0/sam_vit_h_4b8939.encoder.quant.onnx) |
| sam_vit_h_4b8939.decoder.quant.onnx | [SAM](https://arxiv.org/abs/2304.02643) ViT-huge decoder(Quantized) | [segment_anything_vit_h_quant.yaml](../../anylabeling/configs/auto_labeling/segment_anything_vit_h_quant.yaml)  | 8.34MB  | [baidu](https://pan.baidu.com/s/1L5RGeTWK7d5vkLmgir8x5w?pwd=f287) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.0/sam_vit_h_4b8939.decoder.quant.onnx) |
| efficientvit_sam_l0_vit_h.encoder.onnx | [EfficientViT-SAM](https://github.com/mit-han-lab/efficientvit) ViT-huge encoder  | [efficientvit_sam_l0_vit_h.yaml](../../anylabeling/configs/auto_labeling/efficientvit_sam_l0_vit_h.yaml)  | 117.25MB  | [baidu](https://pan.baidu.com/s/16u8oXZzgTlZPF4szdbHNNg?pwd=dr1t) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.4/efficientvit_sam_l0_vit_h.encoder.onnx) |
| efficientvit_sam_l0_vit_h.decoder.onnx | [EfficientViT-SAM](https://github.com/mit-han-lab/efficientvit) ViT-huge decoder  | [efficientvit_sam_l0_vit_h.yaml](../../anylabeling/configs/auto_labeling/efficientvit_sam_l0_vit_h.yaml)  | 15.63MB  | [baidu](https://pan.baidu.com/s/1w4MFjrXdpI9A3YdESdSeWA?pwd=xjma) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.4/efficientvit_sam_l0_vit_h.decoder.onnx) |
| efficientvit_sam_l1_vit_h.encoder.onnx | [EfficientViT-SAM](https://github.com/mit-han-lab/efficientvit) ViT-huge encoder  | [efficientvit_sam_l1_vit_h.yaml](../../anylabeling/configs/auto_labeling/efficientvit_sam_l1_vit_h.yaml)  | 166.31MB  | [baidu](https://pan.baidu.com/s/1tidlzaR7nQt8_fZh_X9Gdw?pwd=5fuz) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.4/efficientvit_sam_l1_vit_h.encoder.onnx) |
| efficientvit_sam_l1_vit_h.decoder.onnx | [EfficientViT-SAM](https://github.com/mit-han-lab/efficientvit) ViT-huge decoder  | [efficientvit_sam_l1_vit_h.yaml](../../anylabeling/configs/auto_labeling/efficientvit_sam_l1_vit_h.yaml)  | 15.63MB  | [baidu](https://pan.baidu.com/s/1usaDN855iZaO2rUKIvdsfA?pwd=p1p9) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.4/efficientvit_sam_l1_vit_h.decoder.onnx) |
| sam_hq_vit_b_encoder.onnx | [HQ-SAM](https://arxiv.org/abs/2306.01567) ViT-base encoder | [sam_hq_vit_b.yaml](../../anylabeling/configs/auto_labeling/sam_hq_vit_b.yaml) | 342.37MB | [baidu](https://pan.baidu.com/s/1WU1HvGqhVuoSXuyZmR9XlA?pwd=4zf5) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.0.0/sam_hq_vit_b_encoder.onnx) |
| sam_hq_vit_b_decoder.onnx | [HQ-SAM](https://arxiv.org/abs/2306.01567) ViT-base decoder | [sam_hq_vit_b.yaml](../../anylabeling/configs/auto_labeling/sam_hq_vit_b.yaml) | 19.74MB | [baidu](https://pan.baidu.com/s/1vL04NiOwfoKBXIHZc0NsTQ?pwd=ctxb) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.0.0/sam_hq_vit_b_decoder.onnx) |
| sam_hq_vit_l_encoder.onnx | [HQ-SAM](https://arxiv.org/abs/2306.01567) ViT-large encoder | [sam_hq_vit_l.yaml](../../anylabeling/configs/auto_labeling/sam_hq_vit_l.yaml) | 1.15GB | [baidu](https://pan.baidu.com/s/1NIQnHGb8BUMg9CLcQVveEQ?pwd=2jo2) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.0.0/sam_hq_vit_l_encoder.onnx) |
| sam_hq_vit_l_decoder.onnx | [HQ-SAM](https://arxiv.org/abs/2306.01567) ViT-large decoder | [sam_hq_vit_l.yaml](../../anylabeling/configs/auto_labeling/sam_hq_vit_l.yaml) | 20.74MB | [baidu](https://pan.baidu.com/s/1eAjL_qW1V4CleLko_xmy4g?pwd=b7p8) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.0.0/sam_hq_vit_l_decoder.onnx) |
| sam_hq_vit_l_encoder_quant.onnx | [HQ-SAM](https://arxiv.org/abs/2306.01567) ViT-large encoder(Quantized)| [sam_hq_vit_l_quant.yaml](../../anylabeling/configs/auto_labeling/sam_hq_vit_l_quant.yaml) | 307.96MB | [baidu](https://pan.baidu.com/s/1IkKuFWlJCsU1baKcE75aMQ?pwd=l23c) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.0.0/sam_hq_vit_l_encoder_quant.onnx) |
| sam_hq_vit_l_decoder | [HQ-SAM](https://arxiv.org/abs/2306.01567) ViT-large decoder | [sam_hq_vit_l_quant.yaml](../../anylabeling/configs/auto_labeling/sam_hq_vit_l_quant.yaml) | 20.74MB | [baidu](https://pan.baidu.com/s/1eAjL_qW1V4CleLko_xmy4g?pwd=b7p8) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.0.0/sam_hq_vit_l_decoder.onnx) |
| sam_hq_vit_h_encoder_quant.onnx | [HQ-SAM](https://arxiv.org/abs/2306.01567) ViT-huge encoder(Quantized)| [sam_hq_vit_h_quant.yaml](../../anylabeling/configs/auto_labeling/sam_hq_vit_h_quant.yaml) | 625.55MB | [baidu](https://pan.baidu.com/s/1JkjQLURF2f-xi57Xak_9_Q?pwd=ixyp) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.0.0/sam_hq_vit_h_encoder_quant.onnx) |
| sam_hq_vit_h_decoder | [HQ-SAM](https://arxiv.org/abs/2306.01567) ViT-huge decoder | [sam_hq_vit_h_quant.yaml](../../anylabeling/configs/auto_labeling/sam_hq_vit_h_quant.yaml) | 21.74MB | [baidu](https://pan.baidu.com/s/1YYTnwNrFYQVI-imIQ_2Eyg?pwd=3grn) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.0.0/sam_hq_vit_h_decoder.onnx) |


- Medical Scenario

|Name|Description|Configuration|Size|Link|
| --- | --- | --- | --- | --- |
| sam-med2d_b.encoder.onnx | [SAM-Med2D](https://github.com/OpenGVLab/SAM-Med2D) ViT-base encoder  | [sam_med2d_vit_b.yaml](../../anylabeling/configs/auto_labeling/sam_med2d_vit_b.yaml)  | 1019.49MB  | [baidu](https://pan.baidu.com/s/1DRKsmAsTrpjIjowL0inq0w?pwd=gur6) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.0/sam-med2d_b.encoder.onnx) |
| sam-med2d_b.decoder.onnx | [SAM-Med2D](https://github.com/OpenGVLab/SAM-Med2D) ViT-base decoder  | [sam_med2d_vit_b.yaml](../../anylabeling/configs/auto_labeling/sam_med2d_vit_b.yaml)  | 15.60MB  | [baidu](https://pan.baidu.com/s/1X0ZGp4vxRAVk_v6iSO3BJQ?pwd=7cdd) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.0/sam-med2d_b.decoder.onnx) |

See the [Segment Anything 3 guide](../../examples/grounding/sam3/README.md) for both local ONNX and server-side usage.


## Segmentation

|Name|Description|Configuration|Size|Link|
| --- | --- | --- | --- | --- |
| dfine_seg_n_coco.onnx | [D-FINE-seg-N](https://github.com/ArgoHA/D-FINE-seg)-COCO | [dfine_seg_n_coco.yaml](../../anylabeling/configs/auto_labeling/dfine_seg_n_coco.yaml) | 17.89MB | [baidu](https://pan.baidu.com/s/19ZVXQUE27F0UuoBFQhvssQ?pwd=cb74) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v4.0.0/dfine_seg_n_coco.onnx) \| [modelscope](https://www.modelscope.cn/models/CVHub520/dfine_seg/resolve/master/dfine_seg_n_coco.onnx) |
| dfine_seg_s_coco.onnx | [D-FINE-seg-S](https://github.com/ArgoHA/D-FINE-seg)-COCO | [dfine_seg_s_coco.yaml](../../anylabeling/configs/auto_labeling/dfine_seg_s_coco.yaml) | 47.62MB | [baidu](https://pan.baidu.com/s/1P5hB7t8YDZ1atf2tj04PGA?pwd=cb74) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v4.0.0/dfine_seg_s_coco.onnx) \| [modelscope](https://www.modelscope.cn/models/CVHub520/dfine_seg/resolve/master/dfine_seg_s_coco.onnx) |
| dfine_seg_m_coco.onnx | [D-FINE-seg-M](https://github.com/ArgoHA/D-FINE-seg)-COCO | [dfine_seg_m_coco.yaml](../../anylabeling/configs/auto_labeling/dfine_seg_m_coco.yaml) | 83.42MB | [baidu](https://pan.baidu.com/s/1QFwnrTIIHpBEU86QbydUYg?pwd=cb74) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v4.0.0/dfine_seg_m_coco.onnx) \| [modelscope](https://www.modelscope.cn/models/CVHub520/dfine_seg/resolve/master/dfine_seg_m_coco.onnx) |
| dfine_seg_l_coco.onnx | [D-FINE-seg-L](https://github.com/ArgoHA/D-FINE-seg)-COCO | [dfine_seg_l_coco.yaml](../../anylabeling/configs/auto_labeling/dfine_seg_l_coco.yaml) | 128.89MB | [baidu](https://pan.baidu.com/s/1fpYoRI1tJhaScQqmEi61Kg?pwd=cb74) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v4.0.0/dfine_seg_l_coco.onnx) \| [modelscope](https://www.modelscope.cn/models/CVHub520/dfine_seg/resolve/master/dfine_seg_l_coco.onnx) |
| dfine_seg_x_coco.onnx | [D-FINE-seg-X](https://github.com/ArgoHA/D-FINE-seg)-COCO | [dfine_seg_x_coco.yaml](../../anylabeling/configs/auto_labeling/dfine_seg_x_coco.yaml) | 249.89MB | [baidu](https://pan.baidu.com/s/19dhGK3R5HCXQbxys2wHIug?pwd=cb74) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v4.0.0/dfine_seg_x_coco.onnx) \| [modelscope](https://www.modelscope.cn/models/CVHub520/dfine_seg/resolve/master/dfine_seg_x_coco.onnx) |
| rf-detr-seg-preview.onnx  | [RF-DETR Seg-Preview](../../tools/onnx_exporter/export_rfdetr_seg_onnx.py)| [rfdetr_seg_preview.yaml](../../anylabeling/configs/auto_labeling/rfdetr_seg_preview.yaml) | 122.18MB | [baidu](https://pan.baidu.com/s/1cMIwh5NMYhkQY8pJCvYfrw?pwd=ehz7) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/rf-detr-seg-preview.onnx) |
| yolov5s-seg.onnx | [YOLOv5](https://github.com/ultralytics/yolov5)-COCO | [yolov5s_seg.yaml](../../anylabeling/configs/auto_labeling/yolov5s_seg.yaml)  | 29.45MB | [baidu](https://pan.baidu.com/s/10g0PetDeW7VRm2SS513R3g?pwd=mlav) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v1.0.0/yolov5s-seg.onnx) |
| yolov8x-seg.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-COCO | [yolov8x_seg.yaml](../../anylabeling/configs/auto_labeling/yolov8x_seg.yaml)  | 274.10MB | [baidu](https://pan.baidu.com/s/1KEzlMVCOi7v96TW7tWSv0A?pwd=jc9h) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov8x-seg.onnx) |
| yolov8l-seg.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-COCO | [yolov8l_seg.yaml](../../anylabeling/configs/auto_labeling/yolov8l_seg.yaml)  | 175.59MB | [baidu](https://pan.baidu.com/s/13URaJg3rqHeA1NfooIvWMQ?pwd=5ygm) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov8l-seg.onnx) |
| yolov8m-seg.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-COCO | [yolov8m_seg.yaml](../../anylabeling/configs/auto_labeling/yolov8m_seg.yaml)  | 104.23MB | [baidu](https://pan.baidu.com/s/1PmKsiatP2YfHtnDCJEnhRw?pwd=bo85) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov8m-seg.onnx) |
| yolov8s-seg.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-COCO | [yolov8s_seg.yaml](../../anylabeling/configs/auto_labeling/yolov8s_seg.yaml)  | 45.25MB | [baidu](https://pan.baidu.com/s/17aqLyui-FL7nZUX-H4Bepg?pwd=bpe8) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov8s-seg.onnx) |
| yolov8n-seg.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-COCO | [yolov8n_seg.yaml](../../anylabeling/configs/auto_labeling/yolov8n_seg.yaml)  | 13.18MB | [baidu](https://pan.baidu.com/s/1WQmN0yKBnm3PKgXTBFyQ-A?pwd=194i) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov8n-seg.onnx) |
| yolo11s-seg.onnx | [YOLO11](https://github.com/ultralytics/ultralytics)-COCO | [yolo11s_seg.yaml](../../anylabeling/configs/auto_labeling/yolo11s_seg.yaml) | 38.77MB | [baidu](https://pan.baidu.com/s/11O7b0qUMQb1SQPoSYOsf9A?pwd=tthu) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.4/yolo11s-seg.onnx) |
| hyper-yolon-seg.onnx | [Hpyer-YOLO](https://github.com/iMoonLab/Hyper-YOLO)-COCO | hyper-yolon-seg.yaml | 16.77MB | [baidu](https://pan.baidu.com/s/1o-LIV0z6OFQXGbSbJ_HsVw?pwd=dxex) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.1/hyper-yolon-seg.onnx) |
| hyper-yolos-seg.onnx | [Hpyer-YOLO](https://github.com/iMoonLab/Hyper-YOLO)-COCO | [hyper-yolos-seg.yaml](../../anylabeling/configs/auto_labeling/hyper_yolos_seg.yaml) | 59.34MB | [baidu](https://pan.baidu.com/s/1NsGVI5FQIYuoAVNrZF2VNg?pwd=bptv) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.1/hyper-yolos-seg.onnx) |
| hyper-yolom-seg.onnx | [Hpyer-YOLO](https://github.com/iMoonLab/Hyper-YOLO)-COCO | hyper-yolom-seg.yaml | 132.85MB | [baidu](https://pan.baidu.com/s/1ObhO04dF6JEpvrtzLse6hg?pwd=q5hn) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.1/hyper-yolom-seg.onnx) |
| yolo26s-seg.onnx | [YOLO26s-Seg](https://docs.ultralytics.com/tasks/segment/)-COCO| [yolo26s_seg.yaml](../../anylabeling/configs/auto_labeling/yolo26s_seg.yaml) | 39.91MB | [Baidu](https://pan.baidu.com/s/1Bjzf4aX3Pq2jW67k_DxGNA?pwd=599s) \| [GitHub](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/yolo26s-seg.onnx) |



## Image Matting

|Name|Description|Configuration|Size|Link|
| --- | --- | --- | --- | --- |
| bria-rmbg-2.0.onnx | [RMBG v2.0 (BRIA AI)](https://huggingface.co/briaai/RMBG-2.0) | [rmbg_v20.yaml](../../anylabeling/configs/auto_labeling/rmbg_v20.yaml) | 976.88MB | [baidu](https://pan.baidu.com/s/1baIuKtLq31gq9vQezqy2Yw?pwd=vt5r) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/bria-rmbg-2.0.onnx) |
| bria-rmbg-2.0-quant.onnx | [RMBG v2.0 Quantized (BRIA AI)](https://huggingface.co/briaai/RMBG-2.0) | [rmbg_v20_quant.yaml](../../anylabeling/configs/auto_labeling/rmbg_v20_quant.yaml) | 349.13MB | [baidu](https://pan.baidu.com/s/1u32UoVNxnDOq31qprsBUWQ?pwd=62ys) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/bria-rmbg-2.0-quant.onnx) |
| bria-rmbg-1.4.onnx | [RMBG v1.4 (BRIA AI)](https://huggingface.co/briaai/RMBG-1.4) | [rmbg_v14.yaml](../../anylabeling/configs/auto_labeling/rmbg_v14.yaml) | 167.99MB | [baidu](https://pan.baidu.com/s/1tVuHF7NsZ7CXeqdQbsOhJg?pwd=9yny) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.3/bria-rmbg-1.4.onnx) |


## Combined Models

|Name|Description|Configuration|Size|Link|
| --- | --- | --- | --- | --- |
| yolov8s.onnx | YOLOv8-SAM2.1 | [yolov8s_sam2_hiera_base.yaml](../../anylabeling/configs/auto_labeling/yolov8s_sam2_hiera_base.yaml) | 42.75MB | [baidu](https://pan.baidu.com/s/1_1-9dFF_BfqcghE_0LDidg?pwd=oy9d) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov8s.onnx) |
| sam2.1_hiera_base_plus.encoder.onnx | YOLOv8-SAM2.1 | [yolov8s_sam2_hiera_base.yaml](../../anylabeling/configs/auto_labeling/yolov8s_sam2_hiera_base.yaml) | 324.04MB | [baidu](https://pan.baidu.com/s/1COTTRGNOYTGEIJeOM9kzQA?pwd=rytm) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.0/sam2.1_hiera_base_plus.encoder.onnx) |
| sam2.1_hiera_base_plus.decoder.onnx | YOLOv8-SAM2.1 | [yolov8s_sam2_hiera_base.yaml](../../anylabeling/configs/auto_labeling/yolov8s_sam2_hiera_base.yaml) | 19.68MB | [baidu](https://pan.baidu.com/s/1ING_8V-QTnEMI4OP52qlZw?pwd=iqsn) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.0/sam2.1_hiera_base_plus.decoder.onnx) |
| resnet50.onnx | [ResNet50](https://arxiv.org/abs/1512.03385)-ImageNet | [yolov5s_resnet50.yaml](../../anylabeling/configs/auto_labeling/yolov5s_resnet50.yaml)  | 97.42MB  | [baidu](https://pan.baidu.com/s/1byapPRVib7rarAMTmoSkKQ?pwd=xllt) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/resnet50.onnx) |
| yolov5s.onnx | [YOLOv5](https://github.com/ultralytics/yolov5)-COCO | [yolov5s_resnet50.yaml](../../anylabeling/configs/auto_labeling/yolov5s_resnet50.yaml)  | 27.98MB  | [baidu](https://pan.baidu.com/s/18I8ugM29NKjNlVEsnYYuWA?pwd=z8dl) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov5s.onnx) |
| mobile_sam.encoder.onnx | [MobileSAM](https://arxiv.org/abs/2306.14289) encoder(YOLOv5-SAM) | [yolov5s_mobile_sam_vit_h.yaml](../../anylabeling/configs/auto_labeling/yolov5s_mobile_sam_vit_h.yaml)  | 26.85MB  | [baidu](https://pan.baidu.com/s/1knn_NkrRAgfJms6d9FsErg?pwd=xbi6) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.0/mobile_sam.encoder.onnx) |
| sam_vit_h_4b8939.decoder.quant.onnx | [MobileSAM](https://arxiv.org/abs/2306.14289) decoder(YOLOv5-SAM)  | [yolov5s_mobile_sam_vit_h.yaml](../../anylabeling/configs/auto_labeling/yolov5s_mobile_sam_vit_h.yaml)  | 8.34MB  | [baidu](https://pan.baidu.com/s/1L5RGeTWK7d5vkLmgir8x5w?pwd=f287) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.0/sam_vit_h_4b8939.decoder.quant.onnx) |
| yolov5s.onnx | [YOLOv5](https://github.com/ultralytics/yolov5)-COCO(YOLOv5-SAM) | [yolov5s_mobile_sam_vit_h.yaml](../../anylabeling/configs/auto_labeling/yolov5s_mobile_sam_vit_h.yaml)  | 27.98MB  | [baidu](https://pan.baidu.com/s/18I8ugM29NKjNlVEsnYYuWA?pwd=z8dl) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov5s.onnx) |
| yolov5m.onnx | YOLOv5-RAM | [yolov5m_ram.yaml](../../anylabeling/configs/auto_labeling/yolov5m_ram.yaml)  | 81.19MB  | [baidu](https://pan.baidu.com/s/1oB9Vp-s7viOaLxAhjzAnFQ?pwd=vc4v) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov5m.onnx) |
| ram_swin_large_14m.onnx | YOLOv5-RAM | [yolov5m_ram.yaml](../../anylabeling/configs/auto_labeling/yolov5m_ram.yaml) | 865.66MB | [baidu](https://pan.baidu.com/s/1c045hicvPP3pQNaNSOrpQQ?pwd=wnss) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v1.0.0/ram_swin_large_14m.onnx) |
| edge_sam_encoder.onnx | EdgeSAM-CN-CLIP ViT-B-16| [edge_sam_with_chinese_clip.yaml](../../anylabeling/configs/auto_labeling/edge_sam_with_chinese_clip.yaml) | 21.02MB | [baidu](https://pan.baidu.com/s/1jKK1OQYS9PsRrZM75GposA?pwd=2okt) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.2.0/edge_sam_encoder.onnx) |
| edge_sam_decoder.onnx | EdgeSAM-CN-CLIP ViT-B-16| [edge_sam_with_chinese_clip.yaml](../../anylabeling/configs/auto_labeling/edge_sam_with_chinese_clip.yaml) | 17.78MB | [baidu](https://pan.baidu.com/s/1THr_TLO0zmoZZ_gw5mQuow?pwd=ewyv) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.2.0/edge_sam_decoder.onnx) |
| vit-b-16.img.fp16.onnx | EdgeSAM-CN-CLIP ViT-B-16| [edge_sam_with_chinese_clip.yaml](../../anylabeling/configs/auto_labeling/edge_sam_with_chinese_clip.yaml) | 3.51MB | [baidu](https://pan.baidu.com/s/15vXbkGjeivaH95kbIsJ3Ew?pwd=ioth ) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.1/vit-b-16.img.fp16.onnx) |
| vit-b-16.txt.fp16.onnx | EdgeSAM-CN-CLIP ViT-B-16| [edge_sam_with_chinese_clip.yaml](../../anylabeling/configs/auto_labeling/edge_sam_with_chinese_clip.yaml) | 2.15MB | [baidu](https://pan.baidu.com/s/1FCaB7_U8wNnkdxWje0mAww?pwd=7c4j) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.1/vit-b-16.txt.fp16.onnx) |
| vit-b-16.img.fp16.onnx.extra_file | EdgeSAM-CN-CLIP ViT-B-16| [edge_sam_with_chinese_clip.yaml](../../anylabeling/configs/auto_labeling/edge_sam_with_chinese_clip.yaml) | 164.40MB | [baidu](https://pan.baidu.com/s/1M3TE3TooVe_m3AavdxIgpA?pwd=2uco) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.1/vit-b-16.img.fp16.onnx.extra_file) |
| vit-b-16.txt.fp16.onnx.extra_file | EdgeSAM-CN-CLIP ViT-B-16| [edge_sam_with_chinese_clip.yaml](../../anylabeling/configs/auto_labeling/edge_sam_with_chinese_clip.yaml) | 194.68MB | [baidu](https://pan.baidu.com/s/1PgLVcEUsfRrRt_k9qneOjw?pwd=r9fz) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.1/vit-b-16.txt.fp16.onnx.extra_file) |
| groundingdino_swint_ogc_quant.onnx | GroundingSAM-SwinB with HQ-SAM-VitL-QInt8 | [groundingdino_swinb_attn_fuse_sam_hq_vit_l_quant.yaml](../../anylabeling/configs/auto_labeling/groundingdino_swinb_attn_fuse_sam_hq_vit_l_quant.yaml) | 964.04MB | [baidu](https://pan.baidu.com/s/1D-JxYEOU2lTYcLT58xxX8A?pwd=8kyk) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.0.0/groundingdino_fuse_attention.onnx) |
| sam_hq_vit_l_encoder_quant.onnx | GroundingSAM-SwinB with HQ-SAM-VitL-QInt8 | [groundingdino_swinb_attn_fuse_sam_hq_vit_l_quant.yaml](../../anylabeling/configs/auto_labeling/groundingdino_swinb_attn_fuse_sam_hq_vit_l_quant.yaml) | 307.96MB | [baidu](https://pan.baidu.com/s/1IkKuFWlJCsU1baKcE75aMQ?pwd=l23c) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.0.0/sam_hq_vit_l_encoder_quant.onnx) |
| sam_hq_vit_l_decoder | GroundingSAM-SwinB with HQ-SAM-VitL-QInt8 | [groundingdino_swinb_attn_fuse_sam_hq_vit_l_quant.yaml](../../anylabeling/configs/auto_labeling/groundingdino_swinb_attn_fuse_sam_hq_vit_l_quant.yaml) | 20.74MB | [baidu](https://pan.baidu.com/s/1eAjL_qW1V4CleLko_xmy4g?pwd=b7p8) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.0.0/sam_hq_vit_l_decoder.onnx) |
| sam2.1_hiera_large.encoder.onnx | GroundingSAM2 | [groundingdino_swint_sam2_large.yaml](../../anylabeling/configs/auto_labeling/groundingdino_swint_sam2_large.yaml) | 848.16MB | [baidu](https://pan.baidu.com/s/14UaLzS7VINarzrKHVIp0KA?pwd=x6jr) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.0/sam2.1_hiera_large.encoder.onnx) |
| sam2.1_hiera_large.decoder.onnx | GroundingSAM2 | [groundingdino_swint_sam2_large.yaml](../../anylabeling/configs/auto_labeling/groundingdino_swint_sam2_large.yaml) | 19.68MB | [baidu](https://pan.baidu.com/s/1iirCRz_KFe3d1fVPteVybA?pwd=nfib) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.0/sam2.1_hiera_large.decoder.onnx) |
| groundingdino_swint_ogc_quant.onnx | GroundingSAM2 | [groundingdino_swint_sam2_large.yaml](../../anylabeling/configs/auto_labeling/groundingdino_swint_sam2_large.yaml) | 171.28MB | [baidu](https://pan.baidu.com/s/12EZzjR5h7cysDjbIGfNFKQ?pwd=5prg) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v1.0.0/groundingdino_swint_ogc_quant.onnx) |


## Open-Vocabulary Grounding

|Name|Description|Configuration|Size|Link|
| --- | --- | --- | --- | --- |
| yoloe-v8l-seg.pt | [YOLOE-v8-L](https://github.com/THU-MIG/yoloe) | [yoloe_v8l.yaml](../../anylabeling/configs/auto_labeling/yoloe_v8l.yaml) | 102.43MB | [baidu](https://pan.baidu.com/s/1DXM_ZMbzUj3SC_yXx1R1BQ?pwd=f77a) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/yoloe-v8l-seg.pt) \| [huggingface](https://huggingface.co/jameslahm/yoloe/resolve/main/yoloe-v8l-seg.pt) \| [modelscope](https://www.modelscope.cn/models/CVHub520/yoloe_v8l/resolve/master/yoloe-v8l-seg.pt) |
| yoloe-v8l-seg-pf.pt | [YOLOE-v8-L](https://github.com/THU-MIG/yoloe) | [yoloe_v8l.yaml](../../anylabeling/configs/auto_labeling/yoloe_v8l.yaml) | 98.66MB | [baidu](https://pan.baidu.com/s/1piZHtGgd_sNIprR-z7qWRQ?pwd=ju2y) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/yoloe-v8l-seg-pf.pt) \| [huggingface](https://huggingface.co/jameslahm/yoloe/resolve/main/yoloe-v8l-seg-pf.pt) \| [modelscope](https://www.modelscope.cn/models/CVHub520/yoloe_v8l/resolve/master/yoloe-v8l-seg-pf.pt) |
| mobileclip_blt.pt | [YOLOE-v8-L](https://github.com/THU-MIG/yoloe) | [yoloe_v8l.yaml](../../anylabeling/configs/auto_labeling/yoloe_v8l.yaml) | 571.46MB | [baidu](https://pan.baidu.com/s/1088EJ6ZkOSy9x1svLS9zuA?pwd=w9fcs) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/mobileclip_blt.pt) \| [official](https://docs-assets.developer.apple.com/ml-research/datasets/mobileclip/mobileclip_blt.pt) \| [modelscope](https://www.modelscope.cn/models/CVHub520/yoloe_v8l/resolve/master/mobileclip_blt.pt) |
| yoloe-11s-seg.pt | [YOLOE-11-S](https://github.com/THU-MIG/yoloe) | [yoloe_11s.yaml](../../anylabeling/configs/auto_labeling/yoloe_11s.yaml) | 26.52MB | [baidu](https://pan.baidu.com/s/1U6bfY4mSY1lXJ4ELfVAlYA?pwd=amxv) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/yoloe-11s-seg.pt) \| [huggingface](https://huggingface.co/jameslahm/yoloe/resolve/main/yoloe-11s-seg.pt) \| [modelscope](https://www.modelscope.cn/models/CVHub520/yoloe_11s/resolve/master/yoloe-11s-seg.pt) |
| yoloe-11s-seg-pf.pt | [YOLOE-11-S](https://github.com/THU-MIG/yoloe) | [yoloe_11s.yaml](../../anylabeling/configs/auto_labeling/yoloe_11s.yaml) | 23.12MB | [baidu](https://pan.baidu.com/s/1XMwrs9gEiFq5ZuIb_GlHeQ?pwd=guux) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/yoloe-11s-seg-pf.pt) \| [huggingface](https://huggingface.co/jameslahm/yoloe/resolve/main/yoloe-11s-seg-pf.pt) \| [modelscope](https://www.modelscope.cn/models/CVHub520/yoloe_11s/resolve/master/yoloe-11s-seg-pf.pt) |
| mobileclip_blt.pt | [YOLOE-11-S](https://github.com/THU-MIG/yoloe) | [yoloe_11s.yaml](../../anylabeling/configs/auto_labeling/yoloe_11s.yaml) | 571.46MB | [baidu](https://pan.baidu.com/s/1088EJ6ZkOSy9x1svLS9zuA?pwd=w9fcs) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/mobileclip_blt.pt) \| [official](https://docs-assets.developer.apple.com/ml-research/datasets/mobileclip/mobileclip_blt.pt) \| [modelscope](https://www.modelscope.cn/models/CVHub520/yoloe_11s/resolve/master/mobileclip_blt.pt) |
| yolov8x-worldv2.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-COCO | [yolov8x_worldv2.yaml](../../anylabeling/configs/auto_labeling/yolov8x_worldv2.yaml) | 276.38MB | [baidu](https://pan.baidu.com/s/15HWC6ry-jU-a2OLz9Xa06g?pwd=9cng) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.7/yolov8x-worldv2.onnx) |
| yolov8l-worldv2-cc3m.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-CC3M | [yolov8l_worldv2_cc3m.yaml](../../anylabeling/configs/auto_labeling/yolov8l_worldv2_cc3m.yaml) | 177.39MB | [baidu](https://pan.baidu.com/s/1gJ2KAf1s8okT2cAJX21SbA?pwd=yxks) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.7/yolov8l-worldv2-cc3m.onnx) |
| yolov8l-worldv2.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-COCO | [yolov8l_worldv2.yaml](../../anylabeling/configs/auto_labeling/yolov8l_worldv2.yaml) | 177.39MB | [baidu](https://pan.baidu.com/s/1wpm6-r1pYxJJGT0nlhRM7g?pwd=to53) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.7/yolov8l-worldv2.onnx) |
| yolov8m-worldv2.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-COCO | [yolov8m_worldv2.yaml](../../anylabeling/configs/auto_labeling/yolov8m_worldv2.yaml) | 107.21MB | [baidu](https://pan.baidu.com/s/1pzS20I1bJG3_CRjBS0k5Nw?pwd=m4et) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.7/yolov8m-worldv2.onnx) |
| yolov8s-worldv2.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-COCO | [yolov8s_worldv2.yaml](../../anylabeling/configs/auto_labeling/yolov8s_worldv2.yaml) | 47.97MB | [baidu](https://pan.baidu.com/s/1sHeiYJVjg2arDZhS7h4fsQ?pwd=m0uo) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.7/yolov8s-worldv2.onnx) |
| groundingdino_swint_ogc_quant.onnx | [GroundingDINO](https://github.com/IDEA-Research/GroundingDINO)  | [groundingdino_swint_ogc_quant.yaml](../../anylabeling/configs/auto_labeling/groundingdino_swint_ogc_quant.yaml) | 171.28MB | [baidu](https://pan.baidu.com/s/12EZzjR5h7cysDjbIGfNFKQ?pwd=5prg) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v1.0.0/groundingdino_swint_ogc_quant.onnx) |
| groundingdino_swinb_cogcoor_quant.onnx | [GroundingDINO](https://github.com/IDEA-Research/GroundingDINO)  | [groundingdino_swinb_cogcoor_quant.yaml](../../anylabeling/configs/auto_labeling/groundingdino_swinb_cogcoor_quant.yaml) | 258.90MB | [baidu](https://pan.baidu.com/s/1NJ8GEsGYgiOh684dNNgfww?pwd=onj2) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v1.0.0/groundingdino_swinb_cogcoor_quant.onnx) |
| ram_swin_large_14m.onnx | [Recognize Anything](https://github.com/xinyu1205/recognize-anything) | [ram_swin_large_14m.yaml](../../anylabeling/configs/auto_labeling/ram_swin_large_14m.yaml) | 865.66MB | [baidu](https://pan.baidu.com/s/1c045hicvPP3pQNaNSOrpQQ?pwd=wnss) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v1.0.0/ram_swin_large_14m.onnx) |
| ram_plus_swin_large_14m.onnx | [Recognize Anything Pluse](https://github.com/xinyu1205/recognize-anything) | [ram_plus_swin_large_14m.yaml](../../anylabeling/configs/auto_labeling/ram_plus_swin_large_14m.yaml) | 1.74GB | [baidu](https://pan.baidu.com/s/1qcysPmAsZUOb9SgmlO6XeA?pwd=fzt9) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.0/ram_plus_swin_large_14m.onnx) |


## Depth Estimation

|Name|Description|Configuration|Size|Link|
| --- | --- | --- | --- | --- |
| depth_anything_vits14.onnx | [DepthAnything](https://github.com/LiheYoung/Depth-Anything.git) | [depth_anything_vit_s.yaml](../../anylabeling/configs/auto_labeling/depth_anything_vit_s.yaml) | 94.48MB | [baidu](https://pan.baidu.com/s/1-ONO7s0AUPY_pq1Zw0xpcQ?pwd=xkx0) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.1/depth_anything_vits14.onnx) |
| depth_anything_vitb14.onnx | [DepthAnything](https://github.com/LiheYoung/Depth-Anything.git) | [depth_anything_vit_b.yaml](../../anylabeling/configs/auto_labeling/depth_anything_vit_b.yaml) | 370.91MB | [baidu](https://pan.baidu.com/s/1x8ADH6j1Qlm3_iHZV8Kmvw?pwd=trgt) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.1/depth_anything_vitb14.onnx) |
| depth_anything_vitl14.onnx | [DepthAnything](https://github.com/LiheYoung/Depth-Anything.git) | [depth_anything_vit_l.yaml](../../anylabeling/configs/auto_labeling/depth_anything_vit_l.yaml) | 1.25GB | [baidu](https://pan.baidu.com/s/1MeEcbyJa6ysoGzK-8EjqYw?pwd=p3j4) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.1/depth_anything_vitl14.onnx) |
| depth_anything_v2_vits.onnx | [DepthAnythingV2](https://github.com/DepthAnything/Depth-Anything-V2) | [depth_anything_v2_vit_s.yaml](../../anylabeling/configs/auto_labeling/depth_anything_v2_vit_s.yaml) | 94.77MB | [baidu](https://pan.baidu.com/s/1mO8UEWAEgYW2_bDnQFSVpQ?pwd=3sf0) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.0/depth_anything_v2_vits.onnx) |
| depth_anything_v2_vitb.onnx | [DepthAnythingV2](https://github.com/DepthAnything/Depth-Anything-V2) | [depth_anything_v2_vit_b.yaml](../../anylabeling/configs/auto_labeling/depth_anything_v2_vit_b.yaml) | 371.20MB | [baidu](https://pan.baidu.com/s/1wo8xYJiuMjie5THPjr4DWg?pwd=kcal) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.0/depth_anything_v2_vitb.onnx) |
| depth_anything_v2_vitl.onnx | [DepthAnythingV2](https://github.com/DepthAnything/Depth-Anything-V2) | [depth_anything_v2_vit_l.yaml](../../anylabeling/configs/auto_labeling/depth_anything_v2_vit_l.yaml) | 1.25GB | [baidu](https://pan.baidu.com/s/134WYgOdhzWeyap_xk0rBhw?pwd=cnqt) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.0/depth_anything_v2_vitl.onnx) |


## Interactive Video Object Segmentation

|Name|Description|Configuration|Size|Link|
| --- | --- | --- | --- | --- |
| sam2_hiera_tiny.pt | [SAM 2](https://github.com/CVHub520/segment-anything-2) | [sam2_hiera_tiny_video.yaml](../../anylabeling/configs/auto_labeling/sam2_hiera_tiny_video.yaml) | 148.68MB | [baidu](https://pan.baidu.com/s/1sIiVHQb5MMrK49x5ngB8ig?pwd=q38g) \| [github](https://dl.fbaipublicfiles.com/segment_anything_2/072824/sam2_hiera_tiny.pt) |
| sam2_hiera_small.pt | [SAM 2](https://github.com/CVHub520/segment-anything-2) | [sam2_hiera_small_video.yaml](../../anylabeling/configs/auto_labeling/sam2_hiera_small_video.yaml) | 175.77MB | [baidu](https://pan.baidu.com/s/17P5PvRUlT0xYr4wlqqeKVw?pwd=rsim) \| [github](https://dl.fbaipublicfiles.com/segment_anything_2/072824/sam2_hiera_small.pt) |
| sam2_hiera_base_plus.pt | [SAM 2](https://github.com/CVHub520/segment-anything-2) | [sam2_hiera_base_video.yaml](../../anylabeling/configs/auto_labeling/sam2_hiera_base_video.yaml) | 308.51MB | [baidu](https://pan.baidu.com/s/1nP-ysdw1t7JgUQtIv-adNA?pwd=44u4) \| [github](https://dl.fbaipublicfiles.com/segment_anything_2/072824/sam2_hiera_base_plus.pt) |
| sam2_hiera_large.pt | [SAM 2](https://github.com/CVHub520/segment-anything-2) | [sam2_hiera_large_video.yaml](../../anylabeling/configs/auto_labeling/sam2_hiera_large_video.yaml) | 856.35MB | [baidu](https://pan.baidu.com/s/1hFYQc1IKnEw2l-vW6Eoi2w?pwd=gyby) \| [github](https://dl.fbaipublicfiles.com/segment_anything_2/072824/sam2_hiera_large.pt) |

For server-side SAM 3 video tracking, see the [Segment Anything 3 Video guide](../../examples/interactive_video_object_segmentation/sam3/README.md).


## Zero-Shot Counting by Detection and Segmentation

|Name|Description|Configuration|Size|Link|
| --- | --- | --- | --- | --- |
| GeCo_encoder_data.bin | [GeCo](https://github.com/jerpelhan/GeCo.git) | [geco_sam_hq_vit_h.yaml](../../anylabeling/configs/auto_labeling/geco_sam_hq_vit_h.yaml) | 2.38GB | [Baidu](https://pan.baidu.com/s/1ZuTizr4N4eZk0Z4BKtueSg?pwd=x3r3) |
| GeCo_encoder.onnx | [GeCo](https://github.com/jerpelhan/GeCo.git) | [geco_sam_hq_vit_h.yaml](../../anylabeling/configs/auto_labeling/geco_sam_hq_vit_h.yaml) | 16.78MB | [baidu](https://pan.baidu.com/s/1X_D_tHZGbZKPgjDcQf5Q6A?pwd=n3vs) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/GeCo_encoder.onnx) |
| GeCo_decoder.onnx | [GeCo](https://github.com/jerpelhan/GeCo.git) | [geco_sam_hq_vit_h.yaml](../../anylabeling/configs/auto_labeling/geco_sam_hq_vit_h.yaml) | 16.83MB | [baidu](https://pan.baidu.com/s/1kfCFyt7ffpuREAGUjM5RKQ?pwd=feh9) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/GeCo_decoder.onnx) |
| GeCo_encoder_quant.onnx | [GeCo](https://github.com/jerpelhan/GeCo.git) | [geco_sam_hq_vit_h.yaml](../../anylabeling/configs/auto_labeling/geco_sam_hq_vit_h.yaml) | 646.48MB | [Baidu](https://pan.baidu.com/s/1R7mInx4N9t7eXgAUFY15eg?pwd=yyd6) |


## Extended Models and Services

This section lists models that require additional runtimes, standalone inference services, or cloud APIs. See the linked documentation for setup and usage.

- [Florence 2](../../examples/vision_foundation/florence2/README.md)
- [GLM-4.6-V](https://github.com/CVHub520/X-AnyLabeling-Server/blob/main/app/models/glm_4_6v.py)
- [PaddleOCR-VL-1.5](../../examples/optical_character_recognition/multi_task/README.md)
- [PP-DocLayoutV3](../../examples/optical_character_recognition/document_layout_analysis/README.md)
- [Qwen3-VL](https://github.com/CVHub520/X-AnyLabeling-Server/blob/main/app/models/qwen3vl.py)
- [Rex-Omni](../../examples/vision_foundation/rexomni/README.md)

---

### En Paddle Ocr (`docs/en/paddle_ocr.md`)

# PaddleOCR Document Parsing and Intelligent Text Recognition

## Overview

[PaddleOCR](https://aistudio.baidu.com/paddleocr) is an OCR and document intelligence toolkit in the Baidu PaddlePaddle ecosystem. It covers general text recognition, document layout analysis, table parsing, formula recognition, and other capabilities for common document-processing scenarios such as scanned documents, photographed documents, multi-page PDFs, and technical documents.

X-AnyLabeling integrates these capabilities through a dedicated **PaddleOCR** panel for document understanding and intelligent text recognition workflows. The panel supports layout parsing, text recognition, formula recognition, and table recognition for images and PDF files. After parsing is complete, you can review, edit, copy, and export the recognized results.

Two service modes are supported: you can call the official PaddleOCR API directly, or connect to a PaddleOCR model served through an X-AnyLabeling-compatible remote inference service. Parsed results are saved as local JSON files and displayed in the interface together with source-file regions, structured content, and editable result blocks.

<video src="https://github.com/user-attachments/assets/0c018b6e-f8e9-4045-bc22-0d388ab4853d" width="100%" controls>
</video>

## Model Configuration

### Official API (Recommended)

The X-AnyLabeling client supports the official PaddleOCR API by default, so you do not need to deploy an additional inference service. When the PaddleOCR panel is opened for the first time and no API information has been configured, the `PPOCR API Settings` dialog appears automatically. Enter the corresponding `API_KEY` to enable official API parsing. To update the configuration later, click the gear button at the top of the right-side result panel.

The following official API model options are currently supported in the parsing-model drop-down list:

- `PaddleOCR-VL-1.6 (API)`
- `PaddleOCR-VL (API)`

<video src="https://github.com/user-attachments/assets/f570dbda-20a4-4e8c-8d97-4c42083be98a" width="100%" controls>
</video>

To obtain the required API information:

1. Visit the [PaddleOCR website](https://aistudio.baidu.com/paddleocr/task).
2. Open the API call example, switch to the `Async Parse` tab, and copy the `API_KEY`.
3. Return to `PPOCR API Settings` in X-AnyLabeling, paste the key, and confirm.

The configuration is saved locally:

```text
${workspace}/xanylabeling_data/paddleocr/api_settings.json
```

By default, `${workspace}` is the user's home directory, `~`. If X-AnyLabeling is started with `--work-dir`, that directory is used instead.

### Local Deployment (Optional)

To run PaddleOCR locally or in a private environment, deploy an inference service with [X-AnyLabeling-Server](https://github.com/CVHub520/X-AnyLabeling-Server). See the [multi-task OCR example](../../examples/optical_character_recognition/multi_task/README.md) for dependency installation and startup instructions.

Make sure X-AnyLabeling-Server has been updated to the latest version, and check that the `ppocr_layoutstructv3_vl_1_5` model configuration is available. If you want to implement and integrate your own PaddleOCR inference pipeline, declare the following capability flag in the model configuration. The client uses this flag to determine whether the model can be used in the PaddleOCR panel:

```yaml
...
capabilities:
  ppocr_pipeline: true
...
```

After the service starts, reopen the PaddleOCR annotation panel. The `Parsing Model` drop-down list at the top right displays the available models. Selecting a model without the `(API)` suffix sends parsing requests to the deployed inference service.

## User Guide

You can open PaddleOCR in either of the following ways: click the `PaddleOCR` icon in the left toolbar, or use the `Ctrl+4` shortcut.

After the panel opens, click `+ New Parsing` at the top of the left panel to select files. Confirm `Start Parsing` to import them; confirmed files are copied to the local PaddleOCR workspace and added to the parsing queue.

The X-AnyLabeling PaddleOCR panel currently supports the following file types:

| Type | Extensions |
| :--- | :--- |
| PDF document | `.pdf` |
| Image | `.bmp`, `.cif`, `.gif`, `.jpeg`, `.jpg`, `.png`, `.tif`, `.tiff`, `.webp` |

PDF files are first rendered locally into per-page PNG previews. Official API parsing submits the original PDF once through Async Jobs, while remote-service parsing continues to use the local preview pages. For multi-page PDFs, the page count, preview images, and recognition results are all retained in the local workspace.

> [!TIP]
> - Hold `Ctrl` and scroll the mouse wheel in the source-file preview area to zoom the preview page quickly.
> - Click any block in the left preview area or the right result area to match and highlight the corresponding content on both sides.
> - Double-click a block in the right-side recognition result area, or click the block's `Correct` button, to enter edit mode.
> - Hover over a block in the source-file preview area and click the floating `Copy` button to copy that block's content.
> - For multi-page PDFs, use the page controls at the bottom to jump between pages, or scroll through the page-separated parsing results in the right result area.
> - After you manually correct recognition results, the edited blocks are recorded in the JSON file. To fetch model results again, use the reparse button on the right.

> [!NOTE]
> - The official PaddleOCR API requires a valid `API_KEY`. If the API returns `401`, check whether the key is valid.
> - Remote-service models appear in the model drop-down list only when `/v1/models` returns models with the `ppocr_pipeline` capability.
> - Imported files are copied to the PaddleOCR workspace. Deleting the original external file does not affect the imported copy.

## Interface Layout

### Overall Layout

The PaddleOCR panel consists of three main areas:

| Area | Description |
| :--- | :--- |
| Left file navigation panel | Import files, view recent files, view favorites, search, filter, and delete files |
| Middle source-file preview area | Display images or PDF pages with PaddleOCR layout blocks, polygon boxes, and category colors overlaid |
| Right parsing result area | Switch between `Document parsing` and `JSON` views, and copy, download, reparse, or edit recognized blocks |

> [!NOTE]
> The colored dot in the lower-left corner of each file item in the left navigation panel indicates the parsing status:
> - Blue means pending or parsing.
> - Green means parsing completed.
> - Red means parsing failed.

### Components

| Location | Button/Component | Function |
| :--- | :--- | :--- |
| Top left | `+ New Parsing` | Select images or PDFs, then confirm to import and start parsing |
| Left navigation | `Recent` | Show recently imported and parsed files |
| Left navigation | `Favorites` | Show favorited files only |
| Left navigation | Search button | Expand the filename search box |
| Left navigation | Filter button | Filter by sorting rule, file type, and parsing status |
| Left file item | Star button | Add or remove the current file from favorites |
| Left file item | Delete button | Delete the source file, JSON file, PDF preview pages, block screenshots, and other related data |
| Middle page bar | Left/right arrows | Switch to the previous or next PDF page |
| Middle page bar | Page number input | Jump to a specific PDF page |
| Middle page bar | Zoom out / zoom in buttons | Zoom the source-file preview area |
| Middle page bar | Reset zoom button | Restore the preview scale to fit width |
| Source-file preview area | Floating `Copy` | Copy the content of the currently hovered block |
| Top right | `Parsing Model` | Select an official `(API)` model or a remote PaddleOCR model |
| Right view | `Document parsing` | View layout blocks, text, formulas, tables, and images as cards |
| Right view | `JSON` | View the complete JSON result for the current file |
| Right tools | Gear button | Configure the official PaddleOCR `API_KEY` |
| Right tools | Reparse button | Reparse the current file |
| Right tools | Copy button | Copy Markdown content in the document view, or copy JSON in the JSON view |
| Right tools | Download button | Download a ZIP file in the document view, or download JSON in the JSON view |
| Result block card | `Copy` | Copy the content of a single block |
| Result block card | `Correct` | Enter edit mode for the current block |
| Parsing banner | `Cancel Parsing` | Cancel the current batch parsing task |
| Parsing-failed banner | `Copy Log` | Copy the error log |
| Parsing-failed banner | `Reparse` | Reparse the failed file |

### Parsed Blocks and Editors

After parsing is complete, the right-side `Document parsing` view displays blocks in layout order. Different block types use different colors:

| Type | Example Labels | Color Meaning |
| :--- | :--- | :--- |
| Text | `text`, `doc_title`, `paragraph_title`, `footer`, `seal`, etc. | Blue |
| Table | `table` | Green |
| Image | `image`, `chart`, `header_image`, `footer_image` | Purple |
| Header | `header` | Light purple |
| Formula | `display_formula`, `formula`, `formula_number`, `algorithm` | Yellow |
| Edited block | Any block | Orange border or edit-state marker |

The following editors are currently supported:

| Editor | Trigger Scenario | Description |
| :--- | :--- | :--- |
| Rich text editor | Plain text, titles, footers, seals, and other non-table or non-formula content | Supports basic rich text editing and saves the result as Markdown/text content |
| LaTeX formula editor | `display_formula`, `formula`, `formula_number`, `algorithm` | Supports editing LaTeX source and renders a live preview below |
| Table editor | `table` or content recognized as a table structure | Supports cell editing, selection copying, adding and deleting rows or columns, and basic text styling |

> [!WARNING]
> If an item contains many formulas, the first time you open it or scroll to the corresponding result block may take a short while. This is mainly caused by formula preview rendering. Rendered results are cached, so the same content does not need to be rendered again on subsequent loads.

### Data Storage and Directory Structure

The PaddleOCR panel saves imported files and parsed results in the local workspace:

```text
${workspace}/xanylabeling_data/paddleocr/
├── api_settings.json
├── ui_state.json
├── files/
│   ├── example.pdf
│   ├── image.png
│   ├── __PDF_example/
│   │   ├── page_001.png
│   │   └── page_002.png
│   └── __BLOCK_IMAGES_image.png/
│       └── page_001_block_0001.png
└── jsons/
    ├── example.pdf.json
    └── image.png.json
```

| Path | Description |
| :--- | :--- |
| `api_settings.json` | Cached `API_KEY`, selected API model, and compatibility API URL for the official PaddleOCR API |
| `ui_state.json` | UI state, such as the list of favorited files |
| `files/` | Local copies of imported files |
| `files/__PDF_<filename>/` | Per-page PNG previews rendered from a PDF |
| `files/__BLOCK_IMAGES_<filename>/` | Local crops for image-type blocks |
| `jsons/<filename>.json` | PaddleOCR parsing results and edited results for the current file |

> [!NOTE]
> Deleting a file item in the left panel also deletes the source file, local JSON file, PDF preview pages, and block crop images.

### JSON Data Structure

Each imported file has a corresponding JSON file. The core structure is as follows:

```
/* Detailed source-code truncated for AI context efficiency. */
```

Key fields:

| Field | Description |
| :--- | :--- |
| `layoutParsingResults` | Page-level parsing results. Images usually have one page, while PDFs can have multiple pages |
| `prunedResult.parsing_res_list` | Block list for the current page |
| `block_label` | Block type, such as `text`, `table`, `display_formula`, or `image` |
| `block_content` | Recognized content that can be viewed, copied, and edited |
| `block_bbox` | Rectangular bounding box of the block, in `[x1, y1, x2, y2]` format |
| `block_polygon_points` | Polygon points of the block, used for highlighting in the preview area |
| `markdown.text` | Markdown text returned by PaddleOCR or generated by combining blocks |
| `markdown.images` | Mapping of image resources referenced in the Markdown |
| `dataInfo.type` | File type. Valid values are `image` and `pdf` |
| `dataInfo.numPages` | Number of pages |
| `_ppocr_meta.status` | Parsing status: `pending`, `parsed`, or `error` |
| `_ppocr_meta.edited_blocks` | List of block keys that have been manually edited |
| `_ppocr_meta.block_image_paths` | Local resource paths for image-type blocks |
| `_ppocr_meta.pipeline_model` | Parsing model that generated the result |
| `_ppocr_meta.api_mode` | Official API mode, such as `async_jobs` |
| `_ppocr_meta.api_job_id` | Official Async Jobs task id, when available |

### Downloading Results

The download button on the right exports different content depending on the current view:

| Current View | Downloaded Content |
| :--- | :--- |
| `Document parsing` | A ZIP file containing `doc_0.md`, image resources under `imgs/`, and layout detection visualizations named `layout_det_res_*.jpg` |
| `JSON` | The complete JSON for the current file. The default filename is `<original_filename>_by_<model_name>.json` |

---

### En Point Cloud (`docs/en/point_cloud.md`)

# 3D Point Cloud Annotation

A 3D point cloud is a collection of points in three-dimensional space. Each point has X, Y, and Z coordinates and may also include information such as color or intensity. Point clouds are typically captured by LiDAR sensors or depth cameras to represent the shapes of objects and the spatial structure of a scene.

X-AnyLabeling supports **3D object detection, semantic segmentation, and instance segmentation annotation**. Use 3D bounding boxes to mark the position, size, and orientation of objects such as vehicles and pedestrians; assign a class to each point to label roads, buildings, and other features; or distinguish individual objects within the same class, such as two separate cars. These annotations can be used to build datasets for autonomous driving perception, robot navigation, and 3D scene understanding.

## 3D Point Cloud Workspace

### Opening the Workspace

Click the **Point Cloud** icon in the left toolbar of the main X-AnyLabeling window, or press `Ctrl+6`, to open the 3D point cloud workspace.

The workspace contains the following areas:

- **Top toolbar**: Create tasks, import and export annotations, and save a copy of the current frame's annotations.
- **File list on the left**: Browse point cloud files and switch between frames.
- **Central annotation area**: Use the toolbar and 3D canvas to inspect and annotate point clouds. Detection tasks also provide top, side, and front views for adjusting 3D boxes.
- **Management panel on the right**: Manage classes, detection boxes, or segmentation instances, including visibility and locking.
- **Status bar at the bottom**: Check information about the current frame and the annotation save status.

> [!TIP]
> Hover over a toolbar icon to see its tooltip. Click the **⌘** icon in the upper-right corner to view the workspace shortcuts.

### Creating a Task

Start by clicking **Create task** in the top toolbar, then complete these three steps:

1. **Choose a task type and classes**: Select the task type, then add annotation classes or load a custom class file. To save the classes, click **Save labels** at the bottom left and choose a directory and JSON filename.
2. **Choose the data and output directories**: Select the directory containing your point clouds and, optionally, an annotation output directory. If the output directory is left blank, annotations are saved alongside the point clouds.
3. **Configure camera data (optional)**: Add camera image directories and calibration files as needed. Skip this step if you do not need camera images.

Click **Create task** to load the point clouds and start annotating.

### File Formats

**Point cloud files**

Both detection and segmentation tasks support the following point cloud formats:

| Format | Requirements |
| --- | --- |
| `.bin` | Each point consists of four little-endian float32 values: X, Y, Z, and intensity, for a total of 16 bytes. |
| `.ply` | Must contain `x`, `y`, and `z` coordinates; color and intensity are optional. |
| `.pcd` | Supports PCD v0.5/v0.7 with ASCII, binary, or binary-compressed data; `x`, `y`, and `z` are required. `intensity` and packed `rgb`/`rgba` are optional. |

**Class files**

In the first step of task creation, click **Save labels** and choose a directory and filename to save the current task's classes as JSON. The file records class IDs, names, and colors. Detection and segmentation classes are stored under `detection` and `segmentation`, respectively:

```json
{
  "version": 1,
  "detection": {
    "classes": [
      {"id": 1, "name": "Car", "color": "#6496F5"}
    ]
  },
  "segmentation": {
    "classes": [
      {"id": 0, "name": "unlabeled", "color": "#000000"},
      {"id": 10, "name": "car", "color": "#6496F5"}
    ]
  }
}
```

`id` is the class ID, `name` is the class name, and `color` is a `#RRGGBB` color. Segmentation classes must include ID `0` for unlabeled points. Detection boxes cannot use class ID `0`. A file may contain only the section for the current task. See the [sample class file](../../assets/pointcloud/pointcloud_classes.json) for a complete configuration.

### Basic Navigation

After loading a point cloud, press `V` to switch to navigation mode and adjust the view in the central 3D canvas:

- **Left-drag** to rotate the view. Horizontal movement adjusts yaw; vertical movement adjusts pitch.
- **Right-drag or middle-drag** to pan across the point cloud.
- **Scroll** to zoom in or out.
- **Fit the view** by pressing `F` to show the entire frame. You can also use the toolbar buttons for top, front, or side views, or reset the view.

Click a file in the left panel to switch frames, or press `A` / `D` to move to the previous or next frame. Use the class and object lists on the right to select annotation targets. Eye icons control visibility; lock icons control whether annotations can be edited. Check the status bar for the save status after annotating.

During segmentation, the left mouse button applies the brush or draws a polygon. Switch back to navigation mode to rotate the view. In the detection task's top, side, and front views, drag a box or its handles to adjust it. Hold `Ctrl` and left-drag, or middle-drag, to pan these views.

### Shortcuts

Click the relevant canvas to give it focus before using shortcuts. The table below lists the available shortcuts and mouse actions. Undo and redo use the standard key combinations for your operating system; check the **⌘** panel in the upper-right corner for the combinations in use.

| Shortcut / action | Function | Context |
| --- | --- | --- |
| `V` | Switch to navigation mode | All tasks |
| `A` / `PgUp` | Previous frame | All tasks |
| `D` / `PgDown` | Next frame | All tasks |
| `F` | Fit the entire point cloud in the view | All tasks |
| `Ctrl+Z` | Undo the last annotation action | All tasks |
| `Ctrl+Shift+Z` / `Ctrl+Y` | Redo; the combination depends on the operating system | All tasks |
| `Esc` | Cancel an unfinished selection, drawing, or box adjustment | Segmentation / detection |
| `Alt+U` / `Alt+O` | Move the camera up / down | 3D view |
| `Alt+J` / `Alt+L` | Move the camera left / right | 3D view |
| `Alt+I` / `Alt+K` | Zoom in / out | 3D view |
| `Shift+↑` / `Shift+↓` | Tilt the view up / down | 3D view |
| `Shift+←` / `Shift+→` | Rotate the view left / right | 3D view |
| `B` | Select the brush tool | Segmentation |
| `P` | Select the polygon tool | Segmentation |
| `Ctrl+scroll` | Adjust the brush size | Segmentation: brush tool |
| `Ctrl+left-drag` / right-drag | Pan while keeping an unfinished polygon | Segmentation: polygon tool |
| `Enter` / left double-click | Complete the polygon selection | Segmentation: polygon tool |
| `N` | Start or cancel drawing a 3D box | Detection |
| Left double-click | Create a 3D box at the preview position | Detection: drawing mode in the 3D canvas |
| `G` | Focus on the selected 3D box | Detection |
| `Delete` | Delete the selected 3D box | Detection |
| `Ctrl+D` | Duplicate the selected 3D box | Detection |
| `Ctrl+C` / `Ctrl+V` | Copy / paste a 3D box | Detection |
| `↑` / `↓` / `←` / `→` | Move the selected box along the current view axes in increments of 0.1 coordinate units | Detection |
| Left-drag or right-drag a box / handle | Move, resize, or rotate the box | Detection: top, side, and front views |
| `Shift+drag` a rotation handle | Rotate in 15° increments | Detection: top, side, and front views |
| `Ctrl+left-drag` / middle-drag | Pan the view | Detection: top, side, and front views |

## 3D Point Cloud Detection

Detection tasks use 3D bounding boxes to annotate an object's class, position, size, and orientation.



### Sample Data

The repository includes a [minimal KITTI 3D detection sample](../../assets/pointcloud/detection/KITTI_3D_det) based on training frame `000008`. It contains 122,555 points, one image from the left color camera, and six Car boxes.

```text
assets/pointcloud/detection/KITTI_3D_det/
├── velodyne/000008.bin           # Original XYZI point cloud
├── labels/000008.cuboids.json    # Boxes in the workspace format
├── image_02/000008.png           # Matching camera image
├── calibration.json             # Calibration for image_02
└── source/
    ├── calib/000008.txt          # Original KITTI calibration
    └── label_2/000008.txt        # Original KITTI labels
```

To load the existing boxes, configure a task as follows:

1. Select **Det** and load the shared [class file](../../assets/pointcloud/pointcloud_classes.json). The detection classes are Car, Pedestrian, and Cyclist; this frame contains only Car objects.
2. Set the point cloud directory to `assets/pointcloud/detection/KITTI_3D_det` and the annotation output directory to its `labels` directory.
3. Add a camera with `image_02` as its image directory and `calibration.json` as its calibration file. Create the task to view the overlays.

For additional frames, use the same filename stem for the point cloud, boxes, and image, such as `000009.bin`, `000009.cuboids.json`, and `000009.png`. Camera data is optional if you only need to annotate point clouds.

KITTI detection data provides separate calibration for each frame. Before sharing one calibration file across multiple frames, verify that their camera parameters match; otherwise, configure separate tasks.

**Conversion details**

The point cloud and image are unchanged. The boxes and calibration have been converted to the workspace format:

- Original boxes use the rectified camera coordinate system, with their position at the bottom-face center. Subtract half the box height along the camera Y axis to obtain the box center, then apply the inverse of `R0_rect × Tr_velo_to_cam` to transform it into point cloud coordinates.
- `size` is stored as `[length, width, height]`. Orientation is transformed into point cloud coordinates and stored as XYZ Euler angles in radians.
- Camera intrinsics come from the left 3×3 block of `P2`. Its translation component is incorporated into the extrinsics so that projection remains equivalent to `P2 × R0_rect × Tr_velo_to_cam`.
- `DontCare` regions do not produce 3D boxes. Occlusion values 1 and 2 become `occluded: true`; values 0 and 3 become `false`. The original TXT file retains the full occlusion state, truncation values, and 2D boxes.

**Data sources**

The sample comes from [KITTI 3D Object Detection](https://www.cvlibs.net/datasets/kitti/eval_object.php?obj_benchmark=3d), by Andreas Geiger, Philip Lenz, and Raquel Urtasun. The associated paper is *Are we ready for Autonomous Driving? The KITTI Vision Benchmark Suite* (CVPR 2012). The original files are taken from the official archives:

| Archive | Original file |
| --- | --- |
| [data_object_velodyne.zip](https://s3.eu-central-1.amazonaws.com/avg-kitti/data_object_velodyne.zip) | `training/velodyne/000008.bin` |
| [data_object_image_2.zip](https://s3.eu-central-1.amazonaws.com/avg-kitti/data_object_image_2.zip) | `training/image_2/000008.png` |
| [data_object_calib.zip](https://s3.eu-central-1.amazonaws.com/avg-kitti/data_object_calib.zip) | `training/calib/000008.txt` |
| [data_object_label_2.zip](https://s3.eu-central-1.amazonaws.com/avg-kitti/data_object_label_2.zip) | `training/label_2/000008.txt` |

The KITTI data and converted annotations are licensed under [CC BY-NC-SA 3.0](https://creativecommons.org/licenses/by-nc-sa/3.0/). See the [official KITTI copyright notice](https://www.cvlibs.net/datasets/kitti/index.php).

### Creating Objects

1. Select a class in the **Labels** panel on the right.
2. Move the pointer over the 3D canvas, press `N` or click the draw-box button, and position the preview box over the target.
3. **Double-click the left mouse button** to create the object. Alternatively, drag a rectangle in the top, side, or front view below the canvas to create a box, then adjust its dimensions along the remaining axis.
4. Check the box from all three views and adjust it to fit the object. Press `Esc` to cancel an unfinished drawing.

### Editing Objects

Select a box in the 3D canvas or the **Objects** list on the right, then press `G` to focus on it. The three views below the canvas align with the selected box's local axes, making it easier to check its position, size, and orientation.

| Action | Method |
| --- | --- |
| Move | Drag the box in one of the three views, or use the arrow keys for small adjustments. |
| Resize | Drag the square handles along the box edges. |
| Rotate | Drag a rotation handle. Hold `Shift` to rotate in 15° increments. |
| Edit exact values | Right-click in the Objects list and select **Edit object** to set the class, center coordinates, dimensions, rotation angles, and occlusion state. |
| Fit to enclosed points | Right-click and select **Fit to points** to tighten the box around the points currently inside it while preserving its orientation. Make sure the box covers the entire object first. |

The top, side, and front views show the box's local X/Y, X/Z, and Y/Z planes, respectively. Hover over a view to reveal its expand button in the upper-right corner. Click to enlarge the view, and click again to restore it.

By default, points in these views are cropped to the selected box's depth range to reduce interference from points in front of or behind it. Turn off **Crop depth to selected cuboid** to show surrounding points.

### Managing Objects

| Action | Method |
| --- | --- |
| Duplicate an object | Press `Ctrl+D` to create a slightly offset copy, then move it to the target position. |
| Reuse a box in another frame | Press `Ctrl+C`, switch to another frame, and press `Ctrl+V`. Check its position and dimensions afterward. |
| Delete | Select a box and press `Delete`, or click the delete icon in its object row. |
| Lock | Click the lock icon for a class or object to prevent accidental edits. Unlock it before editing. |
| Show or hide | Use the eye icons in class or object rows, or in the panel header, to control visibility for individual objects or an entire class. |
| Undo and redo | Use the toolbar buttons or the corresponding shortcuts. |

Pasting into another frame reuses the box's properties; it does not track the object automatically. Check each frame individually. Object IDs distinguish boxes within the current frame.

### Camera Image Assistance

When camera images are configured for a task, the matching image appears in the upper-right corner. With a calibration file, you can also overlay the point cloud and 3D boxes to check object positions.

Images and point clouds are matched by filename stem: for example, `000000.bin` matches `000000.png`. Configure an image directory and calibration file for each camera, then use the arrows in the camera panel to switch cameras. Scroll to zoom the image; drag the panel's lower-left corner to resize it. Calibration is not required to view images without overlays.

### Importing and Exporting Annotations

The **Upload** and **Export** buttons in the top toolbar support three detection annotation formats, all packaged as ZIP files:

| Format | Annotation structure |
| --- | --- |
| **Datumaro 3D** | `annotations/*.json` uses `cuboid_3d` annotations for box positions, rotations, and dimensions. X-AnyLabeling exports `annotations/default.json`. |
| **Kitti Raw Format** | `tracklet_labels.xml` stores boxes and frame information. X-AnyLabeling also exports `frame_list.txt` and `dataset_meta.json`. |
| **Sly Point Cloud Format** | `meta.json` defines classes, `ds0/ann/*.pcd.json` stores per-frame objects and boxes, and `key_id_map.json` stores key mappings. |

**Import annotations:**

1. Click **Upload**, select an annotation ZIP, and choose its format.
2. Review the frame count, object count, and number of objects to be replaced, then confirm the import.
3. Check the boxes' positions, dimensions, orientations, and classes in each frame.

Imported class names must exist in the current task. If classes are missing, reconfigure the task before importing. Frames are usually matched by filename. Formats that provide only frame indices are matched against the current sequence order, so keep filenames and frame ordering consistent.

> [!IMPORTANT]
> Importing replaces all detection boxes in matched frames, including locked boxes. Unmatched frames and point-level segmentation annotations are left unchanged. Back up your annotation files first if you need to preserve existing results.

**Export annotations:**

1. Click **Export** and choose a ZIP destination and format.
2. Optionally select **Save images** to include point clouds and linked camera images. Point clouds are converted to PCD.
3. Click **OK** to export.

Export includes all frames in the file list on the left. These formats export detection boxes; point-level segmentation results are stored in `.label` files. Kitti Raw export writes each box as a single-frame tracklet and does not create tracking relationships across frames.

### Bounding Box File Format

Annotations are saved automatically to a `.cuboids.json` file with the same filename stem as the point cloud: for example, `000000.bin` uses `000000.cuboids.json`. Click **Save as** in the top toolbar to save a separate copy of the current frame's annotations.

The file uses UTF-8 JSON:

```json
{
  "version": 1,
  "type": "pointcloud-cuboids",
  "point_cloud": "000000.bin",
  "cuboids": [
    {
      "id": 1,
      "class_id": 1,
      "center": [5.0, 2.0, 0.8],
      "size": [4.5, 1.8, 1.6],
      "rotation": [0.0, 0.0, 0.5],
      "occluded": false,
      "locked": false
    }
  ]
}
```

| Field | Definition |
| --- | --- |
| `version` / `type` | Currently `1` / `pointcloud-cuboids`. |
| `point_cloud` | Original point cloud filename, including the extension. Must match the point cloud when loading. |
| `cuboids` | Array of detection boxes for the current frame. Empty if there are no objects. |
| `id` | Object ID, unique within the current frame, in the range 1–65535. |
| `class_id` | Detection class ID in the range 1–65535, corresponding to the class file. |
| `center` | Box center `[x, y, z]` in the original point cloud coordinate system. |
| `size` | Dimensions along the box's local X, Y, and Z axes, in the same units as the point cloud. Each value must be at least 0.01. |
| `rotation` | `[rx, ry, rz]` in radians, with rotation matrix `Rx(rx) × Ry(ry) × Rz(rz)`. The object editor displays and accepts angles in degrees. |
| `occluded` | Boolean indicating whether the object is occluded. |
| `locked` | Boolean indicating whether the object is locked. |

Keep the **original point clouds, per-frame `.cuboids.json` files, and class file** when sharing annotations or continuing your work. Reload the corresponding point clouds and annotation output directory to edit existing annotations.

## 3D Point Cloud Segmentation

Segmentation tasks assign a semantic class to each point and can also distinguish individual instances within the same class. The following operations apply to a loaded **Seg** task.



### Sample Data

The repository includes a [minimal point cloud segmentation sample](../../assets/pointcloud/segmentation/2011_10_03_drive_0042_sync) with one point cloud frame from sequence `2011_10_03_drive_0042_sync`, point-level labels, and images from four cameras. The frame contains 122,829 points, existing semantic annotations for classes such as road and vegetation, and five `moving-car` instances.

```text
assets/pointcloud/segmentation/2011_10_03_drive_0042_sync/
├── velodyne/0000000000.bin       # Original XYZI point cloud
├── labels/0000000000.label       # Per-point semantic and instance labels
├── image_00/0000000000.png       # Left grayscale camera
├── image_01/0000000000.png       # Right grayscale camera
├── image_02/0000000000.png       # Left color camera
├── image_03/0000000000.png       # Right color camera
└── calibration.json             # Calibration for image_02
```

To load the existing segmentation labels, configure a task as follows:

1. Select **Seg** and load the shared [class file](../../assets/pointcloud/pointcloud_classes.json). The task uses its `segmentation` classes.
2. Set the point cloud directory to `assets/pointcloud/segmentation/2011_10_03_drive_0042_sync` and the annotation output directory to its `labels` directory.
3. Optionally add cameras. For `image_02`, select `calibration.json` to enable point cloud projection. Other cameras can display images with the calibration field left blank. Skip this step if you do not need camera images.

After creating the task, use **Classes** to inspect points by class and **Instances** to select existing instances. Try adding points, removing points, or splitting an instance. Class ID `252` represents `moving-car`. The labels retain moving-object classes, which are defined in the sample class file.

> [!NOTE]
> The sample calibration applies only to `image_02`. Other cameras require their own calibration to display point cloud overlays. For additional frames, point clouds, labels, and images must share a filename stem. Label counts and ordering must match the original point clouds.

The point clouds and images come from [KITTI](https://www.cvlibs.net/datasets/kitti/raw_data.php). See [SemanticKITTI](https://semantic-kitti.org/dataset.html) for the segmentation classes and point-level label format. The associated paper is *SemanticKITTI: A Dataset for Semantic Scene Understanding of LiDAR Sequences* (Behley et al., ICCV 2019). The data is licensed under [CC BY-NC-SA 3.0](https://creativecommons.org/licenses/by-nc-sa/3.0/); retain attribution to KITTI and SemanticKITTI when using it.

### Assigning Semantic Classes

1. Select a target class in the **Classes** panel on the right, then click **Assign semantic**.
2. Press `B` to select the brush. Hold the left mouse button to paint and release it to apply the annotation. Use `Ctrl+scroll` to adjust the brush size.
3. Alternatively, press `P` to select the polygon tool. Click along the region's boundary, then press `Enter`, double-click, or click the starting point to complete the selection.
4. Press `V` to return to navigation mode. Rotate the view to inspect edges and hidden surfaces, then continue annotating as needed.

Select another class and paint or draw a polygon to change existing point labels. Changing a point's class clears its previous instance ID. To remove incorrect annotations, select class **0 (unlabeled)** and use **Assign semantic** on the affected region. This clears both semantic and instance labels.

### Controlling the Selection Scope

By default, selection includes only surface points visible from the current viewpoint, which is useful for following visible outlines. Enable **Through selection** to select points at all depths within the brush or polygon area, allowing you to annotate an entire object at once.

Hidden or locked points are not modified by the brush or polygon tools. In dense scenes, hide unrelated classes first and inspect the result from multiple viewpoints to avoid selecting separate objects at different depths.

### Creating Instances

Semantic segmentation identifies an object's class; instance segmentation also distinguishes individual objects. For example, two cars both belong to `car`, but each should have its own instance.

1. Assign a semantic class to the target points.
2. Select that class in **Classes**, then click **Create instance**.
3. Use the brush or polygon tool to select the points of one object. Completing the selection creates an instance. Repeat for the next object.

Instance creation only affects selected points that belong to the current class; points from other classes are excluded. If selected points already belong to another instance, you will be asked to confirm their transfer. Instance IDs are assigned within each class, so an instance is identified by its class ID and instance ID together.

### Editing and Managing Instances

Select an instance in the **Instances** list on the right, then choose an operation:

| Action | Method and effect |
| --- | --- |
| Add points | Choose **Add to current instance** and select points of the same class to add them to the instance. |
| Remove points | Choose **Remove from current instance** and select the points to remove. Their semantic class is preserved. |
| Split | Choose **Split current instance** and select part of the instance to create a new instance of the same class. |
| Merge | Hold `Ctrl` to select multiple instances of the same class, then click the merge icon in the panel header. The instance ID of the current row is retained. |
| Focus | Select an instance and click the focus icon in the panel header to center the view on it. |
| Delete an instance | Click the delete icon in the instance row to clear its instance ID. The points retain their semantic class. |
| Lock | Click the lock icon for an instance or class to prevent accidental edits. Unlock it before editing. |

Merging or deleting affects the entire instance, including hidden points, and requires confirmation. You do not need to create instances for semantic segmentation alone.

### Saving and Label File Format

Semantic and instance labels are saved together automatically in a `.label` file with the same filename stem as the point cloud: for example, `000000.bin` uses `000000.label`. Class definitions use the `segmentation` section of the class JSON file described earlier. Save this file in the first step of task creation.

A `.label` file is a binary file without a header. It stores one **little-endian unsigned 32-bit integer (uint32)** per point, in the original point cloud order:

| Component | Definition |
| --- | --- |
| Lower 16 bits | Semantic class ID in the range 0–65535; 0 means unlabeled. |
| Upper 16 bits | Instance ID in the range 0–65535; 0 means no instance assigned. |
| Encoding | `label = (instance_id << 16) \| semantic_id`. |
| Decoding | `semantic_id = label & 0xFFFF`; `instance_id = label >> 16`. |
| File size | Number of points × 4 bytes. |

For example, a point with class ID `10` and instance ID `2` is stored as `(2 << 16) | 10 = 131082`. For a point with only a semantic annotation, the stored value is simply its class ID.

> [!IMPORTANT]
> Each label corresponds to a point in the original point cloud. Preserve the point count and ordering after annotation. Do not reuse the original labels after deleting, reordering, or downsampling points.

Keep the **original point clouds, per-frame `.label` files, and class file** when sharing annotations. To continue annotating, load the corresponding classes, point clouds, and annotation output directory.

---

### En User Guide (`docs/en/user_guide.md`)

# User Manual

This guide provides comprehensive instructions for using X-AnyLabeling, covering everything from basic file management and annotation tasks to advanced features and customization.

## 0. Table of Contents
   * [1. File Management](#1-file-management)
      * [1.1 Importing Data](#11-importing-data)
      * [1.2 Deleting Data](#12-deleting-data)
      * [1.3 Switching Images](#13-switching-images)
      * [1.4 Saving Label Data](#14-saving-label-data)
      * [1.5 Embedding Image Data](#15-embedding-image-data)
   * [2. Editing](#2-editing)
      * [2.1 Creating Shapes](#21-creating-shapes)
      * [2.2 Editing Shapes](#22-editing-shapes)
      * [2.3 Editing Labels](#23-editing-labels)
      * [2.4 Adding Image Captions](#24-adding-image-captions)
      * [2.5 Searching Images](#25-searching-images)
   * [3. View Options](#3-view-options)
      * [3.1 Canvas Controls](#31-canvas-controls)
      * [3.2 Image Display](#32-image-display)
      * [3.3 Shape Display](#33-shape-display)
      * [3.4 Crosshair Customization](#34-crosshair-customization)
      * [3.5 Navigator](#35-navigator)
      * [3.6 Compare View](#36-compare-view)
      * [3.7 Image Tags](#37-image-tags)
   * [4. Annotation Formats (Import/Export)](#4-annotation-formats-importexport)
      * [4.1 YOLO Format](#41-yolo-format)
      * [4.2 VOC Format](#42-voc-format)
      * [4.3 COCO Format](#43-coco-format)
      * [4.4 DOTA Format](#44-dota-format)
      * [4.5 Mask Format](#45-mask-format)
      * [4.6 MOT Format](#46-mot-format)
      * [4.7 PPOCR Format](#47-ppocr-format)
      * [4.8 ODVG Format](#48-odvg-format)
      * [4.9 VLM-R1-OVD Format](#49-vlm-r1-ovd-format)
      * [4.10 MMGD Format](#410-mmgd-format)
   * [5. Toolbar Tools](#5-toolbar-tools)
      * [5.1 Data Statistics (Overview)](#51-data-statistics-overview)
      * [5.2 Save Cropped Images](#52-save-cropped-images)
      * [5.3 Label Manager](#53-label-manager)
      * [5.4 Shape Type Conversion](#54-shape-type-conversion)
      * [5.5 Digit Shortcut Manager](#55-digit-shortcut-manager)
      * [5.6 Group ID Manager](#56-group-id-manager)
      * [5.7 Shape Manager](#57-shape-manager)
   * [6. Help and Language](#6-help-and-language)
      * [6.1 About X-AnyLabeling](#61-about-x-anylabeling)
      * [6.2 Setting the Language](#62-setting-the-language)
   * [7. Configuration](#7-configuration)
      * [7.1 Keyboard Shortcuts](#71-keyboard-shortcuts)
      * [7.2 Custom Label Colors](#72-custom-label-colors)
      * [7.3 Predefined Labels](#73-predefined-labels)
      * [7.4 Auto-Switch to Edit Mode](#74-auto-switch-to-edit-mode)
      * [7.5 Hover Auto-Highlight](#75-hover-auto-highlight)
      * [7.6 Shape Appearance](#76-shape-appearance)
      * [7.7 Model Download Source](#77-model-download-source)
      * [7.8 Theme Settings](#78-theme-settings)
      * [7.9 Font Settings](#79-font-settings)
   * [8. Supported Tasks](#8-supported-tasks)
      * [8.1 Image Classification](#81-image-classification)
      * [8.2 Object Detection](#82-object-detection)
      * [8.3 Image Segmentation](#83-image-segmentation)
      * [8.4 Pose Estimation](#84-pose-estimation)
      * [8.5 Face Estimation](#85-face-estimation)
      * [8.6 Multi-Object Tracking](#86-multi-object-tracking)
      * [8.7 Depth Estimation](#87-depth-estimation)
      * [8.8 Optical Character Recognition (OCR)](#88-optical-character-recognition-ocr)
      * [8.9 Interactive Video Object Segmentation (IVOS)](#89-interactive-video-object-segmentation-ivos)
      * [8.10 Matting](#810-matting)
      * [8.11 Vision Foundation Models](#811-vision-foundation-models)
      * [8.12 Zero-Shot Counting](#812-zero-shot-counting)
      * [8.13 Grounding](#813-grounding)
   * [9. Custom Models](#9-custom-models)
   * [10. Advanced Features](#10-advanced-features)


## 1. File Management

This section explains how to import, manage, and save data in X-AnyLabeling. You can import images and videos using various methods, including menu options and keyboard shortcuts. It also covers deleting data, switching between images, and saving labels, helping you maintain an efficient workflow and manage your data securely.

### 1.1 Importing Data

After opening the application, select the type of data you want to import from the `File` menu or use the keyboard shortcuts:

X-AnyLabeling supports importing data in the following ways:

- **Image File Directory** (`Ctrl+U`): Import all image files within a selected directory, including those nested in subdirectories.
- **Single Image File** (`Ctrl+I`): Import an individual image file (formats: `*.jpg`, `*.png`, `*.bmp`, `*.webp`, `*.tif`).
- **Single Video File** (`Ctrl+O`): Import an individual video file (formats: `*.mp4`, `*.avi`, `*.mov`, `*.mkv`, `*.wmv`, `*.flv`). Video frames will be extracted for annotation.

### 1.2 Deleting Data

X-AnyLabeling offers the following options for deleting data:

- **Delete Label File** (`Ctrl+Delete`): Deletes the annotation file (`.json`) associated with the currently displayed image. **Warning:** This action cannot be undone.
- **Delete Image File** (`Ctrl+Shift+Delete`): Moves the currently displayed image file and its corresponding label file (if any) to a `_delete_` subfolder within the image directory.

### 1.3 Switching Images

Navigate between images in your dataset using these methods:

- **Next/Previous Image**: Use the `D` key (next) or `A` key (previous) to move sequentially through the image list.
- **Jump by Annotation Check Status**:
    - `Ctrl+Shift+D`: Jump to the next unchecked annotation.
    - `Ctrl+Shift+A`: Jump to the previous unchecked annotation.
- **Toggle Annotation Check Status**: Right-click the canvas and choose `Mark as Checked` or `Mark as Unchecked`, or press `Ctrl+Alt+K`. The file list shows this review state with a colored dot: green means checked, gray means unchecked.
- **Jump to Specific Image**: Type the exact filename (including extension) into the file search bar at the bottom right and press `Enter`.

The checkboxes in the file list are not editable by default. To enable editing, open `Settings` (`Ctrl+0`) and enable `File List Checkbox Editable` under `General`, or set `file_list_checkbox_editable` to `true` in the configuration file.
These checkboxes indicate whether a label file exists and are separate from the annotation check status dot.

### 1.4 Saving Label Data

X-AnyLabeling enables auto-save by default. You can verify or toggle this setting via `File` > `Auto Save`.

Label files are saved in `*.json` format in the same directory as the images by default. The structure is:

```
/* Detailed source-code truncated for AI context efficiency. */
```

> [!NOTE]
> To save labels elsewhere, select `File` > `Change Output Directory`. The relative `imagePath` in the JSON is adjusted for the selected output directory.

### 1.5 Embedding Image Data

To embed the image data (encoded in `base64` by default) directly into the `.json` label file, enable the `Save Image Data` option under the `File` menu. This increases the JSON file size but makes it self-contained.

## 2. Editing

This section explains how to create, edit, and manage different types of annotation objects (shapes) and their associated labels in X-AnyLabeling.

### 2.1 Creating Shapes

In X-AnyLabeling, each distinct annotated object is called a `shape`. Key properties stored for each shape include:

| Field         | Type    | Description                                                      |
|---------------|---------|------------------------------------------------------------------|
| `label`       | String  | Category label of the object.                                    |
| `score`       | Float   | Confidence score (often from AI model inference). `null` if not available. |
| `points`      | Array   | List of `[x, y]` coordinates defining the shape vertices.        |
| `group_id`    | Integer | ID to group multiple related shapes (e.g., keypoints for a pose). `null` if not grouped. |
| `description` | String  | Optional text description for the shape.                         |
| `difficult`   | Boolean | Flags the object as difficult to identify (`true` if difficult).   |
| `shape_type`  | String  | Type of shape, e.g., `"rectangle"`, `"polygon"`.                 |
| `flags`       | Dictionary | Dictionary for additional flags or attributes. `null` if none.      |
| `attributes`  | Dictionary | Dictionary for custom object attributes. Empty `{}` if none.      |
| `kie_linking` | List    | Information linking shapes (e.g., for Key Info Extraction). Empty `[]` if none. |
| `cuboid3d`    | Dictionary | Cuboid-only metadata for 3D projection in 2D, including `version`, `mode`, `vertices2d_order`, `depth_vector`, and `source`. |

For detailed field definitions, see [`shape.py`](../../anylabeling/views/labeling/shape.py).

You can create the following shape types using the tools in the left toolbar, the canvas right-click context menu, or keyboard shortcuts:

| Shape Type | Shortcut | Drawing Method |
| --- | --- | --- |
| `rectangle` | `R` | Click to set the first corner, move the cursor, and click again to set the opposite corner. |
| `rotation` | `O` | Draw an initially horizontal or vertical box as you would a rectangle. In editing mode, select the shape and press `Z`, `X`, `C`, or `V` to adjust its angle. |
| `polygon` | `P` | Click along the boundary to add vertices, then click the starting vertex or double-click the last vertex to finish. At least three vertices are required. |
| `quadrilateral` | `T` | Click four corners in sequence; the fourth click completes the shape. |
| `point` | `Shift+P` | Click to place one keypoint. |
| `line` | `Shift+L` | Click to set the start point, move the cursor, and click again to set the end point. Hold `Shift` while drawing to snap horizontally or vertically. |
| `linestrip` | `Shift+S` | Click to add connected vertices and double-click to finish. Hold `Shift` while drawing a segment to snap it horizontally or vertically. |
| `circle` | `Shift+C` | Click to set the center, move the cursor to define the radius, and click again to finish. |
| `cuboid` | `Ctrl+R` | Draw the front face as a rectangle. The rear face is generated from `canvas.cuboid.default_depth_vector`, configurable under `Settings > Canvas > Cuboid`; depths below the limit are constrained by `canvas.cuboid.min_depth`. |

In addition, X-AnyLabeling supports two assisted ways to create polygon objects:

**Brush Polygon** (`Ctrl+N`): Click to set the starting point, then move the cursor along the object boundary to add vertices automatically. Returning near the starting point closes the contour and creates a `polygon`.

<p align="center">
  <img src="../../assets/resources/brush_polygon.gif" alt="Creating a polygon by tracing its boundary in Brush Polygon mode">
</p>

**Magic Wand** (`Shift+W`): Press and hold the left mouse button on the target to preview a color-similar region connected to the starting pixel, then drag in any direction to increase the color tolerance. Releasing the left button keeps the preview without creating an annotation; right-click to confirm it as a `polygon`, or press `Esc` to cancel.

<p align="center">
  <img src="../../assets/resources/magic_wand.gif" alt="Creating a polygon from a connected color-similar region with the Magic Wand">
</p>

### 2.2 Editing Shapes

X-AnyLabeling provides two shape interaction modes:

- **Drawing Mode** allows rapid creation of new shapes.
- **Editing Mode** enables operations such as undo (`Ctrl+Z`), copy (`Ctrl+C`), paste (`Ctrl+V`), delete (`Delete`), move, resize, and rotate.

Press `Ctrl+J` to quickly switch between Drawing and Editing modes.

In Editing Mode, click a shape on the canvas to select it. Its outline and control points are highlighted, and the corresponding entry is selected in the **Shapes** panel, making it easier to identify the active object in crowded scenes.

<p align="center">
  <img src="../../assets/resources/canvas_shape_selection.gif" alt="Selecting different annotation shapes directly on a crowded canvas">
</p>

Additional object-specific operations:

To protect completed annotations, select one or more shapes and check **Lock Shape** in the canvas right-click menu. You can also right-click selected items in the **Shapes** panel to invert each item's lock state; locked items display a lock icon. Locked shapes remain selectable and allow label and attribute edits, while geometry changes and deletion are disabled.

When **Show Groups** is enabled, each group displays an interactive bounding frame and a compact badge such as `G3 · S5` (group 3 with 5 shapes). Clicking a shape still selects that shape first. Click the badge, frame, or empty area inside the frame to select the whole group, then drag it or use the arrow keys to move all members together (`Shift` accelerates keyboard movement). Copying and pasting a selected group assigns the pasted group the next available group ID and offsets it slightly. Deleting a selected group requires confirmation.

- **Rectangles**: You can drag a rectangle's corner handles to resize it, or select multiple rectangles and merge them using the right-click menu. Mouse wheel editing is also supported; you can enable it in `Settings > Canvas > Wheel Editing > Enable Wheel Rectangle Editing`, or via the `wheel_rectangle_editing` setting. When enabled, scrolling inside the rectangle scales it, while scrolling outside adjusts the nearest edge. Note: wheel rectangle editing is automatically disabled when `auto_highlight_shape` is enabled.
- **Polygons**: In Editing Mode, dragging an edge adds a new vertex, and holding `Shift` while clicking a vertex removes it. When exactly one polygon or line strip is selected, you can hold `Alt` to enter eraser mode, then drag with the left mouse button across vertices to remove them and reconnect the remaining points. If a polygon has fewer than 3 points, or a line strip has fewer than 2 points, the object is removed and can be restored with undo. Polygons also support merging via the right-click menu. When exactly one `polygon` is selected, you can also activate **Edit Brush** from the toolbar, context menu, or with `Shift+B`: drag with the left mouse button to expand the region, hold `Ctrl` while dragging to erase, and use the mouse wheel to resize the brush. Stroke-level undo and redo are supported, and the target remains locked while editing. Right-click or turn off Edit Brush to commit; press `Esc`, switch images, or select another tool to discard the changes and restore the original polygon. Brush point spacing and contour simplification tolerance are available under `Settings > Canvas > Interaction > Brush`; set the simplification tolerance to `0` to preserve the extracted contour points.
- **Rotated Rectangles**: Select a rotated rectangle, drag the rotation handle above it for quick coarse angle adjustment, then press `Z`, `X`, `C`, or `V` for fine-grained rotation control. A real-time display of the rotation angle is available via the View menu.
- **Cuboid**: In Edit Mode, cuboid controls include 11 visible handles: 4 front vertices, 4 front edge centers, 2 visible rear vertices, and 1 visible rear edge center (depth handle). Dragging the front face moves the whole cuboid. Dragging the left/right/back faces adjusts geometry. Dragging rear visible vertices adjusts vertical alignment of top/bottom planes, while dragging the rear center adjusts depth with geometric constraints. The visible rear side is determined automatically from the depth vector direction.

Additionally, you can quickly copy the coordinates of any selected shape to your clipboard using the **Copy Coordinates** option from the right-click context menu. For rectangles, this outputs the format `[x1, y1, x2, y2]` (top-left and bottom-right corners), while other shape types output `[x1, y1, x2, y2, x3, y3, ...]` (all vertex coordinates). In Editing Mode, double-clicking a shape on the canvas opens the label editor; you can disable this in `Settings > Canvas > Interaction > Double Click Edit Label`, or via the `double_click_edit_label` canvas setting (default: true).

When drawing a shape on a zoomed canvas with scrollbars, hold `Space` and drag with the left mouse button to temporarily pan the canvas without leaving Drawing Mode.

> [!TIP]
> When an image contains many shapes, use the following navigation tools to review them one by one without manually locating each shape.

**Loop Through Objects** (`Ctrl+Shift+N`) centers and zooms in on each shape in sequence. Use it to inspect boundaries, vertices, and other annotation details. Trigger the command again to advance to the next shape.

<p align="center">
  <img src="../../assets/resources/zoom_shapes.gif" alt="Loop through shapes by centering and zooming in on each one">
</p>

**Loop Select Objects** (`Ctrl+Shift+C`) selects each shape in sequence while keeping the current canvas view. Use it to review or edit labels, attributes, and other shape properties efficiently. Trigger the command again to select the next shape.

<p align="center">
  <img src="../../assets/resources/loop_shapes.gif" alt="Loop through shapes by selecting each one in sequence">
</p>

### 2.3 Editing Labels

When you create a shape or select an existing one in Edit Mode, the label panel appears (usually on the right), allowing you to edit its properties:

| Field              | Description                                                          |
|--------------------|----------------------------------------------------------------------|
| **Shape Label**    | Enter or select the object's category label (supports fuzzy search). |
| **Group ID**       | Assign a numeric ID to group related shapes (e.g., for poses, tracking). |
| **Difficult**      | Check this box if the object is difficult to recognize.             |
| **Label List**     | Displays available labels, allowing selection.                      |
| **Description**    | Add optional text notes specific to this shape instance.             |
| **Label Linking**  | Used for linking shapes in tasks like Key Information Extraction (KIE). |
| **Attributes**     | (If configured) Set custom attributes for the shape.               |

### 2.4 Adding Image Captions

X-AnyLabeling allows you to add a description or caption to the entire image:

1. Enter Edit Mode (`Ctrl+J`).
2. Click an empty area of the canvas.
3. Enter text in the `Description` field in the right panel. The value is saved in the top-level `description` field of the label JSON.

### 2.5 Searching Images

The file search feature supports multiple search modes to help you quickly locate target images. Enter your search criteria in the search box above the file list on the right panel and press Enter to execute the search.

You can also right-click an image in the file list to open a context menu for quick copy operations:

- **Copy File Name**: Copies only the selected image filename, such as `image001.jpg`.
- **Copy File Path**: Copies the full selected image path to the clipboard.

The following search modes are currently supported:

**Text Search**

Enter plain text directly, and the system will search for files whose names contain that text. For example, entering `test` will find all images with "test" in their filename.

**Index Search**

Use the `#N` format to target an image by index, where `N` must be a positive integer. Examples:
- `#1` targets the 1st image in the current file list
- `#10` targets the 10th image in the current file list

**Regular Expression Search**

Use the `<pattern>` format for regular expression searches. Examples:
- `<\.png$>` searches for all PNG format images
- `<test.*\.jpg$>` searches for images whose filenames start with "test" and end with ".jpg"

**Attribute Search**

Filter images by object attributes using the format `attribute::value`:

- `difficult::1` or `difficult::true`: Find images containing difficult annotations
- `gid::0`: Find images containing objects with group ID 0 (supports any integer group ID)
- `shape::1` or `shape::true`: Find annotated images (containing at least one annotation object)
- `label::person`: Find images containing objects labeled "person"
- `type::rectangle`: Find images containing rectangle objects. Supported types include: `rectangle`, `polygon`, `rotation`, `quadrilateral`, `point`, `line`, `circle`, `linestrip`
- `score::[0,0.5]`: Find images containing objects with scores in the range [0, 0.5] (closed interval)
- `score::(0,0.6]`: Find images containing objects with scores in the range (0, 0.6] (left-open, right-closed)
- `score::[0,0.6)`: Find images containing objects with scores in the range [0, 0.6) (left-closed, right-open)
- `score::(0,0.6)`: Find images containing objects with scores in the range (0, 0.6) (open interval)
- `description::1` or `description::true`: Find images containing objects with non-empty descriptions
- `checked::1` or `checked::true`: Find checked images
- `checked::0` or `checked::false`: Find unchecked images; images without generated label files are also treated as unchecked

## 3. View Options

This section explains how to customize the view settings in X-AnyLabeling, including adjusting the canvas, image appearance, and how shape information is displayed, to optimize your workflow.

### 3.1 Canvas Controls

- **Zoom In** (`Ctrl + +`)
- **Zoom Out** (`Ctrl + -`)
- **Zoom to Actual Size (100%)** (`Ctrl + =`)
- **Zoom to Fit Window** (`Ctrl + F`)
- **Zoom to Fit Width** (`Ctrl + Shift + F`)

In addition to using menu options and shortcuts, you can zoom dynamically by holding `Ctrl` and using the mouse scroll wheel. This is useful for precise annotations, especially on small objects.

To maintain the current zoom level when switching between images, enable `View` > `Keep Previous Zoom Ratio`.

### 3.2 Image Display

X-AnyLabeling allows you to adjust the appearance of the current image and the visibility of annotations:

Use the collapsible **Canvas Display** panel at the bottom-left of the canvas to adjust annotation opacity and the appearance of the underlying image. Click the caret button to collapse or expand the panel.

**Annotation opacity:** Drag the **Opacity** slider to make annotation shapes and masks more or less transparent. Label text remains fully visible so that categories are still easy to identify.

<p align="center">
  <img src="../../assets/resources/annotation_opacity.gif" alt="Adjusting annotation shape and mask opacity from the Canvas Display panel">
</p>

**Image brightness:** Drag the **Brightness** slider to lighten or darken the underlying image without modifying the image file or annotation data.

<p align="center">
  <img src="../../assets/resources/image_brightness.gif" alt="Adjusting image brightness from the Canvas Display panel">
</p>

**Image contrast:** Drag the **Contrast** slider to increase or reduce tonal separation in the underlying image, which can make object boundaries easier to distinguish.

<p align="center">
  <img src="../../assets/resources/image_contrast.gif" alt="Adjusting image contrast from the Canvas Display panel">
</p>

To apply the current adjustments to all subsequent images in the session, enable `View` > `Keep Current Brightness` and `View` > `Keep Current Contrast`.

### 3.3 Shape Display

You can control the visibility of various shape attributes:

- Toggle display of label names next to shapes (`Ctrl+L` or `View` > `Show Labels`).
- Toggle display of shape descriptions (`Ctrl+T` or `View` > `Show Text`).
- Toggle display of other info like Group IDs, rotation angles, scores (check `View` menu for options).

When you hover over a shape, its dimensions (width and height) are displayed in the status bar.

> [!TIP]
> In the **Shapes** list on the right panel, right-click and select **Filter by Label** or **Filter by Group ID** to filter objects.
> The global show/hide control for all shapes is available in the left toolbar as an **eye/hidden** toggle button (click once to hide all, click again to show all).

### 3.4 Crosshair Customization

Press `Ctrl+0` to open `Settings`, then go to `Canvas > Interaction > Crosshair` to show or hide the crosshair and configure its width, color, and opacity.

The crosshair spans the visible canvas and intersects at the cursor position. As the cursor moves, the status bar displays its pixel coordinates in real time.

### 3.5 Navigator

<p align="center">
  <img src="../../assets/resources/navigator.png" alt="Crosshair Customization">
</p>

The navigator helps you quickly navigate to any area of high-resolution images.

To open the navigator, simply click `View` -> `Navigator` in the menu bar or press the shortcut key `F9`. The navigator displays a thumbnail of the current image in a separate window, with a red frame indicating your current visible area.

You can click anywhere on the thumbnail to quickly jump to that location, or drag the red frame to move your view. The navigator also displays all your annotated objects in real-time, giving you a clear overview of your progress.

At the bottom of the navigator, you can precisely set the zoom ratio through the input box (supporting 1% to 1000%), or drag the slider to adjust it. Additionally, you can use the mouse wheel to zoom directly in either the main canvas or the navigator window.

This feature is particularly useful when working with ultra-high resolution images, allowing you to maintain precise local operations while keeping the global perspective.

### 3.6 Compare View

<p align="center">
  <img src="../../assets/resources/compare_view.gif" alt="Compare-View">
</p>

Compare View lets you compare two images side by side in a split-screen interface. It is useful for:

- **Infrared and visible-light fusion**: Comparing thermal and RGB images to identify targets that are clearer in different spectra.
- **Mask preview**: Viewing segmentation results overlaid on the original image in real time.
- **Image super-resolution**: Comparing an enhanced image with the original image.

**How to use:**

1. Open an image directory and load an image.
2. Select `File` > `Compare View` (or press `Ctrl+Alt+C`) to open the comparison directory selector.
3. Select the directory containing the comparison image. Its filename must match that of the main image; the base filenames must be the same, but the extensions may differ.
4. Use the slider at the bottom to adjust the split position, or hold `Shift` while scrolling the mouse wheel to move the divider.
5. Click the close button (×) on the slider to exit Compare View.

> [!NOTE]
> The comparison image must have the same dimensions as the original image, and its filename must match the original filename.

### 3.7 Image Tags

Use `View` > `Image Tags` or press `Ctrl+Shift+T` to show or hide the image tag panel below the canvas.

The image tag panel supports the following operations:

- Click `+` to add a tag. Double-click a tag to edit its text, drag a tag to reorder it, or use the close button to delete it individually.
- Click `−` to enter batch mode. Select one or more tags, then click `Delete` to remove them at once.
- Click `C` to copy all tags to the clipboard as a comma-separated list, such as `tag1,tag2,tag3`.

## 4. Annotation Formats (Import/Export)

`X-AnyLabeling` supports importing and exporting annotations in various standard formats. This section provides a guide for each. Access import/export functions via the `File` menu or dedicated toolbar buttons (e.g., `Import Annotations`, `Export Annotations`).

> [!TIP]
> You can also consider to use the command-line tool for batch conversions! The CLI provides more efficient and flexible label format conversion capabilities, especially suited for large-scale datasets. See the [CLI docs](./cli.md#3-label-format-conversion) for details.

**General Notes:**
- **Configuration Files:** Many formats require specific configuration files (e.g., listing class names) for import/export. Ensure these are prepared correctly.
- **Default Export Path:** By default, exported files are saved to a format-specific subfolder (e.g., `labels`, `Annotations`, `mask`) within the current image directory. You can usually specify a different output path during export.

### 4.1 YOLO Format

Supports YOLO format (`*.txt`) labels for object detection, instance segmentation, rotated bounding boxes, and keypoint detection.

**Configuration:**
- **Detection/Segmentation/Rotation:** Prepare a `classes.txt` file listing class names, one per line (0-indexed). See example: [`classes.txt`](../../assets/classes.txt).
- **Keypoint Detection (Pose):** Prepare a `*.yaml` file defining the skeleton and class names. See example: [`yolov8_pose.yaml`](../../assets/yolov8_pose.yaml). Refer to the [Ultralytics Docs](https://docs.ultralytics.com/datasets/pose/#ultralytics-yolo-format) for format details (e.g., `kpt_shape`, `flip_idx`).

> **Note:** For YOLO-Pose export, you must assign the same `group_id` to each bounding box and its corresponding keypoints during annotation so they are correctly associated.

**Importing:**
1. Click the `Import` button in the top menu bar.
2. Select the corresponding task.
3. Upload the prepared configuration file.
4. Select the directory containing the label files.
5. Optionally check "Preserve Existing Annotations" to merge new annotations with existing ones.
6. Click OK to confirm.

**Exporting:**
1. Select `Export Annotations` > `Export YOLO Annotations`.
2. Select the corresponding task.
3. Provide the required configuration file.
4. Configure options (e.g., coordinate format) if prompted and click OK.
5. Export path defaults to a `labels` subfolder. Sample: [`demo.txt`](../../assets/labels/demo.txt).

### 4.2 VOC Format

Supports Pascal VOC format (`*.xml`) labels for object detection (bounding boxes) and segmentation (polygons saved within the XML, if applicable).

**Configuration:** None usually required for standard VOC detection import/export. For segmentation, ensure labels match your desired classes.

**Importing:**
1. Select `Import Annotations` > `Import VOC Annotations`.
2. Select the directory containing the `*.xml` files (usually named `Annotations`).

**Exporting:**
1. Select `Export Annotations` > `Export VOC Annotations`.
2. Configure options if prompted and click OK.
3. Export path defaults to an `Annotations` subfolder. Sample: [`demo.xml`](../../assets/Annotations/demo.xml).

### 4.3 COCO Format

Supports COCO format (`*.json`) labels for object detection, instance segmentation, and keypoint detection.

**Configuration:**
- **Detection (rectangle) / Segmentation (polygon):** Prepare a `classes.txt` file. For export, ensure `_background_` is the first class if required by your training framework. `__ignore__` can also be included.
- **Keypoint Detection (pose):** Prepare a `*.yaml` file similar to YOLO Pose (e.g., [`yolov8_pose.yaml`](../../assets/yolov8_pose.yaml)).
- **Instance Segmentation (polygon):** Prepare a [`labels.txt`](../../assets/labels.txt) file.

**Importing:**
1. Select `Import Annotations` > `Import COCO Annotations`.
2. Select the task type.
3. Provide the required configuration file (`classes.txt` or `*.yaml`).
4. Select the COCO `*.json` annotation file.

**Exporting:**
1. Select `Export Annotations` > `Export COCO Annotations`.
2. Select the task type.
3. Provide the required configuration file.
4. Click OK.
5. Export path defaults to an `annotations` subfolder, saving a single `*.json` file. Sample: [`annotations`](../../assets/annotations).

### 4.4 DOTA Format

Supports DOTA format (`*.txt`) labels for oriented (rotated) object detection. Label format per line:
`x1 y1 x2 y2 x3 y3 x4 y4 class_name difficult`

**Configuration:** None required for import/export, class names are read/written directly.

**Importing:**
1. Select `Import Annotations` > `Import DOTA Annotations`.
2. Select the directory containing the `*.txt` label files (usually `labelTxt`).

**Exporting:**
1. Select `Export Annotations` > `Export DOTA Annotations`.
2. Click OK.
3. Export path defaults to a `labelTxt` subfolder. Sample: [`demo_obb.txt`](../../assets/labelTxt/demo_obb.txt).

### 4.5 Mask Format

Supports importing and exporting semantic segmentation masks as single-channel or color image files (`*.png`).

**Configuration:** Prepare a `*.json` mapping file defining the pixel value (or RGB color) for each class name.
- Color masks: See [`mask_color_map.json`](../../assets/mask_color_map.json).
- Grayscale masks: See [`mask_grayscale_map.json`](../../assets/mask_grayscale_map.json).

The optional `label_priority` object controls how overlapping polygons are rasterized. Higher integer values take precedence. Labels omitted from `label_priority` use priority `0`; polygons with the same priority follow annotation layer order, so shapes later in the XLABEL `shapes` array appear on top. Without `label_priority`, annotation layer order alone determines the visible class. Source annotations remain unchanged.

```json
{
  "type": "grayscale",
  "colors": {"Road": 1, "Car": 2, "Person": 3},
  "label_priority": {"Road": 0, "Car": 10, "Person": 20}
}
```

**Importing:**
1. Select `Import Annotations` > `Import MASK Annotations`.
2. Provide the `*.json` mapping file.
3. Select the directory containing the mask image files (`*.png`).

**Exporting:**
1. Select `Export Annotations` > `Export MASK Annotations`.
2. Provide the `*.json` mapping file.
3. Click OK.
4. Export path defaults to a `mask` subfolder.

### 4.6 MOT Format

Supports importing and exporting Multi-Object Tracking (MOT) challenge format labels.

**Configuration:** Prepare a `classes.txt` file listing class names (0-indexed).

**Importing (`gt.txt`):**
1. Select `Import Annotations` > `Import MOT Annotations`.
2. Provide the `classes.txt` configuration file.
3. Select the directory containing the `gt.txt` file (and potentially `seqinfo.ini`).

**Exporting (creates `gt.txt`, `det.txt`, `seqinfo.ini`):**
1. Select `Export Annotations` > `Export MOT Annotations`.
2. Provide the `classes.txt` configuration file.
3. Choose the output directory and click OK.

> Sample files (`seqinfo.ini`, `det.txt`, `gt.txt`) are available in the [`MOT`](../../assets/MOT/) directory.

**File Formats:**
- **`seqinfo.ini`**: Sequence metadata (name, frame rate, dimensions, etc.).
- **`det.txt`**: Detection results (used by some trackers, format: `frame,id,bb_left,bb_top,bb_width,bb_height,conf,-1,-1,-1`). Exported detections might have default confidence/ID.
- **`gt.txt`**: Ground truth tracking annotations (format: `frame,id,bb_left,bb_top,bb_width,bb_height,valid,class_id,visibility`).
    - `id`: Corresponds to the `group_id` assigned in X-AnyLabeling.
    - `valid`: `1` for valid, `0` for invalid/ignored. This corresponds to the 'Difficult' checkbox in the label editing panel; checking 'Difficult' marks the trajectory as invalid (`0`).
    - `class_id`: 0-indexed based on your `classes.txt`.

**MOTS (Segmentation Tracking) Export:**
X-AnyLabeling supports exporting polygon annotations in a MOTS-compatible format through the CLI.

> [!NOTE]
> Run the following command with the directory containing the XLABEL JSON files, an output directory, and a `classes.txt` file:
> ```bash
> # Requires pycocotools: pip install pycocotools
> xanylabeling convert --task xlabel2mots --labels /path/to/xlabel/labels --output /path/to/output --classes classes.txt
> ```

### 4.7 PPOCR Format

Supports importing and exporting labels for PaddleOCR (PPOCR) tasks.

**Tasks Supported:**
- **Text Detection and Recognition:** Locates text boxes and recognizes content.
- **Key Information Extraction (KIE):** Extracts entities and relations from text regions.

**Importing:**
1. Select `Import Annotations` > `Import PPOCR Annotations`.
2. Select the task (Recognition or KIE).
3. Choose the appropriate label file (`Label.txt` for Rec, `kie.json` for KIE).

**Exporting:**
1. Select `Export Annotations` > `Export PPOCR Annotations`.
2. Select the task.
3. Click OK.

**Export Paths & Files:**
- **Recognition:** Defaults to `ppocr-rec` subfolder. Contains:
    - `Label.txt`: Detection & transcription annotations.
    - `rec_gt.txt`: Recognition ground truth (transcriptions only).
    - `crop_img/`: Cropped images of text regions for recognition training.
- **KIE:** Defaults to `ppocr-kie` subfolder. Contains:
    - `class_list.txt`: List of KIE entity classes.
    - `ppocr_kie.json`: KIE annotation results (linking text regions).

Samples: [`ppocr-rec`](../../assets/ppocr/ppocr-rec/), [`ppocr-kie`](../../assets/ppocr/ppocr-kie/).

### 4.8 ODVG Format

Supports importing/exporting ODVG format annotations for visual grounding tasks.

**Configuration:** Prepare a `classes.txt` file listing category names.

**Importing:**
1. Select `Import Annotations` > `Import ODVG Annotations`.
2. Select the directory containing the ODVG label files.

**Exporting:**
1. Select `Export Annotations` > `Export ODVG Annotations`.
2. Provide the `classes.txt` configuration file.
3. Choose the save path and click OK.

Sample: [`ODVG`](../../assets/ODVG).

### 4.9 VLM-R1-OVD Format

Supports importing/exporting VLM-R1-OVD format (`.jsonl`) labels, often used for Open-Vocabulary Detection tasks.

**Configuration (Export):**
- `classes.txt` (Optional): Provide a `classes.txt` file to export only annotations matching those specific categories/phrases. If omitted, all unique labels found in the images are used as prompts for export.

**Importing:**
1. Select `Import Annotations` > `Import VLM-R1-OVD Annotations`.
2. Choose the `.jsonl` annotation file.

**Exporting:**
1. Select `Export Annotations` > `Export VLM-R1-OVD Annotations`.
2. (Optional) Provide the `classes.txt` file if filtering categories.
3. Fill in other configuration items if prompted and click OK.
4. Images without any labels (or matching labels if `classes.txt` is used) are automatically skipped during export.
Sample: [`vlm_r1_ovd.jsonl`](../../assets/vlm_r1_ovd.jsonl).

### 4.10 MMGD Format

X-AnyLabeling supports one-click import of annotation files generated by [MM-Grounding-DINO](https://github.com/open-mmlab/mmdetection/blob/main/configs/mm_grounding_dino/README.md) predictions.

**Importing:**
1. Click the `Import` button in the top menu bar.
2. Select the corresponding task type.
3. Upload the category file.
4. Select the directory containing the annotation files, choose the categories of interest, set the confidence threshold according to your needs, and click OK.

The [`classes.txt`](../../assets/classes.txt) file is used for mapping label indices to category names. Each line represents a category, with indices assigned sequentially starting from 0 (top to bottom).

## 5. Toolbar Tools

The toolbar (usually at the top or integrated with the menu) provides access to additional tools and functionalities.

### 5.1 Data Statistics (Overview)

`X-AnyLabeling` provides a data statistics tool (`Tools` > `Overview`) for reviewing your annotation progress.

**Features:**
- **Flexible Scope**: Analyze all images or select a specific range using sliders or input fields. Statistics update in real-time.
- **Detailed Breakdown**: View counts per label category and per shape type (rectangle, polygon, etc.). Get an overall dataset summary.
- **Export Reports**: Generate a zip archive containing detailed CSV files (`label_infos.csv`, `shape_infos.csv`) and the class list (`classes.txt`).

<p align="center">
  <img src="../../assets/resources/overview.png" alt="Overview Window">
</p>

**Usage:**
1. Go to `Tools` > `Overview`.
2. Review the statistics displayed in the window.
3. (Optional) Select a specific image range to analyze.
4. Click `Export` to save the detailed reports as a zip file.

### 5.2 Save Cropped Images

The cropped image saving function can be implemented through the following steps:

1. Click **Tools** > **Save Cropped Images** in the top menu bar.
2. In the popup dialog, configure:
   - Save Path: Choose the target folder for saving cropped images
   - Min Width: Set minimum width in pixels for filtering
   - Min Height: Set minimum height in pixels for filtering
3. After clicking OK, the system will automatically export all annotated objects sorted by category name to the specified path.

You can also use **Tools** > **Save Visualization Image** or **Save Visualization Video** to export the current annotation visualization as an image or video file.

### 5.3 Label Manager

<p align="center">
  <img src="../../assets/resources/label_manager.png" alt="Label Manager for renaming, deleting, hiding, and recoloring labels">
</p>

`X-AnyLabeling` provides tools for managing labels globally across your dataset via `Tools` > `Label Manager`.

**Operations:**
- **Delete Labels**: Remove specific label classes entirely from the list of available labels.
- **Rename Labels**: Replace an existing label name throughout the selected annotation range.
- **Control Label Visibility**: Use the `Visible` column checkboxes to show or hide specific labels on the canvas.
- **Change Label Colors**: Modify the display color for specific label classes *for the current session only*. (For persistent changes, see [7.2 Custom Label Colors](#72-custom-label-colors)).

**Visibility Quick Actions**:
- Right-click on the `Visible` column to quickly:
  - **Select All**: Show all labels at once
  - **Deselect All**: Hide all labels at once
- Visibility settings persist across image switches and take effect after clicking the `Go` button.

### 5.4 Shape Type Conversion

<p align="center">
  <img src="../../assets/resources/shape_converter.png" alt="Shape Converter showing the source and target shape types and batch conversion progress">
</p>

X-AnyLabeling provides a unified **Shape Converter**.
Open it from **Tools -> Shape Converter**, then select a source shape type and a target shape type to run batch conversion.

Currently supported conversion mappings:

- `polygon` -> `rectangle`, `rotation`
- `rectangle` -> `rotation`, `polygon`, `circle`, `quadrilateral`
- `rotation` -> `rectangle`, `quadrilateral`, `polygon`, `circle`
- `line` -> `linestrip`
- `circle` -> `rectangle`, `rotation`, `quadrilateral`, `polygon`
- `quadrilateral` -> `polygon`

Rules:

- Conversions *to* `circle` use an **inscribed-circle** strategy.
- `polygon`/`rotation` -> `rectangle` uses an axis-aligned bounding box (AABB).
- `circle` -> `rectangle`/`rotation`/`quadrilateral` generates a four-point shape from circle center and radius.

> [!WARNING]
> Some conversions lose rotation angles, exact boundaries, or curve details and cannot be reversed. Back up annotations before batch conversion.

### 5.5 Digit Shortcut Manager

<p align="center">
  <img src="../../assets/resources/digit_shortcut_manager.png" alt="Digit Shortcut Manager for assigning drawing modes and default labels to numeric keys">
</p>

The Digit Shortcut Manager assigns a drawing mode and default label to each numeric key (0–9). Open it from **Tools > Digit Shortcut Manager** or press `Alt+D`.

In the Digit Shortcut Manager dialog, users can see a table containing all numeric keys (0-9), with each row including the following information:

- **Digit**: Represents the numeric key (0-9) on the keyboard
- **Drawing Mode**: Choose the type of shape to draw from the dropdown menu, including rectangle, cuboid, polygon, rotation, quadrilateral, circle, line, point, linestrip, or none
- **Label**: Specify the default label name for the shape (required)

**Configuring Shortcuts**: Select the drawing mode corresponding to the digit, enter the default label name for that shape (required when a drawing mode is enabled), then click **OK** to save the settings.

**Resetting Shortcuts**: Click the **Reset** button to clear all shortcut settings. The system will display a confirmation dialog, and all configurations will be cleared after confirmation.

**Using Shortcuts**: In the labeling interface, simply press the configured numeric key (0-9). The system will automatically switch to the corresponding drawing mode with the preset label name. After drawing is complete, the annotation will automatically use the preset label name.

**Offline Configuration**: In addition to configuration through the GUI interface, users can directly configure shortcuts in the `.xanylabelingrc` configuration file in their user directory. The configuration format is as follows:

```yaml
digit_shortcuts:
  0: {mode: polygon, label: person}
  1: {mode: rectangle, label: car}
  2: {mode: rotation, label: truck}
  # More configurations...
```

Settings made in the interface are saved to `.xanylabelingrc` and loaded at the next startup. Manual configuration changes also take effect after restarting the application.

### 5.6 Group ID Manager

The Group ID Manager is a batch management feature for group ID fields, allowing users to uniformly modify and delete group IDs within a specified range. You can access it in two ways:

- Select **Tools** -> **Group ID Manager** from the top menu bar in the main interface
- Use the shortcut key **Alt+G**

<p align="center">
  <img src="../../assets/resources/gid_manager.png" alt="Information">
</p>

### 5.7 Shape Manager

<p align="center">
  <img src="../../assets/resources/shape_manager.png" alt="Shape Manager for batch operations on annotations and selected shapes across a frame range">
</p>

The Shape Manager handles batch annotation operations for video frame sequences. Access it via **Tools -> Shape Manager** or press **Alt+S**.

Four operation modes are available (mutually exclusive):

- **Delete All Annotations**: Removes all JSON annotation files within the specified frame range while preserving image files. Automatically unchecks the corresponding frames after execution.

- **Delete All Images with Annotations**: Deletes both images and annotations. Image files are moved to the `_delete_` backup directory rather than being permanently deleted. The file list refreshes automatically after completion.

- **Remove Selected Shapes**: Searches for and removes objects matching the currently selected shape within the frame range. If a frame contains only matching objects, the entire annotation file is deleted; otherwise, only matching objects are removed. At least one shape must be selected on the canvas before use.

- **Add Selected Shapes**: Batch copies the currently selected shapes to specified frames. The system automatically detects boundaries and skips shapes that exceed the image range, while avoiding duplicate additions of existing identical objects. Annotation files are auto-created for frames without them, and corresponding frames are automatically checked upon completion.

Set the start and end frame numbers: From defaults to the current frame, To defaults to empty and must be manually filled. Frame numbers correspond to the file list index (starting from 1). Clicking Go triggers a confirmation dialog before execution. Remove and add operations support progress display and mid-process cancellation.

> [!WARNING]
> Deleting annotations cannot be undone. Deleted images can be recovered manually from the backup directory.

## 6. Help and Language

### 6.1 About X-AnyLabeling

<p align="center">
  <img src="../../assets/resources/information.png" alt="About Dialog">
</p>

Select `Help` > `About` to view the application version and runtime environment details (e.g., Python version, library versions).

### 6.2 Setting the Language

<p align="center">
  <img src="../../assets/resources/supported_languages.png" alt="X-AnyLabeling interfaces in Chinese, English, Japanese, and Korean">
</p>

Select your preferred interface language (`Chinese`, `English`, `Japanese`, or `Korean`) from the `Language` menu.

**Important:** The application will restart automatically after changing the language. Save your work before switching languages to avoid data loss.

## 7. Configuration

`X-AnyLabeling` stores user preferences in a configuration file named `.xanylabelingrc`, located in your user's home directory:

- **Linux/macOS**: `~/.xanylabelingrc`
- **Windows**: `C:\Users\<YourUsername>\.xanylabelingrc`

Most common options can now be changed directly in `Settings` (`Ctrl+0`), while the configuration file remains useful for manual editing and advanced customization. Close X-AnyLabeling before editing the file manually and restart it afterwards for changes to take effect.

<p align="center">
  <img src="../../assets/resources/settings_overview.png" alt="Settings pages for shortcuts, general preferences, shape appearance, and canvas behavior">
</p>

### 7.1 Keyboard Shortcuts

The default keyboard shortcuts are listed below. You can customize these in the `.xanylabelingrc` file if needed (e.g., to resolve conflicts with system shortcuts or match personal preferences).
You can also update shortcuts in the GUI: open Settings with `Ctrl+0`, then edit them in the right-side `Shortcuts` panel.

| Shortcut              | Function                                         | Notes                                      |
|-----------------------|--------------------------------------------------|--------------------------------------------|
| `d`                   | Next Image                                       |                                            |
| `a`                   | Previous Image                                   |                                            |
| `Ctrl+Shift+d`        | Next Unchecked Annotation                        | Uses the label JSON `checked` field        |
| `Ctrl+Shift+a`        | Previous Unchecked Annotation                    | Uses the label JSON `checked` field        |
| `Ctrl+Alt+k`          | Toggle Annotation Check Status                   | Saved as `checked` in the label JSON        |
| `p`                   | Create Polygon Shape                             | Shortcut might vary (check interface)      |
| `Ctrl+n`              | Create Brush Polygon                             | Toggle brush mode for polygon drawing      |
| `o`                   | Create Rotated Rectangle Shape                   | Shortcut might vary                        |
| `r`                   | Create Rectangle Shape                           | Shortcut might vary                        |
| `Ctrl+r`              | Create Cuboid Shape                              | From rectangle                             |
| `t`                   | Create Quadrilateral Shape                       | Shortcut might vary                        |
| `Shift+p`             | Create Point Shape                               |                                            |
| `Shift+l`             | Create Line Shape                                |                                            |
| `Shift+s`             | Create Line Strip Shape                          |                                            |
| `Shift+c`             | Create Circle Shape                              |                                            |
| `i`                   | Run AI Model Inference                           | If model loaded                            |
| `q`                   | Add Positive Point (SAM)                         | SAM Interactive Segmentation Mode          |
| `e`                   | Add Negative Point (SAM)                         | SAM Interactive Segmentation Mode          |
| `b`                   | Clear Points (SAM)                               | SAM Interactive Segmentation Mode          |
| `f`                   | Finalize Shape (SAM)                             | SAM Interactive Segmentation Mode          |
| `g`                   | Group Selected Shapes                            | Assigns next available group ID            |
| `u`                   | Ungroup Selected Shapes                          | Sets group ID to null                      |
| `s`                   | Hide Selected Shapes                             | Temporarily hide                           |
| `w`                   | Show Hidden Shapes                               | Show previously hidden shapes              |
| `Alt+d`               | Open Digit Shortcut Manager                      | Configure numeric key shortcuts            |
| `Alt+g`               | Open Group ID Manager                            | Manually set group ID                      |
| `Alt+l`               | Open Label Manager                               | Rename, Delete, Hide/Show, Adjust Color    |
| `Alt+s`               | Open Shape Manager                               | Add, Delete, Remove                        |
| `Ctrl+0`              | Open Settings                                    | Shortcut settings can be edited in GUI     |
| `Ctrl+Delete`         | Delete Current Label File (`.json`)              | **Irreversible**                           |
| `Ctrl+Shift+Delete`   | Delete Current Image & Label File                | Moves to `_delete_` folder                 |
| `Ctrl+1`              | Open Chatbot                                     |                                            |
| `Ctrl+2`              | Open Visual Question Answering Dialog            |                                            |
| `Ctrl+3`              | Open Image Classifier Dialog                     |                                            |
| `Ctrl+4`              | Open PaddleOCR Dialog                            |                                            |
| `Ctrl+5`              | Open Video Classifier Dialog                     |                                            |
| `Ctrl+6`              | Open 3D Point Cloud Workspace                     |                                            |
| `Ctrl+q`              | Quit Application                                 |                                            |
| `Ctrl+i`              | Open Single Image File                           |                                            |
| `Ctrl+o`              | Open Single Video File                           |                                            |
| `Ctrl+u`              | Open Image Directory                             |                                            |
| `Ctrl+e`              | Edit Selected Label                              | Opens the label editor                     |
| `Ctrl+j`              | Toggle Edit Mode                                 | Switches between drawing and editing       |
| `Ctrl+c`              | Copy Selection                                   | Copies selected shape(s)                   |
| `Ctrl+v`              | Paste Selection                                  | Pastes copied shape(s)                     |
| `Ctrl+d`              | Duplicate Selection                              | Creates copy of selected shape(s)          |
| `Ctrl+g`              | Show Statistics (Overview Window)                | Opens Data Statistics Tool                 |
| `Ctrl+h`              | Toggle All Shapes Visibility                     | Show/Hide all annotations on canvas        |
| `Ctrl+p`              | Toggle Keep Previous Annotation                  | Reuses the previous frame's annotations    |
| `Ctrl+y`              | Toggle 'Use Last Label'                          | Auto-fills next shape with previous label  |
| `Ctrl+Shift+g`        | Toggle 'Use Last Group ID'                       | Reuses the previous group ID               |
| `Ctrl+b`              | Run Batch Auto-Labeling                          | Runs the selected model on multiple images |
| `Ctrl+a`              | Open Auto-Labeling Panel                         | Select and configure an AI model           |
| `Ctrl+s`              | Save Current Annotations                         | Manual save (if auto-save is off)          |
| `Ctrl+m`              | Toggle Mask Display                              | Show/Hide semi-transparent masks for shapes|
| `Ctrl+l`              | Toggle Label Text Visibility                     | Show/Hide label names on shapes            |
| `Ctrl+t`              | Toggle Description Text Visibility               | Show/Hide shape descriptions on shapes     |
| `Ctrl+Shift+t`        | Show/Hide Image Tags Panel                       | Configurable in Settings                   |
| `Ctrl+k`              | Toggle Linking Display                           | Show/Hide shape linking visualization      |
| `Ctrl+Shift+l`        | Toggle Attributes Display                        | Show/Hide shape attributes on canvas       |
| `Ctrl+Shift+s`        | Set Output Directory                             | Change where `.json` files are saved       |
| `Ctrl+=`              | Zoom to Actual Size (100%)                       |                                            |
| `Ctrl++`              | Zoom In                                          |                                            |
| `Ctrl+-`              | Zoom Out                                         |                                            |
| `Ctrl+f`              | Zoom to Fit Window                               |                                            |
| `Ctrl+Shift+f`        | Zoom to Fit Width                                |                                            |
| `Ctrl+Shift+m`        | Merge Selected Shapes                            | Creates bounding box around selection      |
| `Ctrl+Shift+n`        | Cycle Through Shapes                             | Zoom in next shape on canvas               |
| `Ctrl+Shift+c`        | Cycle Select Shapes                              | Selects next shape on canvas               |
| `Ctrl+z`              | Undo Last Action                                 |                                            |
| `Delete`              | Delete Selection                                 | Deletes selected shape(s)                  |
| `Esc`                 | Deselect Object / Cancel Drawing                 |                                            |
| `Backspace`           | Delete Selected Point (Polygon Edit)             | While editing polygon points (`Ctrl+J`)    |
| `↑`, `→`, `↓`, `←`    | Move Selection (Arrow Keys)                      | Nudge selected shape(s)                    |
| `z`, `x`, `c`, `v`    | Rotate Selection                                 | Rotates selected shape(s) (if applicable)  |
| `F9`                  | Show/Hide Navigator                              | Toggle navigator window                    |
| `Ctrl+Alt+c`          | Toggle Compare View                              | Split-screen image comparison              |

### 7.2 Custom Label Colors

To persistently define custom colors for specific labels:

1. Open the `.xanylabelingrc` file in a text editor.
2. Ensure the `shape_color:` field is set to `manual`. If it's `null` or `auto`, change it to `manual`.
3. Find or add the `label_colors:` section.
4. Add or modify entries for your labels using the format `label_name: [R, G, B]`, where R, G, B are integer values from 0 to 255.
5. Save the file and restart X-AnyLabeling.

Example configuration:
```YAML
# ... other settings ...
default_shape_color: [0, 255, 0] # Default color if label not in list (Green)
shape_color: manual           # Use colors defined below ('auto' cycles colors)
shift_auto_shape_color: 0     # Offset for 'auto' color cycling
label_colors:
  person: [220, 20, 60]     # Crimson
  car: [0, 0, 142]          # Navy Blue
  bicycle: [119, 11, 32]    # Maroon
  traffic light: [255, 165, 0] # Orange
  # Add more labels and their RGB colors here
# ... other settings ...
```

> **Note:** You can temporarily change label colors for the *current session* via `Tools` > `Label Manager`. Changes made there are not saved to the configuration file.

### 7.3 Predefined Labels

To offer flexibility in label management and meet diverse usage scenarios, X-AnyLabeling supports not only loading labels via startup command-line arguments but also provides two additional convenient methods for loading predefined labels.

**Option 1: Set via Config File (Persistent)**

Edit the `labels` field in the config file to define your labels.
Note: If a label is a number, wrap it in single quotes (`''`) to avoid parsing issues. For example:

```yaml
labels:
- car
- '1'
- '2'
- 苹果
- _phone
```

**Option 2: Upload via Interface (Temporary)**

Create a simple `.txt` file with one label per line:

```txt
person
car
bicycle
dog
cat
```

Then upload it through the menu: `Upload` → `Upload Label Classes File`.

🔔 **Tips:**

* Labels set via the config file are saved permanently and remain after restarting the software — ideal for fixed, long-term label sets.
* Labels uploaded via the interface are temporary and reset after restarting — useful when frequently switching between different label sets.

### 7.4 Auto-Switch to Edit Mode

To streamline the annotation workflow, you can configure the application to automatically switch to **Edit Mode** immediately after a shape is created. This is useful if you frequently need to adjust a shape right after drawing it. You can change this in `Settings > General > Behavior > Auto Switch To Edit Mode`, or through the `auto_switch_to_edit_mode` setting in the `.xanylabelingrc` file.

- Set to `true` to enable automatic switching to Edit Mode.
- Set to `false` to remain in Drawing Mode, which allows continuous creation of multiple shapes. The default is `true`.

### 7.5 Hover Auto-Highlight

For quicker selection of shapes, you can enable **Hover Auto-Highlight**. When this feature is active, simply moving your mouse cursor over a shape will highlight it, making it clear which shape will be selected if you click. You can change this in `Settings > General > Behavior > Auto Highlight Shape`, or through the `auto_highlight_shape` setting in the `.xanylabelingrc` file.

- Set to `true` to highlight shapes on hover.
- Set to `false` to highlight shapes only after clicking. The default is `true`.

*Note: When working on multi-label classification tasks with a custom attributes file loaded, this setting is automatically disabled to prevent accidentally changing the active shape while interacting with the attributes panel.*

### 7.6 Shape Appearance

Customize the default appearance of shapes (colors during drawing/selection, point size, line width) in `Settings > Shape`, or by editing the `shape:` section in the `.xanylabelingrc` file:

```YAML
shape:
  # Default drawing colors (RGBA: Red, Green, Blue, Alpha)
  line_color: [0, 255, 0, 128]       # Outline color (Green, semi-transparent)
  fill_color: [220, 220, 220, 150]  # Fill color (Light Gray, semi-transparent)
  vertex_fill_color: [0, 255, 0, 255] # Vertex color (Green, opaque)

  # Colors when selected/hovered (RGBA)
  select_line_color: [255, 255, 255, 255] # Outline color (White, opaque)
  select_fill_color: [0, 255, 0, 155]    # Fill color (Green, semi-transparent)
  hvertex_fill_color: [255, 255, 255, 255] # Vertex color (White, opaque)

  # Sizes (in pixels)
  point_size: 10 # Diameter of points/vertices
  line_width: 4  # Width of shape outlines
```

### 7.7 Model Download Source

`X-AnyLabeling` downloads pre-trained models used for AI-assisted features (like SAM or detection models). You can configure the download source (Model Hub). The source is determined in the following order of priority:

1. **Environment Variable (Highest Priority)**: Set `XANYLABELING_MODEL_HUB=modelscope` before launch to force ModelScope. If the variable contains another non-empty value, the original URL in the model configuration is used.

2. **Configuration File (Medium Priority)**: When the environment variable is unset or empty, change `General > Behavior > Model Hub` in `Settings` (`Ctrl+0`), or edit `model_hub` in `.xanylabelingrc`:

   ```yaml
   model_hub: github  # Options: github, modelscope
   ```

3. **Language Setting (Lowest Priority)**: This fallback is used only when the environment variable is unset and `model_hub` is missing or empty. A Chinese interface (`language: zh_CN`) then uses ModelScope; other languages use the original model URL.

### 7.8 Theme Settings

X-AnyLabeling supports three theme modes, accessible from the top-level **Theme** menu:

| Option | Description |
|--------|-------------|
| **System** | Automatically follows the operating system's light/dark preference. This is the default. |
| **Light** | Always uses the light theme. |
| **Dark** | Always uses the dark theme. |

After selecting an option, a confirmation dialog appears. Click **OK** to save the setting. The application does not restart automatically; a prompt will remind you to restart for the theme to take effect. Click **Cancel** to discard the change.

You can also set the theme directly in `~/.xanylabelingrc`:

```yaml
theme: auto  # Options: auto, light, dark
```

### 7.9 Font Settings

Open `Settings > General > Application Font` to choose the application font from a drop-down list. Qt automatically scans the fonts available on the current system, with support for Windows, macOS, and Linux. Select a font and click **Save** to apply it globally without restarting. Choose **System Default** to restore the operating system's default font and size.

The selection is stored in the `font_family` field of the user configuration file and can also be edited manually:

```yaml
font_family: null  # null uses the system default; a font name such as "Sarasa UI SC" is also accepted
```

When editing the value manually, the named font must be installed on the current system. If it is unavailable, Qt automatically falls back to the system default font.

## 8. Supported Tasks

X-AnyLabeling supports various annotation tasks. Follow the links below for specific guides and examples for each task type:

### 8.1 Image Classification
  - Image-level: [Link](../../examples/classification/image-level/README.md)
  - Object-level (Shape Attributes): [Link](../../examples/classification/shape-level/README.md)

### 8.2 Object Detection
  - Horizontal Bounding Box (HBB): [Link](../../examples/detection/hbb/README.md)
  - Oriented Bounding Box (OBB): [Link](../../examples/detection/obb/README.md)

### 8.3 Image Segmentation
  - Semantic & Instance Segmentation (Polygons): [Link](../../examples/segmentation/README.md)

### 8.4 Pose Estimation
  - Keypoint Detection: [Link](../../examples/estimation/pose_estimation/README.md)

### 8.5 Face Estimation
  - Face Detection & Landmarks: [Link](../../examples/estimation/face_estimation/README.md)

### 8.6 Multi-Object Tracking
  - MOT/MOTS: [Link](../../examples/multiple_object_tracking/README.md)

### 8.7 Depth Estimation
  - Depth Annotation: [Link](../../examples/estimation/depth_estimation/README.md)

### 8.8 Optical Character Recognition (OCR)
  - Text Detection & Recognition: [Link](../../examples/optical_character_recognition/text_recognition/README.md)
  - Key Information Extraction (KIE): [Link](../../examples/optical_character_recognition/key_information_extraction/README.md)

### 8.9 Interactive Video Object Segmentation (IVOS)
  - SAM2-Video: [Link](../../examples/interactive_video_object_segmentation/sam2/README.md)
  - SAM3-Video: [Link](../../examples/interactive_video_object_segmentation/sam3/README.md)

### 8.10 Matting
  - Image Matting (Alpha Masks): [Link](../../examples/matting/image_matting/README.md)

### 8.11 Vision Foundation Models
  - Rex-Omni: [Link](../../examples/vision_foundation/rexomni/README.md)
  - Florence 2: [Link](../../examples/vision_foundation/florence2/README.md)
  - LocateAnything: [Link](../../examples/vision_foundation/locateanything/README.md)
  - GroundingPI / GroundAnything / GroundAnything-VLM: [Link](../../examples/vision_foundation/groundingpi/README.md)

### 8.12 Zero-Shot Counting
  - GeCo Counting by Detection/Segmentation: [Link](../../examples/counting/geco/README.md)
  - GeCo2 Counting by Detection/Segmentation: [Link](../../examples/counting/geco2/README.md)

### 8.13 Grounding
  - YOLOE: [Link](../../examples/grounding/yoloe/README.md)
  - SAM 3: [Link](../../examples/grounding/sam3/README.md)

## 9. Custom Models

For details on integrating and using your own custom AI models within X-AnyLabeling for assisted annotation, refer to the [Custom Models](./custom_model.md) guide.

## 10. Advanced Features

- Remote Server Guide: [Link](https://github.com/CVHub520/X-AnyLabeling-Server)
- Chatbot Guide: [Link](./chatbot.md)
- VQA Guide: [Link](./vqa.md)
- Image Classifier: [Link](./image_classifier.md)
- Video Classifier: [Link](./video_classifier.md)
- Ultralytics Training Platforms: [Link](../../examples/training/ultralytics/README.md)
- Document Parsing and Intelligent Text Recognition: [Link](./paddle_ocr.md)
- 3D Point Cloud Annotation: [Link](./point_cloud.md)

---

### En Video Classifier (`docs/en/video_classifier.md`)

# Overview

The Video Classifier in X-AnyLabeling is a dedicated annotation window for action recognition and video clip classification datasets. It lets you load videos, define class labels, mark time segments on a timeline, assign each segment to a label, preview frames, and export class-organized video clips or raw frame sequences.

<video src="https://github.com/user-attachments/assets/33a57390-683d-4a24-b0cf-3668af5f7a13" width="100%" controls>
</video>

# Getting Started

Open the Video Classifier from the main window toolbar or use the configured shortcut:

- Windows/Linux: `Ctrl` + `5`
- macOS: `⌘` + `5`

You can load a video by dropping it into the dialog or by clicking the open-video button in the preview footer. Supported formats include common video files such as `mp4`, `avi`, `mov`, `mkv`, and `webm`.

The help icon in the preview header opens this tutorial on GitHub. The shortcuts icon beside it opens an in-app shortcut reference.

# Tutorial

The Video Classifier uses three main areas:

- The left preview panel shows the current video frame, playback controls, AI auto segmentation, frame saving, zoom controls, shortcut help, tutorial help, and dataset export access.
- The right panel manages labels, the segment list, and segment descriptions.
- The bottom timeline shows thumbnails, time ticks, the playhead, and editable labeled segments.

## Labels

Before you start labeling, set up the classes for the task in the Labels panel on the right. Each label gets its own color, and the same color is used later in the timeline and segment list, making it easier to scan long videos and understand how different classes are distributed.

Use the add button to create a new label. To rename labels, change colors, import a label list, or remove labels, open the label settings. The first ten labels show `(0)` through `(9)` after the name, so you can switch the active label with the matching number key while annotating.

New segments use the currently selected label. If you delete a label, any segments already assigned to that label are deleted as well, so only do this when those segments are no longer needed.

> [!TIP]
> For tasks with many classes, prepare a `classes.txt` file with one class name per line. Open the label settings from the Labels panel on the right, then click upload to import the full list at once.

## Creating Segments

Segments are created from the timeline ruler.

1. Select the target label in the Labels panel.
2. Move the mouse to the timeline ruler.
3. Hold the right mouse button, drag across the desired time range, and release.
4. The segment is added using the selected label.

If no label is selected, the dialog prompts you to select or create one first.

You can also press `I` and `O` to mark an in/out range, then press `Enter` to create a segment from those marks.

## AI Configuration

AI auto segmentation and segment description generation in the Video Classifier use the model configured in [Chatbot](./chatbot.md). Before using these features, open Chatbot first (Windows/Linux: `Ctrl` + `1`, macOS: `⌘` + `1`) and configure the API key, provider, endpoint, and current model in the right panel.

For example, when using Alibaba Cloud Model Studio with `qwen3.6-flash`, select the Qwen provider in Chatbot, enter your Model Studio API key, and set the current model to `qwen3.6-flash`. If you connect through the Custom provider with an OpenAI-compatible endpoint, make sure the endpoint matches the provider requirements. For Model Studio compatible mode, the endpoint is usually:

```text
https://dashscope.aliyuncs.com/compatible-mode/v1
```

> [!NOTE]
> Make sure the selected model supports video understanding. Video file size, duration, frame rate, input format, and billing limits may vary by provider and model. For Alibaba Cloud Model Studio, see the [Image and Video Understanding](https://help.aliyun.com/zh/model-studio/vision?userCode=okjhlpr5#006b533c6cc0) documentation for video-related limits.

## AI Auto Segmentation

After configuring a video-capable model in Chatbot, click the wand button in the preview footer to let AI generate segments from the video content. The dialog shows the current model and provides an editable prompt. When the interface language is Chinese, the default prompt is Chinese; other languages use the English prompt by default.

AI auto segmentation supports two input scopes:

- When a segment is selected, only the selected segment is sent to the model by default, and the returned segments replace that selected segment.
- When `Use full video` is checked, the full video is sent to the model. If the current video already has segments, the dialog asks for confirmation before replacing them with AI-generated segments.

The model should return JSON, for example:

```json
{
  "events": [
    {
      "start_time": "00:00:00",
      "end_time": "00:00:05",
      "event": "The person walks toward the table holding a box and places the box on the table."
    }
  ]
}
```

`start_time` and `end_time` should use the `HH:mm:ss` format, and `event` is saved as the segment description. If a label is currently selected, generated segments use that label; otherwise, built-in label names such as `片段1` and `片段2` are assigned automatically.

## Editing Segments

Existing segments can be edited directly on the timeline or from the segment list.

| Action | Result |
|--------|--------|
| Single-click a segment | Select it and seek to its start |
| Double-click a segment | Edit its label and description |
| Hold left mouse button and drag a segment | Move the segment |
| Drag the left or right edge | Resize the segment |
| Delete/Backspace | Delete the selected segment |
| Scissors button | Split the selected segment at the playhead when possible |
| Undo/Redo | Revert or reapply segment edits |

The Segments list mirrors the timeline. Selecting a row jumps the playback frame to that segment's start time.

When the cursor is over a segment, the inline hint reminds you that double-click edits the label and description, and left-drag moves the segment.

After selecting a segment, you can edit its description in the Description panel on the right. The wand button in the Description header calls the AI model configured in Chatbot to generate a description for the current segment. Before generation starts, a prompt editor is shown so you can review the current model and adjust the prompt. You can cancel the wait while generation is running. This feature only updates the selected segment description; it does not change the segment time range or label.

## Playback And Navigation

Use the footer controls or keyboard shortcuts to review precise frames. The same shortcut table is available from the shortcuts icon in the preview header.

| Shortcut | Function |
|----------|----------|
| Space | Play or pause |
| Left/Right | Step one frame backward or forward |
| Shift + Left/Right | Jump one second backward or forward |
| `,`/`.` | Jump to the previous or next segment |
| I/O | Mark in/out |
| Enter | Create a segment from the in/out marks |
| Delete/Backspace | Delete the selected segment |
| Ctrl+S or ⌘+S | Save the sidecar annotation file |
| Ctrl+Z or ⌘+Z | Undo |
| Ctrl+Shift+Z or ⌘+Shift+Z | Redo |
| 0-9 | Select the matching label number |

The timeline can be zoomed with its zoom controls or with `Ctrl` + mouse wheel over the timeline. Use the horizontal scrollbar to inspect long videos.

Move the cursor to the timeline ruler to see the right-drag segment creation hint. The hint is only shown on timeline interaction areas, not over the thumbnail strip.

## Export

After labeling segments, click Export dataset in the preview footer to export the current video's annotations. The exported files are organized by class, making them easier to inspect, package, or connect to your own training pipeline.

The export dialog includes these options:

| Option | Description |
|--------|-------------|
| `Output` | Choose the export directory. By default, X-AnyLabeling creates a folder with the same basename as the current video next to the video. For example, `sample.mp4` exports to `sample/` by default. |
| `Video clips` | Export each segment as an `.mp4` file under its label folder. |
| `Raw frame sequences` | Export each segment as an `img_00001.jpg` image sequence. |
| `RawFrames FPS` | Set the frame sampling rate. Use `0` to keep the source video frame rate. |
| `Re-encode clips` | Re-encode segments. This is slower, but gives more accurate start and end cuts; when disabled, X-AnyLabeling uses faster stream copy whenever possible. |
| `Pack output as .zip` | Create a zip archive beside the output directory after export. |

The output directory looks like this:

```bash
sample/
├── videos/
│   ├── label_a/
│   │   ├── sample_s000001.mp4
│   │   └── sample_s000002.mp4
│   └── label_b/
│       └── sample_s000003.mp4
├── rawframes/
│   ├── label_a/
│   │   └── sample_s000001/
│   │       ├── img_00001.jpg
│   │       └── img_00002.jpg
│   └── label_b/
│       └── sample_s000003/
│           ├── img_00001.jpg
│           └── img_00002.jpg
├── label_map.txt
└── metadata.json
```

Video clipping and frame extraction are handled by `ffmpeg`. X-AnyLabeling first looks for a system `ffmpeg`; if it is not available, it tries the executable provided by `imageio-ffmpeg`. If neither is available, export cannot continue.

# Data Format

Video annotations are stored beside each video as a sidecar JSON file with the same stem as the video. For example, `sample.mp4` is paired with `sample.json`.

```json
{
  "version": "1.0.0",
  "type": "video_classification",
  "video": "sample.mp4",
  "fps": 30.0,
  "duration_ms": 120000,
  "width": 1920,
  "height": 1080,
  "labels": ["run", "walk"],
  "label_colors": {
    "run": "#ff7f0e",
    "walk": "#1f77b4"
  },
  "segments": [
    {
      "id": "s1234567890",
      "label": "run",
      "start_ms": 1000,
      "end_ms": 3500,
      "start_frame": 30,
      "end_frame": 105,
      "description": "The person starts running after the whistle."
    }
  ]
}
```

---

### En Vqa (`docs/en/vqa.md`)

# Overview

The X-AnyLabeling Visual Question Answering (VQA) tool annotates multimodal image-question answering datasets. It supports image-based question-and-answer pairs, configurable input components, and AI assistance for preparing structured data for supervised fine-tuning, reinforcement-learning post-training, and similar tasks.

<video src="https://github.com/user-attachments/assets/53adcff4-b962-41b7-a408-3afecd8d8c82" width="100%" controls>
</video>

# Launching the Tool

To open the VQA tool, ensure that the main window’s image directory is loaded. Then, either click the VQA icon in the left toolbar of the main window or use the following keyboard shortcut:

* **Windows/Linux**: `Ctrl` + `2`
* **macOS**: `⌘` + `2`

On startup, the system automatically loads the default configuration from the following path. You may modify it as needed:

```bash
~/xanylabeling_data/vqa/components.json
```

# Tutorial

The VQA tool adopts a dual-panel layout: the left panel displays image previews, while the right one provides annotation controls.

<img src="../../assets/resources/vqa/entire_panel.png" width="100%" />

## Left Panel – Image Preview

* **Filename and Progress Indicator**: Shows the current image filename and its position within the dataset (e.g., `000000000154.jpg (33/128)`).
* **Image Preview Area**: Displays the image centered on the panel with adaptive zoom.
* **Panel Toggle**: Use the sidebar icon to expand or collapse the left panel.

## Right Panel – Annotation Controls

* **Toolbar Buttons**:

| Button        | Description                                  |
| ------------- | -------------------------------------------- |
| Export Labels | Export annotations as JSONL format           |
| Clear All     | Remove all annotations for the current image |
| Add Component | Add a new annotation component               |
| Del Component | Delete an existing component                 |

* **Annotation Components**:

| Component     | Type         | Description                                                           |
| ------------- | ------------ | --------------------------------------------------------------------- |
| Text Input    | QLineEdit    | For open-ended QA, such as image descriptions or detailed answers     |
| Radio Buttons | QRadioButton | For single-choice tasks, such as task type selection or dataset split |
| Checkboxes    | QCheckBox    | For multi-choice tasks, such as image tagging or attribute labeling   |
| Dropdown Menu | QComboBox    | For single-choice tasks with many options, supports custom lists      |

<div style="display: flex; justify-content: space-between;">
  <img src="../../assets/resources/vqa/add_compone.png" width="56%" />
  <img src="../../assets/resources/vqa/del_compone.png" width="43%" />
</div>

Text input components support AI-assisted annotation. Before using this feature, follow the configuration instructions in the [Chatbot guide](./chatbot.md).

<img src="../../assets/resources/vqa/chatbot.png" width="100%" />

Once configured, you can open the AI assistant dialog by clicking the magic wand (🪄) icon in the title bar.

<img src="../../assets/resources/vqa/assistance.png" width="100%" />

The system supports both text-only and multimodal prompts with various reference tokens:

**Basic References**
- `@image`: References the current image for AI analysis
- `@text`: References the current text input field content

**Cross-Widget References**
- `@widget.component_name`: References other QLineEdit component values, e.g., `@widget.question` references the "question" component

**Label Data References**
- `@label.shapes`: References all annotation shapes in the current image
- `@label.imagePath`: References the image file path
- `@label.imageHeight`: References the image height
- `@label.imageWidth`: References the image width
- `@label.flags`: References annotation flags

**Usage Examples**
```
Describe objects in the image: @image
Analyze with existing annotations: @image Analyze based on shapes @label.shapes
Reference other components: Generate answer based on question "@widget.question"
```

To further enhance efficiency and reusability, the tool includes a prompt template gallery. Predefined templates are available for common use cases, and users can freely add, edit, or delete custom templates. Templates help build high-quality prompts quickly, improving annotation speed and consistency.

<img src="../../assets/resources/vqa/add_template.png" width="100%" />

Hovering over a template displays the full content in a tooltip for quick preview. For custom templates, double-clicking a template field allows you to edit the title and content.

<img src="../../assets/resources/vqa/template_gallery.png" width="100%" />

# Data Management

X-AnyLabeling uses an autosave mechanism to ensure that no annotation work is lost. Annotations are automatically saved in JSON format in the same directory as the corresponding image. For VQA tasks, all annotation data is stored under the `vqaData` field. This field contains structured data collected through the configured components:

```json
{
  "version": "${version}",
  "flags": {},
  "shapes": [],
  ...
  "vqaData": {
    "question": "How many zebras are there here?",
    "answer": 3,
    "split": "train",
    "task": "Counting",
    "tags": [
      "natural"
    ]
  },
  "imagePath": "0000000000154.jpg",
  "imageHeight": 640,
  "imageWidth": 480
}
```

After completing annotation tasks, click the `Export Labels` button to export the data. The export dialog provides flexible field selection, including:

* **Basic Fields**: Image filename, width, and height
* **Custom Component Fields**: All configured components and their corresponding data

<img src="../../assets/resources/vqa/export.png" width="100%" />

Exported data is saved in `JSONL` format, with one record per line. Example output:

```jsonl
{"image": "0000000000154.jpg", "width": 640, "height": 480, "question": "How many zebras are in the image?", "answer": 3, "split": "train"}
{"image": "0000000000155.jpg", "width": 640, "height": 480, "question": "What is the cat doing?", "answer": "sleeping", "split": "val"}
```

---

### Zh Cn Chatbot (`docs/zh_cn/chatbot.md`)

# 概述

X-AnyLabeling 的聊天机器人是集成在标注流程中的 AI 助手，可与大语言模型（LLM）进行自然语言交互、批量处理图文问答数据，并导入或导出单轮及多轮对话数据。导出的多模态数据采用 [ShareGPT](https://github.com/hiyouga/LLaMA-Factory/blob/main/data/README_zh.md#%E5%A4%9A%E6%A8%A1%E6%80%81%E5%9B%BE%E5%83%8F%E6%95%B0%E6%8D%AE%E9%9B%86-1) 格式，可用于 [LLaMA-Factory](https://github.com/hiyouga/LLaMA-Factory) 等大模型微调框架。

<video src="https://github.com/user-attachments/assets/c97b943a-71e6-470c-bb73-b4c8d299687f" width="100%" controls>
</video>


# 入门

## 访问聊天机器人

要打开聊天机器人，请点击 X-AnyLabeling 中左侧工具栏的聊天机器人图标或使用如下快捷键快速启动聊天机器人对话界面。

- Windows/Linux: `Ctrl` + `1`
- macOS: `⌘` + `1`

## 初始设置

首次启动时，您需要在 `Chatbot` 聊天窗口的右侧面板中配置必要的 API 凭据和模型。

# 用户界面

该聊天机器人具有一个三面板界面，旨在简化交互。

<video src="https://github.com/user-attachments/assets/41c30839-4b49-4de2-8252-fe856956daa7" width="100%" controls>
</video>

## 左侧面板：模型提供商

| 提供商 | API 密钥 | API 文档 | 模型文档 |
| :--- | :--- | :--- | :--- |
| Anthropic | [链接](https://console.anthropic.com/settings/keys) | [链接](https://docs.anthropic.com/en/docs) | [链接](https://docs.anthropic.com/en/docs/about-claude/models/all-models) |
| DeepSeek   | [链接](https://platform.deepseek.com/api_keys)         | [链接](https://platform.deepseek.com/docs)                  | [链接](https://platform.deepseek.com/models)                                |
| Google AI  | [链接](https://aistudio.google.com/app/apikey)         | [链接](https://ai.google.dev/gemini-api/docs)               | [链接](https://ai.google.dev/gemini-api/docs/models)                        |
| Ollama     | -                                                             | [链接](https://github.com/ollama/ollama/blob/main/docs/api.md) | [链接](https://ollama.com/search)                                           |
| OpenAI     | [链接](https://platform.openai.com/api-keys)           | [链接](https://platform.openai.com/docs)                    | [链接](https://platform.openai.com/docs/models)                             |
| OpenRouter | [链接](https://openrouter.ai/settings/keys)            | [链接](https://openrouter.ai/docs/quick-start)              | [链接](https://openrouter.ai/models)                                        |
| Qwen       | [链接](https://bailian.console.aliyun.com/?apiKey=1#/api-key) | [链接](https://help.aliyun.com/document_detail/2590237.html) | [链接](https://help.aliyun.com/zh/model-studio/developer-reference/what-is-qwen-llm) |

> [!NOTE]
> Custom 提供商支持配置与 OpenAI API 兼容的自定义端点。使用 Custom 时需要手动输入模型名称；其他提供商会列出可选模型。

## 中间面板：聊天界面

- 聊天窗口：查看您与 AI 的对话历史，支持复制、编辑、删除、重新运行功能
- 消息输入：输入您的问题或指令，支持一键清除当前对话历史记录
- 特殊命令：导入图像后，使用 `@image` 提示包含当前图像

## 右侧面板：图像预览与设置

- **图像预览**：显示当前图像。
- **功能组件**：切换图像、导入单个图像或目录、导出标注结果以及批量处理图像。
- **后端设置**：配置 API 端点、密钥和模型。
- **生成参数**：设置系统提示词、温度和最大输出长度。

# 关键特性

## 视觉问答

<video src="https://github.com/user-attachments/assets/1119fa89-b885-4d4f-ad76-499a74aa81eb" width="100%" controls>
</video>

针对当前图像提问，生成单轮或多轮图文对话：

> @image 请描述这张图像。

## 图像批量处理

<video src="https://github.com/user-attachments/assets/4ec36aaa-2f0b-442f-9315-cc6ab1d1e0c2" width="100%" controls>
</video>

使用相同的提示处理多张图片以加快工作流程：

1. 加载一个图片文件夹
2. 点击“运行所有图片”按钮
3. 输入要应用于所有图片的提示
4. 可设置并发数以控制处理速度（默认值为 CPU 核心数的 80%，最大值为 95%）

## 数据集导入/导出

<video src="https://github.com/user-attachments/assets/8dc44d1c-0317-4b00-9967-105274dee59f" width="100%" controls>
</video>

支持导入和导出 ShareGPT 格式的多模态图像数据。

# 其他

## 配置文件

聊天机器人将其配置存储在用户目录下的如下位置：

```
~/xanylabeling_data/chatbot/
```

其中包括：

- `models.json`：包含用户偏好设置和模型配置
- `providers.json`：API 提供商设置

---

### Zh Cn Cli (`docs/zh_cn/cli.md`)

# 命令行界面（CLI）

X-AnyLabeling 提供命令行界面，用于启动图形界面、查询系统信息和转换标签格式。

> [!NOTE]
> 使用命令行前，请先按照[快速入门指南](./get_started.md)安装对应运行环境的依赖。

## 0. 目录

- [1. 图形界面启动选项](#1-图形界面启动选项)
- [2. 系统命令](#2-系统命令)
  - [2.1 显示帮助信息](#21-显示帮助信息)
  - [2.2 显示系统和软件包信息](#22-显示系统和软件包信息)
  - [2.3 显示应用版本信息](#23-显示应用版本信息)
  - [2.4 显示配置文件路径](#24-显示配置文件路径)
- [3. 标签格式转换命令](#3-标签格式转换命令)
  - [3.1 列出所有可用的转换任务](#31-列出所有可用的转换任务)
  - [3.2 显示特定任务的详细帮助](#32-显示特定任务的详细帮助)
  - [3.3 运行特定的转换任务](#33-运行特定的转换任务)
  - [3.4 转换参数说明](#34-转换参数说明)
- [4. 常见问题](#4-常见问题)

## 1. 图形界面启动选项

```bash
# 常规启动
xanylabeling

# 打开指定的图像文件
xanylabeling --filename /path/to/image.jpg

# 打开指定的图像文件夹
xanylabeling --filename /path/to/folder

# 设置输出目录
xanylabeling --output /path/to/output

# 使用自定义配置文件
xanylabeling --config /path/to/config.yaml

# 设置日志级别
xanylabeling --logger-level debug

# 禁用自动更新检查
xanylabeling --no-auto-update-check

# 将 Qt 图像分配上限提高到 1024 MB
xanylabeling --qt-image-allocation-limit 1024
```

## 2. 系统命令

### 2.1 显示帮助信息

- 输入

```bash
xanylabeling --help
```

- 输出

```
/* Detailed source-code truncated for AI context efficiency. */
```

### 2.2 显示系统和软件包信息

- 输入

```bash
xanylabeling checks
```

- 输出

```bash
Application
────────────────────────────────────────────────────────────
  App Name:          X-AnyLabeling
  App Version:       4.0.0
  Preferred Device:  CPU
────────────────────────────────────────────────────────────
System
────────────────────────────────────────────────────────────
  Operating System:  Linux-6.6.87.2-microsoft-standard-WSL2-x86_64-with-glibc2.31
  CPU:               x86_64
  CPU Count:         20
  RAM:               31.2 GB
  Disk:              841.6/1006.9 GB
  GPU:               CUDA:0 (NVIDIA GeForce RTX 3060, 12288MiB)
  CUDA:              V11.6.124
  Python Version:    3.12.10
────────────────────────────────────────────────────────────
Packages
────────────────────────────────────────────────────────────
  PyQt6 Version:                           6.9.1
  ONNX Version:                            1.19.1
  ONNX Runtime Version:                    1.23.2
  ONNX Runtime GPU Version:                None
  OpenCV Contrib Python Headless Version:  4.11.0.86
────────────────────────────────────────────────────────────
```

### 2.3 显示应用版本信息

- 输入

```bash
xanylabeling version
```

- 输出

```bash
4.0.0
```

### 2.4 显示配置文件路径

- 输入

```bash
xanylabeling config
```

- 输出

```bash
~/.xanylabelingrc
```

## 3. 标签格式转换命令

### 3.1 列出所有可用的转换任务

- 输入

```bash
xanylabeling convert
```

- 输出

```bash
================================================================================
SUPPORTED CONVERSION TASKS
================================================================================

📥 IMPORT TO XLABEL
--------------------------------------------------------------------------------
  • yolo2xlabel [detect, segment, obb, pose]
  • voc2xlabel [detect, segment]
  • coco2xlabel [detect, segment, pose]
  • dota2xlabel
  • mot2xlabel
  • ppocr2xlabel [rec, kie]
  • mask2xlabel
  • vlmr12xlabel
  • odvg2xlabel

📤 EXPORT FROM XLABEL
--------------------------------------------------------------------------------
  • xlabel2yolo [detect, segment, obb, pose]
  • xlabel2voc [detect, segment]
  • xlabel2coco [detect, segment, pose]
  • xlabel2dota
  • xlabel2mask
  • xlabel2mot
  • xlabel2mots
  • xlabel2odvg
  • xlabel2vlmr1
  • xlabel2ppocr [rec, kie]

================================================================================
Total: 19 conversion tasks
================================================================================

Usage:
  xanylabeling convert                          # Show all tasks
  xanylabeling convert --task <task>            # Show detailed help for a task
  xanylabeling convert --task <task> [options]  # Run conversion
```

### 3.2 显示特定任务的详细帮助

- 输入（以 `yolo2xlabel` 为例）

```bash
xanylabeling convert --task yolo2xlabel
```

- 输出

```bash
================================================================================
TASK: yolo2xlabel
================================================================================

Description:
  Convert YOLO format to XLABEL

Modes:
  detect, segment, obb, pose

Required Arguments:
  --images
  --labels
  --output

Mode-Specific Arguments:
  detect: --classes
  segment: --classes
  obb: --classes
  pose: --pose_cfg

Examples:
  # Detection
  xanylabeling convert --task yolo2xlabel --mode detect --images ./images --labels ./labels \
    --output ./output --classes classes.txt

  # Segmentation
  xanylabeling convert --task yolo2xlabel --mode segment --images ./images --labels ./labels \
    --output ./output --classes classes.txt

  # OBB (Oriented Bounding Box)
  xanylabeling convert --task yolo2xlabel --mode obb --images ./images --labels ./labels \
    --output ./output --classes classes.txt

  # Pose
  xanylabeling convert --task yolo2xlabel --mode pose --images ./images --labels ./labels \
    --output ./output --pose-cfg pose_config.yaml

================================================================================
```

### 3.3 运行特定的转换任务

- 输入（以 `yolo2xlabel:detect` 为例）

```bash
xanylabeling convert --task yolo2xlabel --mode detect --images ./images --labels ./labels \
    --output ./output --classes classes.txt
```

- 输出

```bash
Converting YOLO detect to XLABEL: 100%|█████████████████████████████████████| 128/128 [00:00<00:00, 2456.47it/s]
✓ Converted 128 files to XLABEL format: ./output
```

### 3.4 转换参数说明

| 参数                  | 说明                                                      | 是否必需 |
|-----------------------|-----------------------------------------------------------|----------|
| `--task`              | 转换任务名称                                              | 是       |
| `--images`            | 图像目录路径                                              | 否       |
| `--labels`            | 标签目录路径                                              | 否       |
| `--output`            | 输出目录路径                                              | 是       |
| `--classes`           | 类别文件路径                                              | 否       |
| `--pose-cfg`          | 姿态配置文件路径                                          | 否       |
| `--mode`              | 转换模式（如：detect、segment、obb、pose）                | 否       |
| `--mapping`           | 映射表文件路径                                            | 否       |
| `--skip-empty-files`  | 跳过创建空输出文件（仅支持 xlabel2yolo 和 xlabel2voc）    | 否       |

> 更多信息参见《用户手册》中的[标签导入导出](./user_guide.md#4-标签导入导出)。

## 4. 常见问题

### Q1：什么是 XLABEL 格式？

XLABEL 是 X-AnyLabeling 的原生 JSON 格式。它以人类可读的格式存储所有标注信息，包括对象信息、标签信息、属性信息及元数据等。

### Q2：是否需要为所有转换提供类别名称？

以下任务必须提供类别名称：

- YOLO 转换（detect、segment、obb 模式）
- COCO 转换（detect、segment 模式）
- MOT 转换

VOC 格式在 XML 文件中嵌入了类别名称，因此不需要单独的类别文件。

### Q3：如何创建 classes.txt 文件？

只需创建一个文本文件，每行一个类别名称：

```
person
car
bicycle
dog
cat
```

行号（从 0 开始索引）对应类别 ID。

### Q4：MOT 和 MOTS 有什么区别？

- **MOT**：使用边界框的多目标跟踪
- **MOTS**：使用分割掩码的多目标跟踪

### Q5：可以直接在格式之间转换而不经过 XLABEL 吗？

暂不支持。所有转换都需要以 XLABEL 作为中间格式：

1. 首先转换为 XLABEL
2. 然后从 XLABEL 转换为目标格式

### Q6：如果图像在子目录中怎么办？

转换器当前仅处理指定目录中的图像。对于嵌套目录，您可能需要多次运行转换或展平目录结构。

### Q7：如何在 Windows 上处理非 ASCII 路径？

转换器内置了对非 ASCII 路径的支持。确保您的终端编码设置为 UTF-8：

```bash
chcp 65001  # 在 Windows CMD 中
```

### Q8：`--skip-empty-files` 选项是什么？

此选项（由 `xlabel2yolo` 和 `xlabel2voc` 支持）可防止为没有标注的图像创建空标签文件。当您想区分"未标注"和"已标注但为空"的图像时，这很有用。

### Q9：可以使用相对路径吗？

是的，支持相对路径和绝对路径。相对路径从当前工作目录解析。

### Q10：如何转换单个文件？

将单个文件放在目录中，然后对该目录运行转换。转换器会处理指定目录中的所有匹配文件。

---

### Zh Cn Custom Model (`docs/zh_cn/custom_model.md`)

# 模型加载

X-AnyLabeling 内置了多种通用模型，完整列表参见[模型列表](./model_zoo.md)。

> [!TIP]
> 如需部署远程推理服务或支持多人协作，请参考 [X-AnyLabeling-Server](https://github.com/CVHub520/X-AnyLabeling-Server)。

## 加载内置模型

使用 AI 辅助标注前，需要先加载模型。点击左侧工具栏中的 AI 按钮，或按 `Ctrl+A` 打开模型面板。

从模型下拉列表中选择模型后，应用会检查 `~/xanylabeling_data/models/${model_name}` 中是否已有模型文件；存在时直接加载，否则自动下载到该目录。使用 `--work-dir` 时，数据目录位于指定工作目录下。

内置模型通常从配置文件指定的 URL 下载，部分模型也可切换至 ModelScope 下载源。请确保当前网络可以访问对应地址。

对由于网络问题未能成功加载模型的用户，可选择离线下载并手动加载模型或修改模型下载源。

### 离线下载模型

- 打开[模型列表](./model_zoo.md)，找到目标模型对应的配置文件。
- 编辑配置文件，修改模型路径，并根据需要选择性地修改其他超参数。
- 打开工具界面，点击**加载自定义模型**，选择配置文件所在路径即可。

### 修改模型下载源

详情参见《用户手册》中的[模型下载源配置](./user_guide.md#77-模型下载源配置)。

## 加载已适配的用户自定义模型

> **已适配模型**是指 X-AnyLabeling 已实现推理代码的模型。使用这类模型时，只需准备模型文件和配置文件。适配模型参见[模型列表](./model_zoo.md)。

本教程中，我们以 [YOLOv5s](https://github.com/ultralytics/yolov5) 模型为例，详细介绍如何加载自定义模型。

**a. 模型转换**

假设已经在本地训练好模型，可先将 PyTorch 权重导出为 X-AnyLabeling 默认使用的 ONNX 格式：

```bash
python export.py --weights yolov5s.pt --include onnx
```

导出参数应与所选模型适配器的输入和输出约定一致。除非对应实现明确支持动态尺寸，否则建议使用固定输入尺寸。

此外，强烈建议通过 [Netron](https://netron.app/) 在线工具导入上一步导出的 `*.onnx` 文件，检查输入和输出节点信息，确保维度等信息符合预期。

<p align="center">
  <img src="../../assets/resources/netron.png" alt="Netron">
</p>

**b. 模型配置**

准备好 ONNX 文件后，在[模型列表](./model_zoo.md)中找到并复制对应模型的配置文件。

以 [yolov5s.yaml](../../anylabeling/configs/auto_labeling/yolov5s.yaml) 为例，其内容如下：

```YAML
type: yolov5
name: yolov5s-r20230520
provider: Ultralytics
display_name: YOLOv5s
model_path: https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov5s.onnx
iou_threshold: 0.45
conf_threshold: 0.25
max_det: 300
classes:
  - person
  - bicycle
  - car
  ...
```

| 字段 | 描述 | 是否可修改 |
|------|------|------------|
| `type` | 模型类型标识，不支持自定义 | ❌ |
| `name` | 模型配置文件的索引名称，保留默认值即可 | ❌ |
| `provider` | 模型提供商，可根据实际情况修改 | ✔️ |
| `display_name` | 在界面上模型下拉列表中显示的名称，可自行修改 | ✔️ |
| `model_path` | 模型加载路径，支持相对路径和绝对路径 | ✔️ |
| `iou_threshold` | 用于非极大值抑制的交并比阈值 | ✔️ |
| `conf_threshold` | 用于非极大值抑制的置信度阈值 | ✔️ |
| `max_det` | 最大检测框数量 | ✔️ |
| `classes` | 模型的标签列表，需与训练时的标签列表一致 | ✔️ |

需要注意的是，以上字段并非所有模型都适用，具体可参考对应模型的定义。

例如，我们可以看下 [YOLO](../../anylabeling/services/auto_labeling/__base__/yolo.py) 模型的实现，其额外提供了以下可选配置项：

| 字段 | 描述 |
|------|------|
| `filter_classes` | 指定推理时使用的类别 |
| `agnostic` | 是否使用类别无关的 NMS |

一个典型的参考示例如下：

```YAML
type: yolov5
name: yolov5s-r20230520
provider: Ultralytics
display_name: YOLOv5s
model_path: https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov5s.onnx
iou_threshold: 0.60
conf_threshold: 0.25
agnostic: True
filter_classes:
  - person
  - car
classes:
  - person
  - bicycle
  - car
  - ...
```

特别地，当且仅当使用低版本的 YOLOv5（v5.0 及以下）时，需要在配置文件中指定 `anchors` 和 `stride` 字段，否则请务必不要指定这些字段，以免造成模型推理错误。示例如下：

```YAML
type: yolov5
...
stride: 32
anchors:
  - [10,13, 16,30, 33,23]  # P3/8
  - [30,61, 62,45, 59,119]  # P4/16
  - [116,90, 156,198, 373,326]  # P5/32
```

> [!TIP]
>   1. 对于分割模型，可指定 `epsilon_factor` 参数来控制输出轮廓点的平滑程度，默认值为 `0.005`。
>   2. 对于 `YOLO26` 系列模型，如果导出的 `ONNX` 文件已经包含 `NMS` 后处理，请继承 `YOLO11` 模板进行适配；默认的 `YOLO26` 模板适用于 `nms-free` 输出。

**可选：切换 YOLO 推理后端（`engine` 字段）**

对于 YOLO 系列模型，还可以在配置文件中通过 `engine` 字段切换推理后端。该字段属于模型配置的一部分，通常与 `model_path` 一起修改：

| 取值 | 说明 | 依赖 |
|------|------|------|
| `ort` | 默认值，使用 ONNX Runtime 推理 (`*.onnx`) | 内置 |
| `dnn` | 使用 OpenCV DNN 推理 (`*.onnx`) | 内置 |
| `trt` | 使用 NVIDIA TensorRT 推理 (`*.engine`) | 需额外安装 TensorRT 运行时依赖 |

> TensorRT 不属于 X-AnyLabeling 的默认依赖，仅在希望以 TensorRT 后端加速 NVIDIA GPU 推理时才需要安装。如未安装相关依赖，软件其他功能不会受到影响。

使用 TensorRT 推理时，还需要额外完成以下准备：

- **环境准备**

请先确认本机已正确安装 NVIDIA 驱动和 CUDA，然后在 X-AnyLabeling 所在的 Python 环境中安装 TensorRT 运行时依赖：

```bash
uv pip install tensorrt cuda-python
```

> [!NOTE]
> 如果未使用 `uv` 管理环境，也可以将上述命令替换为 `pip install tensorrt cuda-python`。请确保所安装的 `tensorrt` 版本与本地 CUDA 版本兼容；用于推理的 `*.engine` 文件必须使用相同主版本的 TensorRT 在相同 GPU 架构下导出，否则反序列化会失败。

- **准备 `.engine` 文件**

以 `YOLO26` 模型为例，可参考官方手册 [Ultralytics YOLO26](https://docs.ultralytics.com/modes/export/#how-do-i-export-a-yolo26-model-to-onnx-format) 导出 TensorRT 后端模型文件。

导出的 `.engine` 文件会自带一段 Ultralytics 写入的 JSON 元数据头，X-AnyLabeling 已自动兼容，无需手工剥离。

- **配置模型**

参考 [yolo26s_trt.yaml](../../anylabeling/configs/auto_labeling/yolo26s_trt.yaml) 配置，将 `model_path` 指向 `.engine` 文件，并显式指定 `engine: trt`：

```YAML
type: yolo26
model_path: /path/to/yolo26s.engine
engine: trt
```

随后按照[离线下载模型](#离线下载模型)的流程，通过**加载自定义模型**导入该 YAML 文件，即可使用 TensorRT 推理。

**c. 模型加载**

了解完上述内容后，修改配置文件中的 `model_path` 字段，并根据需要选择性地修改其他超参数即可。

目前软件支持 **相对路径** 和 **绝对路径** 两种模型加载方式，用户在填写模型路径时，注意避免路径中转义字符的影响。

最后，在界面上方菜单栏中的模型下拉框列表中，找到 `...加载自定义模型` 选项，然后导入上一步准备的配置文件即可完成自定义模型加载。


## 加载未适配的用户自定义模型

> **未适配模型**指还未在 X-AnyLabeling 中适配过的模型，需要用户自行参考以下实施步骤进行集成。

这里以多类别语义分割模型 `U-Net` 为例，可遵循以下实施步骤：

**a. 训练及导出模型**

导出 `ONNX` 模型，确保输出节点的维度为 `[1, C, H, W]`，其中 `C` 为总的类别数（包含背景类）。

> ONNX 并非唯一可用格式，也可以根据适配器需要使用 PyTorch、OpenVINO 或 TensorRT。以 SAM 2 视频目标追踪为例，可参考[安装指南](../../examples/interactive_video_object_segmentation/sam2/README.md)、[配置文件](../../anylabeling/configs/auto_labeling/sam2_hiera_base_video.yaml)和[推理实现](../../anylabeling/services/auto_labeling/segment_anything_2_video.py)。

**b. 定义配置文件**

首先，在[配置文件目录](../../anylabeling/configs/auto_labeling)下新增 `unet.yaml`：

```YAML
type: unet
name: unet-r20250101
display_name: U-Net (ResNet34)
provider: xxx
conf_threshold: 0.5
model_path: /path/to/best.onnx
classes:
  - cat
  - dog
  - _background_
```

其中：

| 字段 | 描述   |
|-----|--------|
| `type` | 指定模型类型，确保与现有模型类型不重复，以维护模型标识的唯一性。|
| `name` | 定义模型索引，用于内部引用和管理，避免与现有模型的索引名称冲突。|
| `display_name` | 显示在用户界面中的模型名称，不得与其他模型重名。 |

以上三个字段不可省略。还可根据需要添加模型提供商、模型路径和模型超参数等字段。

**c. 添加配置文件**

其次，将上述配置文件添加到[模型管理文件](../../anylabeling/configs/models.yaml)中：

```yaml
...

- model_name: "unet-r20250101"
  config_file: ":/unet.yaml"
...

```

**d. 配置 UI 组件**

根据模型需要，将模型类型添加到 [auto_labeling/__init__.py](../../anylabeling/services/auto_labeling/__init__.py) 中对应的 UI 控件列表。

**e. 定义推理服务**

在定义推理服务的过程中，继承 [Model](../../anylabeling/services/auto_labeling/model.py) 基类是关键步骤之一，它允许你实现特定于模型的前向推理逻辑。

具体地，你可以在[模型推理服务目录](../../anylabeling/services/auto_labeling/)下新建一个 `unet.py` 文件，参考示例如下：

```
/* Detailed source-code truncated for AI context efficiency. */
```

这里：

- 元数据 `Meta` 类中：
    - `required_config_names`：用于指定模型配置文件中必须包含的配置项，确保模型推理服务能够正确初始化。
    - `widgets`：指定模型推理服务中需要显示的控件，如按钮、下拉框等，具体可参考此 [文件](../../anylabeling/services/auto_labeling/__init__.py) 中的定义。
    - `output_modes`：指定模型推理服务中输出的形状类型，支持多边形、矩形和旋转框等。
    - `default_output_mode`：指定模型推理服务中默认的输出形状类型。
- `predict_shapes` 和 `unload` 均属于抽象方法，分别用于定义模型推理过程和模型资源释放逻辑，因此一定需要实现。


**f. 添加至模型管理**

完成上述步骤后，将模型类型（如 `unet`）添加到 [auto_labeling/__init__.py](../../anylabeling/services/auto_labeling/__init__.py) 的 `_CUSTOM_MODELS` 列表，并根据需要加入相应的 UI 控件列表。

> **提示**: 如果你不知道如何实现对应的控件，可打开搜索面板，输入相应关键字，查看所有可用控件的实现逻辑。

最后，移步至 [模型管理类文件](../../anylabeling/services/auto_labeling/model_manager.py) 中，在 `_load_model` 方法中按照如下方式初始化你的实例：


```python
...

class ModelManager(QObject):
    """Model manager"""

    def __init__(self):
        ...
    ...
    def _load_model(self, model_id):
        """Load and return model info"""
        if self.loaded_model_config is not None:
            self.loaded_model_config["model"].unload()
            self.loaded_model_config = None
            self.auto_segmentation_model_unselected.emit()

        model_config = copy.deepcopy(self.model_configs[model_id])
        if model_config["type"] == "yolov5":
            ...
        elif model_config["type"] == "unet":
            from .unet import UNet

            try:
                model_config["model"] = UNet(
                    model_config, on_message=self.new_model_status.emit
                )
                self.auto_segmentation_model_unselected.emit()
            except Exception as e:  # noqa
                self.new_model_status.emit(
                    self.tr(
                        "Error in loading model: {error_message}".format(
                            error_message=str(e)
                        )
                    )
                )
                print(
                    "Error in loading model: {error_message}".format(
                        error_message=str(e)
                    )
                )
                return
          ...
    ...
```

> [!NOTE]
> 模型类型必须与 **b. 定义配置文件**中的 `type` 字段一致。如果模型使用 SAM 交互模式，应触发 `self.auto_segmentation_model_selected`，而不是 `self.auto_segmentation_model_unselected`。


# 模型导出

> 本章节将向您展示一些将自定义模型转换为 ONNX 模型的具体示例，以便您快速集成到 X-AnyLabeling 中。

更多模型导出示例请参考 [`tools/onnx_exporter`](../../tools/onnx_exporter/) 目录。

## 图像分类

### [InternImage](https://github.com/OpenGVLab/InternImage)

InternImage 引入了一个大规模卷积神经网络 (CNN) 模型，利用可变形卷积作为核心操作符，以实现大的有效感受野、自适应空间聚合和减少的归纳偏置，从而从大量数据中学习到更强、更鲁棒的模式。它在基准测试中超越了当前的 CNN 和视觉Transformer。

| 属性           | 值                                                                 |
|----------------|--------------------------------------------------------------------|
| 论文标题       | InternImage: Exploring Large-Scale Vision Foundation Models with Deformable Convolutions |
| 发表单位       | 上海人工智能实验室，清华大学，南京大学等                              |
| 发表时间       | CVPR'23                                                          |

请参考此 [教程](../../tools/onnx_exporter/export_internimage_model_onnx.py)。

### [PersonAttribute](https://github.com/PaddlePaddle/PaddleClas/blob/release/2.5/docs/zh_CN/models/PULC/PULC_person_attribute.md)

本教程为用户提供了一种使用 PaddleClas PULC (实用超轻量图像分类) 快速构建轻量、高精度和实用的人员属性分类模型的方法。该模型可广泛用于行人分析场景、行人跟踪场景等。

请参考此 [教程](../../tools/onnx_exporter/export_pulc_attribute_model_onnx.py)。

### [VehicleAttribute](https://github.com/PaddlePaddle/PaddleClas/blob/release/2.5/docs/zh_CN/models/PULC/PULC_vehicle_attribute.md)

本教程为用户提供了一种使用 PaddleClas PULC (实用超轻量图像分类) 快速构建轻量、高精度和实用的车辆属性分类模型的方法。该模型可广泛用于车辆识别、道路监控等场景。

请参考此 [教程](../../tools/onnx_exporter/export_pulc_attribute_model_onnx.py)。

## 目标检测

### [RF-DETR](https://github.com/roboflow/rf-detr)

`RF-DETR` 是第一个在 Microsoft COCO 基准测试中超过 60 AP 的实时模型，同时在小尺寸模型中表现出色。它还在 RF100-VL 上实现了最先进的性能，这是一个衡量模型对现实世界问题适应能力的对象检测基准。RF-DETR 的性能与当前的实时目标检测模型相当。

> 机构: Roboflow

请参考此 [教程](../../tools/onnx_exporter/export_rfdetr_onnx.py)。

### [YOLOv5_OBB](https://github.com/hukaixuan19970627/yolov5_obb)

> 作者: Kaixuan Hu

请参考此 [教程](https://github.com/CVHub520/yolov5_obb/tree/main)。

### [YOLOv7](https://github.com/WongKinYiu/yolov7)

| 属性           | 值                                                                 |
|----------------|--------------------------------------------------------------------|
| 论文标题       | YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors |
| 发表单位       | 台湾中央研究院信息科学研究所                                         |

```bash
python export.py --weights yolov7.pt --img-size 640 --grid
```

> **注意：** 运行此命令时必须包含 `--grid` 参数。

### [Gold-YOLO](https://github.com/huawei-noah/Efficient-Computing/tree/master/Detection/Gold-YOLO)

| 属性           | 值                                                                 |
|----------------|--------------------------------------------------------------------|
| 论文标题       | Efficient object detectors including Gold-YOLO                     |
| 发表单位       | 华为诺亚                                                           |
| 发表时间       | NeurIPS'23                                                          |

```bash
git clone https://github.com/huawei-noah/Efficient-Computing.git
cd Detection/Gold-YOLO
python deploy/ONNX/export_onnx.py --weights Gold_n_dist.pt --simplify --ort
```

### [DAMO-YOLO](https://github.com/tinyvision/DAMO-YOLO)

`DAMO-YOLO` 是由阿里巴巴达摩院数据分析与智能实验室的 TinyML 团队开发的一种快速准确的目标检测方法。它通过引入新的技术，包括神经架构搜索 (NAS) 主干网、高效的重参数化通用-FPN (RepGFPN)、轻量级头部和 AlignedOTA 标签分配，并进行蒸馏增强，使其性能超过了最新的 YOLO 系列。更多细节请参阅 Arxiv 报告。这里不仅可以找到强大的模型，还可以找到从训练到部署的高效训练策略和完整工具。

| 属性           | 值                                                                 |
|----------------|--------------------------------------------------------------------|
| 论文标题       | DAMO-YOLO: A Report on Real-Time Object Detection                  |
| 发表单位       | 阿里巴巴集团                                                       |
| 发表时间       | Arxiv'22                                                            |

```bash
git clone https://github.com/tinyvision/DAMO-YOLO.git
cd DAMO-YOLO
python tools/converter.py -f configs/damoyolo_tinynasL25_S.py -c damoyolo_tinynasL25_S.pth --batch_size 1 --img_size 640
```

### [RT-DETR](https://github.com/lyuwenyu/RT-DETR)

实时检测变换器 (`RT-DETR`，又称 RTDETR) 是已知的第一个实时端到端目标检测器。RT-DETR-L 在 COCO val2017 上达到了 53.0% AP，并在 T4 GPU 上达到了 114 FPS，而 RT-DETR-X 达到了 54.8% AP 和 74 FPS，速度和准确性都超过了同规模的所有 YOLO 检测器。此外，RT-DETR-R50 达到了 53.1% AP 和 108 FPS，准确性比 DINO-Deformable-DETR-R50 高 2.2% AP，FPS 快约 21 倍。

| 属性           | 值                                                                 |
|----------------|--------------------------------------------------------------------|
| 论文标题       | RT-DETR: DETRs Beat YOLOs on Real-time Object Detection            |
| 发表单位       | 百度                                                               |
| 发表时间       | Arxiv'22                                                            |

请参考此 [文章](https://zhuanlan.zhihu.com/p/628660998)。

### [Hyper-YOLO](https://github.com/iMoonLab/Hyper-YOLO)

Hyper-YOLO 是一种新型目标检测方法，通过集成超图计算来捕获视觉特征之间的复杂高阶关联。该模型引入了超图计算增强的语义收集和散射（HGC-SCS）框架，将视觉特征图转换到语义空间并构建超图以进行高阶信息传播。

| 属性           | 值                                                                 |
|----------------|--------------------------------------------------------------------|
| 论文标题       | Hyper-YOLO: When Visual Object Detection Meets Hypergraph Computation |
| 发表单位       | 清华大学，西安交通大学                                              |
| 发表时间       | TAPMI'25                                                            |

下载模型，安装依赖后，修改`Hyper-YOLO/ultralytics/export.py`文件，设置`batch=1`和`half=False`：

```bash
import sys
import os
sys.path.append(os.getcwd())
from pathlib import Path
from ultralytics import YOLO

import os
os.environ["CUDA_VISIBLE_DEVICES"] = "0"
import torch
torch.cuda.device_count.cache_clear()

if __name__ == '__main__':
    model = 'hyper-yolon-seg.pt'
    if isinstance(model, (str, Path)):
        model = YOLO(model)
    filename = model.export(imgsz=640, batch=1, format='ONNX', int8=False, half=False, device="0", verbose=False)
```

然后运行以下命令导出即可：

```bash
python3 ultralytics/utils/export_onnx.py
```

### [D-FINE](https://github.com/Peterande/D-FINE)

`D-FINE`是一款强大的实时目标检测器，它将DETR中的边界框回归任务重新定义为细粒度分布优化(FDR)，并引入全局最优定位自蒸馏(GO-LSD)，在不增加额外推理和训练成本的情况下实现了卓越性能。

| 属性           | 值                                                                 |
|----------------|--------------------------------------------------------------------|
| 论文标题       | D-FINE: Redefine Regression Task of DETRs as Fine-grained Distribution Refinement                      |
| 发表单位       | 中国科学技术大学                                                    |
| 发表时间       | ICLR'25 Spotlight                                                  |

请参考[导出脚本](../../tools/onnx_exporter/export_dfine_onnx.py)。

### [D-FINE-seg](https://github.com/ArgoHA/D-FINE-seg)

`D-FINE-seg` 在 D-FINE 检测架构上引入轻量级实例分割头，通过融合多尺度特征与查询掩码嵌入生成高质量实例掩码，并支持多后端实时部署。该模型提供 N、S、M、L 和 X 五种不同规模，以适应不同的精度与性能需求。

| 属性           | 值                                                                 |
|----------------|--------------------------------------------------------------------|
| 论文标题       | D-FINE-seg: Object Detection and Instance Segmentation Framework with Multi-Backend Deployment |
| 作者           | Argo Saakyan & Dmitry Solntsev                                     |
| 发表时间       | Arxiv'26                                                           |

请参考[官方导出说明](https://github.com/ArgoHA/D-FINE-seg#export)。

### [DEIMv2](https://github.com/Intellindust-AI-Lab/DEIMv2)

`DEIMv2` 是 DEIM 框架的进化版本，同时利用了 DINOv3 的丰富特征。该方法设计了从超轻量级版本到 S、M、L 和 X 等不同规模的模型，以适应各种应用场景。在这些变体中，DEIMv2 都达到了最先进的性能，其中 S 级模型在具有挑战性的 COCO 基准测试中显著超过了 50 AP。

| 属性           | 值                                                                 |
|----------------|--------------------------------------------------------------------|
| 论文标题       | Real-Time Object Detection Meets DINOv3                      |
| 发表单位       | 英特灵达 & 厦门大学                                 |
| 发表时间       | Arxiv'25                                                 |

请参考[导出脚本](../../tools/onnx_exporter/export_deimv2_onnx.py)。

## Segment Anything 系列

### [SAM](https://github.com/vietanhdev/samexporter)

分割一切模型 (`SAM`) 从输入提示（如点或框）中生成高质量的物体掩码。它可用于生成图像中所有物体的掩码，并在 1100 万张图像和 11 亿个掩码的数据集上进行了训练。SAM 在各种分割任务中具有强大的零样本性能。

| 属性           | 值                                                                 |
|----------------|--------------------------------------------------------------------|
| 论文标题       | Segment Anything                                                  |
| 发表单位       | Meta AI 研究院，FAIR                                                |
| 发表时间       | ICCV'23                                                            |

请参考这些 [步骤](https://github.com/vietanhdev/samexporter#sam-exporter)。

### [Efficient-SAM](https://github.com/CVHub520/efficientvit)

`EfficientViT` 是一系列新的视觉模型，用于高效的高分辨率密集预测。它使用一种新的轻量级多尺度线性注意模块作为核心构建模块。该模块仅通过硬件高效操作实现全局感受野和多尺度学习。

| 属性           | 值                                                                 |
|----------------|--------------------------------------------------------------------|
| 论文标题       | EfficientViT: Multi-Scale Linear Attention for High-Resolution Dense Prediction |
| 发表单位       | 麻省理工学院                                                        |
| 发表时间       | ICCV'23                                                            |

请参考这些 [步骤](https://github.com/CVHub520/efficientvit#benchmarking-with-onnxruntime)。

### [SAM-Med2D](https://github.com/CVHub520/SAM-Med2D)

`SAM-Med2D` 是为解决将最先进的图像分割技术应用于医学图像挑战而开发的专业模型。

| 属性           | 值                                                                 |
|----------------|--------------------------------------------------------------------|
| 论文标题       | SAM-Med2D                                                          |
| 发表单位       | OpenGVLab                                                         |
| 发表时间       | Arxiv'23                                                            |

请参考这些 [步骤](https://github.com/CVHub520/SAM-Med2D#-deploy)。

### [HQ-SAM](https://github.com/SysCV/sam-hq)

`HQ-SAM` 是增强版的任意物体分割模型 (SAM)，旨在提高掩码预测质量，特别是针对复杂结构，同时保持 SAM 的效率和零样本能力。它通过改进的解码过程和在专用数据集上的额外训练来实现这一目标。

| 属性           | 值                                                                 |
|----------------|--------------------------------------------------------------------|
| 论文标题       | Segment Anything in High Quality                                  |
| 发表单位       | 苏黎世联邦理工学院和香港科技大学                                    |
| 发表时间       | NeurIPS'23                                                      |

请参考此 [教程](https://github.com/CVHub520/sam-hq)。

### [EdgeSAM](https://github.com/chongzhou96/EdgeSAM)

`EdgeSAM` 是适用于边缘设备的 SAM 加速变体。根据其论文报告，它比原版 SAM 快 40 倍，在边缘设备上比 MobileSAM 快 14 倍，同时在 COCO 和 LVIS 数据集上的 mIoU 分别提高 2.3 和 3.2，并可在 iPhone 14 上达到 30 FPS 以上。

| 属性           | 值                                                                 |
|----------------|--------------------------------------------------------------------|
| 论文标题       | Prompt-In-the-Loop Distillation for On-Device Deployment of SAM   |
| 发表单位       | 南洋理工大学 S-Lab，上海人工智能实验室                               |
| 发表时间       | Arxiv'23                                                        |

请参考此 [教程](https://github.com/chongzhou96/EdgeSAM/blob/master/scripts/export_onnx_model.py)。

## Grounding

### [Grounding DINO](https://github.com/IDEA-Research/GroundingDINO)

`Grounding DINO` 是一款最先进的 (SOTA) 零样本目标检测模型，擅长检测训练中未定义的物体。其独特的能力使其能够适应新物体和场景，使其在现实世界应用中具有高度的多样性。它在指称表达理解 (REC) 方面表现出色，能够基于文本描述识别和定位图像中的特定物体或区域。Grounding DINO 简化了目标检测，通过消除手工设计的组件（如非极大值抑制 (NMS)），简化了模型架构，增强了效率和性能。

| 属性           | 值                                                                 |
|----------------|--------------------------------------------------------------------|
| 论文标题       | Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection |
| 发表单位       | IDEA-CVR，IDEA-Research                                             |
| 发表时间       | Arxiv'23                                                            |

请参考此 [教程](../../tools/onnx_exporter/export_grounding_dino_onnx.py)。

### [YOLO-World](https://github.com/AILab-CVC/YOLO-World)

`YOLO-World` 通过引入视觉语言建模来增强 YOLO 系列，实现高效的开放场景目标检测，在各种任务中表现出色。

| 属性           | 值                                                                 |
|----------------|--------------------------------------------------------------------|
| 论文标题       | Real-Time Open-Vocabulary Object Detection                        |
| 发表单位       | 腾讯人工智能实验室，ARC 实验室，腾讯 PCG，华中科技大学                |
| 发表时间       | Arxiv'24                                                        |

```bash
git clone https://github.com/ultralytics/ultralytics.git
cd ultralytics
yolo export model=yolov8s-worldv2.pt format=onnx opset=13 simplify
```

### [GeCo](https://github.com/jerpelhan/GeCo.git)

`GeCo` 是一种统一架构的少样本计数器，通过新颖的密集查询和计数损失，实现了高精度的目标检测、分割和计数。

| 属性           | 值                                                                 |
|----------------|--------------------------------------------------------------------|
| 论文标题       | A Novel Unified Architecture for Low-Shot Counting by Detection and Segmentation |
| 发表单位       | 卢布尔雅那大学                                                        |
| 发表时间       | NeurIPS'24                                                        |

请参考此 [教程](../../tools/onnx_exporter/export_geco_onnx.py)。

## 图像标签

### [Recognize Anything](https://github.com/xinyu1205/Tag2Text)

`RAM` 是一款以其卓越图像识别能力著称的强大图像打标签模型。RAM 在零样本泛化方面表现出色，具有成本效益高和可复现的优点，依赖于开源和无注释数据集。RAM 的灵活性使其适用于广泛的应用场景，成为各种图像识别任务中的宝贵工具。

| 属性           | 值                                                                 |
|----------------|--------------------------------------------------------------------|
| 论文标题       | Recognize Anything: A Strong Image Tagging Model                  |
| 发表单位       | OPPO 研究院，IDEA-Research，AI Robotics                              |
| 发表时间       | Arxiv'23                                                            |

请参考此 [教程](../../tools/onnx_exporter/export_recognize_anything_model_onnx.py)。

---

### Zh Cn Faq (`docs/zh_cn/faq.md`)

# 常见问题解答 (FAQ)


## 安装与运行相关问题

<details>
<summary>Q：启动时报错“仅完成部分的 ReadProcessMemory 或 WriteProcessMemory 请求”</summary>

可尝试重新打开一次。
</details>

<details>
<summary>Q: 启动时报错：ImportError: No module named expat; use SimpleXMLTreeBuilder instead</summary>

`Conda` 会自动更新系统库（如 expat）到最新版本，导致与预编译的 Python 模块不兼容。可尝试下载低版本 expat 解决，如：
```bash
conda install expat=2.5.0 -y
```
</details>

<details>
<summary>Q: 在 Fedora KDE 等环境下鼠标移动缓慢，响应延迟</summary>

在 Fedora KDE 桌面环境（包括 Wayland 和 X11）下，可能会遇到画布上鼠标指针移动缓慢、响应延迟的性能问题。

- 方法1：使用命令行参数强制使用 XCB 平台
```bash
python -m anylabeling --qt-platform xcb
```

- 方法2：设置环境变量
```bash
export QT_QPA_PLATFORM=xcb
python -m anylabeling
```

详情可参考[#1145](https://github.com/CVHub520/X-AnyLabeling/issues/1145)。
</details>

<details>
<summary>Q: 启动时报错：Failed to execute script 'app' due to unhandled exception: 'str' object does not support item assignment</summary>

删除用户目录下的配置文件后再重启。
可参考[#996](https://github.com/CVHub520/X-AnyLabeling/issues/996)。
</details>

<details>
<summary>Q: 启动时报错：OPENSSL_Uplink(00007FFE6B47AC88,08): not OPENSSL_Applink</summary>

可参考[#941](https://github.com/CVHub520/X-AnyLabeling/issues/941)。
</details>

<details>
<summary>Q: 程序运行时崩溃，出现 `Qt5Core.dll` 依赖库错误</summary>

可参考[#907](https://github.com/CVHub520/X-AnyLabeling/issues/907)。
</details>

<details>
<summary>Q: 启动时报错：Gtk-WARNING **: 17:40:30.674: Could not load a pixbuf from icon theme </summary>

可参考[#893](https://github.com/CVHub520/X-AnyLabeling/issues/893)。
</details>

<details>
<summary>Q: 启动时报错：AttributeError: 'NoneType' object has no attribute 'items'</summary>

可删除用户目录下的 `.xanylabelingrc` 文件再尝试重启。可参考[#877](https://github.com/CVHub520/X-AnyLabeling/issues/877)。
</details>

<details>
<summary>Q: 启动时报错：`Could not locate cublasLt64_12.dll. Please make sure it is in your library path!` </summary>

方案 1：ONNX Runtime 与 CUDA 版本不兼容，可参考 [#844](https://github.com/CVHub520/X-AnyLabeling/issues/844)。

方案 2：如果没有全局安装 CUDA 和 cuDNN，可参考 [#1014](https://github.com/CVHub520/X-AnyLabeling/issues/1014)。
</details>

<details>
<summary>Q: 启动时报错：`qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found` </summary>

可参考[#541](https://github.com/CVHub520/X-AnyLabeling/issues/541)、[#496](https://github.com/CVHub520/X-AnyLabeling/issues/496)。
</details>

<details>
<summary>Q: 启动时报错：`qt.qpa.plugin: Could not find the Qt platform plugin "wayland" in "/usr/lib/qt/plugins/platforms/"` </summary>

可参考[#761](https://github.com/CVHub520/X-AnyLabeling/issues/761)。
</details>

<details>
<summary>Q：GPU 版本运行时闪退</summary>

可参考[#500](https://github.com/CVHub520/X-AnyLabeling/issues/500)。
</details>

<details>
<summary>Q: QStandardPaths: wrong permissions on runtime directory /run/user/1000/, 0755 instead of 0700</summary>

添加 `chmod 0700 /run/user/1000/` 到 `.bashrc` 文件中激活并重新启动应用即可。
</details>

<details>
<summary>Q: 启动软件时出现 `AttributeError: module 'importlib.resources' has no attribute 'files'` </summary>

请将 Python 版本升级至 3.11 及以上。
</details>


## 界面交互相关问题

<details>
<summary>Q: 如何快速绘制小目标物体？</summary>

可参考 [#1000](https://github.com/CVHub520/X-AnyLabeling/issues/1000)。
</details>

<details>
<summary>Q: 如何标注镂空目标用于图像分割任务？</summary>

可参考 [#991](https://github.com/CVHub520/X-AnyLabeling/issues/991)。
</details>

<details>
<summary>Q: 如何快速进行多目标关键点标签与分组标注？</summary>

可参考 [#982](https://github.com/CVHub520/X-AnyLabeling/issues/982)。
</details>

<details>
<summary>Q: 绘制矩形等目标框时，如何开启连续绘制模式？</summary>

可以打开电脑用户目录下的 .xanylabelingrc 配置文件，修改 auto_highlight_shape 和 auto_switch_to_edit_mode 为 False。
可参考 [#887](https://github.com/CVHub520/X-AnyLabeling/issues/887)。
</details>

<details>
<summary>Q: 在高分辨率显示器上界面显示模糊</summary>

可参考[#811](https://github.com/CVHub520/X-AnyLabeling/issues/811)。
</details>

<details>
<summary>Q: 标注完成后，没有弹出标签管理器自动分配标签名称？</summary>

取消勾选 `Auto Use Last Label`，可参考[#805](https://github.com/CVHub520/X-AnyLabeling/issues/805)。
</details>

<details>
<summary>Q: 复制粘贴标注对象时出现重叠？(Duplicate Polygons vs Copy & Paste Objects)</summary>

X-AnyLabeling 提供两种用途不同的复制方式：

- `Ctrl+D` 用于在当前图片中快速复制对象。新对象默认会偏移 2 个像素，避免与原对象完全重叠。
- `Ctrl+C` 和 `Ctrl+V` 主要用于跨图片复制对象。粘贴时会保留原坐标，因此在同一张图片中粘贴时会与原对象重叠。

系统剪贴板默认关闭，此时复制内容仅保存在应用内部，切换图片后仍可粘贴。若需将标注以 JSON 格式写入系统剪贴板，可启用 `Edit > Use System Clipboard`；启用后，每次复制都会覆盖系统剪贴板中的原有内容。

</details>

<details>
<summary>Q: 无法打开 *.jpg、*.png 等格式的图片？</summary>

可参考[#823](https://github.com/CVHub520/X-AnyLabeling/issues/823)。
</details>

<details>
<summary>Q: 打不开超大分辨率图片，或打开大图时提示内存限制？</summary>

这通常不是图片文件本身体积过大，而是 Qt 在解码图片时命中了 `QImageReader` 的默认分配上限（默认约为 `256 MB`）。

你可以按需手动调整这个限制：

- 方式1：通过 GUI 设置
  打开 `Settings`（`Ctrl+0`）> `General`，修改 `Qt Image Allocation Limit`
- 方式2：通过配置文件
  编辑用户目录下的 `.xanylabelingrc`，设置 `qt_image_allocation_limit`
- 方式3：通过启动参数
  使用 `--qt-image-allocation-limit`

示例：

```yaml
qt_image_allocation_limit: 1024
```

```bash
xanylabeling --qt-image-allocation-limit 1024
```

说明：

- `null`：保留 Qt 默认限制
- `0`：禁用该限制
- 其他正整数：按 MB 指定新的上限，例如 `512`、`1024`

修改该设置后需要重启应用才能生效。若机器内存较小，不建议直接设置为 `0`。
</details>


## 模型相关问题

<details>
<summary>Q: 如何使用带 NMS 的 YOLO26 模型（自动标注时出现多个重叠框如何解决）？</summary>

YOLO26 默认导出为 end2end（NMS-free）模型，若希望使用带 NMS 的后处理以消除重叠框，可按以下方式操作：

1. 从 PT 导出 ONNX 时，将参数设置为 **end2end=false**；
2. end2end=false 时后处理与 YOLO11 一致，因此在自定义模型配置文件中需将 **type 设为 yolo11**，不要使用 type: yolo26。

详情可参考 [#1280](https://github.com/CVHub520/X-AnyLabeling/issues/1280)。
</details>

<details>
<summary>Q: 为什么使用预编译的 EXE 运行 Ultralytics（YOLO）训练会报错？</summary>

目前，通过 X-AnyLabeling 的预编译可执行文件（EXE）版本直接进行 Ultralytics/YOLO 模型训练暂不支持。主要原因包括：1）官方发布的 EXE 默认未打包 Ultralytics 训练环境；2）将应用打包成独立 EXE 后，Python 在子进程调用、动态脚本执行（例如 train_script.py）等方面存在固有的复杂性和限制，无法像在源码环境中一样正确生成并调用训练脚本。

在 Python 源码环境中运行 X-AnyLabeling 时，训练功能可正常使用。因此如需进行 YOLO 模型训练，请使用 Python 环境运行本软件。

详情可参考 [#1100](https://github.com/CVHub520/X-AnyLabeling/issues/1100)。
</details>

<details>
<summary>Q: 在 venv 环境中运行时出现 "Error loading tokenizer: No such file or directory (os error 2)"</summary>

这个问题的根源在于 Python 的资源加载机制。当我们用 `importlib.resources.files()` 获取包内资源时，它返回的实际上是一个 `Traversable` 对象。这个对象在不同环境下的行为会有差异：在某些情况下（比如通过 `pip install -e .` 可编辑模式安装时），直接把 `Traversable` 对象当作文件路径传给需要真实路径的函数（如 `Tokenizer.from_file()`）就会出现文件找不到的错误。

此问题已修复。资源加载方式已统一改为 `read_text()`，直接读取资源内容而不是依赖文件路径，从而确保在不同安装方式和运行环境下正常工作。如果仍遇到此问题，建议重新安装或更新 X-AnyLabeling。

</details>

<details>
<summary>Q: Error in model predict_shapes: ModelManager.new_auto_labeling_result[AutolabelingResult].emit(): argument 1 has unexpected type 'list'</summary>

通常是加载了损坏或无效的图像文件，或者当前图像格式不支持等原因所造成。
</details>

<details>
<summary>Q: Error in loading model: YOLOE model will be not be available.</summary>

可参考[#997](https://github.com/CVHub520/X-AnyLabeling/issues/997)。
</details>

<details>
<summary>Q: Error in loading model: yoloe with error: [WinError, 1314] 客户端没有所需的特权。mobileclip_blt.pt</summary>

可参考[#992](https://github.com/CVHub520/X-AnyLabeling/issues/992)。
</details>

<details>
<summary>Q: Error in loading custom model: Invalid config file format.</summary>

可参考[#986](https://github.com/CVHub520/X-AnyLabeling/issues/986)。
</details>

<details>
<summary>Q: Error in predict_shapes: cannot access local variable 'p' where it is not associated with a value</summary>

可参考[#983](https://github.com/CVHub520/X-AnyLabeling/issues/983)。
</details>

<details>
<summary>Q: Error in loading model :Could not download or initialize encoder data</summary>

可参考[#961](https://github.com/CVHub520/X-AnyLabeling/issues/961)。
</details>

<details>
<summary>Q: 下载的模型默认保存在什么位置？</summary>

可参考[#943](https://github.com/CVHub520/X-AnyLabeling/issues/943)。
</details>

<details>
<summary>Q: 模型预测的类别跟训练的类别对应不上</summary>

检查自定义模型配置文件（*.yaml）是不是格式没写对：
1. 默认2个字符缩进；
2. key 不能有空格；
可参考[#923](https://github.com/CVHub520/X-AnyLabeling/issues/923)。
</details>

<details>
<summary>Q: Chatbot 中如何访问 'Google Gemini' 等需要外网访问的模型？</summary>

可在当前终端或者系统配置文件中设置代理协议，其中 ip 和 port 替换为自己的网络协议地址和端口号：

```bash
export http_proxy=http://ip:port
export https_proxy=http://ip:port
```
</details>

<details>
<summary>Q: 使用 Chatbot 时报错 "Using SOCKS proxy, but the 'socksio' package is not installed"</summary>

当系统环境变量中配置了 SOCKS 代理（如 `ALL_PROXY=socks5://...`）时，Chatbot 所依赖的 `httpx` 需要额外安装 `socksio` 才能支持 SOCKS 协议。手动安装即可解决：

```bash
pip install httpx[socks]
```
</details>

<details>
<summary>Q: ERROR | model_manager:predict_shapes:2031 - Error in predict_shapes: '<=' not supported between instances of 'int' and 'str'</summary>

请检查模型配置文件（*.yaml）是否正确，具体可参考此[#902](https://github.com/CVHub520/X-AnyLabeling/issues/902)。
</details>

<details>
<summary>Q: Error in model prediction:openCV(4.7.0)xxx\opencv-python\opencv-python\opencv\modulesl\imgproc\src\resize.cpp:4065: error: (-215:Assertion failed) inv_scale_x >0 in function'cv::resize'</summary>

可尝试以下解决方案：
- 配置文件中置顶图片宽高信息，参考[#885](https://github.com/CVHub520/X-AnyLabeling/issues/885)。
- 检查导出模型时是否设置了动态 batch？参考[#784](https://github.com/CVHub520/X-AnyLabeling/issues/784)。
</details>

<details>
<summary>Q: 运行 yolo-pose 模型出现 `Error in loading model: 'list' object has no attribute 'items'`</summary>

未按照官方模板编写配置文件，可参考[#880](https://github.com/CVHub520/X-AnyLabeling/issues/880)。
</details>

<details>
<summary>Q: Error in predict_shapes or Error in model prediction: list index out of range. Please check the model.</summary>

可参考以下解决方案：
- 检查标签名称是否为纯数字；如果是，请使用单引号包裹。
- 检查配置文件中的 `type` 字段是否正确定义，参见 [#837](https://github.com/CVHub520/X-AnyLabeling/issues/837) 和 [#878](https://github.com/CVHub520/X-AnyLabeling/issues/878)。
</details>

<details>
<summary>Q: Error with Error in loading model: exceptions must derive from BaseException</summary>

1. 请确保配置文件中，模型路径格式正确且存在。可参考[#868](https://github.com/CVHub520/X-AnyLabeling/issues/868)、[#441](https://github.com/CVHub520/X-AnyLabeling/issues/441)。
2. 检查 ONNX 模型的 `ir_version` 是否与当前 ONNX 版本兼容。参见 [#1120](https://github.com/CVHub520/X-AnyLabeling/issues/1120#issuecomment-3303864917)。
</details>

<details>
<summary>Q: Error in model prediction: ‘int’ object is not subscriptable. Please check the model.</summary>

如果是非官方内置的自定义模型，请检查模型的预处理、推理和后处理逻辑，参见 [#828](https://github.com/CVHub520/X-AnyLabeling/issues/828)。
</details>

<details>
<summary>Q: 安装 SAM2 出现的报错问题：`from sam2 import _C`</summary>

可参考 [#719](https://github.com/CVHub520/X-AnyLabeling/issues/719)、[#842](https://github.com/CVHub520/X-AnyLabeling/issues/842)、[#843](https://github.com/CVHub520/X-AnyLabeling/issues/843)、[#864](https://github.com/CVHub520/X-AnyLabeling/issues/864) 和 [#865](https://github.com/CVHub520/X-AnyLabeling/issues/865)。
</details>

<details>
<summary>Q: 下载完的模型每次重新启动应用时都被自动删除重新下载</summary>

当前程序的处理逻辑是：当检测到本地已有缓存模型时，会先进行完整性校验；若校验失败或文件为空，则删除本地缓存并重新下载；若下载在达到最大尝试次数后仍失败，则停止本次加载并直接报错。该行为不会在单次加载流程中无限循环。

如果网络问题导致下载失败，请先检查网络环境，必要时配置代理或切换模型下载源（GitHub 或 ModelScope），相关设置参见《用户手册》的[模型下载源配置](./user_guide.md#77-模型下载源配置)。如果模型加载异常，请按照[快速入门指南](./get_started.md)检查 CUDA、cuDNN、ONNX 和 ONNX Runtime 的版本兼容性。本地环境仍难以排查时，可使用 [X-AnyLabeling-Server](https://github.com/CVHub520/X-AnyLabeling-Server) 部署 PyTorch 远程推理服务。

其他失败原因还包括模型路径中存在中文字符，参见 [#600](https://github.com/CVHub520/X-AnyLabeling/issues/600)。

</details>

<details>
<summary>Q: AI模型推理时如何识别特定的类别？</summary>

当前仅支持部分模型设置此选项。具体地，以 yolo 系列模型为例，用户可通过在配置文件中添加 `filter_classes`，具体可参考此[文档](https://xanylabeling.com/zh-Hans/docs/x-anylabeling/custom_model#%E5%8A%A0%E8%BD%BD%E5%B7%B2%E9%80%82%E9%85%8D%E7%9A%84%E7%94%A8%E6%88%B7%E8%87%AA%E5%AE%9A%E4%B9%89%E6%A8%A1%E5%9E%8B)。
</details>

<details>
<summary>Q: in paint assert len(self.points) in [1, 2, 4] AssertionError.</summary>

可参考[#491](https://github.com/CVHub520/X-AnyLabeling/issues/491)。
</details>

<details>
<summary>Q: 加载自定义模型报错？</summary>

可参考以下步骤解决：

1. 检查配置文件中的定义的类别与模型支持的类别列表是否一致。
2. 使用 [netron](https://netron.app/) 工具比较自定义模型与官方对应的内置模型输入输出节点维度是否一致。
3. 检查模型配置文件各个字段是否正确，可参考[#888](https://github.com/CVHub520/X-AnyLabeling/issues/888)。
4. 检查是否擅自修改了某个内置字段名称，可参考[#983](https://github.com/CVHub520/X-AnyLabeling/issues/983)。
</details>

<details>
<summary>Q: 运行完没有输出结果？</summary>

可参考[#536](https://github.com/CVHub520/X-AnyLabeling/issues/536)。
</details>

<details>
<summary>Q: 使用 Grounding DINO 模型进行 GPU 推理时报错：

```shell
Error in predict_shapes: [ONNXRuntimeError] : 1 : FAIL : Non-zero status code returned while running Expand node. Name:'Expand_33526' Status Message: Expand_33526: left operand cannot broadcast on dim 2 LeftShape: {1,900,4}, RightShape: {1,900,256}
```
</summary>

可参考[#389](https://github.com/CVHub520/X-AnyLabeling/issues/389)。
</details>

<details>
<summary>Q: Missing config : num_masks</summary>

可参考[#515](https://github.com/CVHub520/X-AnyLabeling/issues/515)。
</details>

<details>
<summary>Q: AttributeError: 'int' object has no attribute 'replace'</summary>
查看配置文件是否有定义纯数字标签。请注意在定义以**纯数字**命名的标签名称时，请务必将其加上单引号 `''`
</details>

<details>
<summary>Q: Unsupported model IR version: 11, max supported IR version: 10</summary>

可参考以下解决方案：

```bash
import onnx
onnx_model = onnx.load("/path/to/your/onnx_model")
onnx_model.ir_version = 10  # 修改为合适的版本号
onnx.save(onnx_model, "/path/to/onnx_model")
```
</details>

<details>
<summary>Q: Your model ir_version is higher than the checker's.</summary>
onnx 版本过低，请更新：

```shell
pip install --upgrade onnx
```
</details>

<details>
<summary>Q: 如何在 MacOS 上使用 Segment-Anthing Video 功能？</summary>

可参考[#865](https://github.com/CVHub520/X-AnyLabeling/issues/865)。
</details>

<details>
<summary>Q: 运行 GPU 版本时出现 `FAIL : Failed to load library libonnxruntime_providers_cuda.so with error: libcudnn.so.9: cannot open shared object file: No such file or directory` 错误</summary>

可参考[此教程](../zh_cn/get_started.md)中 "步骤 0. 安装 ONNX Runtime" 安装匹配版本。
此外，可查看[#834](https://github.com/CVHub520/X-AnyLabeling/issues/834)。
</details>

<details>
<summary>Q: 运行 GPU 版本时出现 `ImportError: DLL load failed while importing onnx_cpp2py_export: 动态链接库(DLL)初始化例程失败` 错误</summary>

onnx 和 onnxruntime 库版本不兼容，具体可参考[#886](https://github.com/CVHub520/X-AnyLabeling/issues/886)
</details>

<details>
<summary>Q: 运行编译好的 GPU 版本时发现模型长时间处于加载状态</summary>

这通常是由于 onnx 和 onnxruntime-gpu 版本不匹配导致的。请参考[ONNX Runtime 官方兼容性文档](https://onnxruntime.ai/docs/reference/compatibility.html#onnx-opset-support)确保安装了匹配的 `onnx` 版本。
</details>


## 文件相关问题

<details>
<summary>Q: YOLO-Pose 导出的关键点ID均显示为0？</summary>

详情参见 [#1270](https://github.com/CVHub520/X-AnyLabeling/issues/1270)。
</details>

<details>
<summary>Q: 导出 Mask 图为空</summary>

请按照以下步骤依次检查下：
1. 按下 `ctrl+g` 查看当前任务的标注类别和标注类型，确保所有标注类型为`polygon`对象；
2. 检查导出配置文件的格式正确，且类别名称与上述步骤所示的标签类别名称相符；
3. 升级到最新版本或通过源码运行获取更全面的日志信息。

详情可参考此[#1153](https://github.com/CVHub520/X-AnyLabeling/issues/1153)。
</details>

<details>
<summary>Q: 预编译版本加载视频文件没有成功解析处图片</summary>

可参考此[#1136](https://github.com/CVHub520/X-AnyLabeling/issues/1136)。
</details>

<details>
<summary>Q: 在 Labelme 中导入 X-AnyLabeling 的标签会提示 `AssertionError` 错误</summary>

可参考此[#1007](https://github.com/CVHub520/X-AnyLabeling/issues/1007)。
</details>

<details>
<summary>Q: 导出标签时发生错误：Error occurred while exporting annotations. 'xxx' is not in list</summary>

请按照以下步骤依次检查下：
1. 按下 `ctrl+g` 查看当前任务的标注类别；
2. 检查导出时上传的标签类别文件（`classes.txt`）中定义的类别是否与标注类别名称一一对应；
3. 检查是否选择了错误的导出类型，例如标注的是矩形框，导出时却选择了分割或旋转框等选项；
</details>

<details>
<summary>Q: 加载图片目录时，出现 `segmentation fault` 段错误</summary>

可参考此[#906](https://github.com/CVHub520/X-AnyLabeling/issues/906)。
</details>

<details>
<summary>Q: 上传标签文件时发生错误，出现 `cannot identify image file xxx`</summary>

请检查图片文件和标签文件是否分目录存放。参见 [#911](https://github.com/CVHub520/X-AnyLabeling/issues/911)。
</details>

<details>
<summary>Q: 加载文件时，出现 `a bytes-like object is required, not 'NoneType'`，确保 xxx.json 是一个有效的标签文件</summary>

请检查 *.json 文件中，`imagePath` 字段值是否与图像文件名一致。具体可参考此[#869](https://github.com/CVHub520/X-AnyLabeling/issues/869)。
</details>

<details>
<summary>Q: 导入的标签文件为空</summary>

请检查是否存在以下情况：
- 标注类型与导出类型不一致，例如标注对象为 `rectangle`，导出时却选择了 `Polygon`。
- 导入的图像目录中存在多级嵌套的子目录，参见 [#839](https://github.com/CVHub520/X-AnyLabeling/issues/839)。
</details>

<details>
<summary>Q: 导入和导出 yolo 关键点标签时闪退</summary>

请检查模型配置文件（*.yaml）是否正确，具体可参考此[#898](https://github.com/CVHub520/X-AnyLabeling/issues/898)。
</details>

<details>
<summary>Q: 导入标签时出现 `invalid literal for int() with base 10`</summary>

可参考[#782](https://github.com/CVHub520/X-AnyLabeling/issues/782)。
</details>

<details>
<summary>Q: Export mask error: "imageWidth"</summary>

可参考[#477](https://github.com/CVHub520/X-AnyLabeling/issues/477)。
</details>

<details>
<summary>Q: operands could not be broadcast together with shapes (0,) (1,2)</summary>

可参考[#492](https://github.com/CVHub520/X-AnyLabeling/issues/492)。
</details>

<details>
<summary>Q: 导出关键点标签时报错：int0 argument must be a string, a byteslike object or a number, not 'NoneType'</summary>

`group_id`字段缺失，请确保每个矩形框和关键点都有对应的群组编号。
</details>

<details>
<summary>Q: 'NoneType' object has no attribute 'shape'</summary>

检查文件路径是否包含**中文字符**。
</details>

---

### Zh Cn Get Started (`docs/zh_cn/get_started.md`)

# 快速入门指南

## 1. 安装部署

X-AnyLabeling 提供了多种安装方法，您可以通过 `pip` 直接安装官方软件包获取最新的稳定版本，或通过克隆官方 GitHub 仓库进行源码安装，GUI 安装包也是一种便捷的选择。

> [!NOTE]
> **高级功能说明**：以下高级功能仅适用于 Git 克隆方式，如需使用，请先参考对应的文档进行配置。
>
> 0. **远程推理服务指南**：基于 X-AnyLabeling-Server 的远程推理服务 - [安装指南](https://github.com/CVHub520/X-AnyLabeling-Server)
> 1. **视频目标追踪**：基于 Segment Anything 的视频目标追踪（[SAM 2](../../examples/interactive_video_object_segmentation/sam2/README.md) | [SAM 3](../../examples/interactive_video_object_segmentation/sam3/README.md)）
> 2. **目标候选框生成**：基于 UPN 的目标候选框生成 - [安装指南](../../examples/detection/hbb/README.md)
> 3. **交互式检测分割**：基于视觉和文本提示的交互式目标检测和分割 - [安装指南](../../examples/detection/hbb/README.md)
> 4. **智能检测分割**：基于视觉提示、文本提示或免提示模式的目标检测与分割（[YOLOE](../../examples/grounding/yoloe/README.md) | [SAM 3](../../examples/grounding/sam3/README.md) | [LocateAnything](../../examples/vision_foundation/locateanything/README.md)）
> 5. **一键训练平台**：基于 Ultralytics 框架的一键训练平台 - [安装指南](../../examples/training/ultralytics/README.md)
> 6. **全模态视觉推理**：基于 Rex-Omni 的目标检测、关键点检测（人、手、动物）、OCR、指向理解和视觉提示定位（[安装指南](../../examples/vision_foundation/rexomni/README.md)）

### 1.1 前置条件

#### 1.1.1 Miniconda

如果您已经在使用 Miniconda，可按以下步骤操作：

**步骤 0.** 从 [官方网站](https://docs.anaconda.com/miniconda/) 下载并安装 Miniconda。

**步骤 1.** 创建一个 Python 3.11 ~ 3.13 版本的 conda 环境（推荐 Python 3.12），并激活它。

> [!NOTE]
> 其他 Python 版本需要自行验证兼容性。

```bash
# CPU 环境 [Windows/Linux/macOS]
conda create --name x-anylabeling-cpu python=3.12 -y
conda activate x-anylabeling-cpu

# CUDA 11.x 环境 [Windows/Linux]
conda create --name x-anylabeling-cu11 python=3.12 -y
conda activate x-anylabeling-cu11

# CUDA 12.x 环境 [Windows/Linux]
conda create --name x-anylabeling-cu12 python=3.12 -y
conda activate x-anylabeling-cu12

# CUDA 13.x 环境 [Windows/Linux]
conda create --name x-anylabeling-cu13 python=3.12 -y
conda activate x-anylabeling-cu13
```

#### 1.1.2 Venv

也可以使用 Python 内置的 `venv` 模块创建虚拟环境：

```bash
# CPU [Windows/Linux/macOS]
python3.12 -m venv venv-cpu
source venv-cpu/bin/activate  # Linux/macOS
# venv-cpu\Scripts\activate    # Windows

# CUDA 12.x [Windows/Linux]
python3.12 -m venv venv-cu12
source venv-cu12/bin/activate  # Linux
# venv-cu12\Scripts\activate    # Windows

# CUDA 11.x [Windows/Linux]
python3.12 -m venv venv-cu11
source venv-cu11/bin/activate  # Linux
# venv-cu11\Scripts\activate    # Windows

# CUDA 13.x [Windows/Linux]
python3.12 -m venv venv-cu13
source venv-cu13/bin/activate  # Linux
# venv-cu13\Scripts\activate    # Windows
```

#### 1.1.3 uv

**步骤 0.** 安装 uv：

```bash
# Linux / macOS / WSL2
curl -LsSf https://astral.sh/uv/install.sh | sh

# Windows（PowerShell）
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
```

**步骤 1.** 创建虚拟环境（uv 会自动下载所需 Python 版本）并激活：

```bash
# CPU 环境 [Windows/Linux/macOS]
uv venv --python 3.12 .venv-cpu
source .venv-cpu/bin/activate      # Linux/macOS/WSL2
# .venv-cpu\Scripts\activate       # Windows

# CUDA 12.x 环境 [Windows/Linux]
uv venv --python 3.12 .venv-cu12
source .venv-cu12/bin/activate     # Linux
# .venv-cu12\Scripts\activate      # Windows

# CUDA 11.x 环境 [Windows/Linux]
uv venv --python 3.12 .venv-cu11
source .venv-cu11/bin/activate     # Linux
# .venv-cu11\Scripts\activate      # Windows

# CUDA 13.x 环境 [Windows/Linux]
uv venv --python 3.12 .venv-cu13
source .venv-cu13/bin/activate     # Linux
# .venv-cu13\Scripts\activate      # Windows
```

### 1.2 安装



#### 1.2.1 Pip 安装

您可以通过以下命令安装 X-AnyLabeling 的最新稳定版本（推荐使用 `uv pip`）：

```bash
pip install -U uv

# CPU [Windows/Linux/macOS]
uv pip install "x-anylabeling-cvhub[cpu]"

# CUDA 12.x 是 GPU 版本的默认选项 [Windows/Linux]
uv pip install "x-anylabeling-cvhub[gpu]"

# CUDA 11.x [Windows/Linux]
uv pip install "x-anylabeling-cvhub[gpu-cu11]"

# CUDA 13.x [Windows/Linux]
uv pip install "x-anylabeling-cvhub[gpu-cu13]"
```

#### 1.2.2 Git 克隆（推荐）

**步骤 a.** 克隆代码仓库。

```bash
git clone https://github.com/CVHub520/X-AnyLabeling.git
cd X-AnyLabeling
```

**步骤 b.** 安装依赖。

```bash
pip install -U uv

# CPU [Windows/Linux/macOS]
uv pip install -e ".[cpu]"

# CUDA 12.x 是 GPU 版本的默认选项 [Windows/Linux]
uv pip install -e ".[gpu]"

# CUDA 11.x [Windows/Linux]
uv pip install -e ".[gpu-cu11]"

# CUDA 13.x [Windows/Linux]
uv pip install -e ".[gpu-cu13]"
```

如果您需要进行二次开发或打包编译，可同步安装 `dev` 依赖，例如：

```bash
uv pip install -e ".[cpu,dev]"
```

> [!NOTE]
> 如果切换到新的工程目录，请在该目录下重新执行一次上述安装命令，否则环境将引用旧目录中的源码。

安装完成后，可执行以下命令进行验证：

```bash
xanylabeling checks   # 显示系统及版本信息
```

您也可以运行以下命令获取其他信息：

```bash
xanylabeling help     # 显示帮助信息
xanylabeling version  # 显示版本号
xanylabeling config   # 显示配置文件路径
```

验证无误后，可直接运行应用程序：

```bash
xanylabeling
```

> [!TIP]
> 您可以通过 `xanylabeling --help` 查看所有可用的命令行选项。完整的参数说明请参考下方的**命令行参数**表格。

| 选项                       | 描述                                                           |
|----------------------------|---------------------------------------------------------------|
| `filename`                 | 指定图像或标签文件名。如果提供目录路径，则加载文件夹中的所有文件。  |
| `--help`, `-h`             | 显示帮助信息并退出。                                            |
| `--reset-config`           | 重置 Qt 配置，清除所有设置。                                    |
| `--logger-level`           | 设置日志记录级别：“debug”、“info”、“warning”、“fatal”、“error”。 |
| `--output`, `-O`, `-o`     | 指定输出文件或目录。以 `.json` 结尾的路径被视为文件。             |
| `--config`                 | 指定配置文件或 YAML 格式的配置字符串。默认为用户特定路径。         |
| `--work-dir`               | 指定配置文件和数据文件的工作目录。默认为用户主目录。               |
| `--qt-image-allocation-limit` | 以 MB 为单位覆盖 Qt 图像分配上限。Qt 默认值为 `256 MB`。设为 `0` 可完全禁用该限制。 |
| `--nodata`                 | 防止在 JSON 文件中存储图像数据。                                |
| `--autosave`               | 启用自动保存标注数据。                                          |
| `--nosortlabels`           | 禁用标签排序。                                                  |
| `--flags`                  | 逗号分隔的标志列表或包含标志的文件路径。                          |
| `--labelflags`             | 用于标签特定标志的 YAML 格式字符串或包含 JSON 格式字符串的文件。   |
| `--labels`                 | 逗号分隔的标签列表或包含标签的文件路径。                          |
| `--validatelabel`          | 指定标签验证的类型。                                            |
| `--keep-prev`              | 保留上一帧的注释。                                              |
| `--no-auto-update-check`   | 禁用启动时的自动更新检查。                                       |

> [!NOTE]
> 依赖项列表以 [pyproject.toml](../../pyproject.toml) 为准。上述命令会安装所选运行环境所需的依赖。

此外，还支持多种标签格式之间的批量转换功能：

```bash
xanylabeling convert         # 列出所有支持的转换任务
xanylabeling convert <task>  # 查看特定转换任务的详细帮助和使用示例，例如：xlabel2yolo
```

> [!IMPORTANT]
> 对于 GPU 加速，请按照以下说明，确保您本地的 CUDA 和 cuDNN 版本与 ONNX Runtime 版本兼容，并安装所需依赖库，以确保 GPU 加速推理正常运行：
>
> - Ⅰ. [CUDA Execution Provider](https://onnxruntime.ai/docs/execution-providers/CUDA-ExecutionProvider.html)
> - Ⅱ. [Get started with ONNX Runtime in Python](https://onnxruntime.ai/docs/get-started/with-python.html)
> - Ⅲ. [ONNX Runtime Compatibility](https://onnxruntime.ai/docs/reference/compatibility.html)

| CUDA 环境 | 依赖选项 | ONNX Runtime GPU | cuDNN |
|-----------|----------|------------------|-------|
| CUDA 11.x | `gpu-cu11` | `>= 1.15.0, < 1.19.0` | 8.x |
| CUDA 12.x | `gpu` | `>= 1.18.1, < 1.27.0` | 9.x |
| CUDA 13.x | `gpu-cu13` | `>= 1.27.0, < 1.28.0` | 9.x |

> [!WARNING]
> 在同一个环境中只能安装 `cpu`、`gpu-cu11`、`gpu` 或 `gpu-cu13` 其中一个依赖选项。CUDA 11.x 还要求 `onnx >= 1.15.0, < 1.16.1`。

**可选步骤**：刷新翻译与资源文件

如果修改了界面文案或维护多语言文件，可使用以下命令刷新当前支持的界面语言（`en_US`、`zh_CN`、`ja_JP`、`ko_KR`）对应的翻译产物：

```bash
# 从源码字符串重新生成 .ts 目录
python scripts/generate_languages.py

# 编译 .qm 文件并重建 Qt 资源
python scripts/compile_languages.py
```

**可选步骤**：设置环境变量

```bash
# Linux 或 macOS
export PYTHONPATH=/path/to/X-AnyLabeling

# Windows
set PYTHONPATH=C:\path\to\X-AnyLabeling
```

> [!CAUTION]
> **避免依赖冲突**：为避免与第三方包冲突，请先执行以下命令卸载旧版本：
> ```bash
> pip uninstall anylabeling -y
> ```

> [!NOTE]
> **Fedora KDE 用户特别说明**：如果遇到鼠标移动缓慢或响应延迟的问题，可以尝试使用 `--qt-platform xcb` 参数来提升性能：
> ```bash
> xanylabeling --qt-platform xcb
> ```

#### 1.2.3 GUI 安装包

> **下载链接**: [GitHub Releases](https://github.com/CVHub520/X-AnyLabeling/releases)

相比于从源代码运行，GUI 安装包提供了更便捷的使用体验，用户无需深入了解底层实现，只需解压即可直接使用。然而，GUI 安装包也存在一些局限性：

- **故障排除困难**：如果发生崩溃或错误，可能难以快速定位具体原因，从而增加了故障排除的难度。
- **功能滞后**：GUI 版本在功能上可能落后于源代码版本，可能会导致功能缺失和兼容性问题。
- **GPU 运行库要求**：请根据 CUDA 11、12 或 13 选择对应安装包，并安装匹配的 CUDA 和 cuDNN 运行库。无法加载所需 GPU 库时，应用会回退到 CPU。

因此，建议根据具体需求和使用场景，在从源代码运行和使用 GUI 安装包之间做出选择，以优化使用体验。

## 2. 使用方法

有关如何使用 X-AnyLabeling 的详细说明，请参考相应的[用户手册](./user_guide.md)。

## 3. 打包编译

> [!NOTE]
> 请注意，以下步骤是可选的。此部分针对可能需要定制和编译软件以适应特定部署场景的用户。如果您使用软件时没有此类需求，可以跳过此部分。

<details>
<summary>展开/收起</summary>

为了方便用户在不同平台上运行 `X-AnyLabeling`，该工具提供了打包和编译的说明以及相关注意事项。执行对应打包命令前，请先安装目标运行环境的依赖选项。

### 3.1 注意事项

- **验证 GPU 环境**：如果编译 GPU 版本，请先激活相应的 GPU 运行环境，并执行 `pip list | grep onnxruntime-gpu` 以确保其正确安装。

- **GPU 编译**：GPU 规格文件会自动收集 ONNX Runtime Provider 库。构建前安装 `gpu-cu11`、`gpu` 或 `gpu-cu13`，即可分别选择 CUDA 11、12 或 13。详细兼容性信息请参考[官方文档](https://onnxruntime.ai/docs/execution-providers/CUDA-ExecutionProvider.html)。

### 3.2 编译命令

```bash
# Windows-CPU
bash scripts/build_executable.sh win-cpu

# Windows-GPU
bash scripts/build_executable.sh win-gpu

# Linux-CPU
bash scripts/build_executable.sh linux-cpu

# Linux-GPU
bash scripts/build_executable.sh linux-gpu

# macOS
bash scripts/build_executable.sh macos
```

> [!TIP]
> 如果在 Windows 上执行上述命令时遇到权限问题，在确保完成上述准备步骤后，可以直接执行以下命令：
> ```bash
> pyinstaller --noconfirm packaging/pyinstaller/specs/x-anylabeling-win-cpu.spec
> pyinstaller --noconfirm packaging/pyinstaller/specs/x-anylabeling-win-gpu.spec
> ```

</details>

---

### Zh Cn Image Classifier (`docs/zh_cn/image_classifier.md`)

# 概述

X-AnyLabeling 的图像分类器是独立的图像分类标注窗口，支持多类分类（单标签）和多标签分类。用户可以管理标签、对单张或多张图像进行 AI 辅助分类、查看数据集统计信息，并将已分类图像按类别导出到对应目录。

<video src="https://github.com/user-attachments/assets/0652adfb-48a4-4219-9b18-16ff5ce31be0" width="100%" controls>
</video>

# 启动

要打开图像分类器窗口，请先在主窗口加载图像目录，然后点击左侧工具栏中的图像分类器图标，或使用快捷键 `Ctrl+3` (Windows/Linux) / `⌘+3` (macOS)。

> [!NOTE]
> 打开图像分类器窗口时主窗口会自动隐藏。如果最小化本窗口后任务栏图标消失，可使用 `Alt` + `Tab`（Windows）或 `⌘` + `Tab`（macOS）切换回窗口。关闭分类器窗口后主窗口会重新显示。

# 教程

图像分类器采用双面板设计，左侧为图像预览区，右侧为标注控制区。

<img src="../../assets/resources/image_classifier/entire_panel.png" width="100%" />

## 左侧面板：图像预览区

- **文件名与进度指示**：显示当前图像文件名及其在数据集中的位置（如 `husky.png (1/3)`）。
- **图像预览区域**：居中显示图像，支持自适应缩放。当选中标签时，标签文字会实时显示在预览区域右上角，便于快速查看和确认。

> [!TIP]
> ✅ 表示当前图像已标注，❌ 表示当前图像未标注。

## 右侧面板：标注控制区

- **功能组件区**：

| 功能按钮 | 说明 |
|----------|------|
| Export | 将已分类的图像按类别导出到文件夹中（仅支持 MultiClass 模式） |
| MultiClass | 多类分类模式，每张图片只能选择一个标签 |
| MultiLabel | 多标签分类模式，每张图片可以选择多个标签 |
| AutoRun | 使用 AI 模型批量分类所有图像 |

> [!NOTE]
> - MultiClass 模式：适用于互斥分类任务，如动物种类识别（一张图片只能是一种动物）
> - MultiLabel 模式：适用于多属性标注任务，如图片标签标注（一张图片可以同时具有多个属性）
> - 从 MultiLabel 切换到 MultiClass 后，请逐张复核已有的多标签标注，并选择需要保留的类别；切换模式不会自动批量清理所有图片的标注。

分类修改沿用主窗口的自动保存设置。若未启用自动保存，请关闭分类器返回主窗口保存当前修改，再进行导出。Export 读取已保存的标注文件，将已分类图片复制到对应类别目录，原始图片保持不变。

```bash
classified/
├── husky/
│   ├── husky_playing.jpg
│   └── husky_sleeping.jpg
├── psyduck/
│   ├── psyduck_swimming.png
│   └── psyduck_standing.png
└── ragdoll/
    ├── ragdoll_grooming.jpg
    └── ragdoll_sitting.jpg
```

- **标注组件区**：

右侧中间面板包含标题和以下 5 个标注组件。

可通过类别搜索框进行不区分大小写的关键词匹配；多个关键词用空格分隔，类别名称需包含所有关键词。搜索仅过滤显示，不改变勾选状态；清空搜索可恢复完整列表。搜索框和操作图标所在行固定，仅类别列表随滚动条滚动。

### AI 辅助

#### 图像分类模型预标注

可先在主窗口使用图像分类模型进行单张或批量预标注，再打开图像分类器进行二次复核和修正。支持的模型及使用流程见[图像分类示例](../../examples/classification/image-level/README.md#model-assisted-classification)。

#### 多模态大模型预标注

如需使用 AI 辅助功能，请先按照[聊天机器人文档](./chatbot.md)完成模型配置。

<img src="../../assets/resources/vqa/chatbot.png" width="100%" />

完成配置后，点击标注组件区右侧的魔法棒图标即可打开 AI 对话框。

<img src="../../assets/resources/image_classifier/assistance.png" width="100%" />

软件内置了一套标准的提示词模板，会根据当前选择的模式（MultiClass 或 MultiLabel）自动调整提示内容。你可以直接使用或根据实际需求自定义。

**MultiClass 模式示例：**

```prompt
@image
You are an expert image classifier. Your task is to perform multi-class classification.

Task Definition: Analyze the given image and classify it based on the provided categories.

Available Categories: ["husky", "psyduck", "ragdoll"]

Instructions:
1. Carefully examine the image and identify the main subject and their activity
2. Be precise - only select categories that clearly match what you observe

Return your result in strict JSON format:
{"husky": false, "psyduck": false, "ragdoll": false}

Set exactly ONE category to 'true' that best matches the image, keep all others as 'false'.
```

**MultiLabel 模式示例：**

```prompt
@image
You are an expert image classifier. Your task is to perform multi-label classification.

Task Definition: Analyze the given image and classify it based on the provided categories.

Available Categories: ["outdoor", "sunny", "people", "building"]

Instructions:
1. Carefully examine the image and identify the main subject and their activity
2. Be precise - only select categories that clearly match what you observe

Return your result in strict JSON format:
{"outdoor": false, "sunny": false, "people": false, "building": false}

Set ALL applicable categories to 'true', keep non-applicable ones as 'false'.
```

> 有关特殊引用和提示模板库等用法，请参考[视觉问答文档](./vqa.md)。

### 添加标签

<img src="../../assets/resources/image_classifier/add_label.png" width="100%" />

软件提供了两种添加标签的方式：

1. **手动输入**：适用于少量标签的情况，直接在编辑框中输入标签名称，每行一个，且标签名之间不允许重复。
2. **文件导入**：标签较多时，可提前准备 [classes.txt](../../assets/classes.txt)（每行一个标签），再通过左侧的上传按钮导入。文件内容会自动解析到编辑框中。

确认标签列表无误后，点击添加按钮完成标签添加。

> [!NOTE]
> 此处仅支持添加新标签，不支持修改已有标签，如需编辑或删除现有标签，请参考后续小节。

### 删除标签

<img src="../../assets/resources/image_classifier/delete_label.png" width="100%" />

删除标签组件用于移除已有的标签。你可以通过点击选择一个或多个标签（被选中的标签会以高亮显示），然后点击删除按钮。在确认对话框中再次确认后，系统将自动遍历当前任务中的所有标签文件，并删除所选标签相关的所有内容。

### 编辑标签

<img src="../../assets/resources/image_classifier/edit_label.png" width="100%" />

标签编辑组件以表格形式展示，左侧列显示当前标签（只读），右侧列用于输入新的标签名称。要修改标签，只需双击右侧单元格进入编辑模式，输入新的标签名称即可。完成所有修改后，点击保存按钮使更改生效。

### 数据统计

<img src="../../assets/resources/image_classifier/dataset_statistics.png" width="100%" />

数据统计组件提供了当前任务的数据集统计信息，包括：

1. **总体统计**：显示数据集中的总样本数、已标注数量和未标注数量。
2. **标签分布**：以水平条形图的形式展示每个标签的使用频次及占比。图中使用不同颜色区分不同标签，每个标签后显示具体的数量和百分比。

- **导航组件区**

支持用户手动点击左/右箭头来手动切换上/下一张图片，或通过中间页码输入框输入指定数字跳转到指定图片。此外，提供以下快捷键方便快速切换图片：

| 快捷键 | 功能 |
|--------|------|
| A | 上一张图片 |
| D | 下一张图片 |
| Ctrl+A 或 ⌘+A | 上一张未标注的图片 |
| Ctrl+D 或 ⌘+D | 下一张未标注的图片 |
| 0–9 | 选择或取消选择原始类别列表中编号为 0–9 的类别 |

# 数据

图像分类器的标注信息保存在 X-AnyLabeling 标签文件的 `flags` 字段中，详情参见《用户手册》中的[保存标签数据](./user_guide.md#14-保存标签数据)。

```json
{
  "version": "4.0.0",
  "flags": {
    "husky": true,
    "psyduck": false,
    "ragdoll": false
  },
  "shapes": [],
  "imagePath": "husky.png",
  "imageData": null,
  "imageHeight": 200,
  "imageWidth": 200,
  "description": ""
}
```

---

### Zh Cn Model Zoo (`docs/zh_cn/model_zoo.md`)

# X-AnyLabeling 模型库

> ModelScope 模型集合：[X-AnyLabeling](https://www.modelscope.cn/collections/X-AnyLabeling-7b0e1798bcda43)


## 图像分类

|名称|描述|配置|大小|链接|
| --- | --- | --- | --- | --- |
| pulc_person_attribute.onnx | [PersonAttribute](https://github.com/PaddlePaddle/PaddleClas/blob/release%2F2.5/docs/en/PULC/PULC_person_attribute_en.md)-PULC | [pulc_person_attribute.yaml](../../anylabeling/configs/auto_labeling/pulc_person_attribute.yaml) | 6.59MB | [百度网盘](https://pan.baidu.com/s/1AyPXvnV6BSe4We0nrA5KYA?pwd=qw96) \| [GitHub](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.0.0/pulc_person_attribute.onnx) |
| pulc_vehicle_attribute.onnx | [VehicleAttribute](https://github.com/PaddlePaddle/PaddleClas/blob/release%2F2.5/docs/en/PULC/PULC_vehicle_attribute_en.md)-PULC | [pulc_vehicle_attribute.yaml](../../anylabeling/configs/auto_labeling/pulc_vehicle_attribute.yaml) | 6.55MB | [百度网盘](https://pan.baidu.com/s/1RZqDK7-CKw-vcbscZKgBDw?pwd=3qp0) \| [GitHub](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.0.0/pulc_vehicle_attribute.onnx) |
| internimage_l_22kto1k_384.onnx | [InternImage](https://github.com/OpenGVLab/InternImage)-Large | [internimage_l_22kto1k_384.yaml](../../anylabeling/configs/auto_labeling/internimage_l_22kto1k_384.yaml) | 853.16MB | [百度网盘](https://pan.baidu.com/s/1_eg_SyMxqVKcTIzOL27XeA?pwd=9ima) \| [GitHub](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.1.0/internimage_l_22kto1k_384.onnx) |
| yolov5s-cls.onnx | [YOLOv5-Cls](https://github.com/ultralytics/yolov5)-ImageNet | [yolov5s_cls.yaml](../../anylabeling/configs/auto_labeling/yolov5s_cls.yaml) | 20.81MB | [百度网盘](https://pan.baidu.com/s/1ftQ-CpbfsBOU1iaRgGsl0A?pwd=k2sm) \| [GitHub](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.2.0/yolov5s-cls.onnx) |
| yolov8s-cls.onnx | [YOLOv8-Cls](https://github.com/ultralytics/ultralytics)-ImageNet | [yolov8s_cls.yaml](../../anylabeling/configs/auto_labeling/yolov8s_cls.yaml) | 24.28MB | [百度网盘](https://pan.baidu.com/s/1-V_h-LJWbmuooMy9yRKq4g?pwd=klrg) \| [GitHub](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.2.0/yolov8s-cls.onnx) |
| yolo11s-cls.onnx | [YOLO11-Cls](https://github.com/ultralytics/ultralytics)-ImageNet | [yolo11s_cls.yaml](../../anylabeling/configs/auto_labeling/yolo11s_cls.yaml) | 25.67MB | [百度网盘](https://pan.baidu.com/s/1zz6Q3mMJp7btd0vTz2krUQ?pwd=9h63) \| [GitHub](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.4/yolo11s-cls.onnx) |


## 关键点检测

- 脸部关键点检测

|名称|描述|配置|大小|链接|
| --- | --- | --- | --- | --- |
| yolov6lite_l_face.onnx | [Facial Landmark Detection](https://github.com/meituan/YOLOv6/tree/yolov6-face) | [yolov6lite_l_face.yaml](../../anylabeling/configs/auto_labeling/yolov6lite_l_face.yaml) | 4.16MB | [百度网盘](https://pan.baidu.com/s/1Ot14duf7GUPMcHHIUY4TSg?pwd=xy1m) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov6lite_l_face.onnx) |
| yolov6lite_m_face.onnx | [Facial Landmark Detection](https://github.com/meituan/YOLOv6/tree/yolov6-face) | [yolov6lite_m_face.yaml](../../anylabeling/configs/auto_labeling/yolov6lite_m_face.yaml) | 3.00MB | [百度网盘](https://pan.baidu.com/s/1uL01_pqldSXdFnlDM0OFZg?pwd=n9xl) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov6lite_m_face.onnx) |
| yolov6lite_s_face.onnx | [Facial Landmark Detection](https://github.com/meituan/YOLOv6/tree/yolov6-face) | [yolov6lite_s_face.yaml](../../anylabeling/configs/auto_labeling/yolov6lite_s_face.yaml) | 2.10MB | [百度网盘](https://pan.baidu.com/s/1nN_b4_WutwhnJYEhyqjDYg?pwd=ig4d) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov6lite_s_face.onnx) |
| scrfd_10g_bnkps.onnx | [SCRFD](https://github.com/deepinsight/insightface/tree/master/detection/scrfd)-人脸检测与关键点 | [scrfd_10g_bnkps.yaml](../../anylabeling/configs/auto_labeling/scrfd_10g_bnkps.yaml) | 16.16MB | [百度网盘](https://pan.baidu.com/s/1B_1bxnZ_WmE00axjObhjlQ?pwd=k85b) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/scrfd_10g_bnkps.onnx) |

- 姿态估计

|名称|描述|配置|大小|链接|
| --- | --- | --- | --- | --- |
| yolo26s-pose.onnx | [YOLO26](https://docs.ultralytics.com/tasks/pose/)-COCO | [yolo26s_pose.yaml](../../anylabeling/configs/auto_labeling/yolo26s_pose.yaml) | 39.86MB | [百度网盘](https://pan.baidu.com/s/1LifSl5V5lMk7GOqwtPHO1w?pwd=8kta) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/yolo26s-pose.onnx) |
| yolo11s-pose.onnx | [YOLO11](https://github.com/ultralytics/ultralytics)-COCO | [yolo11s_pose.yaml](../../anylabeling/configs/auto_labeling/yolo11s_pose.yaml) | 38.09MB | [百度网盘](https://pan.baidu.com/s/1LzdbGYO215UiG7na2NgkJA?pwd=5jcu) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.4/yolo11s-pose.onnx) |
| yolov8n-pose.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-COCO | [yolov8n_pose.yaml](../../anylabeling/configs/auto_labeling/yolov8n_pose.yaml) | 12.75MB | [百度网盘](https://pan.baidu.com/s/1nFxtNTuLn9vQJWId-EOAKQ?pwd=37ej) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v1.0.0/yolov8n-pose.onnx) |
| yolov8x-pose-p6.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-COCO | [yolov8x_pose_p6.yaml](../../anylabeling/configs/auto_labeling/yolov8x_pose_p6.yaml) | 378.92MB | [百度网盘](https://pan.baidu.com/s/1VRszCtMnHo2zeshuk93Aew?pwd=xvko) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v1.0.0/yolov8x-pose-p6.onnx) |
| dw-ll_ucoco_384.onnx | [DWPose](https://github.com/IDEA-Research/DWPose/tree/main)（人体 2d 关键点）| [yolox_l_dwpose_ucoco.yaml](../../anylabeling/configs/auto_labeling/yolox_l_dwpose_ucoco.yaml) | 128.17MB | [百度网盘](https://pan.baidu.com/s/1I6CAFhW2YAowN80yweGVpg?pwd=pzf4) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.0/dw-ll_ucoco_384.onnx) |
| yolox_l.onnx | [YOLOX](https://github.com/Megvii-BaseDetection/YOLOX)（人体 2d 关键点）| [yolox_l_dwpose_ucoco.yaml](../../anylabeling/configs/auto_labeling/yolox_l_dwpose_ucoco.yaml) | 206.71MB | [百度网盘](https://pan.baidu.com/s/1NpFiX1JN-0jIvd38tQIDcQ?pwd=aqk5) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.0/yolox_l.onnx) |
| rtmo_m.onnx | [RTMO](https://github.com/open-mmlab/mmpose/tree/main/projects/rtmpose)（人体 2d 关键点）| [rtmdet_m_coco_person_rtmo_m.yaml](../../anylabeling/configs/auto_labeling/rtmdet_m_coco_person_rtmo_m.yaml) | 85.13MB  | [百度网盘](https://pan.baidu.com/s/1yPJnIpOEep09qAjYUxY7AQ?pwd=dwba) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.0/rtmo_m.onnx) |
| rtmdet_m_640-8xb32_coco-person.onnx | [RTMDet](https://github.com/open-mmlab/mmyolo/tree/main/configs/rtmdet)（人体 2d 关键点）| [rtmdet_m_640-8xb32_coco-person.onnx](../../anylabeling/configs/auto_labeling/rtmdet_m_coco_person_rtmo_m.yaml) | 104.25MB | [百度网盘](https://pan.baidu.com/s/1BOoBNihoejvqoB7viBzbQQ?pwd=5ki4) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.0/rtmdet_m_640-8xb32_coco-person.onnx) |


## 车道线检测

|名称|描述|配置|大小|链接|
| --- | --- | --- | --- | --- |
| clrnet_tusimple_r18.onnx | [CLRNet](https://github.com/Turoad/CLRNet)-Tusimple (CVPR2022)  | [clrnet_tusimple_r18.yaml](../../anylabeling/configs/auto_labeling/clrnet_tusimple_r18.yaml)  | 59.04MB  | [百度网盘](https://pan.baidu.com/s/1Ptzji5x2dRBmJtijTmO4tA?pwd=zzuf) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.0/clrnet_tusimple_r18.onnx) |


## 多目标追踪

|名称|描述|配置|大小|链接|
| --- | --- | --- | --- | --- |
| yolov5s.onnx | YOLOv5s-Det-BoT-SORT | [yolov5s_det_botsort.yaml](../../anylabeling/configs/auto_labeling/yolov5s_det_botsort.yaml) | 27.98MB | [百度网盘](https://pan.baidu.com/s/18I8ugM29NKjNlVEsnYYuWA?pwd=z8dl) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov5s.onnx) |
| yolov8s.onnx | YOLOv8s-Det-BoT-SORT | [yolov8s_det_botsort.yaml](../../anylabeling/configs/auto_labeling/yolov8s_det_botsort.yaml) | 42.75MB | [百度网盘](https://pan.baidu.com/s/1_1-9dFF_BfqcghE_0LDidg?pwd=oy9d) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov8s.onnx) |
| yolov8n_obb_car_bus.onnx | YOLOv8n-Obb-BoT-SORT | [yolov8n_obb_botsort.yaml](../../anylabeling/configs/auto_labeling/yolov8n_obb_botsort.yaml) | 12.02MB | [百度网盘](https://pan.baidu.com/s/1hQpkBlH6Wc7yAADOxt9yeQ?pwd=o23t) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.0/yolov8n_obb_car_bus.onnx) |
| yolov8m-seg.onnx | YOLOv8m-Seg-Bytetrack | [yolov8m_seg_bytetrack.yaml](../../anylabeling/configs/auto_labeling/yolov8m_seg_bytetrack.yaml) | 104.23MB | [百度网盘](https://pan.baidu.com/s/1PmKsiatP2YfHtnDCJEnhRw?pwd=bo85) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov8m-seg.onnx) |
| yolov8x-pose-p6.onnx | YOLOv8x-Pose-P6-BoT-SORT | [yolov8x_pose_p6_botsort.yaml](../../anylabeling/configs/auto_labeling/yolov8x_pose_p6_botsort.yaml) | 378.92MB | [百度网盘](https://pan.baidu.com/s/1VRszCtMnHo2zeshuk93Aew?pwd=xvko) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v1.0.0/yolov8x-pose-p6.onnx) |
| yolo11s.onnx | YOLO11s-Det-BoT-SORT | [yolo11s_det_botsort.yaml](../../anylabeling/configs/auto_labeling/yolo11s_det_botsort.yaml) | 36.27MB | [百度网盘](https://pan.baidu.com/s/1a3H-cMRzP-YFSLsKMRXTKA?pwd=uyrw) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.4/yolo11s.onnx) |
| yolov11s_obb_car_bus.onnx | YOLO11s-OBB-BoT-SORT | [yolo11s_obb_botsort.yaml](../../anylabeling/configs/auto_labeling/yolo11s_obb_botsort.yaml) | 37.36MB | [百度网盘](https://pan.baidu.com/s/1caHKHZvVnyuAqrXaTvklLA?pwd=x2v7) \| [GitHub](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.4/yolov11s_obb_car_bus.onnx) |
| yolo11s-seg.onnx | YOLO11s-Seg-BoT-SORT | [yolo11s_seg_botsort.yaml](../../anylabeling/configs/auto_labeling/yolo11s_seg_botsort.yaml) | 38.77MB | [百度网盘](https://pan.baidu.com/s/11O7b0qUMQb1SQPoSYOsf9A?pwd=tthu) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.4/yolo11s-seg.onnx) |
| yolo11s-pose.onnx | YOLO11s-Pose-BoT-SORT | [yolo11s_pose_botsort.yaml](../../anylabeling/configs/auto_labeling/yolo11s_pose_botsort.yaml) | 38.09MB | [百度网盘](https://pan.baidu.com/s/1LzdbGYO215UiG7na2NgkJA?pwd=5jcu) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.4/yolo11s-pose.onnx) |
| yolo26s.onnx | YOLO26s-Det-TrackTrack | [yolo26s_det_tracktrack.yaml](../../anylabeling/configs/auto_labeling/yolo26s_det_tracktrack.yaml) | 36.47MB | [百度网盘](https://pan.baidu.com/s/1EYN6xIFVrUdkHm2mgcLgKA?pwd=z51j) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/yolo26s.onnx) |
| yolo26s-seg.onnx | YOLO26s-Seg-TrackTrack | [yolo26s_seg_tracktrack.yaml](../../anylabeling/configs/auto_labeling/yolo26s_seg_tracktrack.yaml) | 39.91MB | [百度网盘](https://pan.baidu.com/s/1Bjzf4aX3Pq2jW67k_DxGNA?pwd=599s) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/yolo26s-seg.onnx) |
| yolo26s-obb.onnx | YOLO26s-OBB-TrackTrack | [yolo26s_obb_tracktrack.yaml](../../anylabeling/configs/auto_labeling/yolo26s_obb_tracktrack.yaml) | 37.56MB | [百度网盘](https://pan.baidu.com/s/1eKmD0iYPCF0K2KPH32PJvQ?pwd=8grq) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/yolo26s-obb.onnx) |
| yolo26s-pose.onnx | YOLO26s-Pose-TrackTrack | [yolo26s_pose_tracktrack.yaml](../../anylabeling/configs/auto_labeling/yolo26s_pose_tracktrack.yaml) | 39.86MB | [百度网盘](https://pan.baidu.com/s/1LifSl5V5lMk7GOqwtPHO1w?pwd=8kta) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/yolo26s-pose.onnx) |


## 目标检测

- 水平目标检测

|名称|描述|配置|大小|链接|
| --- | --- | --- | --- | --- |
| yolo26s.onnx | [YOLO26s](https://docs.ultralytics.com/tasks/detect/)-COCO | [yolo26s.yaml](../../anylabeling/configs/auto_labeling/yolo26s.yaml) | 36.47MB | [百度网盘](https://pan.baidu.com/s/1EYN6xIFVrUdkHm2mgcLgKA?pwd=z51j) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/yolo26s.onnx) |
| yolo26s.engine | [YOLO26s](https://docs.ultralytics.com/tasks/detect/)-COCO-TensorRT | [yolo26s_trt.yaml](../../anylabeling/configs/auto_labeling/yolo26s_trt.yaml) | 42.38MB | [百度网盘](https://pan.baidu.com/s/1CM3QHFVWOuNRz8AyAH4bYg?pwd=hahe) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/yolo26s.engine) |
| yolo26s.onnx | [YOLO26s](https://docs.ultralytics.com/tasks/detect/) with [SAHI](https://github.com/obss/sahi)-COCO | [yolo26s_sahi.yaml](../../anylabeling/configs/auto_labeling/yolo26s_sahi.yaml) | 36.47MB | [百度网盘](https://pan.baidu.com/s/1EYN6xIFVrUdkHm2mgcLgKA?pwd=z51j) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/yolo26s.onnx) |
| deimv2_hgnetv2_n_coco.onnx | [DEIMv2-HGNetv2-N-COCO](https://github.com/Intellindust-AI-Lab/DEIMv2) | [deimv2_hgnetv2_n_coco.yaml](../../anylabeling/configs/auto_labeling/deimv2_hgnetv2_n_coco.yaml) | 14.15MB  | [百度网盘](https://pan.baidu.com/s/1Q-zK8W6w0mRm6DHXTWvMvg?pwd=v67d) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/deimv2_hgnetv2_n_coco.onnx) |
| deimv2_dinov3_s_coco.onnx | [DEIMv2-DINOv3-S-COCO](https://github.com/Intellindust-AI-Lab/DEIMv2) | [deimv2_dinov3_s_coco.yaml](../../anylabeling/configs/auto_labeling/deimv2_dinov3_s_coco.yaml) | 38.22MB  | [百度网盘](https://pan.baidu.com/s/10JU1KOFjnI8XnS7H7VOzQg?pwd=a3ij) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/deimv2_dinov3_s_coco.onnx) |
| deimv2_dinov3_m_coco.onnx | [DEIMv2-DINOv3-M-COCO](https://github.com/Intellindust-AI-Lab/DEIMv2) | [deimv2_dinov3_m_coco.yaml](../../anylabeling/configs/auto_labeling/deimv2_dinov3_m_coco.yaml) | 70.35MB  | [百度网盘](https://pan.baidu.com/s/1brgSg_Avc_-T1b9bJSwNpA?pwd=r3cq) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/deimv2_dinov3_m_coco.onnx) |
| dfine_s_obj2coco.onnx | [D-FINE-S](https://github.com/Peterande/D-FINE)-COCO | [dfine_s_obj2coco.yaml](../../anylabeling/configs/auto_labeling/dfine_s_obj2coco.yaml) | 39.80MB  | [百度网盘](https://pan.baidu.com/s/1S_wLQ_637N7i2pu4zvuAVA?pwd=nr7v) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/dfine_s_obj2coco.onnx) |
| dfine_m_obj2coco.onnx | [D-FINE-M](https://github.com/Peterande/D-FINE)-COCO | [dfine_m_obj2coco.yaml](../../anylabeling/configs/auto_labeling/dfine_m_obj2coco.yaml) | 74.22MB  | [百度网盘](https://pan.baidu.com/s/1pFXlSBIrBtXf5A8oWzjMNw?pwd=v18h) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/dfine_m_obj2coco.onnx) |
| dfine_l_obj2coco.onnx | [D-FINE-L](https://github.com/Peterande/D-FINE)-COCO | [dfine_l_obj2coco.yaml](../../anylabeling/configs/auto_labeling/dfine_l_obj2coco.yaml) | 118.35MB  | [百度网盘](https://pan.baidu.com/s/1_fGvqxloAsPe8EeyZq5Q-g?pwd=3mnr) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/dfine_l_obj2coco.onnx) |
| dfine_x_obj2coco.onnx | [D-FINE-X](https://github.com/Peterande/D-FINE)-COCO | [dfine_x_obj2coco.yaml](../../anylabeling/configs/auto_labeling/dfine_x_obj2coco.yaml) | 236.60MB  | [百度网盘](https://pan.baidu.com/s/1n8g3LVpCahKBbTIAYYP95Q?pwd=ywvv) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/dfine_x_obj2coco.onnx) |
| rtdetr_l.onnx | [Ultralytics RT-DETR-L](https://docs.ultralytics.com/models/rtdetr/) | [rtdetr_l.yaml](../../anylabeling/configs/auto_labeling/rtdetr_l.yaml) | 122.88MB | [百度网盘](https://pan.baidu.com/s/1-e3Vle_bUtdjgfk3igd-XQ?pwd=u7fr) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/rtdetr_l.onnx) |
| rtdetr_x.onnx | [Ultralytics RT-DETR-X](https://docs.ultralytics.com/models/rtdetr/) | [rtdetr_x.yaml](../../anylabeling/configs/auto_labeling/rtdetr_x.yaml) | 250.83MB | [百度网盘](https://pan.baidu.com/s/1KLV1UozJ46BqZyXGJIhq9A?pwd=q3u8) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/rtdetr_x.onnx) |
| rf-detr-nano.onnx | [RF-DETR Nano](https://github.com/roboflow/rf-detr) | [rfdetr_nano.yaml](../../anylabeling/configs/auto_labeling/rfdetr_nano.yaml) | 109.98MB | [百度网盘](https://pan.baidu.com/s/1fTL3CUrY1BykRrc0ata0tQ?pwd=dmet) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/rf-detr-nano.onnx) |
| rf-detr-small.onnx | [RF-DETR Small](https://github.com/roboflow/rf-detr) | [rfdetr_small.yaml](../../anylabeling/configs/auto_labeling/rfdetr_small.yaml) | 117.06MB | [百度网盘](https://pan.baidu.com/s/1e8tIzUxdFXv9r4aMfOWivQ?pwd=bue6) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/rf-detr-small.onnx) |
| rf-detr-medium.onnx | [RF-DETR Nano](https://github.com/roboflow/rf-detr) | [rfdetr_medium.yaml](../../anylabeling/configs/auto_labeling/rfdetr_medium.yaml) | 123.88MB | [百度网盘](https://pan.baidu.com/s/1n0pJAK3OMkwTGYSlsoGvug?pwd=r5ny) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/rf-detr-medium.onnx) |
| rf-detr-base-coco.onnx | [RF-DETR Base COCO](https://github.com/roboflow/rf-detr) | [rfdetr_base_coco.yaml](../../anylabeling/configs/auto_labeling/rfdetr_base_coco.yaml) | 110.24MB | [百度网盘](https://pan.baidu.com/s/18jS1ufutyQK4KYSbMcR-HA?pwd=4wse) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/rf-detr-base-coco.onnx) |
| rf-detr-base.onnx | [RF-DETR Base](https://github.com/roboflow/rf-detr) | [rfdetr_base.yaml](../../anylabeling/configs/auto_labeling/rfdetr_base.yaml) | 110.24MB | [百度网盘](https://pan.baidu.com/s/1GMlx137YNybLw5Gbka9y2A?pwd=a598) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/rf-detr-base.onnx) |
| rf-detr-large.onnx | [RF-DETR Large](https://github.com/roboflow/rf-detr) | [rfdetr_large.yaml](../../anylabeling/configs/auto_labeling/rfdetr_large.yaml) | 473.06MB | [百度网盘](https://pan.baidu.com/s/1KRfDa82xOuaZ-aqg2rwFCw?pwd=6sqi) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/rf-detr-large.onnx) |
| upn_large.pth | [UPN-Large](../../examples/detection/hbb/README.md) | [upn.yaml](../../anylabeling/configs/auto_labeling/upn.yaml) | 834.23MB | [百度网盘](https://pan.baidu.com/s/1e092YPQthvAFV49YXlPLdg?pwd=2hbp) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.0/upn_large.pth) |
| damoyolo_tinynasL20_T_420.onnx | [DAMO-YOLO](https://github.com/tinyvision/DAMO-YOLO)-COCO  | [damo_yolo_t.yaml](../../anylabeling/configs/auto_labeling/damo_yolo_t.yaml)  | 32.45MB  | [百度网盘](https://pan.baidu.com/s/1V3yWsdOqPhYQYsguW_672A?pwd=b8vv) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.3.0/damoyolo_tinynasL20_T_420.onnx) |
| damoyolo_tinynasL25_S_460.onnx | [DAMO-YOLO](https://github.com/tinyvision/DAMO-YOLO)-COCO  | [damo_yolo_s.yaml](../../anylabeling/configs/auto_labeling/damo_yolo_s.yaml)  | 62.09MB  | [百度网盘](https://pan.baidu.com/s/1NfHl2dQAwJer0yFprovnuA?pwd=ml1m) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.3.0/damoyolo_tinynasL25_S_460.onnx) |
| damoyolo_tinynasL35_M_492.onnx | [DAMO-YOLO](https://github.com/tinyvision/DAMO-YOLO)-COCO  | [damo_yolo_m.yaml](../../anylabeling/configs/auto_labeling/damo_yolo_m.yaml)  | 107.58MB  | [百度网盘](https://pan.baidu.com/s/1XX0eUJ9idLRFfscjDHkXnQ?pwd=591v) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.3.0/damoyolo_tinynasL35_M_492.onnx) |
| damoyolo_tinynasL45_L_508.onnx | [DAMO-YOLO](https://github.com/tinyvision/DAMO-YOLO)-COCO  | [damo_yolo_l.yaml](../../anylabeling/configs/auto_labeling/damo_yolo_l.yaml)  | 160.52MB  | [百度网盘](https://pan.baidu.com/s/116ETSUw_R0FSVWPIQXXQOw?pwd=44j3) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.3.0/damoyolo_tinynasL45_L_508.onnx) |
| Gold_n_dist.onnx | [Gold-YOLO](https://github.com/huawei-noah/Efficient-Computing/tree/master/Detection/Gold-YOLO)-COCO | [gold_yolo_n.yaml](../../anylabeling/configs/auto_labeling/gold_yolo_n.yaml) | 23.58MB | [百度网盘](https://pan.baidu.com/s/1f-i2DdUNPDohkxTMdpBn7Q?pwd=0hfu) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.3.0/Gold_n_dist.onnx) |
| Gold_s_pre_dist.onnx | [Gold-YOLO](https://github.com/huawei-noah/Efficient-Computing/tree/master/Detection/Gold-YOLO)-COCO  | [gold_yolo_s.yaml](../../anylabeling/configs/auto_labeling/gold_yolo_s.yaml) | 89.06MB | [百度网盘](https://pan.baidu.com/s/1Sfnp1NLklJXvG7Z2ZLoIcw?pwd=thg7) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.3.0/Gold_s_pre_dist.onnx) |
| Gold_m_pre_dist.onnx | [Gold-YOLO](https://github.com/huawei-noah/Efficient-Computing/tree/master/Detection/Gold-YOLO)-COCO  | [gold_yolo_m.yaml](../../anylabeling/configs/auto_labeling/gold_yolo_m.yaml) | 169.88MB | [百度网盘](https://pan.baidu.com/s/1lY5VljoL9pZxadpe9DEUdQ?pwd=ephp) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.3.0/Gold_m_pre_dist.onnx) |
| Gold_l_pre_dist.onnx | [Gold-YOLO](https://github.com/huawei-noah/Efficient-Computing/tree/master/Detection/Gold-YOLO)-COCO  | [gold_yolo_l.yaml](../../anylabeling/configs/auto_labeling/gold_yolo_l.yaml) | 286.79MB | [百度网盘](https://pan.baidu.com/s/1ySxB3R18oWuIdYzKRLrflg?pwd=1wlk) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.3.0/Gold_l_pre_dist.onnx) |
| rtdetr_r50vd_6x_coco.onnx | [RT-DETR](https://github.com/PaddlePaddle/PaddleDetection/blob/develop/configs/rtdetr/README.md)-COCO  | [rtdetr_r50.yaml](../../anylabeling/configs/auto_labeling/rtdetr_r50.yaml)  | 160.96MB  | [百度网盘](https://pan.baidu.com/s/11vkwveTeZWwOFUpk8qrqVg?pwd=3sc4) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/rtdetr_r50vd_6x_coco.onnx) |
| rtdetrv2_r101vd_6x_coco.onnx | [RT-DETRv2-X](https://github.com/lyuwenyu/RT-DETR/tree/main/rtdetrv2_pytorch)-COCO | [rtdetrv2x.yaml](../../anylabeling/configs/auto_labeling/rtdetrv2x.yaml) | 286.48MB | [百度网盘](https://pan.baidu.com/s/11lpaWt4IyFb39jJxKtlxnQ?pwd=t2kv) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.0/rtdetrv2_r101vd_6x_coco.onnx) |
| rtdetrv2_r50vd_6x_coco.onnx | [RT-DETRv2-L](https://github.com/lyuwenyu/RT-DETR/tree/main/rtdetrv2_pytorch)-COCO | [rtdetrv2l.yaml](../../anylabeling/configs/auto_labeling/rtdetrv2l.yaml) | 161.38MB | [百度网盘](https://pan.baidu.com/s/1ex1fzc18wnIa7YREBGD3_g?pwd=qrab) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.0/rtdetrv2_r50vd_6x_coco.onnx) |
| rtdetrv2_r50vd_m_7x_coco.onnx | [RT-DETRv2-M*](https://github.com/lyuwenyu/RT-DETR/tree/main/rtdetrv2_pytorch)-COCO | [rtdetrv2m7x.yaml](../../anylabeling/configs/auto_labeling/rtdetrv2m7x.yaml) | 126.52MB | [百度网盘](https://pan.baidu.com/s/1wzf6wJoysHfvAbgtv337oA?pwd=v8lw) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.0/rtdetrv2_r50vd_m_7x_coco.onnx) |
| rtdetrv2_r34vd_120e_coco.onnx | [RT-DETRv2-M](https://github.com/lyuwenyu/RT-DETR/tree/main/rtdetrv2_pytorch)-COCO | [rtdetrv2m.yaml](../../anylabeling/configs/auto_labeling/rtdetrv2m.yaml) | 119.73MB | [百度网盘](https://pan.baidu.com/s/1ByaV67J7yBKtznvwHvtRiQ?pwd=oeny) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.0/rtdetrv2_r34vd_120e_coco.onnx) |
| rtdetrv2_r18vd_120e_coco.onnx | [RT-DETRv2-S](https://github.com/lyuwenyu/RT-DETR/tree/main/rtdetrv2_pytorch)-COCO | [rtdetrv2s.yaml](../../anylabeling/configs/auto_labeling/rtdetrv2s.yaml) | 76.80MB | [百度网盘](https://pan.baidu.com/s/1jEuzrrn3P1GQcQ28qY-Q2Q?pwd=axm2) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.0/rtdetrv2_r18vd_120e_coco.onnx) |
| yolo_nas_l.onnx | [YOLO-NAS](https://github.com/Deci-AI/super-gradients/tree/master)-COCO  | [yolo_nas_l.yaml](../../anylabeling/configs/auto_labeling/yolo_nas_l.yaml)  | 160.38MB  | [百度网盘](https://pan.baidu.com/s/1ckVfkul8ZckiQd3PfM-Htw?pwd=wmk8) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolo_nas_l.onnx) |
| yolo_nas_m.onnx | [YOLO-NAS](https://github.com/Deci-AI/super-gradients/tree/master)-COCO  | [yolo_nas_m.yaml](../../anylabeling/configs/auto_labeling/yolo_nas_m.yaml)  | 121.87MB  | [百度网盘](https://pan.baidu.com/s/1bPH1m6dSxxG2KG3zrDywAA?pwd=1mlh) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolo_nas_m.onnx) |
| yolo_nas_s.onnx | [YOLO-NAS](https://github.com/Deci-AI/super-gradients/tree/master)-COCO  | [yolo_nas_s.yaml](../../anylabeling/configs/auto_labeling/yolo_nas_s.yaml)  | 46.62MB  | [百度网盘](https://pan.baidu.com/s/1yA_n6QxJGXoR38xlY25q_w?pwd=4wdw) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolo_nas_s.onnx) |
| yolov5x.onnx | [YOLOv5](https://github.com/ultralytics/yolov5)-COCO  | [yolov5x.yaml](../../anylabeling/configs/auto_labeling/yolov5x.yaml)  | 331.19MB  | [百度网盘](https://pan.baidu.com/s/1atAEN7JbjjrQewNPQU3ULw?pwd=qk9k) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov5x.onnx) |
| yolov5l.onnx | [YOLOv5](https://github.com/ultralytics/yolov5)-COCO  | [yolov5l.yaml](../../anylabeling/configs/auto_labeling/yolov5l.yaml)  | 177.94MB  | [百度网盘](https://pan.baidu.com/s/1RFs44UfCAgJMSHMf3DfMaw?pwd=0e31) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov5l.onnx) |
| yolov5m.onnx | [YOLOv5](https://github.com/ultralytics/yolov5)-COCO  | [yolov5m.yaml](../../anylabeling/configs/auto_labeling/yolov5m.yaml)  | 81.19MB  | [百度网盘](https://pan.baidu.com/s/1oB9Vp-s7viOaLxAhjzAnFQ?pwd=vc4v) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov5m.onnx) |
| yolov5s.onnx | [YOLOv5](https://github.com/ultralytics/yolov5)-COCO  | [yolov5s.yaml](../../anylabeling/configs/auto_labeling/yolov5s.yaml)  | 27.98MB  | [百度网盘](https://pan.baidu.com/s/18I8ugM29NKjNlVEsnYYuWA?pwd=z8dl) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov5s.onnx) |
| yolov5n.onnx | [YOLOv5](https://github.com/ultralytics/yolov5)-COCO  | [yolov5n.yaml](../../anylabeling/configs/auto_labeling/yolov5n.yaml)  | 7.54MB  | [百度网盘](https://pan.baidu.com/s/1E_RZK3ERyOxbEe5Ckrp0PA?pwd=0wex) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov5n.onnx) |
| yolov6x_mbla.onnx | [YOLOv6](https://github.com/meituan/YOLOv6)-COCO  | [yolov6x_mbla.yaml](../../anylabeling/configs/auto_labeling/yolov6x_mbla.yaml)  | 300.95MB  | [百度网盘](https://pan.baidu.com/s/1gF1HUyJtGTuuslmFXJM_LA?pwd=edw4) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov6x_mbla.onnx) |
| yolov6l_mbla.onnx | [YOLOv6](https://github.com/meituan/YOLOv6)-COCO  | [yolov6l_mbla.yaml](../../anylabeling/configs/auto_labeling/yolov6l_mbla.yaml)  | 176.72MB  | [百度网盘](https://pan.baidu.com/s/1rjs8n8cZpHp8vKnDqkPZOA?pwd=wc4z) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov6l_mbla.onnx) |
| yolov6m_mbla.onnx | [YOLOv6](https://github.com/meituan/YOLOv6)-COCO  | [yolov6m_mbla.yaml](../../anylabeling/configs/auto_labeling/yolov6m_mbla.yaml)  | 99.61MB  | [百度网盘](https://pan.baidu.com/s/1q_11RxVEiJRC0ClCaQpvhQ?pwd=hkcr) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov6m_mbla.onnx) |
| yolov6s_mbla.onnx | [YOLOv6](https://github.com/meituan/YOLOv6)-COCO  | [yolov6s_mbla.yaml](../../anylabeling/configs/auto_labeling/yolov6s_mbla.yaml)  | 44.49MB  | [百度网盘](https://pan.baidu.com/s/12ZlipM39i9IXbtUEdWRxjw?pwd=npsj) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov6s_mbla.onnx) |
| yolov6s.onnx | [YOLOv6](https://github.com/meituan/YOLOv6)-COCO  | [yolov6s.yaml](../../anylabeling/configs/auto_labeling/yolov6s.yaml)  | 70.88MB  | [百度网盘](https://pan.baidu.com/s/17eA0BJYAET1ITGLyos8ZKA?pwd=ixba) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov6s.onnx) |
| yolov6s6.onnx | [YOLOv6](https://github.com/meituan/YOLOv6)-COCO  | [yolov6s6.yaml](../../anylabeling/configs/auto_labeling/yolov6s6.yaml)  | 158.47MB  | [百度网盘](https://pan.baidu.com/s/1CAJQdUCo9X_g1FfvvWttqw?pwd=rga8) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov6s6.onnx) |
| yolov7.onnx | [YOLOv7](https://github.com/WongKinYiu/yolov7)-COCO  | [yolov7.yaml](../../anylabeling/configs/auto_labeling/yolov7.yaml)  | 140.90MB  | [百度网盘](https://pan.baidu.com/s/1Ovrs0cemCoBSFPn4HFAXuA?pwd=qlmi) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov7.onnx) |
| yolov8x.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-COCO  | [yolov8x.yaml](../../anylabeling/configs/auto_labeling/yolov8x.yaml)  | 260.37MB  | [百度网盘](https://pan.baidu.com/s/1bITA7hX9NdTXnYHkP-0R0A?pwd=satq) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov8x.onnx) |
| yolov8l.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-COCO  | [yolov8l.yaml](../../anylabeling/configs/auto_labeling/yolov8l.yaml)  | 166.79MB  | [百度网盘](https://pan.baidu.com/s/1QSV-GS5cu00L-WW2McWCpQ?pwd=nvwt) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov8l.onnx) |
| yolov8m.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-COCO  | [yolov8m.yaml](../../anylabeling/configs/auto_labeling/yolov8m.yaml)  | 98.94MB  | [百度网盘](https://pan.baidu.com/s/14AexWennXtViqIqy-obhRQ?pwd=j673) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov8m.onnx) |
| yolov8s.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-COCO  | [yolov8s.yaml](../../anylabeling/configs/auto_labeling/yolov8s.yaml)  | 42.75MB  | [百度网盘](https://pan.baidu.com/s/1_1-9dFF_BfqcghE_0LDidg?pwd=oy9d) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov8s.onnx) |
| yolov8n.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-COCO  | [yolov8n.yaml](../../anylabeling/configs/auto_labeling/yolov8n.yaml)  | 12.21MB  | [百度网盘](https://pan.baidu.com/s/1j8Jx4tsL97KlSeNe9aGdVg?pwd=u000) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov8n.onnx) |
| yolov8s.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics) with [SAHI](https://github.com/obss/sahi)-COCO  | [yolov8s_sahi.yaml](../../anylabeling/configs/auto_labeling/yolov8s_sahi.yaml)  | 42.75MB  | [百度网盘](https://pan.baidu.com/s/1_1-9dFF_BfqcghE_0LDidg?pwd=oy9d) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov8s.onnx) |
| yolov8x6-oiv7.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-Open Image V7 | [yolov8x6_oiv7.yaml](../../anylabeling/configs/auto_labeling/yolov8x6_oiv7.yaml) | 374.51MB | [百度网盘](https://pan.baidu.com/s/1gpjkbkRGNtqhq0e3DUA1bQ?pwd=g8lq) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.7/yolov8x6-oiv7.onnx) |
| yolov8x-oiv7.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-Open Image V7 | [yolov8x_oiv7.yaml](../../anylabeling/configs/auto_labeling/yolov8x_oiv7.yaml) | 262.24MB | [百度网盘](https://pan.baidu.com/s/1in76UG8GhsXw6ACNqOVYKA?pwd=o07s) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.7/yolov8x-oiv7.onnx) |
| yolov8l-oiv7.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-Open Image V7 | [yolov8l_oiv7.yaml](../../anylabeling/configs/auto_labeling/yolov8l_oiv7.yaml) | 168.28MB | [百度网盘](https://pan.baidu.com/s/1p9-oYvkV-IXvy6RlTxLWfQ?pwd=fs07) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.7/yolov8l-oiv7.onnx) |
| yolov8m-oiv7.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-Open Image V7 | [yolov8m_oiv7.yaml](../../anylabeling/configs/auto_labeling/yolov8m_oiv7.yaml) | 100.05MB | [百度网盘](https://pan.baidu.com/s/1E7c-XIriTLH-gmBm5UmdWA?pwd=36n6) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.7/yolov8m-oiv7.onnx) |
| yolov8s-oiv7.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-Open Image V7 | [yolov8s_oiv7.yaml](../../anylabeling/configs/auto_labeling/yolov8s_oiv7.yaml) | 43.47MB | [百度网盘](https://pan.baidu.com/s/1a6bP_x76Gk7LIf8uisWqfA?pwd=53lu) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.7/yolov8s-oiv7.onnx) |
| yolov8n-oiv7.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-Open Image V7 | [yolov8n_oiv7.yaml](../../anylabeling/configs/auto_labeling/yolov8n_oiv7.yaml) | 13.47MB | [百度网盘](https://pan.baidu.com/s/1u8sUFr2LmBGwqZCbGb6Xww?pwd=l6ip) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.7/yolov8n-oiv7.onnx) |
| yolov9c.onnx | [YOLOv9](https://github.com/WongKinYiu/yolov9)-COCO | [yolov9c.yaml](../../anylabeling/configs/auto_labeling/yolov9c.yaml) | 195.34MB | [百度网盘](https://pan.baidu.com/s/1iHZH29HE8s4fG8X7aHcn5g?pwd=zb5w) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.2/yolov9c.onnx) |
| yolov9e.onnx | [YOLOv9](https://github.com/WongKinYiu/yolov9)-COCO | [yolov9e.yaml](../../anylabeling/configs/auto_labeling/yolov9e.yaml) | 265.43MB | [百度网盘](https://pan.baidu.com/s/1oJJQ1L5UfKi43kT96tauSA?pwd=vpa1) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.2/yolov9e.onnx) |
| gelan-c.onnx | [YOLOv9](https://github.com/WongKinYiu/yolov9)-COCO | [gelan-c.yaml](../../anylabeling/configs/auto_labeling/yolov9_gelan_c.yaml) | 97.43MB | [百度网盘](https://pan.baidu.com/s/1cM0Tc056ICuA5jvesacCng?pwd=whb3) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.2/gelan-c.onnx) |
| gelan-e.onnx | [YOLOv9](https://github.com/WongKinYiu/yolov9)-COCO | [gelan-e.yaml](../../anylabeling/configs/auto_labeling/yolov9_gelan_e.yaml) | 221.94MB | [百度网盘](https://pan.baidu.com/s/1Iy0w5Cgga0-GmOLNSvYflg?pwd=s1p2) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.2/gelan-c.onnx) |
| yolov10n.onnx | [YOLOv10](https://github.com/THU-MIG/yolov10)-COCO | [yolov10n.yaml](../../anylabeling/configs/auto_labeling/yolov10n.yaml) | 8.98MB | [百度网盘](https://pan.baidu.com/s/12h4-UBbCdbgAYCTBroZh_g?pwd=mo5k) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.6/yolov10n.onnx) |
| yolov10s.onnx | [YOLOv10](https://github.com/THU-MIG/yolov10)-COCO | [yolov10s.yaml](../../anylabeling/configs/auto_labeling/yolov10s.yaml) | 27.86MB | [百度网盘](https://pan.baidu.com/s/1cRZk-eSdaqmsQLdKqX_-Iw?pwd=pwa2) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.6/yolov10s.onnx) |
| yolov10m.onnx | [YOLOv10](https://github.com/THU-MIG/yolov10)-COCO | [yolov10m.yaml](../../anylabeling/configs/auto_labeling/yolov10m.yaml) | 58.81MB | [百度网盘](https://pan.baidu.com/s/19iKuQ9DhJqzPqN7zBuZQ9Q?pwd=3hn2) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.6/yolov10m.onnx) |
| yolov10b.onnx | [YOLOv10](https://github.com/THU-MIG/yolov10)-COCO | [yolov10b.yaml](../../anylabeling/configs/auto_labeling/yolov10b.yaml) | 72.95MB | [百度网盘](https://pan.baidu.com/s/15rabV7mFyy6HQVgTE1Wv6Q?pwd=dol1) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.6/yolov10b.onnx) |
| yolov10l.onnx | [YOLOv10](https://github.com/THU-MIG/yolov10)-COCO | [yolov10l.yaml](../../anylabeling/configs/auto_labeling/yolov10l.yaml) | 93.20MB | [百度网盘](https://pan.baidu.com/s/1dJGVhtPRC31ssbnhQWpztw?pwd=13ax) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.6/yolov10l.onnx) |
| yolov10x.onnx | [YOLOv10](https://github.com/THU-MIG/yolov10)-COCO | [yolov10x.yaml](../../anylabeling/configs/auto_labeling/yolov10x.yaml) | 112.68MB | [百度网盘](https://pan.baidu.com/s/1o6rCcq-NyIBe4ftcOJlKzQ?pwd=c73x) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.6/yolov10x.onnx) |
| yolo11s.onnx | [YOLO11](https://github.com/ultralytics/ultralytics)-COCO | [yolo11s.yaml](../../anylabeling/configs/auto_labeling/yolo11s.yaml) | 36.27MB | [百度网盘](https://pan.baidu.com/s/1a3H-cMRzP-YFSLsKMRXTKA?pwd=uyrw) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.4/yolo11s.onnx) |
| yolo11s.onnx | [YOLO11](https://github.com/ultralytics/ultralytics) with [SAHI](https://github.com/obss/sahi)-COCO | [yolo11s_sahi.yaml](../../anylabeling/configs/auto_labeling/yolo11s_sahi.yaml) | 36.27MB | [百度网盘](https://pan.baidu.com/s/1a3H-cMRzP-YFSLsKMRXTKA?pwd=uyrw) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.4/yolo11s.onnx) |
| yolo12n.onnx | [YOLO12](https://github.com/ultralytics/ultralytics)-COCO | [yolo12n.yaml](../../anylabeling/configs/auto_labeling/yolo12n.yaml) | 10.13MB | [百度网盘](https://pan.baidu.com/s/14A6Sp4cA1tA4puWpU-CUDQ?pwd=krvf) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/yolo12n.onnx) |
| yolo12s.onnx | [YOLO12](https://github.com/ultralytics/ultralytics)-COCO | [yolo12s.yaml](../../anylabeling/configs/auto_labeling/yolo12s.yaml) | 35.57MB | [百度网盘](https://pan.baidu.com/s/1cvy9WAsmgggpULJb7wlJ_g?pwd=7nsw) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/yolo12s.onnx) |
| yolo12m.onnx | [YOLO12](https://github.com/ultralytics/ultralytics)-COCO | [yolo12m.yaml](../../anylabeling/configs/auto_labeling/yolo12m.yaml) | 77.18MB | [百度网盘](https://pan.baidu.com/s/1K40cJLp_FmsIL39g32Gf0w?pwd=6xek) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/yolo12m.onnx) |
| yolo12l.onnx | [YOLO12](https://github.com/ultralytics/ultralytics)-COCO | [yolo12l.yaml](../../anylabeling/configs/auto_labeling/yolo12l.yaml) | 101.02MB | [百度网盘](https://pan.baidu.com/s/18gYXXRt7zhlkrFuf2CW3_g?pwd=dgmm) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/yolo12l.onnx) |
| yolo12x.onnx | [YOLO12](https://github.com/ultralytics/ultralytics)-COCO | [yolo12x.yaml](../../anylabeling/configs/auto_labeling/yolo12x.yaml) | 225.89MB | [百度网盘](https://pan.baidu.com/s/1BbKsl5svcSqnLlKvRqQUHg?pwd=t8cy) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/yolo12x.onnx) |
| hyper-yolot.onnx | [Hpyer-YOLO](https://github.com/iMoonLab/Hyper-YOLO)-COCO | hyper-yolot.yaml | 12.19MB | [百度网盘](https://pan.baidu.com/s/1e29ZhbO6zWqeLXpSEeO5VA?pwd=bqqq) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.1/hyper-yolot.onnx) |
| hyper-yolon.onnx | [Hpyer-YOLO](https://github.com/iMoonLab/Hyper-YOLO)-COCO | hyper-yolon.yaml | 15.80MB | [百度网盘](https://pan.baidu.com/s/1NWlrd8VvhwCBsdKFRl5-ig?pwd=j7hq) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.1/hyper-yolon.onnx) |
| hyper-yolos.onnx | [Hpyer-YOLO](https://github.com/iMoonLab/Hyper-YOLO)-COCO | [hyper-yolos.yaml](../../anylabeling/configs/auto_labeling/hyper_yolos.yaml) | 56.83MB | [百度网盘](https://pan.baidu.com/s/1xFFqlpqScL3_R4unKzRWtA?pwd=ddg7) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.1/hyper-yolos.onnx) |
| hyper-yolom.onnx | [Hpyer-YOLO](https://github.com/iMoonLab/Hyper-YOLO)-COCO | hyper-yolom.yaml | 127.56MB | [百度网盘](https://pan.baidu.com/s/1rY3I0I5N6hBKkRfZh8AXuA?pwd=t4fm) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.1/hyper-yolom.onnx) |
| hyper-yolol.onnx | [Hpyer-YOLO](https://github.com/iMoonLab/Hyper-YOLO)-COCO | hyper-yolol.yaml | 215.12MB | [百度网盘](https://pan.baidu.com/s/1895I4MgBKYTo5MHeL4VvPA?pwd=wr3n) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.1/hyper-yolol.onnx) |

- 有向目标检测

|名称|描述|配置|大小|链接|
| --- | --- | --- | --- | --- |
| rtdetrv2_obb_hgnetv2_n_diorr.onnx | [RT-DETRv2-OBB-N](https://github.com/RicePasteM/RiO-DETR)-DIOR-R | [rio_detr_n_diorr.yaml](../../anylabeling/configs/auto_labeling/rio_detr_n_diorr.yaml) | 15.68MB | [百度网盘](https://pan.baidu.com/s/1LXyUMf6Vm10BM6eVbdqP7A?pwd=j5e9) \| [GitHub](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/rtdetrv2_obb_hgnetv2_n_diorr.onnx) |
| rtdetrv2_obb_hgnetv2_s_diorr.onnx | [RT-DETRv2-OBB-S](https://github.com/RicePasteM/RiO-DETR)-DIOR-R | [rio_detr_s_diorr.yaml](../../anylabeling/configs/auto_labeling/rio_detr_s_diorr.yaml) | 31.90MB | [百度网盘](https://pan.baidu.com/s/1SckVkd0POdJTcPfaSRurDg?pwd=j5e9) \| [GitHub](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/rtdetrv2_obb_hgnetv2_s_diorr.onnx) |
| rtdetrv2_obb_hgnetv2_m_diorr.onnx | [RT-DETRv2-OBB-M](https://github.com/RicePasteM/RiO-DETR)-DIOR-R | [rio_detr_m_diorr.yaml](../../anylabeling/configs/auto_labeling/rio_detr_m_diorr.yaml) | 71.77MB | [百度网盘](https://pan.baidu.com/s/1Z5jg7tMH-P0q7ThaNnePkA?pwd=j5e9) \| [GitHub](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/rtdetrv2_obb_hgnetv2_m_diorr.onnx) |
| rtdetrv2_obb_hgnetv2_l_diorr.onnx | [RT-DETRv2-OBB-L](https://github.com/RicePasteM/RiO-DETR)-DIOR-R | [rio_detr_l_diorr.yaml](../../anylabeling/configs/auto_labeling/rio_detr_l_diorr.yaml) | 105.65MB | [百度网盘](https://pan.baidu.com/s/1H_ueN2wzXMN42w182oYgYw?pwd=j5e9) \| [GitHub](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/rtdetrv2_obb_hgnetv2_l_diorr.onnx) |
| rtdetrv2_obb_hgnetv2_x_diorr.onnx | [RT-DETRv2-OBB-X](https://github.com/RicePasteM/RiO-DETR)-DIOR-R | [rio_detr_x_diorr.yaml](../../anylabeling/configs/auto_labeling/rio_detr_x_diorr.yaml) | 239.24MB | [百度网盘](https://pan.baidu.com/s/1DY7U38gPIZRLCNLqcwj9fg?pwd=j5e9) \| [GitHub](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/rtdetrv2_obb_hgnetv2_x_diorr.onnx) |
| rtdetrv2_obb_hgnetv2_n_dota_1_ss.onnx | [RT-DETRv2-OBB-N](https://github.com/RicePasteM/RiO-DETR)-DOTA-v1.0 | [rio_detr_n_dota_1_ss.yaml](../../anylabeling/configs/auto_labeling/rio_detr_n_dota_1_ss.yaml) | 15.92MB | [百度网盘](https://pan.baidu.com/s/1tIIqdbl5fd4QoYrHHKcpHA?pwd=j5e9) \| [GitHub](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/rtdetrv2_obb_hgnetv2_n_dota_1_ss.onnx) |
| rtdetrv2_obb_hgnetv2_s_dota_1_ss.onnx | [RT-DETRv2-OBB-S](https://github.com/RicePasteM/RiO-DETR)-DOTA-v1.0 | [rio_detr_s_dota_1_ss.yaml](../../anylabeling/configs/auto_labeling/rio_detr_s_dota_1_ss.yaml) | 32.42MB | [百度网盘](https://pan.baidu.com/s/1AkTS-XJzym7fAPbrxOS1GQ?pwd=j5e9) \| [GitHub](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/rtdetrv2_obb_hgnetv2_s_dota_1_ss.onnx) |
| rtdetrv2_obb_hgnetv2_m_dota_1_ss.onnx | [RT-DETRv2-OBB-M](https://github.com/RicePasteM/RiO-DETR)-DOTA-v1.0 | [rio_detr_m_dota_1_ss.yaml](../../anylabeling/configs/auto_labeling/rio_detr_m_dota_1_ss.yaml) | 72.34MB | [百度网盘](https://pan.baidu.com/s/1ddihQeJFsXrlqs3fkzSPlQ?pwd=j5e9) \| [GitHub](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/rtdetrv2_obb_hgnetv2_m_dota_1_ss.onnx) |
| rtdetrv2_obb_hgnetv2_l_dota_1_ss.onnx | [RT-DETRv2-OBB-L](https://github.com/RicePasteM/RiO-DETR)-DOTA-v1.0 | [rio_detr_l_dota_1_ss.yaml](../../anylabeling/configs/auto_labeling/rio_detr_l_dota_1_ss.yaml) | 106.23MB | [百度网盘](https://pan.baidu.com/s/10qYsfgl8yK5nk5RpOI8Lkw?pwd=j5e9) \| [GitHub](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/rtdetrv2_obb_hgnetv2_l_dota_1_ss.onnx) |
| rtdetrv2_obb_hgnetv2_x_dota_1_ss.onnx | [RT-DETRv2-OBB-X](https://github.com/RicePasteM/RiO-DETR)-DOTA-v1.0 | [rio_detr_x_dota_1_ss.yaml](../../anylabeling/configs/auto_labeling/rio_detr_x_dota_1_ss.yaml) | 240.00MB | [百度网盘](https://pan.baidu.com/s/1WPElWR_UStvkT1eyL-QNAA?pwd=j5e9) \| [GitHub](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/rtdetrv2_obb_hgnetv2_x_dota_1_ss.onnx) |
| yolov5n_obb_drone_vehicle.onnx | [YOLOv5-OBB](https://github.com/hukaixuan19970627/yolov5_obb)-DroneVehicle | [yolov5n_obb_drone_vehicle.yaml](../../anylabeling/configs/auto_labeling/yolov5n_obb_drone_vehicle.yaml) | 8.39MB | [百度网盘](https://pan.baidu.com/s/1JPuhA03wgH8wnMBveSk5Ew?pwd=2ds7) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v1.0.0/yolov5n_obb_drone_vehicle.onnx) |
| yolov5s_obb_csl_dotav10.onnx | [YOLOv5-OBB](https://github.com/hukaixuan19970627/yolov5_obb)-DOTA-v1.0 | [yolov5s_obb_csl_dotav10.yaml](../../anylabeling/configs/auto_labeling/yolov5s_obb_csl_dotav10.yaml) | 29.77MB | [百度网盘](https://pan.baidu.com/s/1JBe9ACJNPnNbdpsNsNAy8A?pwd=cfj1) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v1.0.0/yolov5n_obb_drone_vehicle.onnx) |
| yolov5m_obb_csl_dotav15.onnx | [YOLOv5-OBB](https://github.com/hukaixuan19970627/yolov5_obb)-DOTA-v1.5 | [yolov5m_obb_csl_dotav15.yaml](../../anylabeling/configs/auto_labeling/yolov5m_obb_csl_dotav15.yaml) | 83.59MB | [百度网盘](https://pan.baidu.com/s/1upX5OtjjD3hmlmPbZo7IXQ?pwd=vk6x) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v1.0.0/yolov5m_obb_csl_dotav15.onnx) |
| yolov5m_obb_csl_dotav20.onnx | [YOLOv5-OBB](https://github.com/hukaixuan19970627/yolov5_obb)-DOTA-v2.0 | [yolov5m_obb_csl_dotav20.yaml](../../anylabeling/configs/auto_labeling/yolov5m_obb_csl_dotav20.yaml) | 83.62MB | [百度网盘](https://pan.baidu.com/s/1IXo65WLAcxHYkz9bQgzhNQ?pwd=7r7b) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v1.0.0/yolov5m_obb_csl_dotav20.onnx) |
| yolov8s-obb.onnx | [YOLOv8-OBB](https://github.com/ultralytics/ultralytics)-DOTA-v1.0 | [yolov8s_obb.yaml](../../anylabeling/configs/auto_labeling/yolov8s_obb.yaml) | 43.84MB | [百度网盘](https://pan.baidu.com/s/1gz6fR_Js0MOXLtL06mMr5w?pwd=8cb8) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.0/yolov8s-obb.onnx) |
| yolo11s-obb.onnx | [YOLO11s-Obb](https://github.com/ultralytics/ultralytics)-DOTA-v1.0  | [yolo11s_obb.yaml](../../anylabeling/configs/auto_labeling/yolo11s_obb.yaml) | 37.36MB | [百度网盘](https://pan.baidu.com/s/1caHKHZvVnyuAqrXaTvklLA?pwd=x2v7) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.4/yolo11s-obb.onnx) |
| yolo26s-obb.onnx | [YOLO26s-Obb](https://docs.ultralytics.com/tasks/obb/)-DOTA-v1.0| [yolo26s_obb.yaml](../../anylabeling/configs/auto_labeling/yolo26s_obb.yaml) | 37.56MB | [百度网盘](https://pan.baidu.com/s/1eKmD0iYPCF0K2KPH32PJvQ?pwd=8grq) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/yolo26s-obb.onnx) |


## 光学字符识别

|名称|描述|配置|大小|链接|
| --- | --- | --- | --- | --- |
| doclayout_yolo_docstructbench_imgsz1024.onnx | [文档版面分析模型](https://github.com/opendatalab/DocLayout-YOLO) | [doclayout_yolo.yaml](../../anylabeling/configs/auto_labeling/doclayout_yolo.yaml) | 72.22MB | [百度网盘](https://pan.baidu.com/s/1pX1sdEHglifeEIxDn3p-dg?pwd=ah4f) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.0/doclayout_yolo_docstructbench_imgsz1024.onnx) |
| ppocrv5_mobile_det_infer.onnx| [PPOCR-v5 超轻量检测模型](https://paddle-model-ecology.bj.bcebos.com/paddlex/official_inference_model/paddle3.0.0/PP-OCRv5_mobile_det_infer.tar) | [ch_chinese_cht_en_japan_ppocr_v5.yaml](../../anylabeling/configs/auto_labeling/ch_chinese_cht_en_japan_ppocr_v5.yaml) | 4.55MB | [百度网盘](https://pan.baidu.com/s/1eOdc-cV_JDj7KlkTGX3B5A?pwd=hdx3) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/ppocrv5_mobile_det_infer.onnx) |
| ppocrv5_mobile_rec_infer.onnx| [PPOCR-v5 超轻量识别模型](https://paddle-model-ecology.bj.bcebos.com/paddlex/official_inference_model/paddle3.0.0/PP-OCRv5_mobile_rec_infer.tar)，支持简体中文、中文拼音、繁体中文、英文、日文5大主流文字类型 | [ch_chinese_cht_en_japan_ppocr_v5.yaml](../../anylabeling/configs/auto_labeling/ch_chinese_cht_en_japan_ppocr_v5.yaml) | 15.76MB | [百度网盘](https://pan.baidu.com/s/10BRdpDCNoAfsitj8pgE7vw?pwd=311p) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/ppocrv5_mobile_rec_infer.onnx) |
| ppocrv6_tiny_det_infer.onnx | PP-OCRv6 Tiny 检测模型 | [ch_chinese_cht_en_japan_ppocr_v6_tiny.yaml](../../anylabeling/configs/auto_labeling/ch_chinese_cht_en_japan_ppocr_v6_tiny.yaml) | 1.70MB | [百度网盘](https://pan.baidu.com/s/19TxCrTA_y770h7MePi2B4Q?pwd=k95u) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/ppocrv6_tiny_det_infer.onnx) |
| ppocrv6_tiny_rec_infer.onnx | PP-OCRv6 Tiny 识别模型，支持简体中文、中文拼音、繁体中文、英文、日文5大主流文字类型 | [ch_chinese_cht_en_japan_ppocr_v6_tiny.yaml](../../anylabeling/configs/auto_labeling/ch_chinese_cht_en_japan_ppocr_v6_tiny.yaml) | 4.26MB | [百度网盘](https://pan.baidu.com/s/1WnH9Yd6sIAxaeb0xPnv4Zg?pwd=bxnd) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/ppocrv6_tiny_rec_infer.onnx) |
| ppocrv6_small_det_infer.onnx | PP-OCRv6 Small 检测模型 | [ch_chinese_cht_en_japan_ppocr_v6_small.yaml](../../anylabeling/configs/auto_labeling/ch_chinese_cht_en_japan_ppocr_v6_small.yaml) | 9.42MB | [百度网盘](https://pan.baidu.com/s/1muh53jGtQeH_hcheLKaH1w?pwd=p8vg) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/ppocrv6_small_det_infer.onnx) |
| ppocrv6_small_rec_infer.onnx | PP-OCRv6 Small 识别模型，支持简体中文、中文拼音、繁体中文、英文、日文5大主流文字类型 | [ch_chinese_cht_en_japan_ppocr_v6_small.yaml](../../anylabeling/configs/auto_labeling/ch_chinese_cht_en_japan_ppocr_v6_small.yaml) | 20.18MB | [百度网盘](https://pan.baidu.com/s/1DE5peLs8374ueXWZ4OFqqg?pwd=qeh1) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/ppocrv6_small_rec_infer.onnx) |
| ppocrv6_medium_det_infer.onnx | PP-OCRv6 Medium 检测模型 | [ch_chinese_cht_en_japan_ppocr_v6_medium.yaml](../../anylabeling/configs/auto_labeling/ch_chinese_cht_en_japan_ppocr_v6_medium.yaml) | 59.16MB | [百度网盘](https://pan.baidu.com/s/1lgLMJTK_PsRFMYKVeakIGA?pwd=xwam) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/ppocrv6_medium_det_infer.onnx) |
| ppocrv6_medium_rec_infer.onnx | PP-OCRv6 Medium 识别模型，支持简体中文、中文拼音、繁体中文、英文、日文5大主流文字类型 | [ch_chinese_cht_en_japan_ppocr_v6_medium.yaml](../../anylabeling/configs/auto_labeling/ch_chinese_cht_en_japan_ppocr_v6_medium.yaml) | 73.01MB | [百度网盘](https://pan.baidu.com/s/18qEDh7FHB-4TLGIXEoFB6w?pwd=dfq4) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/ppocrv6_medium_rec_infer.onnx) |
| ch_ppocr_mobile_v2.0_cls_infer.onnx | [原始分类器模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_infer.tar)，对检测到的文本行文字角度分类 | [ch_chinese_cht_en_japan_ppocr_v5.yaml](../../anylabeling/configs/auto_labeling/ch_chinese_cht_en_japan_ppocr_v5.yaml) | 569KB | [百度网盘](https://pan.baidu.com/s/1Lhka9fHHxYwvrN55ue8UtQ?pwd=t0se) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.2/ch_ppocr_mobile_v2.0_cls_infer.onnx) |
| ch_PP-OCRv4_det_infer.onnx | [PPOCR-v4 超轻量检测模型](https://paddleocr.bj.bcebos.com/PP-OCRv4/chinese/ch_PP-OCRv4_det_infer.tar) | [ch_ppocr_v4.yaml](../../anylabeling/configs/auto_labeling/ch_ppocr_v4.yaml) | 4.53MB | [百度网盘](https://pan.baidu.com/s/1EhZkTfWha1K7R2axBXvn0Q?pwd=wd9h) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.2/ch_PP-OCRv4_det_infer.onnx) |
| ch_ppocr_mobile_v2.0_cls_infer.onnx | [原始分类器模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_infer.tar)，对检测到的文本行文字角度分类 | [ch_ppocr_v4.yaml](../../anylabeling/configs/auto_labeling/ch_ppocr_v4.yaml) | 569KB | [百度网盘](https://pan.baidu.com/s/1Lhka9fHHxYwvrN55ue8UtQ?pwd=t0se) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.2/ch_ppocr_mobile_v2.0_cls_infer.onnx) |
| ch_PP-OCRv4_rec_infer.onnx | [PPOCR-v4 超轻量识别模型](https://paddleocr.bj.bcebos.com/PP-OCRv4/chinese/ch_PP-OCRv4_rec_infer.tar)，支持中英文 | [ch_ppocr_v4.yaml](../../anylabeling/configs/auto_labeling/ch_ppocr_v4.yaml) | 10.33MB | [百度网盘](https://pan.baidu.com/s/16GDxeyNf8w_-y4Pi6Zyqnw?pwd=76ry) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.2/ch_PP-OCRv4_rec_infer.onnx) |
| ch_PP-OCRv4_det_infer.onnx | [PPOCR-v4 检测模型](https://paddleocr.bj.bcebos.com/PP-OCRv4/chinese/ch_PP-OCRv4_det_infer.tar) | [japan_ppocr.yaml](../../anylabeling/configs/auto_labeling/japan_ppocr.yaml) | 4.53MB | [百度网盘](https://pan.baidu.com/s/1EhZkTfWha1K7R2axBXvn0Q?pwd=wd9h) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.2/ch_PP-OCRv4_det_infer.onnx) |
| ch_ppocr_mobile_v2.0_cls_infer.onnx | [原始分类器模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_infer.tar)，对检测到的文本行文字角度分类 | [japan_ppocr.yaml](../../anylabeling/configs/auto_labeling/japan_ppocr.yaml) | 569KB | [百度网盘](https://pan.baidu.com/s/1Lhka9fHHxYwvrN55ue8UtQ?pwd=t0se) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.2/ch_ppocr_mobile_v2.0_cls_infer.onnx) |
| japan_PP-OCRv3_rec_infer.onnx | [超轻量日文识别模型](https://paddleocr.bj.bcebos.com/PP-OCRv3/multilingual/japan_PP-OCRv3_rec_infer.tar) | [japan_ppocr.yaml](../../anylabeling/configs/auto_labeling/japan_ppocr.yaml) | 9.62MB | [百度网盘](https://pan.baidu.com/s/1sMPb-b1w8m_WohB7JHcOxw?pwd=d058) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.0/japan_PP-OCRv3_rec_infer.onnx) |


## 分割一切模型

- 通用场景

|名称|描述|配置|大小|链接|
| --- | --- | --- | --- | --- |
| sam3_image_encoder.onnx | [SAM3](https://github.com/facebookresearch/sam3) ViT-H 图像编码器 | [sam3_vit_h.yaml](../../anylabeling/configs/auto_labeling/sam3_vit_h.yaml) | 2.39MB | [百度网盘](https://pan.baidu.com/s/1fTRfWMSsm1Ci3n2YEexOHw?pwd=a48n) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/sam3_image_encoder.onnx) |
| sam3_image_encoder.onnx.data | [SAM3](https://github.com/facebookresearch/sam3) ViT-H 图像编码器数据文件 | [sam3_vit_h.yaml](../../anylabeling/configs/auto_labeling/sam3_vit_h.yaml) | 1.70GB | [百度网盘](https://pan.baidu.com/s/1k6k7prMx7ut9b_ADMkrIdw?pwd=9msx) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/sam3_image_encoder.onnx.data) |
| sam3_language_encoder.onnx | [SAM3](https://github.com/facebookresearch/sam3) ViT-H 语言编码器 | [sam3_vit_h.yaml](../../anylabeling/configs/auto_labeling/sam3_vit_h.yaml) | 1.33MB | [百度网盘](https://pan.baidu.com/s/1fu1IYzZjrTEe-iaiudnaEw?pwd=kesd) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/sam3_language_encoder.onnx) |
| sam3_language_encoder.onnx.data | [SAM3](https://github.com/facebookresearch/sam3) ViT-H 语言编码器数据文件 | [sam3_vit_h.yaml](../../anylabeling/configs/auto_labeling/sam3_vit_h.yaml) | 1.50GB | [百度网盘](https://pan.baidu.com/s/1GpSTbHIs9-1FEvOIRP95eA?pwd=2zd8) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/sam3_language_encoder.onnx.data) |
| sam3_decoder.onnx | [SAM3](https://github.com/facebookresearch/sam3) ViT-H 解码器 | [sam3_vit_h.yaml](../../anylabeling/configs/auto_labeling/sam3_vit_h.yaml) | 123.84MB | [百度网盘](https://pan.baidu.com/s/1GeyliOXpzAQiHIo21JPalg?pwd=m5km) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/sam3_decoder.onnx) |
| sam3_decoder.onnx.data | [SAM3](https://github.com/facebookresearch/sam3) ViT-H 解码器数据文件 | [sam3_vit_h.yaml](../../anylabeling/configs/auto_labeling/sam3_vit_h.yaml) | 111.13MB | [百度网盘](https://pan.baidu.com/s/1oeKbieQNIVWxqn3lKQbn7Q?pwd=9j3g) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/sam3_decoder.onnx.data) |
| sam2.1_hiera_tiny.encoder.onnx | [SAM2](https://github.com/facebookresearch/sam2) | [sam2_hiera_tiny.yaml](../../anylabeling/configs/auto_labeling/sam2_hiera_tiny.yaml) | 128.04MB | [百度网盘](https://pan.baidu.com/s/1wuf7VmxztvorXwLtBbENLw?pwd=cmad) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.0/sam2.1_hiera_tiny.encoder.onnx) |
| sam2.1_hiera_tiny.decoder.onnx | [SAM2](https://github.com/facebookresearch/sam2) | [sam2_hiera_tiny.yaml](../../anylabeling/configs/auto_labeling/sam2_hiera_tiny.yaml) | 19.68MB | [百度网盘](https://pan.baidu.com/s/1TOKUPFUwE_vOZQIhsLs7FA?pwd=eb8g) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.0/sam2.1_hiera_tiny.decoder.onnx) |
| sam2.1_hiera_small.encoder.onnx | [SAM2](https://github.com/facebookresearch/sam2) | [sam2_hiera_small.yaml](../../anylabeling/configs/auto_labeling/sam2_hiera_small.yaml) | 155.17MB | [百度网盘](https://pan.baidu.com/s/1VGVyU1-fNfOHRPWzsXUXyQ?pwd=min2) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.0/sam2.1_hiera_small.encoder.onnx) |
| sam2.1_hiera_small.decoder.onnx | [SAM2](https://github.com/facebookresearch/sam2) | [sam2_hiera_small.yaml](../../anylabeling/configs/auto_labeling/sam2_hiera_small.yaml) | 19.68MB | [百度网盘](https://pan.baidu.com/s/1qfDJiyEXdnmNjsB9ygE1bw?pwd=abyj) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.0/sam2.1_hiera_small.decoder.onnx) |
| sam2.1_hiera_base_plus.encoder.onnx | [SAM2](https://github.com/facebookresearch/sam2) | [sam2_hiera_base.yaml](../../anylabeling/configs/auto_labeling/sam2_hiera_base.yaml) | 324.04MB | [百度网盘](https://pan.baidu.com/s/1COTTRGNOYTGEIJeOM9kzQA?pwd=rytm) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.0/sam2.1_hiera_base_plus.encoder.onnx) |
| sam2.1_hiera_base_plus.decoder.onnx | [SAM2](https://github.com/facebookresearch/sam2) | [sam2_hiera_base.yaml](../../anylabeling/configs/auto_labeling/sam2_hiera_base.yaml) | 19.68MB | [百度网盘](https://pan.baidu.com/s/1ING_8V-QTnEMI4OP52qlZw?pwd=iqsn) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.0/sam2.1_hiera_base_plus.decoder.onnx) |
| sam2.1_hiera_large.encoder.onnx | [SAM2](https://github.com/facebookresearch/sam2) | [sam2_hiera_large.yaml](../../anylabeling/configs/auto_labeling/sam2_hiera_large.yaml) | 848.16MB | [百度网盘](https://pan.baidu.com/s/14UaLzS7VINarzrKHVIp0KA?pwd=x6jr) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.0/sam2.1_hiera_large.encoder.onnx) |
| sam2.1_hiera_large.decoder.onnx | [SAM2](https://github.com/facebookresearch/sam2) | [sam2_hiera_large.yaml](../../anylabeling/configs/auto_labeling/sam2_hiera_large.yaml) | 19.68MB | [百度网盘](https://pan.baidu.com/s/1iirCRz_KFe3d1fVPteVybA?pwd=nfib) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.0/sam2.1_hiera_large.decoder.onnx) |
| edge_sam_encoder.onnx | [EdgeSAM](https://github.com/chongzhou96/EdgeSAM) | [edge_sam.yaml](../../anylabeling/configs/auto_labeling/edge_sam.yaml) | 21.02MB | [百度网盘](https://pan.baidu.com/s/1jKK1OQYS9PsRrZM75GposA?pwd=2okt) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.2.0/edge_sam_encoder.onnx) |
| edge_sam_decoder.onnx | [EdgeSAM](https://github.com/chongzhou96/EdgeSAM) | [edge_sam.yaml](../../anylabeling/configs/auto_labeling/edge_sam.yaml) | 17.78MB | [百度网盘](https://pan.baidu.com/s/1THr_TLO0zmoZZ_gw5mQuow?pwd=ewyv) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.2.0/edge_sam_decoder.onnx) |
| sam_vit_b_01ec64.encoder.onnx | [SAM](https://arxiv.org/abs/2304.02643) ViT-base encoder  | [segment_anything_vit_b.yaml](../../anylabeling/configs/auto_labeling/segment_anything_vit_b.yaml)  | 342.58MB  | [百度网盘](https://pan.baidu.com/s/1ILcJ_ct1gAv21IS5fQ-Mbw?pwd=kpz2) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.0/sam_vit_b_01ec64.encoder.onnx) |
| sam_vit_b_01ec64.decoder.onnx | [SAM](https://arxiv.org/abs/2304.02643) ViT-base decoder  | [segment_anything_vit_b.yaml](../../anylabeling/configs/auto_labeling/segment_anything_vit_b.yaml)  | 15.74MB  | [百度网盘](https://pan.baidu.com/s/1eBxU5F33GCyzFMs1EJAb-g?pwd=e73e) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.0/sam_vit_b_01ec64.decoder.onnx) |
| sam_vit_b_01ec64.encoder.quant.onnx | [SAM](https://arxiv.org/abs/2304.02643) ViT-base encoder（量化版本） | [segment_anything_vit_b_quant.yaml](../../anylabeling/configs/auto_labeling/segment_anything_vit_b_quant.yaml)  | 103.78MB  | [百度网盘](https://pan.baidu.com/s/1KaabmKC6M_sxWCoMIMBN6A?pwd=1rs7) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.0/sam_vit_b_01ec64.encoder.quant.onnx) |
| sam_vit_b_01ec64.decoder.quant.onnx | [SAM](https://arxiv.org/abs/2304.02643) ViT-base decoder（量化版本） | [segment_anything_vit_b_quant.yaml](../../anylabeling/configs/auto_labeling/segment_anything_vit_b_quant.yaml)  | 8.34MB  | [百度网盘](https://pan.baidu.com/s/1iW3tVjJfaIVGYFTeKKkIzg?pwd=gnuf) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.0/sam_vit_b_01ec64.decoder.quant.onnx) |
| sam_vit_l_0b3195.encoder.onnx | [SAM](https://arxiv.org/abs/2304.02643) ViT-large encoder  | [segment_anything_vit_l.yaml](../../anylabeling/configs/auto_labeling/segment_anything_vit_l.yaml)  | 1.15GB  | [百度网盘](https://pan.baidu.com/s/1O8Fy4Tz7hvgIFMGOER9Y9w?pwd=2rt4) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.0/sam_vit_l_0b3195.encoder.onnx) |
| sam_vit_l_0b3195.decoder.onnx | [SAM](https://arxiv.org/abs/2304.02643) ViT-large decoder  | [segment_anything_vit_l.yaml](../../anylabeling/configs/auto_labeling/segment_anything_vit_l.yaml)  | 15.74MB  | [百度网盘](https://pan.baidu.com/s/1ftSh3oedErfM1TNOcjy4fQ?pwd=4oez) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.0/sam_vit_l_0b3195.decoder.onnx) |
| sam_vit_l_0b3195.encoder.quant.onnx | [SAM](https://arxiv.org/abs/2304.02643) ViT-large encoder（量化版本） | [segment_anything_vit_l_quant.yaml](../../anylabeling/configs/auto_labeling/segment_anything_vit_l_quant.yaml)  | 317.18MB  | [百度网盘](https://pan.baidu.com/s/1W8elbCXKIHk8c37_kKGl1w?pwd=a2mi) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.0/sam_vit_l_0b3195.encoder.quant.onnx) |
| sam_vit_l_0b3195.decoder.quant.onnx | [SAM](https://arxiv.org/abs/2304.02643) ViT-large decoder（量化版本） | [segment_anything_vit_l_quant.yaml](../../anylabeling/configs/auto_labeling/segment_anything_vit_l_quant.yaml)  | 8.34MB  | [百度网盘](https://pan.baidu.com/s/1LzXk0e-jvJFYYFiXYbD_vA?pwd=wgwp) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.0/sam_vit_l_0b3195.decoder.quant.onnx) |
| mobile_sam.encoder.onnx | [MobileSAM](https://arxiv.org/abs/2306.14289) encoder  | [mobile_sam_vit_h.yaml](../../anylabeling/configs/auto_labeling/mobile_sam_vit_h.yaml)  | 26.85MB  | [百度网盘](https://pan.baidu.com/s/1knn_NkrRAgfJms6d9FsErg?pwd=xbi6) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.0/mobile_sam.encoder.onnx) |
| sam_vit_h_4b8939.decoder.quant.onnx | [MobileSAM](https://arxiv.org/abs/2306.14289) decoder  | [mobile_sam_vit_h.yaml](../../anylabeling/configs/auto_labeling/mobile_sam_vit_h.yaml)  | 8.34MB  | [百度网盘](https://pan.baidu.com/s/1L5RGeTWK7d5vkLmgir8x5w?pwd=f287) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.0/sam_vit_h_4b8939.decoder.quant.onnx) |
| sam_vit_h_4b8939.encoder.quant.onnx | [SAM](https://arxiv.org/abs/2304.02643) ViT-huge encoder（量化版本） | [segment_anything_vit_h_quant.yaml](../../anylabeling/configs/auto_labeling/segment_anything_vit_h_quant.yaml)  | 626.40MB  | [百度网盘](https://pan.baidu.com/s/1LJqKvxEmhzr8xQfwWk9SMg?pwd=n6ol) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.0/sam_vit_h_4b8939.encoder.quant.onnx) |
| sam_vit_h_4b8939.decoder.quant.onnx | [SAM](https://arxiv.org/abs/2304.02643) ViT-huge decoder（量化版本） | [segment_anything_vit_h_quant.yaml](../../anylabeling/configs/auto_labeling/segment_anything_vit_h_quant.yaml)  | 8.34MB  | [百度网盘](https://pan.baidu.com/s/1L5RGeTWK7d5vkLmgir8x5w?pwd=f287) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.0/sam_vit_h_4b8939.decoder.quant.onnx) |
| efficientvit_sam_l0_vit_h.encoder.onnx | [EfficientViT-SAM](https://github.com/mit-han-lab/efficientvit) ViT-huge encoder  | [efficientvit_sam_l0_vit_h.yaml](../../anylabeling/configs/auto_labeling/efficientvit_sam_l0_vit_h.yaml)  | 117.25MB  | [百度网盘](https://pan.baidu.com/s/16u8oXZzgTlZPF4szdbHNNg?pwd=dr1t) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.4/efficientvit_sam_l0_vit_h.encoder.onnx) |
| efficientvit_sam_l0_vit_h.decoder.onnx | [EfficientViT-SAM](https://github.com/mit-han-lab/efficientvit) ViT-huge decoder  | [efficientvit_sam_l0_vit_h.yaml](../../anylabeling/configs/auto_labeling/efficientvit_sam_l0_vit_h.yaml)  | 15.63MB  | [百度网盘](https://pan.baidu.com/s/1w4MFjrXdpI9A3YdESdSeWA?pwd=xjma) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.4/efficientvit_sam_l0_vit_h.decoder.onnx) |
| efficientvit_sam_l1_vit_h.encoder.onnx | [EfficientViT-SAM](https://github.com/mit-han-lab/efficientvit) ViT-huge encoder  | [efficientvit_sam_l1_vit_h.yaml](../../anylabeling/configs/auto_labeling/efficientvit_sam_l1_vit_h.yaml)  | 166.31MB  | [百度网盘](https://pan.baidu.com/s/1tidlzaR7nQt8_fZh_X9Gdw?pwd=5fuz) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.4/efficientvit_sam_l1_vit_h.encoder.onnx) |
| efficientvit_sam_l1_vit_h.decoder.onnx | [EfficientViT-SAM](https://github.com/mit-han-lab/efficientvit) ViT-huge decoder  | [efficientvit_sam_l1_vit_h.yaml](../../anylabeling/configs/auto_labeling/efficientvit_sam_l1_vit_h.yaml)  | 15.63MB  | [百度网盘](https://pan.baidu.com/s/1usaDN855iZaO2rUKIvdsfA?pwd=p1p9) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.4/efficientvit_sam_l1_vit_h.decoder.onnx) |
| sam_hq_vit_b_encoder.onnx | [HQ-SAM](https://arxiv.org/abs/2306.01567) ViT-base encoder | [sam_hq_vit_b.yaml](../../anylabeling/configs/auto_labeling/sam_hq_vit_b.yaml) | 342.37MB | [百度网盘](https://pan.baidu.com/s/1WU1HvGqhVuoSXuyZmR9XlA?pwd=4zf5) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.0.0/sam_hq_vit_b_encoder.onnx) |
| sam_hq_vit_b_decoder.onnx | [HQ-SAM](https://arxiv.org/abs/2306.01567) ViT-base decoder | [sam_hq_vit_b.yaml](../../anylabeling/configs/auto_labeling/sam_hq_vit_b.yaml) | 19.74MB | [百度网盘](https://pan.baidu.com/s/1vL04NiOwfoKBXIHZc0NsTQ?pwd=ctxb) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.0.0/sam_hq_vit_b_decoder.onnx) |
| sam_hq_vit_l_encoder.onnx | [HQ-SAM](https://arxiv.org/abs/2306.01567) ViT-large encoder | [sam_hq_vit_l.yaml](../../anylabeling/configs/auto_labeling/sam_hq_vit_l.yaml) | 1.15GB | [百度网盘](https://pan.baidu.com/s/1NIQnHGb8BUMg9CLcQVveEQ?pwd=2jo2) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.0.0/sam_hq_vit_l_encoder.onnx) |
| sam_hq_vit_l_decoder.onnx | [HQ-SAM](https://arxiv.org/abs/2306.01567) ViT-large decoder | [sam_hq_vit_l.yaml](../../anylabeling/configs/auto_labeling/sam_hq_vit_l.yaml) | 20.74MB | [百度网盘](https://pan.baidu.com/s/1eAjL_qW1V4CleLko_xmy4g?pwd=b7p8) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.0.0/sam_hq_vit_l_decoder.onnx) |
| sam_hq_vit_l_encoder_quant.onnx | [HQ-SAM](https://arxiv.org/abs/2306.01567) ViT-large encoder（量化版本）| [sam_hq_vit_l_quant.yaml](../../anylabeling/configs/auto_labeling/sam_hq_vit_l_quant.yaml) | 307.96MB | [百度网盘](https://pan.baidu.com/s/1IkKuFWlJCsU1baKcE75aMQ?pwd=l23c) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.0.0/sam_hq_vit_l_encoder_quant.onnx) |
| sam_hq_vit_l_decoder | [HQ-SAM](https://arxiv.org/abs/2306.01567) ViT-large decoder | [sam_hq_vit_l_quant.yaml](../../anylabeling/configs/auto_labeling/sam_hq_vit_l_quant.yaml) | 20.74MB | [百度网盘](https://pan.baidu.com/s/1eAjL_qW1V4CleLko_xmy4g?pwd=b7p8) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.0.0/sam_hq_vit_l_decoder.onnx) |
| sam_hq_vit_h_encoder_quant.onnx | [HQ-SAM](https://arxiv.org/abs/2306.01567) ViT-huge encoder（量化版本）| [sam_hq_vit_h_quant.yaml](../../anylabeling/configs/auto_labeling/sam_hq_vit_h_quant.yaml) | 625.55MB | [百度网盘](https://pan.baidu.com/s/1JkjQLURF2f-xi57Xak_9_Q?pwd=ixyp) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.0.0/sam_hq_vit_h_encoder_quant.onnx) |
| sam_hq_vit_h_decoder | [HQ-SAM](https://arxiv.org/abs/2306.01567) ViT-huge decoder | [sam_hq_vit_h_quant.yaml](../../anylabeling/configs/auto_labeling/sam_hq_vit_h_quant.yaml) | 21.74MB | [百度网盘](https://pan.baidu.com/s/1YYTnwNrFYQVI-imIQ_2Eyg?pwd=3grn) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.0.0/sam_hq_vit_h_decoder.onnx) |


- 医学场景

|名称|描述|配置|大小|链接|
| --- | --- | --- | --- | --- |
| sam-med2d_b.encoder.onnx | [SAM-Med2D](https://github.com/OpenGVLab/SAM-Med2D) ViT-base encoder  | [sam_med2d_vit_b.yaml](../../anylabeling/configs/auto_labeling/sam_med2d_vit_b.yaml)  | 1019.49MB  | [百度网盘](https://pan.baidu.com/s/1DRKsmAsTrpjIjowL0inq0w?pwd=gur6) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.0/sam-med2d_b.encoder.onnx) |
| sam-med2d_b.decoder.onnx | [SAM-Med2D](https://github.com/OpenGVLab/SAM-Med2D) ViT-base decoder  | [sam_med2d_vit_b.yaml](../../anylabeling/configs/auto_labeling/sam_med2d_vit_b.yaml)  | 15.60MB  | [百度网盘](https://pan.baidu.com/s/1X0ZGp4vxRAVk_v6iSO3BJQ?pwd=7cdd) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.0/sam-med2d_b.decoder.onnx) |

本地 ONNX 和服务端两种使用方式请参考 [Segment Anything 3 指南](../../examples/grounding/sam3/README.md)。


## 图像分割

|名称|描述|配置|大小|链接|
| --- | --- | --- | --- | --- |
| dfine_seg_n_coco.onnx | [D-FINE-seg-N](https://github.com/ArgoHA/D-FINE-seg)-COCO | [dfine_seg_n_coco.yaml](../../anylabeling/configs/auto_labeling/dfine_seg_n_coco.yaml) | 17.89MB | [百度网盘](https://pan.baidu.com/s/19ZVXQUE27F0UuoBFQhvssQ?pwd=cb74) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v4.0.0/dfine_seg_n_coco.onnx) \| [ModelScope](https://www.modelscope.cn/models/CVHub520/dfine_seg/resolve/master/dfine_seg_n_coco.onnx) |
| dfine_seg_s_coco.onnx | [D-FINE-seg-S](https://github.com/ArgoHA/D-FINE-seg)-COCO | [dfine_seg_s_coco.yaml](../../anylabeling/configs/auto_labeling/dfine_seg_s_coco.yaml) | 47.62MB | [百度网盘](https://pan.baidu.com/s/1P5hB7t8YDZ1atf2tj04PGA?pwd=cb74) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v4.0.0/dfine_seg_s_coco.onnx) \| [ModelScope](https://www.modelscope.cn/models/CVHub520/dfine_seg/resolve/master/dfine_seg_s_coco.onnx) |
| dfine_seg_m_coco.onnx | [D-FINE-seg-M](https://github.com/ArgoHA/D-FINE-seg)-COCO | [dfine_seg_m_coco.yaml](../../anylabeling/configs/auto_labeling/dfine_seg_m_coco.yaml) | 83.42MB | [百度网盘](https://pan.baidu.com/s/1QFwnrTIIHpBEU86QbydUYg?pwd=cb74) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v4.0.0/dfine_seg_m_coco.onnx) \| [ModelScope](https://www.modelscope.cn/models/CVHub520/dfine_seg/resolve/master/dfine_seg_m_coco.onnx) |
| dfine_seg_l_coco.onnx | [D-FINE-seg-L](https://github.com/ArgoHA/D-FINE-seg)-COCO | [dfine_seg_l_coco.yaml](../../anylabeling/configs/auto_labeling/dfine_seg_l_coco.yaml) | 128.89MB | [百度网盘](https://pan.baidu.com/s/1fpYoRI1tJhaScQqmEi61Kg?pwd=cb74) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v4.0.0/dfine_seg_l_coco.onnx) \| [ModelScope](https://www.modelscope.cn/models/CVHub520/dfine_seg/resolve/master/dfine_seg_l_coco.onnx) |
| dfine_seg_x_coco.onnx | [D-FINE-seg-X](https://github.com/ArgoHA/D-FINE-seg)-COCO | [dfine_seg_x_coco.yaml](../../anylabeling/configs/auto_labeling/dfine_seg_x_coco.yaml) | 249.89MB | [百度网盘](https://pan.baidu.com/s/19dhGK3R5HCXQbxys2wHIug?pwd=cb74) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v4.0.0/dfine_seg_x_coco.onnx) \| [ModelScope](https://www.modelscope.cn/models/CVHub520/dfine_seg/resolve/master/dfine_seg_x_coco.onnx) |
| rf-detr-seg-preview.onnx  | [RF-DETR Seg-Preview](../../tools/onnx_exporter/export_rfdetr_seg_onnx.py)| [rfdetr_seg_preview.yaml](../../anylabeling/configs/auto_labeling/rfdetr_seg_preview.yaml) | 122.18MB | [百度网盘](https://pan.baidu.com/s/1cMIwh5NMYhkQY8pJCvYfrw?pwd=ehz7) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/rf-detr-seg-preview.onnx) |
| yolov5s-seg.onnx | [YOLOv5](https://github.com/ultralytics/yolov5)-COCO | [yolov5s_seg.yaml](../../anylabeling/configs/auto_labeling/yolov5s_seg.yaml) | 29.45MB | [百度网盘](https://pan.baidu.com/s/10g0PetDeW7VRm2SS513R3g?pwd=mlav) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v1.0.0/yolov5s-seg.onnx) |
| yolov8x-seg.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-COCO | [yolov8x_seg.yaml](../../anylabeling/configs/auto_labeling/yolov8x_seg.yaml) | 274.10MB | [百度网盘](https://pan.baidu.com/s/1KEzlMVCOi7v96TW7tWSv0A?pwd=jc9h) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov8x-seg.onnx) |
| yolov8l-seg.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-COCO | [yolov8l_seg.yaml](../../anylabeling/configs/auto_labeling/yolov8l_seg.yaml) | 175.59MB | [百度网盘](https://pan.baidu.com/s/13URaJg3rqHeA1NfooIvWMQ?pwd=5ygm) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov8l-seg.onnx) |
| yolov8m-seg.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-COCO | [yolov8m_seg.yaml](../../anylabeling/configs/auto_labeling/yolov8m_seg.yaml) | 104.23MB | [百度网盘](https://pan.baidu.com/s/1PmKsiatP2YfHtnDCJEnhRw?pwd=bo85) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov8m-seg.onnx) |
| yolov8s-seg.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-COCO | [yolov8s_seg.yaml](../../anylabeling/configs/auto_labeling/yolov8s_seg.yaml) | 45.25MB | [百度网盘](https://pan.baidu.com/s/17aqLyui-FL7nZUX-H4Bepg?pwd=bpe8) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov8s-seg.onnx) |
| yolov8n-seg.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-COCO | [yolov8n_seg.yaml](../../anylabeling/configs/auto_labeling/yolov8n_seg.yaml) | 13.18MB | [百度网盘](https://pan.baidu.com/s/1WQmN0yKBnm3PKgXTBFyQ-A?pwd=194i) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov8n-seg.onnx) |
| yolo11s-seg.onnx | [YOLO11](https://github.com/ultralytics/ultralytics)-COCO | [yolo11s_seg.yaml](../../anylabeling/configs/auto_labeling/yolo11s_seg.yaml) | 38.77MB | [百度网盘](https://pan.baidu.com/s/11O7b0qUMQb1SQPoSYOsf9A?pwd=tthu) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.4/yolo11s-seg.onnx) |
| hyper-yolon-seg.onnx | [Hpyer-YOLO](https://github.com/iMoonLab/Hyper-YOLO)-COCO | hyper-yolon-seg.yaml | 16.77MB | [百度网盘](https://pan.baidu.com/s/1o-LIV0z6OFQXGbSbJ_HsVw?pwd=dxex) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.1/hyper-yolon-seg.onnx) |
| hyper-yolos-seg.onnx | [Hpyer-YOLO](https://github.com/iMoonLab/Hyper-YOLO)-COCO | [hyper-yolos-seg.yaml](../../anylabeling/configs/auto_labeling/hyper_yolos_seg.yaml) | 59.34MB | [百度网盘](https://pan.baidu.com/s/1NsGVI5FQIYuoAVNrZF2VNg?pwd=bptv) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.1/hyper-yolos-seg.onnx) |
| hyper-yolom-seg.onnx | [Hpyer-YOLO](https://github.com/iMoonLab/Hyper-YOLO)-COCO | hyper-yolom-seg.yaml | 132.85MB | [百度网盘](https://pan.baidu.com/s/1ObhO04dF6JEpvrtzLse6hg?pwd=q5hn) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.1/hyper-yolom-seg.onnx) |
| yolo26s-seg.onnx | [YOLO26s-Seg](https://docs.ultralytics.com/tasks/segment/)-COCO| [yolo26s_seg.yaml](../../anylabeling/configs/auto_labeling/yolo26s_seg.yaml) | 39.91MB | [百度网盘](https://pan.baidu.com/s/1Bjzf4aX3Pq2jW67k_DxGNA?pwd=599s) \| [GitHub](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/yolo26s-seg.onnx) |


## 图像抠图

|名称|描述|配置|大小|链接|
| --- | --- | --- | --- | --- |
| bria-rmbg-2.0.onnx | [RMBG v2.0 (BRIA AI)](https://huggingface.co/briaai/RMBG-2.0) | [rmbg_v20.yaml](../../anylabeling/configs/auto_labeling/rmbg_v20.yaml) | 976.88MB | [百度网盘](https://pan.baidu.com/s/1baIuKtLq31gq9vQezqy2Yw?pwd=vt5r) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/bria-rmbg-2.0.onnx) |
| bria-rmbg-2.0-quant.onnx | [RMBG v2.0 Quantized (BRIA AI)](https://huggingface.co/briaai/RMBG-2.0) | [rmbg_v20_quant.yaml](../../anylabeling/configs/auto_labeling/rmbg_v20_quant.yaml) | 349.13MB | [百度网盘](https://pan.baidu.com/s/1u32UoVNxnDOq31qprsBUWQ?pwd=62ys) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/bria-rmbg-2.0-quant.onnx) |
| bria-rmbg-1.4.onnx | [RMBG v1.4 (BRIA AI)](https://huggingface.co/briaai/RMBG-1.4) | [rmbg_v14.yaml](../../anylabeling/configs/auto_labeling/rmbg_v14.yaml) | 167.99MB | [百度网盘](https://pan.baidu.com/s/1tVuHF7NsZ7CXeqdQbsOhJg?pwd=9yny) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.3/bria-rmbg-1.4.onnx) |


## 多任务

|名称|描述|配置|大小|链接|
| --- | --- | --- | --- | --- |
| yolov8s.onnx | YOLOv8-SAM2.1 | [yolov8s_sam2_hiera_base.yaml](../../anylabeling/configs/auto_labeling/yolov8s_sam2_hiera_base.yaml) | 42.75MB | [百度网盘](https://pan.baidu.com/s/1_1-9dFF_BfqcghE_0LDidg?pwd=oy9d) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov8s.onnx) |
| sam2.1_hiera_base_plus.encoder.onnx | YOLOv8-SAM2.1 | [yolov8s_sam2_hiera_base.yaml](../../anylabeling/configs/auto_labeling/yolov8s_sam2_hiera_base.yaml) | 324.04MB | [百度网盘](https://pan.baidu.com/s/1COTTRGNOYTGEIJeOM9kzQA?pwd=rytm) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.0/sam2.1_hiera_base_plus.encoder.onnx) |
| sam2.1_hiera_base_plus.decoder.onnx | YOLOv8-SAM2.1 | [yolov8s_sam2_hiera_base.yaml](../../anylabeling/configs/auto_labeling/yolov8s_sam2_hiera_base.yaml) | 19.68MB | [百度网盘](https://pan.baidu.com/s/1ING_8V-QTnEMI4OP52qlZw?pwd=iqsn) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.0/sam2.1_hiera_base_plus.decoder.onnx) |
| resnet50.onnx | [ResNet50](https://arxiv.org/abs/1512.03385)-ImageNet（检测+分类级联模型） | [yolov5s_resnet50.yaml](../../anylabeling/configs/auto_labeling/yolov5s_resnet50.yaml)  | 97.42MB  | [百度网盘](https://pan.baidu.com/s/1byapPRVib7rarAMTmoSkKQ?pwd=xllt) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/resnet50.onnx) |
| yolov5s.onnx | [YOLOv5](https://github.com/ultralytics/yolov5)-COCO（检测+分类级联模型） | [yolov5s_resnet50.yaml](../../anylabeling/configs/auto_labeling/yolov5s_resnet50.yaml)  | 27.98MB  | [百度网盘](https://pan.baidu.com/s/18I8ugM29NKjNlVEsnYYuWA?pwd=z8dl) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov5s.onnx) |
| mobile_sam.encoder.onnx | [MobileSAM](https://arxiv.org/abs/2306.14289) encoder（YOLOv5-SAM） | [yolov5s_mobile_sam_vit_h.yaml](../../anylabeling/configs/auto_labeling/yolov5s_mobile_sam_vit_h.yaml)  | 26.85MB  | [百度网盘](https://pan.baidu.com/s/1knn_NkrRAgfJms6d9FsErg?pwd=xbi6) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.0/mobile_sam.encoder.onnx) |
| sam_vit_h_4b8939.decoder.quant.onnx | [MobileSAM](https://arxiv.org/abs/2306.14289) decoder（YOLOv5-SAM）  | [yolov5s_mobile_sam_vit_h.yaml](../../anylabeling/configs/auto_labeling/yolov5s_mobile_sam_vit_h.yaml)  | 8.34MB  | [百度网盘](https://pan.baidu.com/s/1L5RGeTWK7d5vkLmgir8x5w?pwd=f287) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.2.0/sam_vit_h_4b8939.decoder.quant.onnx) |
| yolov5s.onnx | [YOLOv5](https://github.com/ultralytics/yolov5)-COCO（YOLOv5-SAM） | [yolov5s_mobile_sam_vit_h.yaml](../../anylabeling/configs/auto_labeling/yolov5s_mobile_sam_vit_h.yaml)  | 27.98MB  | [百度网盘](https://pan.baidu.com/s/18I8ugM29NKjNlVEsnYYuWA?pwd=z8dl) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov5s.onnx) |
| yolov5m.onnx | YOLOv5-RAM | [yolov5m_ram.yaml](../../anylabeling/configs/auto_labeling/yolov5m_ram.yaml)  | 81.19MB  | [百度网盘](https://pan.baidu.com/s/1oB9Vp-s7viOaLxAhjzAnFQ?pwd=vc4v) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov5m.onnx) |
| ram_swin_large_14m.onnx | YOLOv5-RAM | [yolov5m_ram.yaml](../../anylabeling/configs/auto_labeling/yolov5m_ram.yaml) | 865.66MB | [百度网盘](https://pan.baidu.com/s/1c045hicvPP3pQNaNSOrpQQ?pwd=wnss) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v1.0.0/ram_swin_large_14m.onnx) |
| edge_sam_encoder.onnx | EdgeSAM-CN-CLIP ViT-B-16| [edge_sam_with_chinese_clip.yaml](../../anylabeling/configs/auto_labeling/edge_sam_with_chinese_clip.yaml) | 21.02MB | [百度网盘](https://pan.baidu.com/s/1jKK1OQYS9PsRrZM75GposA?pwd=2okt) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.2.0/edge_sam_encoder.onnx) |
| edge_sam_decoder.onnx | EdgeSAM-CN-CLIP ViT-B-16| [edge_sam_with_chinese_clip.yaml](../../anylabeling/configs/auto_labeling/edge_sam_with_chinese_clip.yaml) | 17.78MB | [百度网盘](https://pan.baidu.com/s/1THr_TLO0zmoZZ_gw5mQuow?pwd=ewyv) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.2.0/edge_sam_decoder.onnx) |
| vit-b-16.img.fp16.onnx | EdgeSAM-CN-CLIP ViT-B-16| [edge_sam_with_chinese_clip.yaml](../../anylabeling/configs/auto_labeling/edge_sam_with_chinese_clip.yaml) | 3.51MB | [百度网盘](https://pan.baidu.com/s/15vXbkGjeivaH95kbIsJ3Ew?pwd=ioth ) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.1/vit-b-16.img.fp16.onnx) |
| vit-b-16.txt.fp16.onnx | EdgeSAM-CN-CLIP ViT-B-16| [edge_sam_with_chinese_clip.yaml](../../anylabeling/configs/auto_labeling/edge_sam_with_chinese_clip.yaml) | 2.15MB | [百度网盘](https://pan.baidu.com/s/1FCaB7_U8wNnkdxWje0mAww?pwd=7c4j) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.1/vit-b-16.txt.fp16.onnx) |
| vit-b-16.img.fp16.onnx.extra_file | EdgeSAM-CN-CLIP ViT-B-16| [edge_sam_with_chinese_clip.yaml](../../anylabeling/configs/auto_labeling/edge_sam_with_chinese_clip.yaml) | 164.40MB | [百度网盘](https://pan.baidu.com/s/1M3TE3TooVe_m3AavdxIgpA?pwd=2uco) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.1/vit-b-16.img.fp16.onnx.extra_file) |
| vit-b-16.txt.fp16.onnx.extra_file | EdgeSAM-CN-CLIP ViT-B-16| [edge_sam_with_chinese_clip.yaml](../../anylabeling/configs/auto_labeling/edge_sam_with_chinese_clip.yaml) | 194.68MB | [百度网盘](https://pan.baidu.com/s/1PgLVcEUsfRrRt_k9qneOjw?pwd=r9fz) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.1/vit-b-16.txt.fp16.onnx.extra_file) |
| groundingdino_swint_ogc_quant.onnx | GroundingSAM-SwinB with HQ-SAM-VitL-QInt8 | [groundingdino_swinb_attn_fuse_sam_hq_vit_l_quant.yaml](../../anylabeling/configs/auto_labeling/groundingdino_swinb_attn_fuse_sam_hq_vit_l_quant.yaml) | 964.04MB | [百度网盘](https://pan.baidu.com/s/1D-JxYEOU2lTYcLT58xxX8A?pwd=8kyk) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.0.0/groundingdino_fuse_attention.onnx) |
| sam_hq_vit_l_encoder_quant.onnx | GroundingSAM-SwinB with HQ-SAM-VitL-QInt8 | [groundingdino_swinb_attn_fuse_sam_hq_vit_l_quant.yaml](../../anylabeling/configs/auto_labeling/groundingdino_swinb_attn_fuse_sam_hq_vit_l_quant.yaml) | 307.96MB | [百度网盘](https://pan.baidu.com/s/1IkKuFWlJCsU1baKcE75aMQ?pwd=l23c) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.0.0/sam_hq_vit_l_encoder_quant.onnx) |
| sam_hq_vit_l_decoder | GroundingSAM-SwinB with HQ-SAM-VitL-QInt8 | [groundingdino_swinb_attn_fuse_sam_hq_vit_l_quant.yaml](../../anylabeling/configs/auto_labeling/groundingdino_swinb_attn_fuse_sam_hq_vit_l_quant.yaml) | 20.74MB | [百度网盘](https://pan.baidu.com/s/1eAjL_qW1V4CleLko_xmy4g?pwd=b7p8) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.0.0/sam_hq_vit_l_decoder.onnx) |
| sam2.1_hiera_large.encoder.onnx | GroundingSAM2 | [groundingdino_swint_sam2_large.yaml](../../anylabeling/configs/auto_labeling/groundingdino_swint_sam2_large.yaml) | 848.16MB | [百度网盘](https://pan.baidu.com/s/14UaLzS7VINarzrKHVIp0KA?pwd=x6jr) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.0/sam2.1_hiera_large.encoder.onnx) |
| sam2.1_hiera_large.decoder.onnx | GroundingSAM2 | [groundingdino_swint_sam2_large.yaml](../../anylabeling/configs/auto_labeling/groundingdino_swint_sam2_large.yaml) | 19.68MB | [百度网盘](https://pan.baidu.com/s/1iirCRz_KFe3d1fVPteVybA?pwd=nfib) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.5.0/sam2.1_hiera_large.decoder.onnx) |
| groundingdino_swint_ogc_quant.onnx | GroundingSAM2 | [groundingdino_swint_sam2_large.yaml](../../anylabeling/configs/auto_labeling/groundingdino_swint_sam2_large.yaml) | 171.28MB | [百度网盘](https://pan.baidu.com/s/12EZzjR5h7cysDjbIGfNFKQ?pwd=5prg) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v1.0.0/groundingdino_swint_ogc_quant.onnx) |


## 开放词汇定位模型

|名称|描述|配置|大小|链接|
| --- | --- | --- | --- | --- |
| yoloe-v8l-seg.pt | [YOLOE-v8-L](https://github.com/THU-MIG/yoloe) | [yoloe_v8l.yaml](../../anylabeling/configs/auto_labeling/yoloe_v8l.yaml) | 102.43MB | [百度网盘](https://pan.baidu.com/s/1DXM_ZMbzUj3SC_yXx1R1BQ?pwd=f77a) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/yoloe-v8l-seg.pt) \| [huggingface](https://huggingface.co/jameslahm/yoloe/resolve/main/yoloe-v8l-seg.pt) \| [modelscope](https://www.modelscope.cn/models/CVHub520/yoloe_v8l/resolve/master/yoloe-v8l-seg.pt) |
| yoloe-v8l-seg-pf.pt | [YOLOE-v8-L](https://github.com/THU-MIG/yoloe) | [yoloe_v8l.yaml](../../anylabeling/configs/auto_labeling/yoloe_v8l.yaml) | 98.66MB | [百度网盘](https://pan.baidu.com/s/1piZHtGgd_sNIprR-z7qWRQ?pwd=ju2y) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/yoloe-v8l-seg-pf.pt) \| [huggingface](https://huggingface.co/jameslahm/yoloe/resolve/main/yoloe-v8l-seg-pf.pt) \| [modelscope](https://www.modelscope.cn/models/CVHub520/yoloe_v8l/resolve/master/yoloe-v8l-seg-pf.pt) |
| mobileclip_blt.pt | [YOLOE-v8-L](https://github.com/THU-MIG/yoloe) | [yoloe_v8l.yaml](../../anylabeling/configs/auto_labeling/yoloe_v8l.yaml) | 571.46MB | [百度网盘](https://pan.baidu.com/s/1088EJ6ZkOSy9x1svLS9zuA?pwd=w9fcs) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/mobileclip_blt.pt) \| [official](https://docs-assets.developer.apple.com/ml-research/datasets/mobileclip/mobileclip_blt.pt) \| [modelscope](https://www.modelscope.cn/models/CVHub520/yoloe_v8l/resolve/master/mobileclip_blt.pt) |
| yoloe-11s-seg.pt | [YOLOE-11-S](https://github.com/THU-MIG/yoloe) | [yoloe_11s.yaml](../../anylabeling/configs/auto_labeling/yoloe_11s.yaml) | 26.52MB | [百度网盘](https://pan.baidu.com/s/1U6bfY4mSY1lXJ4ELfVAlYA?pwd=amxv) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/yoloe-11s-seg.pt) \| [huggingface](https://huggingface.co/jameslahm/yoloe/resolve/main/yoloe-11s-seg.pt) \| [modelscope](https://www.modelscope.cn/models/CVHub520/yoloe_11s/resolve/master/yoloe-11s-seg.pt) |
| yoloe-11s-seg-pf.pt | [YOLOE-11-S](https://github.com/THU-MIG/yoloe) | [yoloe_11s.yaml](../../anylabeling/configs/auto_labeling/yoloe_11s.yaml) | 23.12MB | [百度网盘](https://pan.baidu.com/s/1XMwrs9gEiFq5ZuIb_GlHeQ?pwd=guux) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/yoloe-11s-seg-pf.pt) \| [huggingface](https://huggingface.co/jameslahm/yoloe/resolve/main/yoloe-11s-seg-pf.pt) \| [modelscope](https://www.modelscope.cn/models/CVHub520/yoloe_11s/resolve/master/yoloe-11s-seg-pf.pt) |
| mobileclip_blt.pt | [YOLOE-11-S](https://github.com/THU-MIG/yoloe) | [yoloe_11s.yaml](../../anylabeling/configs/auto_labeling/yoloe_11s.yaml) | 571.46MB | [百度网盘](https://pan.baidu.com/s/1088EJ6ZkOSy9x1svLS9zuA?pwd=w9fcs) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/mobileclip_blt.pt) \| [official](https://docs-assets.developer.apple.com/ml-research/datasets/mobileclip/mobileclip_blt.pt) \| [modelscope](https://www.modelscope.cn/models/CVHub520/yoloe_11s/resolve/master/mobileclip_blt.pt) |
| yolov8x-worldv2.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-COCO | [yolov8x_worldv2.yaml](../../anylabeling/configs/auto_labeling/yolov8x_worldv2.yaml) | 276.38MB | [百度网盘](https://pan.baidu.com/s/15HWC6ry-jU-a2OLz9Xa06g?pwd=9cng) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.7/yolov8x-worldv2.onnx) |
| yolov8l-worldv2-cc3m.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-CC3M | [yolov8l_worldv2_cc3m.yaml](../../anylabeling/configs/auto_labeling/yolov8l_worldv2_cc3m.yaml) | 177.39MB | [百度网盘](https://pan.baidu.com/s/1gJ2KAf1s8okT2cAJX21SbA?pwd=yxks) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.7/yolov8l-worldv2-cc3m.onnx) |
| yolov8l-worldv2.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-COCO | [yolov8l_worldv2.yaml](../../anylabeling/configs/auto_labeling/yolov8l_worldv2.yaml) | 177.39MB | [百度网盘](https://pan.baidu.com/s/1wpm6-r1pYxJJGT0nlhRM7g?pwd=to53) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.7/yolov8l-worldv2.onnx) |
| yolov8m-worldv2.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-COCO | [yolov8m_worldv2.yaml](../../anylabeling/configs/auto_labeling/yolov8m_worldv2.yaml) | 107.21MB | [百度网盘](https://pan.baidu.com/s/1pzS20I1bJG3_CRjBS0k5Nw?pwd=m4et) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.7/yolov8m-worldv2.onnx) |
| yolov8s-worldv2.onnx | [YOLOv8](https://github.com/ultralytics/ultralytics)-COCO | [yolov8s_worldv2.yaml](../../anylabeling/configs/auto_labeling/yolov8s_worldv2.yaml) | 47.97MB | [百度网盘](https://pan.baidu.com/s/1sHeiYJVjg2arDZhS7h4fsQ?pwd=m0uo) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.7/yolov8s-worldv2.onnx) |
| groundingdino_swint_ogc_quant.onnx | [GroundingDINO](https://github.com/IDEA-Research/GroundingDINO)  | [groundingdino_swint_ogc_quant.yaml](../../anylabeling/configs/auto_labeling/groundingdino_swint_ogc_quant.yaml) | 171.28MB | [百度网盘](https://pan.baidu.com/s/12EZzjR5h7cysDjbIGfNFKQ?pwd=5prg) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v1.0.0/groundingdino_swint_ogc_quant.onnx) |
| groundingdino_swinb_cogcoor_quant.onnx | [GroundingDINO](https://github.com/IDEA-Research/GroundingDINO)  | [groundingdino_swinb_cogcoor_quant.yaml](../../anylabeling/configs/auto_labeling/groundingdino_swinb_cogcoor_quant.yaml) | 258.90MB | [百度网盘](https://pan.baidu.com/s/1NJ8GEsGYgiOh684dNNgfww?pwd=onj2) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v1.0.0/groundingdino_swinb_cogcoor_quant.onnx) |
| ram_swin_large_14m.onnx | [Recognize Anything](https://github.com/xinyu1205/recognize-anything) | [ram_swin_large_14m.yaml](../../anylabeling/configs/auto_labeling/ram_swin_large_14m.yaml) | 865.66MB | [百度网盘](https://pan.baidu.com/s/1c045hicvPP3pQNaNSOrpQQ?pwd=wnss) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v1.0.0/ram_swin_large_14m.onnx) |
| ram_plus_swin_large_14m.onnx | [Recognize Anything Pluse](https://github.com/xinyu1205/recognize-anything) | [ram_plus_swin_large_14m.yaml](../../anylabeling/configs/auto_labeling/ram_plus_swin_large_14m.yaml) | 1.74GB | [百度网盘](https://pan.baidu.com/s/1qcysPmAsZUOb9SgmlO6XeA?pwd=fzt9) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.0/ram_plus_swin_large_14m.onnx) |


## 深度估计

|名称|描述|配置|大小|链接|
| --- | --- | --- | --- | --- |
| depth_anything_vits14.onnx | [DepthAnything](https://github.com/LiheYoung/Depth-Anything.git) | [depth_anything_vit_s.yaml](../../anylabeling/configs/auto_labeling/depth_anything_vit_s.yaml) | 94.48MB | [百度网盘](https://pan.baidu.com/s/1-ONO7s0AUPY_pq1Zw0xpcQ?pwd=xkx0) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.1/depth_anything_vits14.onnx) |
| depth_anything_vitb14.onnx | [DepthAnything](https://github.com/LiheYoung/Depth-Anything.git) | [depth_anything_vit_b.yaml](../../anylabeling/configs/auto_labeling/depth_anything_vit_b.yaml) | 370.91MB | [百度网盘](https://pan.baidu.com/s/1x8ADH6j1Qlm3_iHZV8Kmvw?pwd=trgt) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.1/depth_anything_vitb14.onnx) |
| depth_anything_vitl14.onnx | [DepthAnything](https://github.com/LiheYoung/Depth-Anything.git) | [depth_anything_vit_l.yaml](../../anylabeling/configs/auto_labeling/depth_anything_vit_l.yaml) | 1.25GB | [百度网盘](https://pan.baidu.com/s/1MeEcbyJa6ysoGzK-8EjqYw?pwd=p3j4) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.3.1/depth_anything_vitl14.onnx) |
| depth_anything_v2_vits.onnx | [DepthAnythingV2](https://github.com/DepthAnything/Depth-Anything-V2) | [depth_anything_v2_vit_s.yaml](../../anylabeling/configs/auto_labeling/depth_anything_v2_vit_s.yaml) | 94.77MB | [百度网盘](https://pan.baidu.com/s/1mO8UEWAEgYW2_bDnQFSVpQ?pwd=3sf0) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.0/depth_anything_v2_vits.onnx) |
| depth_anything_v2_vitb.onnx | [DepthAnythingV2](https://github.com/DepthAnything/Depth-Anything-V2) | [depth_anything_v2_vit_b.yaml](../../anylabeling/configs/auto_labeling/depth_anything_v2_vit_b.yaml) | 371.20MB | [百度网盘](https://pan.baidu.com/s/1wo8xYJiuMjie5THPjr4DWg?pwd=kcal) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.0/depth_anything_v2_vitb.onnx) |
| depth_anything_v2_vitl.onnx | [DepthAnythingV2](https://github.com/DepthAnything/Depth-Anything-V2) | [depth_anything_v2_vit_l.yaml](../../anylabeling/configs/auto_labeling/depth_anything_v2_vit_l.yaml) | 1.25GB | [百度网盘](https://pan.baidu.com/s/134WYgOdhzWeyap_xk0rBhw?pwd=cnqt) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.0/depth_anything_v2_vitl.onnx) |


## 交互式视频目标分割

|名称|描述|配置|大小|链接|
| --- | --- | --- | --- | --- |
| sam2_hiera_tiny.pt | [SAM 2](https://github.com/CVHub520/segment-anything-2) | [sam2_hiera_tiny_video.yaml](../../anylabeling/configs/auto_labeling/sam2_hiera_tiny_video.yaml) | 148.68MB | [百度网盘](https://pan.baidu.com/s/1sIiVHQb5MMrK49x5ngB8ig?pwd=q38g) \| [github](https://dl.fbaipublicfiles.com/segment_anything_2/072824/sam2_hiera_tiny.pt) |
| sam2_hiera_small.pt | [SAM 2](https://github.com/CVHub520/segment-anything-2) | [sam2_hiera_small_video.yaml](../../anylabeling/configs/auto_labeling/sam2_hiera_small_video.yaml) | 175.77MB | [百度网盘](https://pan.baidu.com/s/17P5PvRUlT0xYr4wlqqeKVw?pwd=rsim) \| [github](https://dl.fbaipublicfiles.com/segment_anything_2/072824/sam2_hiera_small.pt) |
| sam2_hiera_base_plus.pt | [SAM 2](https://github.com/CVHub520/segment-anything-2) | [sam2_hiera_base_video.yaml](../../anylabeling/configs/auto_labeling/sam2_hiera_base_video.yaml) | 308.51MB | [百度网盘](https://pan.baidu.com/s/1nP-ysdw1t7JgUQtIv-adNA?pwd=44u4) \| [github](https://dl.fbaipublicfiles.com/segment_anything_2/072824/sam2_hiera_base_plus.pt) |
| sam2_hiera_large.pt | [SAM 2](https://github.com/CVHub520/segment-anything-2) | [sam2_hiera_large_video.yaml](../../anylabeling/configs/auto_labeling/sam2_hiera_large_video.yaml) | 856.35MB | [百度网盘](https://pan.baidu.com/s/1hFYQc1IKnEw2l-vW6Eoi2w?pwd=gyby) \| [github](https://dl.fbaipublicfiles.com/segment_anything_2/072824/sam2_hiera_large.pt) |

服务端 SAM 3 视频跟踪的使用方法请参考 [Segment Anything 3 Video 指南](../../examples/interactive_video_object_segmentation/sam3/README.md)。


## 基于检测与分割的零样本计数

|名称|描述|配置|大小|链接|
| --- | --- | --- | --- | --- |
| GeCo_encoder_data.bin | [GeCo](https://github.com/jerpelhan/GeCo.git) | [geco_sam_hq_vit_h.yaml](../../anylabeling/configs/auto_labeling/geco_sam_hq_vit_h.yaml) | 2.38GB | [百度网盘](https://pan.baidu.com/s/1ZuTizr4N4eZk0Z4BKtueSg?pwd=x3r3) |
| GeCo_encoder.onnx | [GeCo](https://github.com/jerpelhan/GeCo.git) | [geco_sam_hq_vit_h.yaml](../../anylabeling/configs/auto_labeling/geco_sam_hq_vit_h.yaml) | 16.78MB | [百度网盘](https://pan.baidu.com/s/1X_D_tHZGbZKPgjDcQf5Q6A?pwd=n3vs) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/GeCo_encoder.onnx) |
| GeCo_decoder.onnx | [GeCo](https://github.com/jerpelhan/GeCo.git) | [geco_sam_hq_vit_h.yaml](../../anylabeling/configs/auto_labeling/geco_sam_hq_vit_h.yaml) | 16.83MB | [百度网盘](https://pan.baidu.com/s/1kfCFyt7ffpuREAGUjM5RKQ?pwd=feh9) \| [github](https://github.com/CVHub520/X-AnyLabeling/releases/download/v3.0.0/GeCo_decoder.onnx) |
| GeCo_encoder_quant.onnx | [GeCo](https://github.com/jerpelhan/GeCo.git) | [geco_sam_hq_vit_h.yaml](../../anylabeling/configs/auto_labeling/geco_sam_hq_vit_h.yaml) | 646.48MB | [百度网盘](https://pan.baidu.com/s/1R7mInx4N9t7eXgAUFY15eg?pwd=yyd6) |


## 扩展模型与服务

本章节收录需要额外运行环境、独立推理服务或云端 API 的模型；具体安装和使用方式请参考对应文档。

- [Florence 2](../../examples/vision_foundation/florence2/README.md)
- [GLM-4.6-V](https://github.com/CVHub520/X-AnyLabeling-Server/blob/main/app/models/glm_4_6v.py)
- [PaddleOCR-VL-1.5](../../examples/optical_character_recognition/multi_task/README.md)
- [PP-DocLayoutV3](../../examples/optical_character_recognition/document_layout_analysis/README.md)
- [Qwen3-VL](https://github.com/CVHub520/X-AnyLabeling-Server/blob/main/app/models/qwen3vl.py)
- [Rex-Omni](../../examples/vision_foundation/rexomni/README.md)

---

### Zh Cn Paddle Ocr (`docs/zh_cn/paddle_ocr.md`)

# PaddleOCR 文档解析与智能文字识别

## 简介

[PaddleOCR](https://aistudio.baidu.com/paddleocr) 是百度飞桨生态中的 OCR 与文档智能工具，覆盖通用文字识别、文档版面分析、表格解析、公式识别等能力，适用于扫描件、拍照文档、多页 PDF、技术文档等常见资料处理场景。

X-AnyLabeling 集成了面向文档理解与文字识别工作流的 PaddleOCR 面板，支持对图片和 PDF 文件进行版面、文字、公式和表格识别，并可在识别后校对、编辑、复制和导出结果。

面板支持 PaddleOCR 官方 API 和 X-AnyLabeling 远程推理服务两种接入方式。解析结果保存在本地 JSON 文件中，界面会同步显示源文件区域框、结构化内容和可编辑的结果块。

<video src="https://github.com/user-attachments/assets/0c018b6e-f8e9-4045-bc22-0d388ab4853d" width="100%" controls>
</video>

## 模型配置

### 官方 API（推荐）

X-AnyLabeling 客户端默认支持 PaddleOCR 官方 API 调用形式，无需额外部署推理服务。首次加载 PaddleOCR 面板且尚未配置 API 信息时，界面会自动弹出 `PPOCR API Settings` 配置窗口；用户只需填写相应的 `API_KEY` 即可启用官方 API 解析。后续如需修改配置，也可以点击右侧结果面板顶部的齿轮按钮手动打开该窗口。

右侧解析模型下拉框当前支持以下官方 API 选项：

- `PaddleOCR-VL-1.6 (API)`
- `PaddleOCR-VL (API)`

<video src="https://github.com/user-attachments/assets/f570dbda-20a4-4e8c-8d97-4c42083be98a" width="100%" controls>
</video>

获取方式：

1. 访问 [PaddleOCR 官网](https://aistudio.baidu.com/paddleocr/task)。
2. 进入 API 调用示例，切换到 `Async Parse` 标签页，复制 `API_KEY`。
3. 回到 X-AnyLabeling 的 `PPOCR API Settings`，粘贴密钥，确认即可。

配置会保存在本地：

```text
${workspace}/xanylabeling_data/paddleocr/api_settings.json
```

默认情况下，`${workspace}` 为用户主目录 `~`；如果启动 X-AnyLabeling 时传入了 `--work-dir`，则以该目录为准。

### 本地部署（可选）

如需在本地或私有环境中运行 PaddleOCR，可通过 [X-AnyLabeling-Server](https://github.com/CVHub520/X-AnyLabeling-Server) 部署推理服务。安装依赖和启动服务的方法参见[多任务 OCR 示例](../../examples/optical_character_recognition/multi_task/README.md)。

请检查 X-AnyLabeling-Server 中是否存在 `ppocr_layoutstructv3_vl_1_5` 模型配置。如果您希望自行实现并集成 PaddleOCR 推理管道，请在模型配置中声明以下能力标识，客户端会据此判断该模型是否可用于 PaddleOCR 面板：

```yaml
...
capabilities:
  ppocr_pipeline: true
...
```

服务启动后，重新打开 PaddleOCR 标注面板，右侧顶部的 `解析模型` 下拉框会显示当前可用模型。选择不带 `(API)` 后缀的模型时，解析任务会自动发送至已部署的推理服务。

## 使用手册

您可以通过以下任一方式打开 PaddleOCR：点击左侧工具栏中的 `PaddleOCR` 图标或直接使用快捷键 `Ctrl+4`。

打开后，点击左侧面板顶部的 `+ New Parsing` 选择文件。确认 `开始解析` 后才会导入文件；确认导入的文件会同步复制到本地 PaddleOCR 工作目录，并加入解析队列。

PaddleOCR 面板支持导入以下文件：

| 类型 | 后缀 |
| :--- | :--- |
| PDF 文档 | `.pdf` |
| 图片 | `.bmp`, `.cif`, `.gif`, `.jpeg`, `.jpg`, `.png`, `.tif`, `.tiff`, `.webp` |

PDF 文件会先在本地渲染为逐页 PNG 预览图。官方 API 通过异步任务一次性提交原始 PDF，远程服务则解析本地预览页。多页 PDF 的页数、预览图和识别结果都会保留在本地工作目录中。

> [!TIP]
> - 在源文件预览区按住 `Ctrl` 并滚动鼠标滚轮，可以快速缩放预览页面。
> - 单击左侧预览区或右侧结果区中的任意块，可以在两侧快速匹配并高亮对应内容。
> - 双击右侧识别结果区某个块，或点击该块的`纠正`按钮，可以进入编辑状态。
> - 鼠标悬停在源文件预览区的块上时，可以直接点击浮出的`复制`按钮方便复制该块内容。
> - 多页 PDF 可以通过底部页码控件跳转页面，也可以在右侧结果区滚动查看按页分隔的解析结果。
> - 对识别结果做人工修正后，JSON 中会记录已编辑块；如需重新获取模型结果，可使用右侧重解析按钮。

> [!NOTE]
> - PaddleOCR 官方 API 需要可用的 `API_KEY`；如果接口返回 401，请检查密钥是否有效。
> - 远程服务只有在 `/v1/models` 返回具备 `ppocr_pipeline` 能力的模型时，才会出现在模型下拉框中。
> - 导入文件会复制到 PaddleOCR 工作目录中；删除原始外部文件不会影响已经导入的副本。
## 界面布局

### 整体布局

PaddleOCR 面板由三部分组成：

| 区域 | 说明 |
| :--- | :--- |
| 左侧文件导航栏 | 导入文件、查看最近文件、收藏文件、搜索、筛选、删除文件 |
| 中间源文件预览区 | 显示图片或 PDF 页面，并叠加 PaddleOCR 返回的版面块、多边形框和类别颜色 |
| 右侧解析结果区 | 切换 `Document parsing` 和 `JSON` 视图，复制、下载、重解析、编辑识别块 |

> [!NOTE]
> 左侧文件导航栏每个文件左下角的彩色点表示解析状态：
> - 蓝色表示待解析或正在解析
> - 绿色表示解析完成
> - 红色表示解析失败

### 相关组件说明

| 位置 | 按钮/组件 | 功能 |
| :--- | :--- | :--- |
| 左侧顶部 | `+ 新建解析` | 选择图片或 PDF，确认后导入并启动解析 |
| 左侧导航 | `最近使用` | 显示最近导入和解析的文件 |
| 左侧导航 | `收藏夹` | 只显示已收藏文件 |
| 左侧导航 | 搜索按钮 | 展开文件名搜索框 |
| 左侧导航 | 筛选按钮 | 按排序、文件类型、解析状态筛选 |
| 左侧文件项 | 星标按钮 | 收藏或取消收藏当前文件 |
| 左侧文件项 | 删除按钮 | 删除源文件、JSON、PDF 预览页和块截图等关联数据 |
| 中间页码栏 | 左/右箭头 | 切换 PDF 上一页或下一页 |
| 中间页码栏 | 页码输入框 | 跳转到指定 PDF 页 |
| 中间页码栏 | 缩小/放大按钮 | 缩放源文件预览区 |
| 中间页码栏 | 重置缩放按钮 | 恢复为适合宽度的预览比例 |
| 源文件预览区 | 悬浮 `复制` | 复制当前悬浮块的内容 |
| 右侧顶部 | `解析模型` | 选择官方 `(API)` 模型或远程 PaddleOCR 模型 |
| 右侧视图 | `文档解析` | 以卡片形式查看版面块、文本、公式、表格、图片 |
| 右侧视图 | `JSON` | 查看当前文件完整 JSON 结果 |
| 右侧工具 | 齿轮按钮 | 配置 PaddleOCR 官方 `API_KEY` |
| 右侧工具 | 重解析按钮 | 重新解析当前文件 |
| 右侧工具 | 复制按钮 | 在文档视图复制 Markdown 内容，在 JSON 视图复制 JSON |
| 右侧工具 | 下载按钮 | 在文档视图下载 ZIP，在 JSON 视图下载 JSON |
| 结果块卡片 | `复制` | 复制单个块内容 |
| 结果块卡片 | `纠正` | 进入当前块编辑状态 |
| 解析中横幅 | `取消解析` | 取消当前批量解析任务 |
| 解析失败横幅 | `复制日志` | 复制错误日志 |
| 解析失败横幅 | `重新解析` | 重新解析失败文件 |

### 解析块与编辑器

解析完成后，右侧 `Document parsing` 会按版面顺序展示各个块。不同块类型会使用不同颜色：

| 类型 | 示例标签 | 颜色含义 |
| :--- | :--- | :--- |
| 文本类 | `text`, `doc_title`, `paragraph_title`, `footer`, `seal` 等 | 蓝色 |
| 表格类 | `table` | 绿色 |
| 图片类 | `image`, `chart`, `header_image`, `footer_image` | 紫色 |
| 页眉类 | `header` | 淡紫色 |
| 公式类 | `display_formula`, `formula`, `formula_number`, `algorithm` | 黄色 |
| 已编辑块 | 任意 block | 橙色边框或编辑状态标记 |

当前支持以下编辑器：

| 编辑器 | 触发场景 | 说明 |
| :--- | :--- | :--- |
| 富文本编辑器 | 普通文本、标题、页脚、印章等非表格/公式内容 | 支持基础富文本编辑，并保存为 Markdown/文本内容 |
| LaTeX 公式编辑器 | `display_formula`, `formula`, `formula_number`, `algorithm` | 支持编辑 LaTeX 源码，并在下方实时渲染预览 |
| 表格编辑器 | `table` 或被识别为表格结构的内容 | 支持单元格编辑、选择复制、增删行列、基础文本样式 |

> [!WARNING]
> 如果某个 item 中包含较多公式，首次打开或首次滚动到相关结果块时可能需要等待一小段时间。这主要来自公式预览渲染；渲染结果会被缓存，后续再次加载同一内容不会重复等待。

### 数据保存与目录结构

PaddleOCR 面板会把导入文件和解析结果保存在本地工作目录中：

```text
${workspace}/xanylabeling_data/paddleocr/
├── api_settings.json
├── ui_state.json
├── files/
│   ├── example.pdf
│   ├── image.png
│   ├── __PDF_example/
│   │   ├── page_001.png
│   │   └── page_002.png
│   └── __BLOCK_IMAGES_image.png/
│       └── page_001_block_0001.png
└── jsons/
    ├── example.pdf.json
    └── image.png.json
```

| 路径 | 说明 |
| :--- | :--- |
| `api_settings.json` | 缓存 PaddleOCR 官方 API 的 `API_KEY`、已选 API 模型以及兼容保留的 API URL |
| `ui_state.json` | UI 状态，例如收藏文件列表 |
| `files/` | 导入文件的本地副本 |
| `files/__PDF_<文件名>/` | PDF 渲染后的逐页 PNG 预览图 |
| `files/__BLOCK_IMAGES_<文件名>/` | 图片类 block 的本地裁剪图 |
| `jsons/<文件名>.json` | 当前文件的 PaddleOCR 解析结果和编辑结果 |

> [!NOTE]
> 删除左侧文件项时，会同时删除源文件、本地 JSON、PDF 预览页和 block 裁剪图。

### JSON 数据结构

每个导入文件对应一个 JSON 文件，核心结构如下：

```
/* Detailed source-code truncated for AI context efficiency. */
```

关键字段说明：

| 字段 | 说明 |
| :--- | :--- |
| `layoutParsingResults` | 按页保存的解析结果；图片通常为 1 页，PDF 为多页 |
| `prunedResult.parsing_res_list` | 当前页的 block 列表 |
| `block_label` | block 类型，例如 `text`、`table`、`display_formula`、`image` |
| `block_content` | 可查看、复制和编辑的识别内容 |
| `block_bbox` | block 的矩形外接框，格式为 `[x1, y1, x2, y2]` |
| `block_polygon_points` | block 的多边形点位，用于预览区高亮 |
| `markdown.text` | PaddleOCR 返回或由 block 拼接生成的 Markdown 文本 |
| `markdown.images` | Markdown 中引用的图片资源映射 |
| `dataInfo.type` | 文件类型，取值为 `image` 或 `pdf` |
| `dataInfo.numPages` | 页数 |
| `_ppocr_meta.status` | 解析状态：`pending`、`parsed`、`error` |
| `_ppocr_meta.edited_blocks` | 已被人工编辑过的 block key 列表 |
| `_ppocr_meta.block_image_paths` | 图片类 block 的本地资源路径 |
| `_ppocr_meta.pipeline_model` | 生成该结果的解析模型 |
| `_ppocr_meta.api_mode` | 官方 API 调用模式，例如 `async_jobs` |
| `_ppocr_meta.api_job_id` | 官方 Async Jobs 任务 id（如果可用） |

### 下载结果

右侧下载按钮会根据当前视图导出不同内容：

| 当前视图 | 下载内容 |
| :--- | :--- |
| `Document parsing` | ZIP 包，包含 `doc_0.md`、`imgs/` 图片资源和 `layout_det_res_*.jpg` 版面检测可视化图 |
| `JSON` | 当前文件的完整 JSON，默认文件名为 `<原文件名>_by_<模型名>.json` |

---

### Zh Cn Point Cloud (`docs/zh_cn/point_cloud.md`)

# 3D 点云标注

3D 点云是由大量三维空间中的点组成的数据，每个点包含 X、Y、Z 坐标，还可带有颜色、强度等信息。点云通常由激光雷达、深度相机等设备采集，用于描述物体的形状和场景的空间结构。

X-AnyLabeling 支持 **3D 目标检测、语义分割和实例分割标注**：用 3D 框标出车辆、行人等感兴趣目标的位置、尺寸与朝向；逐点标注道路、建筑等类别；或进一步区分同一类别中的不同对象，例如两辆车。可用于自动驾驶环境感知、机器人导航、三维场景理解等任务的数据集制作。

## 3D 点云工作区

### 加载界面

点击 X-AnyLabeling 主窗口左侧工具栏中的**点云**图标，或按 `Ctrl+6`，即可打开 3D 点云工作区。

整个 3D 点云工作区大致分为以下几部分：

- **顶部操作栏**：创建任务、导入与导出标注，以及另存当前帧标注。
- **左侧文件列表**：查看点云文件并切换待标注的帧。
- **中间标注区域**：包含工具栏和 3D 画布，用于浏览点云和执行标注；检测任务还提供俯视、侧视和前视三视图，方便调整 3D 框。
- **右侧管理面板**：管理标注类别，以及检测框或分割实例，支持控制显隐、锁定等操作。
- **底部状态栏**：查看当前帧信息和标注保存状态。

> [!TIP]
> 悬停工具栏图标可查看功能提示，点击窗口右上角的 **⌘** 图标可查看工作区快捷键。

### 创建任务

进入工作区后，首先点击顶部菜单栏的**创建任务**按钮，依次完成以下三步：

1. **选择任务类型与类别**：根据需求自行选择相应的任务类别，添加标注类别，或加载自定义类别文件。需要保存类别时，点击底部左侧的 **Save labels（保存标签）**，自行选择保存目录和 JSON 文件名。
2. **选择数据与保存目录**：选择点云文件所在目录，并按需设置标注保存目录；留空时默认保存到点云所在目录。
3. **配置相机数据（可选）**：按需添加相机图像目录和标定文件，无需图像辅助时可跳过。

完成后点击 **Create task**，即可加载点云并开始标注。

### 文件格式

**点云文件格式**

当前检测与分割均支持以下三种点云格式：

| 格式 | 要求 |
| --- | --- |
| `.bin` | 每点包含 X、Y、Z、强度四个小端 float32 数值，共 16 字节。 |
| `.ply` | 包含 `x`、`y`、`z` 坐标，可附带颜色和强度。 |
| `.pcd` | 支持 PCD v0.5/v0.7，以及 ASCII、binary 和 binary_compressed 数据；必须包含 `x`、`y`、`z`，可附带 `intensity` 和打包的 `rgb`/`rgba`。 |

**类别文件格式**

用户可以在创建任务第一步点击 **Save labels（保存标签）**，选择保存目录和文件名，将当前任务的类别保存为 JSON 文件。文件包含类别编号、名称与颜色，检测与分割分别使用 `detection` 和 `segmentation` 节点，示例如下：

```json
{
  "version": 1,
  "detection": {
    "classes": [
      {"id": 1, "name": "Car", "color": "#6496F5"}
    ]
  },
  "segmentation": {
    "classes": [
      {"id": 0, "name": "unlabeled", "color": "#000000"},
      {"id": 10, "name": "car", "color": "#6496F5"}
    ]
  }
}
```

`id` 为类别编号，`name` 为类别名称，`color` 为 `#RRGGBB` 颜色。分割类别必须包含编号 `0`，表示未标注；检测框不能使用编号 `0`。文件可只包含当前任务的节点，完整配置可参考[示例类别文件](../../assets/pointcloud/pointcloud_classes.json)。

### 基础操作

加载点云后，先按 `V` 切换到浏览模式，在中间的 3D 画布中调整视角：

- **左键拖动**：旋转视角。左右拖动调整偏航（Yaw），上下拖动调整俯仰（Pitch）。
- **右键或中键拖动**：平移整个视图，方便查看点云的不同区域。
- **滚轮**：放大或缩小视图。
- **适应视图**：按 `F` 将整帧点云显示在画布中；也可点击工具栏的俯视、前视、侧视或重置视角按钮。

在左侧文件列表中点击文件即可切换帧，也可按 `A` / `D` 查看上一帧或下一帧。右侧类别和对象列表用于选择标注目标，眼睛图标控制显隐，锁图标控制是否允许编辑。标注后可在底部状态栏查看保存状态。

分割时，左键用于笔刷涂抹或多边形圈选，需要旋转视角时先切回浏览模式。检测任务的三视图中，拖动框体或节点用于调整标注，按住 `Ctrl` 配合左键拖动，或使用中键拖动，可平移视图。

### 快捷操作

使用快捷键前，先点击对应画布使其获得焦点。下表列出工作区现有的快捷操作；撤销和重做使用系统默认组合键，实际显示可在右上角的 **⌘** 面板中查看。

| 快捷键 / 操作 | 功能 | 适用范围 |
| --- | --- | --- |
| `V` | 切换到浏览模式 | 通用 |
| `A` / `PgUp` | 上一帧 | 通用 |
| `D` / `PgDown` | 下一帧 | 通用 |
| `F` | 显示整帧点云 | 通用 |
| `Ctrl+Z` | 撤销上一步标注操作 | 通用 |
| `Ctrl+Shift+Z` / `Ctrl+Y` | 重做，具体组合键取决于系统 | 通用 |
| `Esc` | 取消未完成的选择、绘制或框调整 | 分割 / 检测 |
| `Alt+U` / `Alt+O` | 向上 / 向下移动相机 | 3D 视角 |
| `Alt+J` / `Alt+L` | 向左 / 向右移动相机 | 3D 视角 |
| `Alt+I` / `Alt+K` | 放大 / 缩小视图 | 3D 视角 |
| `Shift+↑` / `Shift+↓` | 向上 / 向下调整俯仰 | 3D 视角 |
| `Shift+←` / `Shift+→` | 向左 / 向右旋转视角 | 3D 视角 |
| `B` | 切换到笔刷工具 | 分割 |
| `P` | 切换到多边形工具 | 分割 |
| `Ctrl+滚轮` | 调整笔刷大小 | 分割：笔刷工具 |
| `Ctrl+左键拖动` / 右键拖动 | 平移视图并保留未完成的多边形 | 分割：多边形工具 |
| `Enter` / 左键双击 | 完成多边形圈选 | 分割：多边形工具 |
| `N` | 开始或取消绘制 3D 框 | 检测 |
| 左键双击 | 在预览位置创建 3D 框 | 检测：3D 画布绘制模式 |
| `G` | 聚焦选中的 3D 框 | 检测 |
| `Delete` | 删除选中的 3D 框 | 检测 |
| `Ctrl+D` | 复制选中的 3D 框 | 检测 |
| `Ctrl+C` / `Ctrl+V` | 复制 / 粘贴 3D 框 | 检测 |
| `↑` / `↓` / `←` / `→` | 沿当前视图方向移动选中的框，每次 0.1 个坐标单位 | 检测 |
| 左键或右键拖动框体 / 节点 | 移动框、调整尺寸或旋转 | 检测：三视图 |
| `Shift+拖动旋转节点` | 按 15° 步长调整朝向 | 检测：三视图 |
| `Ctrl+左键拖动` / 中键拖动 | 平移视图 | 检测：三视图 |

## 3D 点云检测

检测任务使用 3D 框标注目标的类别、位置、尺寸和朝向。



### 示例数据

仓库提供 [KITTI 3D 检测最小示例](../../assets/pointcloud/detection/KITTI_3D_det)，使用训练集的 `000008` 帧，包含 122,555 个点、一张左侧彩色相机图像和 6 个 Car 检测框。

```text
assets/pointcloud/detection/KITTI_3D_det/
├── velodyne/000008.bin           # 原始 XYZI 点云
├── labels/000008.cuboids.json    # 工作区检测框
├── image_02/000008.png           # 对应相机图像
├── calibration.json             # 对应 image_02 的标定
└── source/
    ├── calib/000008.txt          # KITTI 原始标定
    └── label_2/000008.txt        # KITTI 原始标签
```

创建任务时按以下方式配置，即可加载已有检测框：

1. 选择 **Det**，加载共用的[类别文件](../../assets/pointcloud/pointcloud_classes.json)。检测类别包括 Car、Pedestrian 和 Cyclist，本帧只有 Car。
2. 点云目录选择 `assets/pointcloud/detection/KITTI_3D_det`，标注保存目录选择其中的 `labels` 目录。
3. 添加一路相机，图像目录选择 `image_02`，标定文件选择 `calibration.json`，完成创建后即可查看叠加效果。

添加其他帧时，点云、检测框和图像使用相同文件名主体，例如 `000009.bin`、`000009.cuboids.json` 和 `000009.png`。只标注点云时可省略相机数据。

KITTI 检测集为每帧提供独立标定，多帧共用一个标定文件前需确认相机参数一致，否则应分别配置任务。

**转换说明**

示例的点云和图像保持原样，检测框与标定已转换为工作区格式：

- 原始框位于整流相机坐标系，位置为底面中心。先沿相机 Y 轴减去半个高度得到框中心，再通过 `R0_rect × Tr_velo_to_cam` 的逆变换转到点云坐标系。
- `size` 保存为 `[length, width, height]`，朝向转换到点云坐标系，以 XYZ 欧拉角保存，单位为弧度。
- 相机内参取自 `P2` 的左侧 3×3 矩阵，平移项并入外参，保持投影与 `P2 × R0_rect × Tr_velo_to_cam` 一致。
- `DontCare` 忽略区域不生成 3D 框；遮挡值 1、2 转为 `occluded: true`，0、3 转为 `false`。完整遮挡状态、截断率和 2D 框保留在原始 TXT 中。

**数据来源**

示例来自 [KITTI 3D Object Detection](https://www.cvlibs.net/datasets/kitti/eval_object.php?obj_benchmark=3d)，作者为 Andreas Geiger、Philip Lenz 和 Raquel Urtasun，相关论文为 *Are we ready for Autonomous Driving? The KITTI Vision Benchmark Suite*（CVPR 2012）。原始文件取自官方压缩包：

| 压缩包 | 原始文件 |
| --- | --- |
| [data_object_velodyne.zip](https://s3.eu-central-1.amazonaws.com/avg-kitti/data_object_velodyne.zip) | `training/velodyne/000008.bin` |
| [data_object_image_2.zip](https://s3.eu-central-1.amazonaws.com/avg-kitti/data_object_image_2.zip) | `training/image_2/000008.png` |
| [data_object_calib.zip](https://s3.eu-central-1.amazonaws.com/avg-kitti/data_object_calib.zip) | `training/calib/000008.txt` |
| [data_object_label_2.zip](https://s3.eu-central-1.amazonaws.com/avg-kitti/data_object_label_2.zip) | `training/label_2/000008.txt` |

KITTI 数据及转换标注遵循 [CC BY-NC-SA 3.0](https://creativecommons.org/licenses/by-nc-sa/3.0/)，详见 [KITTI 官方版权说明](https://www.cvlibs.net/datasets/kitti/index.php)。

### 创建对象

1. 在右侧 **Labels（类别）** 中选择目标类别。
2. 将鼠标移到 3D 画布，按 `N` 或点击绘制框按钮，移动预览框到目标位置。
3. **左键双击**创建对象。也可在下方的俯视、侧视或前视图中拖出矩形创建框，再调整剩余方向的尺寸。
4. 创建后检查三个方向，使框尽量贴合目标。按 `Esc` 可取消未完成的绘制。

### 编辑对象

在 3D 画布或右侧 **Objects（对象）** 列表中选中框，按 `G` 聚焦目标。下方三视图会对齐选中框的局部坐标轴，适合分别检查位置、尺寸和朝向。

| 操作 | 方法 |
| --- | --- |
| 移动 | 在三视图中拖动框体，或按方向键微调。 |
| 调整尺寸 | 拖动框边缘的方形节点。 |
| 调整朝向 | 拖动旋转节点；按住 `Shift` 可按 15° 步长旋转。 |
| 精确编辑 | 在 Objects 列表右键选择 **Edit object（编辑对象）**，设置类别、中心坐标、尺寸、旋转角度和遮挡状态。 |
| 贴合框内点 | 右键选择 **Fit to points（贴合点云）**，根据当前框内的点收紧边界，保留朝向。框应先覆盖完整目标。 |

俯视、侧视和前视图分别展示框的局部 X/Y、X/Z 和 Y/Z 平面。鼠标移到三视图上时，右上角会出现放大按钮，点击可放大查看，再次点击恢复。

默认按选中框的深度范围裁剪三视图中的点，便于减少前后背景干扰；需要查看周围点时，可关闭 **Crop depth to selected cuboid（按选中框裁剪深度）**。

### 管理对象

| 操作 | 方法 |
| --- | --- |
| 复制当前对象 | 按 `Ctrl+D`，生成一个略微偏移的新框，再调整到目标位置。 |
| 跨帧复用 | 按 `Ctrl+C` 复制框，切换到另一帧后按 `Ctrl+V` 粘贴，再检查位置与尺寸。 |
| 删除 | 选中框后按 `Delete`，或点击对象行的删除图标。 |
| 锁定 | 点击类别或对象的锁图标，避免误改；编辑前先解锁。 |
| 显示或隐藏 | 使用类别、对象行或标题栏的眼睛图标，控制单个对象或整类对象的显隐。 |
| 撤销与重做 | 使用工具栏按钮或对应快捷键恢复标注操作。 |

跨帧粘贴仅复用框的属性，不会自动跟踪目标；每帧仍需检查。对象编号用于区分当前帧中的框。

### 相机图像辅助

任务中配置相机图像后，可在右上角查看对应照片；添加标定文件后，还可叠加点云和 3D 框，辅助检查目标位置。

图像与点云按同名配对，例如 `000000.bin` 对应 `000000.png`。多路相机分别配置图像目录和标定文件，用相机区域的箭头切换；滚轮缩放图像，拖动左下角可调整面板大小。只查看照片时无需标定。

### 导入与导出

顶部 **Upload（导入）** 和 **Export（导出）** 支持以下三种检测标注格式，均使用 ZIP 文件：

| 格式 | 标注结构 |
| --- | --- |
| **Datumaro 3D** | `annotations/*.json`，使用 `cuboid_3d` 保存框的位置、旋转和尺寸；本工具导出为 `annotations/default.json`。 |
| **Kitti Raw Format** | `tracklet_labels.xml` 保存框及帧信息；本工具还导出 `frame_list.txt` 和 `dataset_meta.json`。 |
| **Sly Point Cloud Format** | `meta.json` 定义类别，`ds0/ann/*.pcd.json` 保存逐帧对象与框，`key_id_map.json` 保存键映射。 |

**导入标注：**

1. 点击 **Upload**，选择已有标注 ZIP 和对应格式。
2. 核对提示中的帧数、对象数和替换数量，再确认导入。
3. 导入后逐帧检查框的位置、尺寸、朝向和类别。

导入的类别名称需包含在当前任务中；缺少类别时，需重新配置任务后再导入。帧通常按文件名匹配，仅提供帧索引的格式按当前序列顺序匹配，因此应保持文件命名和帧顺序一致。

> [!IMPORTANT]
> 导入会替换匹配帧的全部检测框，包括已锁定的框；未匹配帧和点级分割标注保持原样。需要保留现有结果时，请先备份标注文件。

**导出标注：**

1. 点击 **Export**，选择 ZIP 保存路径和目标格式。
2. 按需勾选 **Save images**，将点云和已关联的相机图像一起打包；点云会转换为 PCD。
3. 点击 **OK** 完成导出。

导出范围是左侧文件列表中的全部帧。上述格式导出的是检测框，逐点分割结果使用 `.label` 文件交付。Kitti Raw 导出将每个框写为单帧 tracklet，不会生成跨帧跟踪关系。

### 检测框文件格式

标注会自动保存为与点云同名的 `.cuboids.json`，例如 `000000.bin` 对应 `000000.cuboids.json`。顶部 **Save as（另存为）** 可另存当前帧标注。

文件采用 UTF-8 JSON，示例如下：

```json
{
  "version": 1,
  "type": "pointcloud-cuboids",
  "point_cloud": "000000.bin",
  "cuboids": [
    {
      "id": 1,
      "class_id": 1,
      "center": [5.0, 2.0, 0.8],
      "size": [4.5, 1.8, 1.6],
      "rotation": [0.0, 0.0, 0.5],
      "occluded": false,
      "locked": false
    }
  ]
}
```

| 字段 | 定义 |
| --- | --- |
| `version` / `type` | 当前为 `1` / `pointcloud-cuboids`。 |
| `point_cloud` | 原始点云文件名，包含扩展名，加载时须与点云匹配。 |
| `cuboids` | 当前帧的检测框数组，无对象时为空数组。 |
| `id` | 当前帧内唯一的对象编号，范围为 1–65535。 |
| `class_id` | 检测类别编号，范围为 1–65535，对应类别文件。 |
| `center` | 框中心的 `[x, y, z]`，使用原始点云坐标系。 |
| `size` | 框沿局部 X、Y、Z 轴的尺寸，单位与点云一致，每项至少为 0.01。 |
| `rotation` | `[rx, ry, rz]`，单位为弧度，旋转矩阵为 `Rx(rx) × Ry(ry) × Rz(rz)`。属性编辑窗口中显示和输入的是角度。 |
| `occluded` | 是否被遮挡，布尔值。 |
| `locked` | 是否锁定，布尔值。 |

交付或继续标注时，请保留**原始点云、逐帧 `.cuboids.json` 和类别文件**。重新加载对应点云与保存目录后，即可继续编辑已有标注。

## 3D 点云分割

分割任务为每个点赋予语义类别，还可进一步区分同一类别中的不同实例。以下操作适用于已加载的 **Seg（分割）** 任务。



### 示例数据

仓库提供[点云分割最小示例](../../assets/pointcloud/segmentation/2011_10_03_drive_0042_sync)，包含 `2011_10_03_drive_0042_sync` 序列的一个点云帧、逐点标签和 4 路相机图像。本帧有 122,829 个点，已有道路、植被等语义标注，以及 5 个 `moving-car` 实例。

```text
assets/pointcloud/segmentation/2011_10_03_drive_0042_sync/
├── velodyne/0000000000.bin       # 原始 XYZI 点云
├── labels/0000000000.label       # 逐点语义与实例标签
├── image_00/0000000000.png       # 左侧灰度相机
├── image_01/0000000000.png       # 右侧灰度相机
├── image_02/0000000000.png       # 左侧彩色相机
├── image_03/0000000000.png       # 右侧彩色相机
└── calibration.json             # 对应 image_02 的标定
```

创建任务时按以下方式配置，即可加载已有分割标签：

1. 选择 **Seg**，加载共用的[类别文件](../../assets/pointcloud/pointcloud_classes.json)，使用其中的 `segmentation` 类别。
2. 点云目录选择 `assets/pointcloud/segmentation/2011_10_03_drive_0042_sync`，标注保存目录选择其中的 `labels` 目录。
3. 按需添加相机。使用 `image_02` 时选择 `calibration.json`，可查看点云投影；其他相机可先只加载图像，留空标定。无需图像辅助时可跳过此步。

创建后，可在 **Classes** 中查看各类点，在 **Instances** 中选择已有实例，尝试补点、移出点或拆分操作。类别编号 `252` 表示 `moving-car`；标签中保留了运动类别，加载时使用示例类别文件即可。

> [!NOTE]
> 示例中的标定只适用于 `image_02`，其他相机叠加点云时需提供各自的标定。新增帧时，点云、标签和图像应保持同名，标签的点数和顺序须与原始点云一致。

点云与图像来自 [KITTI](https://www.cvlibs.net/datasets/kitti/raw_data.php)，分割类别与逐点标签格式参见 [SemanticKITTI](https://semantic-kitti.org/dataset.html)。相关论文为 *SemanticKITTI: A Dataset for Semantic Scene Understanding of LiDAR Sequences*（Behley 等，ICCV 2019）。数据遵循 [CC BY-NC-SA 3.0](https://creativecommons.org/licenses/by-nc-sa/3.0/)，使用时请保留 KITTI 与 SemanticKITTI 的来源说明。

### 标注语义类别

1. 在右侧 **Classes（类别）** 中选择目标类别，点击 **Assign semantic（赋予语义类别）**。
2. 按 `B` 使用笔刷，按住左键涂抹，松开后完成一次标注；按 `Ctrl+滚轮` 调整笔刷大小。
3. 或按 `P` 使用多边形工具，沿区域边缘逐点点击，按 `Enter`、双击或点击起点闭合圈选。
4. 按 `V` 切回浏览模式，转动视角检查边缘和背面，再继续补画。

重新选择类别并涂抹或圈选，可修改已有点的类别；改变类别时会清除这些点原有的实例编号。需要清除误标时，选择编号 **0（未标注）**，使用 **Assign semantic** 涂抹或圈选对应区域，语义和实例标签都会清除。

### 控制选择范围

默认只选择当前视角的表面点，适合沿可见轮廓标注。打开 **Through selection（穿透选择）** 后，会选中圈选或笔刷范围内各个深度的点，适合一次标注整个目标。

隐藏或锁定的点不会被笔刷和多边形修改。标注密集场景时，可先隐藏无关类别，再从多个视角检查，避免将前后不同目标一起选中。

### 创建实例

语义分割只区分“是什么”，实例分割还区分“是哪一个”。例如两辆车都属于 `car`，但应分别创建实例。

1. 先为目标点赋予语义类别。
2. 在 **Classes** 中选择该类别，点击 **Create instance（创建实例）**。
3. 使用笔刷或多边形选中一个对象的点，完成后生成一个实例；对下一个对象重复操作。

创建实例只处理选中范围内属于当前类别的点，其他类别会被排除。若选中的点已经属于其他实例，界面会提示确认转移。实例编号在同一类别内分配，使用“类别编号 + 实例编号”确定实例。

### 编辑与管理实例

先在右侧 **Instances（实例）** 列表选中目标实例，再选择对应操作：

| 操作 | 方法与效果 |
| --- | --- |
| 补充点 | 选择 **Add to current instance**，圈选同类别的点并加入当前实例。 |
| 移出点 | 选择 **Remove from current instance**，圈选要移出的点；保留语义类别。 |
| 拆分 | 选择 **Split current instance**，圈选当前实例的一部分，生成同类别的新实例。 |
| 合并 | 按住 `Ctrl` 多选同类别实例，点击标题栏的合并图标；保留当前行实例的编号。 |
| 定位 | 选中实例后点击标题栏的定位图标，将视图聚焦到目标。 |
| 删除实例 | 点击实例行的删除图标，清除该实例编号；点的语义类别保留。 |
| 锁定 | 点击实例或类别的锁图标，避免误改；编辑前先解锁。 |

合并和删除实例作用于整个实例，包括当前隐藏的点，操作前会提示确认。只需要语义分割时，无需创建实例。

### 保存与标注文件格式

语义与实例标签一起自动保存到同名 `.label` 文件，例如 `000000.bin` 对应 `000000.label`。类别定义使用前文介绍的类别 JSON 文件中的 `segmentation` 节点，请在创建任务第一步手动保存。

`.label` 是无文件头的二进制文件，按原始点云顺序为每个点保存一个**小端无符号 32 位整数（uint32）**：

| 内容 | 定义 |
| --- | --- |
| 低 16 位 | 语义类别编号，范围为 0–65535；0 表示未标注。 |
| 高 16 位 | 实例编号，范围为 0–65535；0 表示未分配实例。 |
| 编码 | `label = (instance_id << 16) \| semantic_id`。 |
| 解码 | `semantic_id = label & 0xFFFF`；`instance_id = label >> 16`。 |
| 文件大小 | 点数 × 4 字节。 |

例如，类别编号为 `10`、实例编号为 `2` 的点，保存值为 `(2 << 16) | 10 = 131082`；只标注类别时，保存值就是类别编号。

> [!IMPORTANT]
> `.label` 与原始点云逐点对应。标注后请保持点云的点数和顺序，不要直接对点云删点、重排或降采样后复用原标签。

交付时保留**原始点云、逐帧 `.label` 和类别文件**。继续标注时，加载对应类别、点云和保存目录，即可读取已有标签。

---

### Zh Cn User Guide (`docs/zh_cn/user_guide.md`)

# 用户手册

本手册介绍 X-AnyLabeling 的文件管理、对象编辑、标签转换、界面工具、用户配置和标注任务。

## 0. 目录

- [1. 文件](#1-文件)
  - [1.1 导入数据](#11-导入数据)
  - [1.2 删除数据](#12-删除数据)
  - [1.3 切换图片](#13-切换图片)
  - [1.4 保存标签数据](#14-保存标签数据)
  - [1.5 保存图像数据](#15-保存图像数据)
- [2. 编辑](#2-编辑)
  - [2.1 创建对象](#21-创建对象)
  - [2.2 编辑对象](#22-编辑对象)
  - [2.3 编辑标签](#23-编辑标签)
  - [2.4 编辑图片](#24-编辑图片)
  - [2.5 搜索图片](#25-搜索图片)
- [3. 视图](#3-视图)
  - [3.1 画布可视化](#31-画布可视化)
  - [3.2 图片可视化](#32-图片可视化)
  - [3.3 对象可视化](#33-对象可视化)
  - [3.4 十字瞄准线](#34-十字瞄准线)
  - [3.5 导航器](#35-导航器)
  - [3.6 对比视图](#36-对比视图)
  - [3.7 图片标签](#37-图片标签)
- [4. 标签导入导出](#4-标签导入导出)
  - [4.1 YOLO标签](#41-yolo标签)
  - [4.2 VOC标签](#42-voc标签)
  - [4.3 COCO标签](#43-coco标签)
  - [4.4 DOTA标签](#44-dota标签)
  - [4.5 MASK标签](#45-mask标签)
  - [4.6 MOT标签](#46-mot标签)
  - [4.7 PPOCR标签](#47-ppocr标签)
  - [4.8 ODVG标签](#48-odvg标签)
  - [4.9 VLM-R1-OVD标签](#49-vlm-r1-ovd标签)
  - [4.10 MMGD标签](#410-mmgd标签)
- [5. 工具栏](#5-工具栏)
  - [5.1 数据统计](#51-数据统计)
  - [5.2 保存子图](#52-保存子图)
  - [5.3 标签管理器](#53-标签管理器)
  - [5.4 对象类型转换器](#54-对象类型转换器)
  - [5.5 数字快捷键管理器](#55-数字快捷键管理器)
  - [5.6 群组编号管理器](#56-群组编号管理器)
  - [5.7 对象管理器](#57-对象管理器)
- [6. 帮助及语言](#6-帮助及语言)
  - [6.1 获取版本信息](#61-获取版本信息)
  - [6.2 设置软件语言](#62-设置软件语言)
- [7. 用户配置](#7-用户配置)
  - [7.1 快捷键设置](#71-快捷键设置)
  - [7.2 修改自定义标签颜色](#72-修改自定义标签颜色)
  - [7.3 加载预定义标签](#73-加载预定义标签)
  - [7.4 自动切换编辑模式](#74-自动切换编辑模式)
  - [7.5 悬浮自动高亮模式](#75-悬浮自动高亮模式)
  - [7.6 对象属性自定义](#76-对象属性自定义)
  - [7.7 模型下载源配置](#77-模型下载源配置)
  - [7.8 主题设置](#78-主题设置)
  - [7.9 字体设置](#79-字体设置)
- [8. 任务](#8-任务)
  - [8.1 图像分类](#81-图像分类)
  - [8.2 目标检测](#82-目标检测)
  - [8.3 图像分割](#83-图像分割)
  - [8.4 姿态估计](#84-姿态估计)
  - [8.5 人脸估计](#85-人脸估计)
  - [8.6 多目标跟踪](#86-多目标跟踪)
  - [8.7 深度估计](#87-深度估计)
  - [8.8 光学字符识别](#88-光学字符识别)
  - [8.9 交互式视频目标分割](#89-交互式视频目标分割)
  - [8.10 抠图](#810-抠图)
  - [8.11 视觉基础模型](#811-视觉基础模型)
  - [8.12 目标计数](#812-目标计数)
  - [8.13 视觉定位](#813-视觉定位)
- [9. 模型](#9-模型)
- [10. 高级功能](#10-高级功能)

## 1. 文件

本章节将详细介绍如何在 X-AnyLabeling 上进行数据的导入、删除、切换以及保存，确保标注流程高效且数据安全可控。

### 1.1 导入数据

在打开 GUI 界面后，用户可在上方菜单栏中的 `文件` 下拉框中选择对应的任务类型进行导入，也可直接通过快捷键进行操作。

X-AnyLabeling 目前提供三种数据导入方式：

- **图片文件目录**（Ctrl+U）：支持多级目录嵌套的多个文件同时导入。
- **单个图片文件**（Ctrl+I）：支持导入 `*.jpg`、`*.png`、`*.bmp`、`*.webp`、`*.tif` 等多种格式。
- **单个视频文件**（Ctrl+O）：支持导入 `*.mp4`、`*.avi`、`*.mov`、`*.mkv`、`*.wmv`、`*.flv` 等视频格式。

### 1.2 删除数据

X-AnyLabeling 提供数据删除功能，具体操作如下：

- **删除标签文件**（Ctrl+Delete）：删除当前标注文件结果，此操作不可撤回，请谨慎操作。
- **删除图像文件**（Ctrl+Shift+Delete）：删除当前图片文件，删除后的文件会同步移至当前图片目录下的 `_delete_` 文件夹中。

### 1.3 切换图片

在 X-AnyLabeling 中，按 `A` 和 `D` 可快速切换到上一张或下一张图片。

除了常规的切换图片操作外，还支持以下几种方式：


| 快捷键          | 描述           |
| ------------ | ------------ |
| Ctrl+Shift+A | 跳转到上一张未检查的标注 |
| Ctrl+Shift+D | 跳转到下一张未检查的标注 |


检查状态保存在标注 JSON 的顶层 `checked` 字段中，右下角文件列表会用圆点展示该状态：绿色表示已检查，灰色表示未检查。可以在画布右键菜单中选择 `Mark as Checked` / `Mark as Unchecked`，也可以按 `Ctrl+Alt+K` 切换当前图像的检查状态。

文件列表中的复选框默认不可编辑，如需启用编辑功能，可通过 `Settings`（`Ctrl+0`）在 `General` 中开启 `File List Checkbox Editable`，或在配置文件中将 `file_list_checkbox_editable` 设置为 `true`。
该复选框表示是否存在标注文件，与圆点展示的检查状态相互独立。

### 1.4 保存标签数据

X-AnyLabeling 默认开启自动保存功能，用户在初次启动界面时，可点击菜单栏中的 `文件` 下拉框查看 `自动保存` 选项是否被勾选。

标签文件默认保存在当前图片目录下，文件格式为 `*.json`，模板如下：

```jsonc
{
  "version": "${version}", // X-AnyLabeling 版本号
  "flags": {},             // 图片级标志 (如果存在)
  "tags": ["a", "b", "c"], // 有序的图片级开放词表标签
  "shapes": [              // 标注的对象列表
    {
      "label": "${label}",        // 类别标签
      "score": null,            // 置信度得分 (e.g., from model), 若无此信息则为 `null`
      "points": [...],          // 对象的顶点坐标列表
      "group_id": null,         // 用于关联同一组内的多个对象 (e.g., pose keypoints)
      "description": null,      // 对象的文本描述
      "difficult": false,       // 标识当前对象是否难以识别
      "shape_type": "${shape_type}", // e.g., "rectangle", "polygon"
      "flags": null,            // 对象级标志 (如果存在)
      "attributes": {}          // 自定义属性字典
    }
    // ... 更多对象
  ],
  "description": null,      // 图片的文本描述
  "checked": false,         // 标注检查状态
  "chat_history": [         // 聊天历史 (for chatbot)
    {
      "role": "user",
      "content": "Hi",
      "image": null
    },
    {
      "role": "assistant",
      "content": "Hi there! How can I help you today?",
      "image": null
    }
    // ... 更多对话
  ],
  "vqaData": {
    "question": "What animals are shown in the image?",
    "answer": "zebras",
    "split": "train",
    "task": "QA",
    "tags": [
      "natural"
    ],
    // ... 更多选项
  },
  "imagePath": "${filename}", // 图片的相对路径
  "imageData": null,         // Base64 编码的图片数据 (如果启用, 请参考 1.5)
  "imageHeight": -1,         // 图片高度
  "imageWidth": -1           // 图片宽度
}
```

> **提示**：如需更改标签保存路径，请在菜单栏中的 `文件` 下拉框中点击 `更改输出目录` 选项并设置相应的保存路径。

### 1.5 保存图像数据

如果您希望在标注过程中保存当前图像数据（默认 `base64` 编码），可在菜单栏中的 `文件` 下拉框中勾选 `保存图像数据` 选项。

## 2. 编辑

本章节将指导您如何在 X-AnyLabeling 中创建、编辑和管理不同类型的标注对象及其标签信息，涵盖从基本操作到高级功能的全面指南。

### 2.1 创建对象

在 X-AnyLabeling 中，我们将每个目标框称为一个单独的**对象**，其通常包含如下基本属性：


| 字段            | 类型  | 描述                                                   |
| ------------- | --- | ---------------------------------------------------- |
| `label`       | 字符串 | 对象的类别标签。                                             |
| `score`       | 浮点数 | 对象的置信度得分，通常在 AI 模型推理服务中使用，若无此信息则为 `null`。            |
| `points`      | 数组  | 对象的顶点坐标列表，具体取决于 `shape_type`。                        |
| `group_id`    | 整数  | 对象所属的组 ID，用于关联同一组内的多个对象，若无此信息则为 `null`。              |
| `description` | 字符串 | 对象的描述信息，若无此信息则为 `null`。                              |
| `difficult`   | 布尔值 | 标识当前对象是否难以识别，`true` 表示难以识别。                          |
| `shape_type`  | 字符串 | 对象类型，例如 `"rectangle"`、`"polygon"` 等。              |
| `flags`       | 字典  | 附加的标志信息，用于存储额外的状态或属性，若无此信息则为 `null`。                 |
| `attributes`  | 字典  | 对象的属性信息，可以包含任意键值对，若无此信息则为空字典 `{}`。                   |
| `kie_linking` | 列表  | 对象间的连接信息，可包含多对连接，例如 `[[1, 2], [3, 4]]`，若无此信息则为空列表 `[]`。 |
| `cuboid3d`    | 字典  | 仅 `cuboid` 使用的 3D 元数据，包含 `version`、`mode`、`vertices2d_order`、`depth_vector`、`source`，用于记录前后面映射和深度向量。 |


特殊字段的定义参见 [Shape](../../anylabeling/views/labeling/shape.py) 类。

当前，用户可通过左侧工具栏中的对应功能选项、画布右键菜单或快捷键创建以下对象：

| 对象类型 | 快捷键 | 绘制方式 |
| --- | --- | --- |
| `rectangle` | `R` | 左键单击确定第一个角点，移动光标后再次单击确定对角点。 |
| `rotation` | `O` | 按矩形方式创建水平或竖直旋转框；进入编辑模式并选中对象后，可按 `Z`、`X`、`C`、`V` 调整角度。 |
| `polygon` | `P` | 沿对象边缘单击添加顶点，单击起始顶点或双击最后一个顶点结束绘制，至少需要 3 个顶点。 |
| `quadrilateral` | `T` | 依次单击四个顶点，第四次单击后自动结束绘制。 |
| `point` | `Shift+P` | 左键单击放置一个关键点。 |
| `line` | `Shift+L` | 左键单击确定起点，移动光标后再次单击确定终点；绘制时按住 `Shift` 可吸附为水平或竖直线段。 |
| `linestrip` | `Shift+S` | 左键单击依次添加折线顶点，双击结束；绘制每一段时按住 `Shift` 可吸附为水平或竖直线段。 |
| `circle` | `Shift+C` | 左键单击确定圆心，移动光标确定半径，再次单击结束绘制。 |
| `cuboid` | `Ctrl+R` | 按矩形方式确定正面，系统根据 `canvas.cuboid.default_depth_vector` 生成背面；可在 `Settings > Canvas > Cuboid` 中调整相关参数，深度过小时会按 `canvas.cuboid.min_depth` 自动约束。 |

此外，对于多边形对象，X-AnyLabeling 还支持以下两种辅助创建方式：

**画笔模式**（`Ctrl+N`）：单击确定起点后，沿对象边缘移动鼠标即可自动添加顶点；移动回起点附近时会闭合轮廓并生成 `polygon`。

<p align="center">
  <img src="../../assets/resources/brush_polygon.gif" alt="在画笔模式下沿对象边界移动光标创建多边形">
</p>

**魔术棒**（`Shift+W`）：在目标上按住鼠标左键，可预览与起始像素连通且颜色相近的区域；保持按下并向任意方向拖动可增大颜色容差。释放左键只会保留预览，不会创建对象；单击右键可确认生成 `polygon`，按 `Esc` 可取消。

<p align="center">
  <img src="../../assets/resources/magic_wand.gif" alt="使用魔术棒根据连通的相似颜色区域创建多边形">
</p>

### 2.2 编辑对象

当前，X-AnyLabeling 中定义了两种对象操作模式，即 **绘制模式** 和 **编辑模式**。

- **绘制模式**：在绘制状态下，可进行对象的快速创建；
- **编辑模式**：在编辑状态下，可进行对象的编辑（Ctrl+E）、撤销（Ctrl+Z）、复制（Ctrl+C）、粘贴（Ctrl+V）、删除（Delete）、移动、缩放、旋转等操作。

用户可通过快捷键 `Ctrl+J` 在绘制模式与编辑模式之间快速切换。

在编辑模式下，单击画布中的对象即可选中。被选中对象的边框和控制点会高亮显示，右侧 **Shapes** 面板中的对应条目也会同步选中，方便在密集标注场景中确认当前对象。

<p align="center">
  <img src="../../assets/resources/canvas_shape_selection.gif" alt="在密集标注的画布中依次选中不同对象">
</p>

其他针对特定对象的操作如下：

如需保护已完成的标注，可选择一个或多个对象，并在画布右键菜单中勾选 **锁定对象**。也可在右侧 **Shapes** 面板中右键单击已选中的条目，逐个反转其锁定状态；锁定条目会显示锁形图标。锁定对象仍可被选中并修改标签、属性等字段，但无法修改几何坐标或删除。

启用 **显示群组** 后，每个群组会显示可交互的外接框及 `G3 · S5` 形式的简洁标签（表示群组 3 包含 5 个对象）。单击对象时仍优先选中该对象；单击群组标签、外接框或框内空白区域可选中整个群组，随后可拖拽或使用方向键整体移动，按住 `Shift` 可加速键盘移动。复制并粘贴选中的群组时，粘贴结果会自动使用当前图片中下一个可用的群组编号，并产生轻微位置偏移。删除整个群组前会要求确认。

- 对于矩形框对象，可通过四个角点调整大小；支持多选并通过右键菜单中的合并选中对象进行合并。另外也支持鼠标滚轮编辑功能，可在 `Settings > Canvas > Wheel Editing > Enable Wheel Rectangle Editing` 中启用，或在用户配置文件中设置（`wheel_rectangle_editing`）：启用后，滚轮在矩形内可缩放，在外部可调整对应边缘位置。注意：当启用 `auto_highlight_shape` 时，滚轮矩形编辑将自动关闭。
- 对于多边形框对象，可通过在边上拖拽新增一个新的顶点或按住 `Shift` 键配合鼠标左键移除选中顶点（编辑模式下）。当仅选中一个多边形或折线对象时，可按住 `Alt` 键进入橡皮擦模式，再按住鼠标左键拖过顶点以移除这些顶点，并自动拼接剩余点；若多边形少于 3 个点，或折线少于 2 个点，则会删除整个对象，并可通过撤销恢复。同样也支持多对象合并。当且仅当选中一个 `polygon` 时，还可通过工具栏、右键菜单或快捷键 `Shift+B` 启用 **编辑笔刷**：按住鼠标左键绘制可扩展区域，按住 `Ctrl` 绘制可擦除区域，滚轮可调整笔刷大小，并支持按笔画撤销和重做。编辑期间会锁定当前对象；右键或关闭编辑笔刷可提交修改，按 `Esc`、切换图片或切换其他工具会放弃修改并恢复原始多边形。笔刷采样间距和轮廓简化精度可在 `Settings > Canvas > Interaction > Brush` 中调整；简化精度设为 `0` 时保留提取出的轮廓点。
- 对于旋转框对象，可先单击选中目标，拖拽对象上方的旋转控制点快速粗调角度，再通过 `Z`、`X`、`C`、`V` 对旋转角度和方向进行精细调整。此外，也支持显示实时的旋转角度预览。
- 对于长方体（cuboid）对象，编辑时会显示 11 个控制点：正面 4 个顶点、正面 4 条边中点、可见背面 2 个顶点、可见背面 1 个边中点（深度控制点）。拖拽正面可整体移动对象；拖拽左/右/背面可调整形体；拖拽背面中点可调整深度，且会保持几何约束。背面哪一侧可见由深度向量方向自动决定。

此外，用户可通过右键菜单中的 **复制坐标** 功能快速复制当前选中对象的坐标信息到剪贴板。对于矩形框，输出格式为 `[x1, y1, x2, y2]`（左上角和右下角坐标）；对于其他对象类型，输出格式为 `[x1, y1, x2, y2, x3, y3, ...]`（所有顶点坐标）。在编辑模式下，双击画布上的对象可快速打开标签编辑框；可在 `Settings > Canvas > Interaction > Double Click Edit Label` 中关闭，也可在配置中通过 `double_click_edit_label`（默认为 `true`）关闭该行为。

在放大画布并出现滚动条时，绘制对象过程中可按住 `Space` 并使用鼠标左键拖拽，临时平移画布，而无需退出绘制模式。

> [!TIP]
> 当图片中包含较多对象时，可使用以下浏览功能逐一检查，无需手动定位每个对象。

**遍历放大对象**（`Ctrl+Shift+N`）会按顺序将每个对象移至画布中心并放大显示，适合检查边界、顶点等标注细节。再次触发该功能即可切换到下一个对象。

<p align="center">
  <img src="../../assets/resources/zoom_shapes.gif" alt="逐个居中并放大显示对象">
</p>

**遍历选中对象**（`Ctrl+Shift+C`）会在保持当前画布视图的同时，按顺序选中每个对象，适合快速检查或修改标签、属性及其他对象信息。再次触发该功能即可选中下一个对象。

<p align="center">
  <img src="../../assets/resources/loop_shapes.gif" alt="按顺序逐个选中对象">
</p>

### 2.3 编辑标签

当用户创建（未勾选`自动使用上一个标签`）或编辑一个对象时，默认弹出一个标签编辑框，用于编辑对象的标签信息。


| 字段   | 描述                                   |
| ---- | ------------------------------------ |
| 对象标签 | 输入当前对象的类别标签，支持模糊搜索。                  |
| 群组编号 | 用于关键点检测、多目标跟踪等特定任务。                  |
| 困难标签 | 标识当前对象是否难以识别。                        |
| 标签列表 | 展示当前已添加的标签列表，默认按字母序排列。               |
| 标签描述 | 附加的标志信息，用于存储额外的状态或属性，若无此信息则为 `null`。 |
| 标签连接 | 用于标识关键信息提取-关系抽取任务中的连接字段。             |


### 2.4 编辑图片

当前，X-AnyLabeling 支持对当前图片进行 `Caption` 描述。具体操作是打开编辑模式，点击图片空白处，在右侧的 `Description` 区域填充图片描述。

### 2.5 搜索图片

文件搜索功能支持多种搜索模式，帮助用户快速定位目标图片。在右侧文件列表上方的搜索框中输入搜索条件，按回车键执行搜索。

也可以在文件列表中的图片上点击鼠标右键，打开快捷菜单执行复制操作：

- **复制文件名**：仅复制当前选中图片的文件名，例如 `image001.jpg`。
- **复制文件路径**：复制当前选中图片的完整路径到剪贴板。

当前支持的搜索模式包括：

**文本搜索**

直接输入文本内容，系统会在文件名中查找包含该文本的文件。例如输入 `test` 可以找到所有文件名包含 "test" 的图片。

**编号搜索**

使用 `#N` 格式按序号定位图片，其中 `N` 必须为正整数。例如：

- `#1` 定位当前文件列表中的第 1 张图片
- `#10` 定位当前文件列表中的第 10 张图片

**正则表达式搜索**

使用 `<pattern>` 格式进行正则表达式搜索。例如：

- `<\.png$>` 搜索所有 PNG 格式的图片
- `<test.*\.jpg$>` 搜索文件名以 "test" 开头、以 ".jpg" 结尾的图片

**属性搜索**

支持通过对象属性筛选图片，格式为 `属性名::值`：

- `difficult::1` 或 `difficult::true`：查找包含困难标注对象的图片
- `gid::0`：查找包含群组编号为 0 的对象的图片，支持搜索任意整数群组编号
- `shape::1` 或 `shape::true`：查找已标注的图片（包含至少一个标注对象）
- `label::person`：查找包含标签为 "person" 的图片
- `type::rectangle`：查找包含矩形框对象的图片，支持的类型包括：`rectangle`（矩形）、`polygon`（多边形）、`rotation`（旋转框）、`quadrilateral`（四边形）、`point`（点）、`line`（线段）、`circle`（圆形）、`linestrip`（折线）
- `score::[0,0.5]`：查找包含分数在 [0, 0.5] 区间内的对象（闭区间）
- `score::(0,0.6]`：查找包含分数在 (0, 0.6] 区间内的对象（左开右闭）
- `score::[0,0.6)`：查找包含分数在 [0, 0.6) 区间内的对象（左闭右开）
- `score::(0,0.6)`：查找包含分数在 (0, 0.6) 区间内的对象（开区间）
- `description::1` 或 `description::true`：查找包含非空描述的图片
- `checked::1` 或 `checked::true`：查找已检查的图片
- `checked::0` 或 `checked::false`：查找未检查的图片；未生成标签文件的图片也会视为未检查

## 3. 视图

本章介绍画布、图像和标注对象的显示设置。

### 3.1 画布可视化

当前，X-AnyLabeling 支持以下对画布的操作：

- **放大**（Ctrl++）
- **缩小**（Ctrl+-）
- **重置**（Ctrl+=）

除了可以在左侧窗口设置缩放比例和使用快捷键触发外，还可以通过按住 `Ctrl` 键并配合鼠标滚轮对感兴趣的区域进行局部缩放操作，用于精细化和小目标对象标注。如果您想将此更改应用到全局，请务必勾选 `视图` 下拉选项中的 `保留先前的缩放比例` 选项。

### 3.2 图片可视化

X-AnyLabeling 支持调整当前图片的显示效果和标注对象的可见性。具体操作如下：

通过画布左下角可折叠的 **Canvas Display** 面板，可以调整标注透明度和底图的显示效果。点击箭头按钮可折叠或展开面板。

**标注透明度：**拖动 **Opacity** 滑块可调整标注对象和掩码的透明度。标签文字始终保持清晰可见，方便辨认对象类别。

<p align="center">
  <img src="../../assets/resources/annotation_opacity.gif" alt="通过 Canvas Display 面板调整标注对象和掩码的透明度">
</p>

**图片亮度：**拖动 **Brightness** 滑块可调亮或调暗底图，不会修改原始图片文件或标注数据。

<p align="center">
  <img src="../../assets/resources/image_brightness.gif" alt="通过 Canvas Display 面板调整图片亮度">
</p>

**图片对比度：**拖动 **Contrast** 滑块可增强或减弱底图的明暗层次，便于区分对象边界。

<p align="center">
  <img src="../../assets/resources/image_contrast.gif" alt="通过 Canvas Display 面板调整图片对比度">
</p>

如果想将此更改应用到全局，请勾选 `视图` 下拉选项中的 `保持当前亮度` 和 `保持当前对比度` 选项。

### 3.3 对象可视化

对象可视化功能包括显示当前图片中已标注对象的文本描述（Ctrl+T）、标签名称（Ctrl+L）、分组编号、旋转角度、预测分数等信息。

用户可以通过快捷键或者在界面上方菜单栏中的 `视图` 下拉选项中勾选相应功能来进行设置。

当光标移至对象上方时，界面底部的信息栏会实时显示对象的宽度、高度等信息。

> [!TIP]
> 在界面右侧的 `Shapes` 列表中，可通过右键菜单中的 `Filter by Label` 和 `Filter by Group ID` 快速筛选对象。
> 左侧工具栏提供了对象全局显隐切换按钮（`eye/hidden` 图标）：点击一次隐藏全部对象，再次点击恢复显示。

### 3.4 十字瞄准线

按 `Ctrl+0` 打开 `Settings`，然后进入 `Canvas > Interaction > Crosshair`，可开启或关闭十字瞄准线，并调整宽度、颜色和透明度。

十字瞄准线会贯穿当前可见画布并在光标位置相交；光标移动时，界面底部的信息栏会实时显示位置坐标。

### 3.5 导航器

<p align="center">
  <img src="../../assets/resources/navigator.png" alt="Crosshair Customization">
</p>

处理高分辨率图像时，可以通过导航器快速定位到图像的任意区域。

在菜单栏中选择 `视图 > 导航器`，或按 `F9` 打开导航器。导航器会在独立窗口中显示当前图像的缩略图，并用红框标出当前可视区域。

单击缩略图可快速跳转，拖动红框可移动视野。导航器也会实时显示当前图像中的标注对象。

在导航器底部，你可以通过输入框精确设置缩放比例（支持1%到1000%），也可以拖拽滑动条进行调整。此外，无论是在主画布还是导航器窗口内，都可以直接用鼠标滚轮缩放。

### 3.6 对比视图

<p align="center">
  <img src="../../assets/resources/compare_view.gif" alt="Compare-View">
</p>

对比视图可通过分屏界面并排比较两张图像，适用于以下场景：

- **红外与可见光融合**：对比热成像和 RGB 图像，识别在不同光谱下更清晰的目标。
- **掩码预览**：实时查看分割结果与原图的叠加效果。
- **图像超分**：对比增强后的图像与原始图像。

**使用方法：**

1. 打开图像目录并加载图像。
2. 点击 `文件` > `对比视图`（或按 `Ctrl+Alt+C`）打开对比目录选择器。
3. 选择包含对比图像的目录，文件名需与主图像匹配（基础文件名相同，扩展名可不同）。
4. 使用底部滑块调整分割位置，或按住 `Shift` 键并滚动鼠标滚轮移动分割线。
5. 点击滑块上的关闭按钮（×）退出对比视图。

> [!NOTE]
> 对比图像必须与原图尺寸一致，且文件名称要确保一致。

### 3.7 图片标签

通过 `视图` > `图片标签` 或快捷键 `Ctrl+Shift+T`，可以快速显示或隐藏画布下方的图片标签面板。

图片标签功能支持以下操作：

- 点击 `+` 新增标签，双击标签可编辑文本，拖动标签可调整顺序，也可通过关闭按钮删除单个标签。
- 点击 `−` 进入批量模式，选择标签后通过 `Delete` 统一删除。
- 点击 `C` 可将所有标签以逗号分隔格式复制到剪贴板，例如 `tag1,tag2,tag3`。

## 4. 标签导入导出

现阶段，`X-AnyLabeling` 提供了多种主流标签文件的导入/导出功能，下面简单介绍使用步骤。

> [!TIP]
> 也可以使用 CLI 批量转换标签格式，适合处理大型数据集。详情参见[命令行界面文档](./cli.md#3-标签格式转换命令)。

### 4.1 YOLO标签

X-AnyLabeling 支持导入和导出 YOLO 目标检测、实例分割、旋转框检测及关键点检测标签（`*.txt`）。

在导入/导出 YOLO 标注文件之前，需要准备一份标签配置文件，具体如下：

1. 对于 YOLO 目标检测、实例分割和旋转框检测任务，请参考 [classes.txt](../../assets/classes.txt) 准备配置文件，每一行代表一个类别，编号从上至下从 0 开始依次递增。
2. 对于 YOLO 关键点检测任务，请参考 [yolov8_pose.yaml](../../assets/yolov8_pose.yaml) 进行准备，其中 `has_visible` 参数请参考[官方定义](https://docs.ultralytics.com/datasets/pose/#ultralytics-yolo-format)。

> 要导出 YOLO Pose 格式，需要为每组检测框及其关键点指定 `group_id`，以记录对象之间的从属关系。

> [!NOTE]
> 请勿将 YOLO 标签文件（`*.txt`）与图像文件放在同一目录下。

**导入任务**：

1. 点击上方菜单栏的 `上传` 按钮。
2. 选择对应的任务。
3. 上传准备好的配置文件。
4. 选择标签文件所在目录。
5. 可选择勾选"保留现有标注"选项，将新标注与现有标注合并。
6. 点击确定即可。

**导出任务**：

1. 点击上方菜单栏的 `导出` 按钮。
2. 上传准备好的配置文件。
3. 根据需求勾选对应选项，点击确定即可。

导出路径默认保存在当前图片目录的同级目录下的 `labels` 文件夹内。

> YOLO 标签文件样式可参考 [demo.txt](../../assets/labels/demo.txt)。

### 4.2 VOC标签

X-AnyLabeling 支持导入和导出检测及分割任务的 Pascal VOC 标签文件（`*.xml`）。

**导入任务**：

1. 点击上方菜单栏的 `上传` 按钮。
2. 选择对应的任务。
3. 选择标签文件所在目录，点击确定即可。

**导出任务**：

1. 点击上方菜单栏的 `导出` 按钮。
2. 根据需求勾选对应选项，点击确定即可。

导出路径默认保存在当前图片目录的同级目录下的 `Annotations` 文件夹内。

> VOC 标签文件样式可参考 [demo.xml](../../assets/Annotations/demo.xml)。

### 4.3 COCO标签

X-AnyLabeling 支持导入和导出目标检测、实例分割及关键点检测任务的 COCO 标签文件（`*.json`）。

在导入/导出 COCO 标注文件之前，需要准备一份标签配置文件，具体如下：

1. 对于 COCO 目标检测、实例分割任务，请参考 [classes.txt](../../assets/classes.txt) 准备配置文件，其中每一行代表一个类别，编号从上至下依次递增。
2. 对于 COCO 关键点检测任务，请参考 [yolov8_pose.yaml](../../assets/yolov8_pose.yaml) 进行准备，其中 `has_visible` 参数请参考[官方定义](https://docs.ultralytics.com/datasets/pose/#ultralytics-yolo-format)。
3. 对于 COCO 实例分割任务，请参考 [labels.txt](../../assets/labels.txt) 进行准备。

**导入任务**：

1. 点击上方菜单栏的 `上传` 按钮。
2. 选择对应的任务。
3. 上传准备好的配置文件。
4. 选择标签文件所在目录，点击确定。

**导出任务**：

1. 点击上方菜单栏的 `导出` 按钮。
2. 选择对应的任务。
3. 上传准备好的配置文件。
4. 点击确定即可。

导出路径默认保存在当前图片目录的同级目录下的 `annotations` 文件夹内。

> COCO 格式的对应标签文件样式可参考 [annotations](../../assets/annotations) 目录。

### 4.4 DOTA标签

X-AnyLabeling 支持导入和导出 DOTA 标签文件（`*.txt`），每行格式如下：

> x1 y1 x2 y2 x3 y3 x4 y4 class_name difficult

**导入任务**：

1. 点击上方菜单栏的 `上传` 按钮。
2. 选择对应的任务。
3. 选择标签文件所在目录，点击确定即可。

**导出任务**：

1. 点击上方菜单栏的 `导出` 按钮。
2. 点击确定即可。

导出路径默认保存在当前图片目录的同级目录下的 `labelTxt` 文件夹内。

> DOTA 标签文件示例参见 [demo_obb.txt](../../assets/labelTxt/demo_obb.txt)。

### 4.5 MASK标签

X-AnyLabeling 支持导入和导出语义分割掩码（`*.png`）。

在导入/导出掩码标注文件之前，需要准备好配置文件，具体如下：

1. 对于彩色图颜色映射表文件，可参考 [mask_color_map.json](../../assets/mask_color_map.json)。
2. 对于灰度图颜色映射表文件，可参考 [mask_grayscale_map.json](../../assets/mask_grayscale_map.json)。

可选的 `label_priority` 对象用于处理多边形重叠。整数越大，类别优先级越高；未配置的类别默认优先级为 `0`。优先级相同时按照 XLABEL `shapes` 数组中的标注层级处理，列表中靠后的形状显示在上层。未配置 `label_priority` 时，仅使用标注层级顺序。该过程只影响导出的语义掩码，不会修改原始标注。

```json
{
  "type": "grayscale",
  "colors": {"Road": 1, "Car": 2, "Person": 3},
  "label_priority": {"Road": 0, "Car": 10, "Person": 20}
}
```

**导入任务**：

1. 点击上方菜单栏的 `上传` 按钮。
2. 选择对应的任务。
3. 上传准备好的配置文件。
4. 选择标签文件所在目录，点击确定即可。

**导出任务**：

1. 点击上方菜单栏的 `导出` 按钮。
2. 上传准备好的配置文件。
3. 点击确定即可。

导出路径默认保存在当前图片目录的同级目录下的 `mask` 文件夹内。

### 4.6 MOT标签

X-AnyLabeling 支持一键导入/导出多目标跟踪任务相关的标签文件。

在导入/导出标注文件之前，需要准备好标签配置文件，具体可参考 [classes.txt](../../assets/classes.txt)，其中每一行代表一个类别，编号由上往下依次递增。

**导出任务**：

1. 点击上方菜单栏的 `导出` 按钮。
2. 上传准备好的配置文件。
3. 选择保存路径，点击确定即可。

**导入任务**：

1. 点击上方菜单栏的 `上传` 按钮。
2. 选择对应的任务。
3. 上传准备好的配置文件。
4. 选择标签文件（`gt.txt`）所在目录，点击确定即可。

> 标签文件样式可参考 [MOT](../../assets/MOT/) 目录，其中包含三个子文件：`seqinfo.ini`、`det.txt` 和 `gt.txt`。

**seqinfo.ini**

`seqinfo.ini` 文件包含序列信息，用于描述数据集的元数据。以下是文件的具体内容和字段说明：

```ini
[Sequence]
name = MOT            # 序列名称
imdir = mot_label     # 图片目录
framerate = 30        # 帧率
seqlength = 249       # 序列长度（帧数）
imwidth = 1280        # 图片宽度
imheight = 720        # 图片高度
imext = .jpg          # 图片文件扩展名
```

**det.txt**

`det.txt` 文件包含检测结果信息，每一行代表一个检测框。以下是文件的具体内容和字段说明：

```txt
帧号, 跟踪 ID, 左上角 x 坐标, 左上角 y 坐标, 目标框宽度, 目标框高度, 置信度, <x>, <y>, <z>
```

最后三个字段用于 `MOT3D` 任务，此处默认为 **-1**。

**gt.txt**

`gt.txt` 文件包含跟踪的标注信息，每一行代表一个标注框。以下是文件的具体内容和字段说明：

```txt
帧号, 跟踪 ID, 左上角 x 坐标, 左上角 y 坐标, 目标框宽度, 目标框高度, 有效性标志, 类别 ID, 可见率
```

这里**有效性标志**表示当前目标轨迹是否有效，`0` 表示无效数据（ignore），`1` 表示有效数据（activate）。用户可通过标签管理器中的 `useDifficult` 标志位来设置，☑️ 代表当前目标轨迹无效。

---

此外，针对 [MOTS](https://motchallenge.net/data/MOTS/) 数据集格式，X-AnyLabeling 支持通过 CLI 导出。请提供包含 XLABEL JSON 文件的目录、输出目录以及 `classes.txt` 文件：

```bash
xanylabeling convert --task xlabel2mots --labels /path/to/xlabel/labels --output /path/to/output --classes classes.txt
```

> [!NOTE]
> 执行该命令前，需要安装 `pycocotools`。

### 4.7 PPOCR标签

X-AnyLabeling 支持一键导入/导出以下两种 PPOCR 任务的标签：

- 文本检测与识别：定位出输入图像中的文字区域，并识别出图像中的具体文字内容。
- 关键信息提取：从图像中提取所需信息，包括语义实体识别和关系抽取两个子任务。

**导入任务**：

1. 点击上方菜单栏的 `上传` 按钮。
2. 选择对应的任务。
3. 选择相应的标签文件，点击确定上传即可。

**导出任务**：

1. 点击上方菜单栏的 `导出` 按钮。
2. 点击确定即可。

对于**文本检测与识别**任务，其导出路径默认保存在当前图片目录的同级目录下的 `ppocr-rec` 文件夹内，其包含：

1. `Label.txt`: 标注结果
2. `rec_gt.txt`: 识别结果
3. `crop_img`: 识别结果对应的图片训练数据

具体的标签文件样式可参考 [ppocr-rec](../../assets/ppocr/ppocr-rec/)。

对于**关键信息提取**任务，其导出路径默认保存在当前图片目录的同级目录下的 `ppocr-kie` 文件夹内，其包含：

1. `class_list.txt`: 标签类别列表
2. `ppocr_kie.json`: KIE 标注结果

具体的标签文件样式可参考 [ppocr-kie](../../assets/ppocr/ppocr-kie/)。

### 4.8 ODVG标签

X-AnyLabeling 支持一键导入/导出 Grounding 任务相关的标签文件。

在导入/导出 ODVG 标注文件之前，需要准备好一份标签配置文件，具体可参考 [classes.txt](../../assets/classes.txt)，其中每一行代表一个类别，编号从上至下依次递增。

**导入任务**：

1. 点击上方菜单栏的 `上传` 按钮。
2. 选择对应的任务。
3. 选择标签文件所在目录，点击确定。

**导出任务**：

1. 点击上方菜单栏的 `导出` 按钮。
2. 选择对应的任务。
3. 上传准备好的配置文件。
4. 选择保存路径点击确定即可。

> ODVG 标签文件样式可参考 [ODVG](../../assets/ODVG)。

### 4.9 VLM-R1-OVD标签

X-AnyLabeling 支持一键导入/导出 VLM-R1-OVD 标签文件。

**导入任务**：

1. 点击上方菜单栏的 `上传` 按钮。
2. 选择对应的任务。
3. 选择标签文件所在目录，点击确定。

**导出任务**：

1. 点击上方菜单栏的 `导出` 按钮。
2. 选择对应的任务。
3. 根据实际需要填写相应的配置项点击确定即可。

其中，[classes.txt](../../assets/classes.txt) 文件用于指定需要导出的类别或短语提示。若不指定，则默认以每张图片为单位检测到所有类别或短语提示作为提示类别进行导出，并自动跳过空标签文件。

> VLM-R1-OVD 标签文件导出示例可参考 [vlm_r1_ovd.jsonl](../../assets/vlm_r1_ovd.jsonl) 文件。

### 4.10 MMGD标签

X-AnyLabeling 支持一键导入基于 [MM-Grounding-DINO](https://github.com/open-mmlab/mmdetection/blob/main/configs/mm_grounding_dino/README.md) 预测所获取的标签文件。

**导入流程**：

1. 点击上方菜单栏的 `上传` 按钮。
2. 选择对应的任务。
3. 上传类别文件。
4. 选择标签文件所在目录，并根据自己需求勾选感兴趣的类别并设置过滤阈值，点击确定即可。

其中，[classes.txt](../../assets/classes.txt) 文件用于后续标签序号到类别名称的映射，每一行代表一个类别，编号从上至下从 0 开始依次递增。

## 5. 工具栏

### 5.1 数据统计

`X-AnyLabeling` 具备数据统计功能，允许用户轻松获取当前任务的统计概况。只需在顶部菜单栏选择 **工具** 下拉选项中的 **数据总览** 按钮，即可查看当前数据状态。其支持以下功能：

- 数据导出功能
  - 支持导出 CSV 格式的统计报告
  - 自动生成包含标签信息、对象统计和类别列表的压缩包
  - 导出文件包括：
    - label_infos.csv：标签数量统计
    - shape_infos.csv：标注对象统计
    - classes.txt：所有类别列表
- 灵活的统计范围
  - 支持选择指定范围内的图像进行统计
  - 可查看单张或多张图像的统计信息
  - 实时更新统计结果
- 多维度数据分析
  - 按标签类别统计：展示每个类别的标注数量
  - 按对象类型统计：包括多边形、矩形、旋转框、点、线条、圆形、长方体等
  - 总体数据概览：显示数据集的整体分布情况

> 使用说明：
>
> 1. 点击顶部菜单栏的"工具" -> "数据总览"
> 2. 在弹出的统计窗口中查看数据分布
> 3. 可选择特定范围的图像进行统计
> 4. 点击"导出"按钮将统计结果保存为压缩包

### 5.2 保存子图

子图保存功能可通过以下步骤实施：

1. 点击上方菜单栏的 **工具** -> **保存子图** 选项。
2. 在弹出的对话框中设置：
  - 保存路径：选择子图保存的目标文件夹
  - 最小宽度：设置过滤的最小宽度像素值
  - 最小高度：设置过滤的最小高度像素值
3. 点击确定后，系统会自动将所有标注对象按照类别名称分类导出到指定路径下。

此外，用户也可以通过 **工具** -> **保存可视化图像** 或 **保存可视化视频**，将当前标注可视化结果导出为图片或视频文件。

### 5.3 标签管理器

<p align="center">
  <img src="../../assets/resources/label_manager.png" alt="用于重命名、删除、隐藏和调整标签颜色的标签管理器">
</p>

当前，`X-AnyLabeling` 提供对标签对象的全局管理功能。用户可以通过以下操作进行管理：

- **删除标签**：移除不需要的标签。
- **替换标签名称**：更新标签名称以适应新的分类标准。
- **控制标签可见性**：通过 `Visible` 列的复选框控制特定标签在画布上的显示或隐藏。
- **更改标签颜色**：调整标签的显示颜色以提高辨识度。

用户可通过点击 **工具** -> **标签管理器** 选项（快捷键：**Alt+L**），在弹出的标签管理窗口中进行相应操作。

**可见性快捷操作**：

- 在 `Visible` 列上点击鼠标右键，可快速执行以下操作：
  - **Select All**：一键显示所有标签
  - **Deselect All**：一键隐藏所有标签
- 可见性设置会在切换图片时保持，点击 `Go` 按钮确认后生效。

此外，当需要快速选择画布上的所有标注对象时，请按照以下步骤操作：

1. 在左侧工具栏中选择编辑模式，或按 `Ctrl+J` 切换。
2. 在右侧对象列表中单击任意对象。
3. 按住 `Shift`，依次按 `Home` 和 `End`，选中当前对象前后的所有对象。

### 5.4 对象类型转换器

<p align="center">
  <img src="../../assets/resources/shape_converter.png" alt="显示源对象类型、目标类型和批量转换进度的对象转换器">
</p>

X-AnyLabeling 提供统一的 **Shape Converter（对象转换器）**。
可在界面上方菜单栏的 **工具（Tools）-> Shape Converter** 打开转换窗口，在窗口中选择源对象类型与目标对象类型后执行批量转换。

当前支持的转换关系如下：

- `polygon` -> `rectangle`, `rotation`
- `rectangle` -> `rotation`, `polygon`, `circle`, `quadrilateral`
- `rotation` -> `rectangle`, `quadrilateral`, `polygon`, `circle`
- `line` -> `linestrip`
- `circle` -> `rectangle`, `rotation`, `quadrilateral`, `polygon`
- `quadrilateral` -> `polygon`

规则说明：

- 转换为 `circle` 时，采用**内切圆**策略。
- `polygon`/`rotation` 转 `rectangle` 时，使用轴对齐外接矩形（AABB）。
- `circle` 转 `rectangle`/`rotation`/`quadrilateral` 时，会基于圆心与半径生成对应四点对象。

> [!WARNING]
> 部分转换会丢失旋转角度、精确边界或曲线细节，且无法逆向恢复。批量处理前请先备份标注数据。

### 5.5 数字快捷键管理器

<p align="center">
  <img src="../../assets/resources/digit_shortcut_manager.png" alt="用于给数字键分配绘制模式和默认标签的数字快捷键管理器">
</p>

数字快捷键管理器用于为数字键（0–9）配置绘制模式和默认标签。

选择**工具 > 数字快捷键管理器**，或按 `Alt+D` 打开配置界面。

表格中每行包含以下信息：

- **数字**：表示键盘上的数字键（0-9）
- **绘制模式**：从下拉菜单中选择矩形框、长方体、多边形、旋转框、四边形、圆形、线段、点、折线或空选项
- **标签**：为该对象指定默认标签名称（必填）

**配置快捷键**：选择数字对应的绘制模式，输入该对象的默认标签名称（启用绘制模式后必须填写），然后点击**确定**保存设置。

**重置快捷键**：点击**重置**按钮可清除所有快捷键设置，系统会弹出确认对话框，确认后将清除所有配置。

**使用快捷键**：在标注界面中，直接按下已配置的数字键（0-9），系统会自动切换到对应的绘制模式，并预设标签名称。绘制完成后，标注将自动使用预设的标签名称。

**离线配置**：除图形界面外，也可以在用户目录下的 `.xanylabelingrc` 中配置：

```yaml
digit_shortcuts:
  0: {mode: polygon, label: person}
  1: {mode: rectangle, label: car}
  2: {mode: rotation, label: truck}
  # 更多配置...
```

通过图形界面配置的数字快捷键会自动保存到 `.xanylabelingrc`，并在下次启动时加载。手动修改配置文件后，需要重启应用才能生效。

### 5.6 群组编号管理器

群组编号管理器是针对群组编号字段提供的批量管理功能，允许用户对指定范围内的群组编号进行统一修改和删除操作。您可以通过以下两种方式打开：

- 在主界面上方菜单栏选择**工具** -> **群组编号管理器**
- 直接使用快捷键 **Alt+G**

### 5.7 对象管理器

<p align="center">
  <img src="../../assets/resources/shape_manager.png" alt="用于在指定帧范围内批量处理标注和选定对象的对象管理器">
</p>

对象管理器用于视频帧序列的批量标注处理，通过 **工具 -> 对象管理器** 或快捷键 **Alt+S** 打开。

对话框提供四种操作模式（单选）：

- **删除所有标注**：移除指定帧范围内的所有 JSON 标注文件，图像文件保留。执行后会自动取消对应帧的勾选状态。
- **删除所有图像及标注**：同时删除图像和标注文件。图像文件会移至 `_delete_` 目录作为备份，而非永久删除。完成后文件列表自动刷新。
- **移除选定对象**：从帧范围内查找并移除与当前选中对象。若某帧仅包含匹配对象则删除整个标注文件，否则仅移除匹配部分。使用前需在画布上至少选中一个对象作为匹配模板。
- **添加选定对象**：将当前选中的对象批量复制到指定帧。系统会自动检测边界并跳过超出图像范围的对象，同时避免重复添加已存在的相同对象。若目标帧无标注文件会自动创建，完成后自动勾选对应帧。

使用时需要设置起止帧编号：`From` 默认为当前帧，`To` 需要手动填写。帧编号对应从 1 开始的文件列表序号。点击 `Go` 并确认后开始执行；移除和添加操作支持显示进度及中途取消。

> [!WARNING]
> 注意删除标注操作不可恢复，删除图像可从备份目录手动恢复。

## 6. 帮助及语言

### 6.1 获取版本信息

在界面上方菜单栏中，用户可点击 **帮助** -> **关于** 选项，查看当前版本的详细信息，包括版本号和运行环境等。

### 6.2 设置软件语言

<p align="center">
  <img src="../../assets/resources/supported_languages.png" alt="X-AnyLabeling 的中文、英文、日文和韩文界面">
</p>

在界面上方菜单栏中，用户可点击 **语言** 下拉框，选择所需语言进行设置。目前支持 **中文**、**英文**、**日文** 和 **韩文** 四种语言。切换语言后，软件将自动重启，请确保在切换前保存好当前数据，以防数据丢失。

## 7. 用户配置

`X-AnyLabeling` 的用户配置文件默认存放在当前用户目录下的 `.xanylabelingrc` 文件中。您可以通过以下路径找到该文件：

- **Linux**: `~/.xanylabelingrc`
- **Windows**: `C:\Users\<用户名>\.xanylabelingrc`

现在大多数常用选项都可以直接在 `Settings`（`Ctrl+0`）中修改，而配置文件仍适用于手动编辑和高级自定义。若手动修改配置文件，建议关闭 X-AnyLabeling 后编辑，并在修改后重新启动软件使其生效。

<p align="center">
  <img src="../../assets/resources/settings_overview.png" alt="快捷键、常规选项、对象外观和画布行为的设置页面">
</p>

### 7.1 快捷键设置

当前 X-AnyLabeling 默认的快捷键配置如下，用户可以根据自身需求进行修改，确保避免快捷键冲突。也支持在 GUI 中直接修改：按 `Ctrl+0` 打开 Settings 后，在右侧 `Shortcuts` 面板内编辑：


| 快捷键                   | 功能                              |
| --------------------- | ------------------------------- |
| d                     | 打开下一个文件                         |
| a                     | 打开上一个文件                         |
| Ctrl + Shift + d      | 打开下一个未检查的标注                      |
| Ctrl + Shift + a      | 打开上一个未检查的标注                      |
| Ctrl + Alt + k        | 切换当前标注的检查状态                      |
| p                     | 创建多边形                           |
| Ctrl + n              | 创建画笔多边形（切换画笔模式）                 |
| o                     | 创建旋转框                           |
| r                     | 创建矩形框                           |
| Ctrl + r              | 创建长方体                    |
| t                     | 创建四边形                           |
| Shift + p             | 创建点                             |
| Shift + l             | 创建线段                            |
| Shift + s             | 创建折线                            |
| Shift + c             | 创建圆形                            |
| i                     | 运行模型                            |
| q                     | `SAM 模式` 的正样本点                  |
| e                     | `SAM 模式` 的负样本点                  |
| b                     | `SAM 模式` 快速清除提示点                |
| f                     | `SAM 模式` 确认完成                   |
| g                     | 组合选定的对象                         |
| u                     | 取消组合选定的对象                       |
| s                     | 隐藏选定的对象                         |
| w                     | 显示选定的对象                         |
| Alt + d               | 打开数字快捷键管理器                      |
| Alt + g               | 打开群组编号管理器                       |
| Alt + l               | 打开标签管理器，支持批量重命名、删除、显示/隐藏、调整标签颜色 |
| Alt + s               | 打开对象管理器，支持批量新增、删除、移除指定对象        |
| Ctrl + 0              | 打开 Settings                       |
| Ctrl + Delete         | 删除当前标签文件                        |
| Ctrl + Shift + Delete | 删除当前图像文件                        |
| Ctrl + 1              | 打开聊天机器人对话窗口                     |
| Ctrl + 2              | 打开视觉问答窗口                        |
| Ctrl + 3              | 打开图像分类器窗口                       |
| Ctrl + 4              | 打开 PaddleOCR 窗口                    |
| Ctrl + 5              | 打开视频分类器窗口                       |
| Ctrl + 6              | 打开 3D 点云工作区                     |
| Ctrl + q              | 退出当前应用程序                        |
| Ctrl + i              | 打开图像文件                          |
| Ctrl + o              | 打开视频文件                          |
| Ctrl + u              | 从目录加载所有图像                       |
| Ctrl + e              | 编辑标签                            |
| Ctrl + j              | 切换绘制模式与编辑模式                    |
| Ctrl + c              | 复制选定的对象                         |
| Ctrl + v              | 粘贴选定的对象                         |
| Ctrl + d              | 快速复制选定对象                        |
| Ctrl + g              | 显示当前任务的标注统计                     |
| Ctrl + h              | 显示或隐藏当前图片的所有对象                  |
| Ctrl + p              | 切换保留上一个模式                       |
| Ctrl + y              | 切换自动使用上一个标签                     |
| Ctrl + Shift + g      | 切换自动使用上一个群组编号                   |
| Ctrl + b              | 唤醒批量标注                          |
| Ctrl + a              | 启用自动标注                          |
| Ctrl + s              | 保存当前标注                          |
| Ctrl + m              | 显示/隐藏掩码                         |
| Ctrl + l              | 显示/隐藏标签                         |
| Ctrl + t              | 显示/隐藏文本                         |
| Ctrl + Shift + t      | 显示/隐藏图片标签面板                    |
| Ctrl + k              | 显示/隐藏连接线                        |
| Ctrl + Shift + l      | 显示/隐藏属性                         |
| Ctrl + Shift + s      | 更改输出目录                          |
| Ctrl + z              | 撤销上一操作                          |
| Ctrl + =              | 缩放至原始大小                         |
| Ctrl + +              | 放大                              |
| Ctrl + f              | 适应窗口                            |
| Ctrl + Shift + f      | 适应宽度                            |
| Ctrl + Shift + m      | 合并选定的对象                         |
| Ctrl + Shift + n      | 遍历放大对象                          |
| Ctrl + Shift + c      | 遍历选中对象                          |
| Delete                | 删除选中对象                          |
| Esc                   | 取消选择的对象                         |
| Backspace             | 删除选定的点                          |
| ↑→↓←                  | 使用键盘箭头移动选定的对象                   |
| z/x/c/v               | 使用键盘旋转选定的旋转框                    |
| F9                    | 显示/隐藏导航器                        |
| Ctrl + Alt + c        | 切换对比视图                          |


### 7.2 修改自定义标签颜色

可以通过标签管理器或配置文件修改标签颜色。手动编辑 `.xanylabelingrc` 时，将 `shape_color` 设为 `manual`，并在 `label_colors` 中以 RGB 值配置每个标签：

```YAML
...
default_shape_color: [0, 255, 0]
shape_color: manual  # null, 'auto', 'manual'
shift_auto_shape_color: 0
label_colors:
  person: [255, 0, 0]
  car: [0, 255, 0]
  bicycle: [0, 0, 255]
  ...
...
```

也可以在**工具 > 标签管理器**中设置颜色；该方式的更改仅对当前窗口生效。

### 7.3 加载预定义标签

为了兼顾标签管理的灵活性与用户在不同场景下的使用需求，X-AnyLabeling 在支持通过软件启动命令加载标签的基础上，还提供了另外两种便捷方式，用于加载预定义标签。

**方式一：通过配置文件设置（永久生效）**

直接修改配置文件中的 `labels` 字段来设置标签。需要注意的是，如果标签名称是纯数字，请务必用单引号 `''` 括起来。例如：

```yaml
labels:
- car
- '1'
- '2'
- 苹果
- _phone
```

**方式二：通过界面上传（临时生效）**

只需准备一个简单的文本文件（`.txt`），将标签名称逐行列出：

```txt
person
car
bicycle
dog
cat
```

然后通过菜单栏的 `Upload` → `Upload Label Classes File` 上传该文件。

> [!TIP]
> 配置文件中的标签会持久保存；通过界面上传的标签仅在当前会话中有效，重启后需要重新上传。

### 7.4 自动切换编辑模式

用户可通过 `Settings > General > Behavior > Auto Switch To Edit Mode` 调整**自动切换至编辑模式**功能，也可通过配置文件中的 `auto_switch_to_edit_mode` 字段进行设置：


| 选项    | 功能                        |
| ----- | ------------------------- |
| true  | 创建对象后自动切换为编辑模式。           |
| false | 支持连续创建多个同类型对象，需手动切换为编辑模式。 |


### 7.5 悬浮自动高亮模式

用户可通过 `Settings > General > Behavior > Auto Highlight Shape` 调整**悬浮自动高亮模式**功能，也可通过配置文件中的 `auto_highlight_shape` 字段进行设置：


| 选项    | 功能                           |
| ----- | ---------------------------- |
| true  | 鼠标悬浮在对象上方时自动高亮，用于快速调整当前选中对象。 |
| false | 鼠标悬浮在对象上方时需用户手动点击对应对象显示高亮。   |


> [!NOTE]
> 在多标签分类任务中手动上传属性文件后，`auto_highlight_shape` 会设为 `false`，避免鼠标悬浮导致属性面板意外切换。

### 7.6 对象属性自定义

可先在 `Settings > Shape` 中调整常用外观选项。如需更细粒度的控制，可编辑 `.xanylabelingrc` 中的 `shape` 字段，例如边框、填充和顶点颜色：

```YAML
...
shape:
  # drawing
  line_color: [0, 255, 0, 128]
  fill_color: [220, 220, 220, 150]
  vertex_fill_color: [0, 255, 0, 255]
  # selecting / hovering
  select_line_color: [255, 255, 255, 255]
  select_fill_color: [0, 255, 0, 155]
  hvertex_fill_color: [255, 255, 255, 255]
  point_size: 10
  line_width: 4
...
```

### 7.7 模型下载源配置

X-AnyLabeling 支持从不同的模型中心下载预训练模型。用户可以通过设置环境变量、在 `Settings`（`Ctrl+0`）中修改 `General > Behavior > Model Hub`、修改配置文件 `.xanylabelingrc` 或根据软件语言来指定模型下载源。下载源的优先级顺序如下：

1. **环境变量（最高优先级）**：设置环境变量 `XANYLABELING_MODEL_HUB`。
  - 例如，在 Linux/macOS 使用 `export XANYLABELING_MODEL_HUB=modelscope`。
  - 在 Windows 使用 `set XANYLABELING_MODEL_HUB=modelscope`。
  - 如果此环境变量设置为 `modelscope`，将强制使用 ModelScope，覆盖配置文件的设置。如果设置为其他值或为空，则会考虑配置文件。
2. **配置文件（中等优先级）**：通过 `Settings`（`Ctrl+0`）修改 `General > Behavior > Model Hub`，或打开用户目录下的配置文件 `.xanylabelingrc`。
  - 找到 `model_hub` 字段。
  - 可选值为 `github` (默认) 或 `modelscope`。
  - 如果环境变量 `XANYLABELING_MODEL_HUB` 未设置或为空，则此配置生效。设置为 `model_hub: modelscope` 将优先从 ModelScope 下载模型。
3. **语言设置（最低优先级）**：仅当环境变量未设置，且配置文件中的 `model_hub` 为空或不存在时，中文界面（`language: zh_CN`）才会默认使用 ModelScope；其他语言使用配置中的原始下载 URL。

### 7.8 主题设置

X-AnyLabeling 支持三种主题模式，可在菜单栏一级 **Theme** 菜单中切换：


| 选项               | 说明                           |
| ---------------- | ---------------------------- |
| **System（跟随系统）** | 自动检测操作系统的深色/浅色偏好并应用对应主题，为默认值 |
| **Light（浅色）**    | 始终使用浅色主题                     |
| **Dark（深色）**     | 始终使用深色主题                     |


切换后会弹出确认对话框，点击 **OK** 保存设置。应用不会自动重启，随后会提示重启后生效；点击 **Cancel** 则放弃本次切换。

也可直接修改用户配置文件 `~/.xanylabelingrc` 中的 `theme` 字段：

```yaml
theme: auto  # 可选: auto, light, dark
```

### 7.9 字体设置

在 `Settings > General > Application Font` 中，可从下拉列表选择应用字体。列表会通过 Qt 自动扫描当前系统可用的字体，支持 Windows、macOS 和 Linux。选择字体并点击 **Save** 后会立即全局生效，无需重启；选择 **System Default（系统默认）** 可恢复操作系统默认字体及字号。

字体设置会保存到用户配置文件的 `font_family` 字段，也可手动修改：

```yaml
font_family: null  # null 表示使用系统默认字体，也可填写字体名称，如 "Sarasa UI SC"
```

手动填写的字体名称必须已安装在当前系统中；若字体不可用，Qt 将自动回退到系统默认字体。

## 8. 任务

### 8.1 图像分类

- 图像级分类：[链接](../../examples/classification/image-level/README.md)
- 对象级分类：[链接](../../examples/classification/shape-level/README.md)

### 8.2 目标检测

- 水平目标检测：[链接](../../examples/detection/hbb/README.md)
- 旋转目标检测：[链接](../../examples/detection/obb/README.md)

### 8.3 图像分割

- 语义分割 & 实例分割：[链接](../../examples/segmentation/README.md)

### 8.4 姿态估计

- 关键点检测：[链接](../../examples/estimation/pose_estimation/README.md)

### 8.5 人脸估计

- 人脸检测与关键点：[链接](../../examples/estimation/face_estimation/README.md)

### 8.6 多目标跟踪

- 多目标跟踪：[链接](../../examples/multiple_object_tracking/README.md)

### 8.7 深度估计

- 深度估计：[链接](../../examples/estimation/depth_estimation/README.md)

### 8.8 光学字符识别

- 文本检测与识别：[链接](../../examples/optical_character_recognition/text_recognition/README.md)
- 关键信息提取：[链接](../../examples/optical_character_recognition/key_information_extraction/README.md)

### 8.9 交互式视频目标分割

- SAM 2 Video：[链接](../../examples/interactive_video_object_segmentation/sam2/README.md)
- SAM 3 Video：[链接](../../examples/interactive_video_object_segmentation/sam3/README.md)

### 8.10 抠图

- 图像抠图：[链接](../../examples/matting/image_matting/README.md)

### 8.11 视觉基础模型

- Rex-Omni: [链接](../../examples/vision_foundation/rexomni/README.md)
- Florence 2：[链接](../../examples/vision_foundation/florence2/README.md)
- LocateAnything：[链接](../../examples/vision_foundation/locateanything/README.md)
- GroundingPI / GroundAnything / GroundAnything-VLM: [链接](../../examples/vision_foundation/groundingpi/README.md)

### 8.12 目标计数

- GeCo：[链接](../../examples/counting/geco/README.md)
- GeCo2：[链接](../../examples/counting/geco2/README.md)

### 8.13 视觉定位

- YOLOE：[链接](../../examples/grounding/yoloe/README.md)
- SAM 3：[链接](../../examples/grounding/sam3/README.md)

## 9. 模型

关于如何加载和导出模型可参阅[自定义模型文档](./custom_model.md)。

## 10. 高级功能

- 远程推理服务指南：[链接](https://github.com/CVHub520/X-AnyLabeling-Server)
- 聊天机器人：[链接](./chatbot.md)
- 视觉问答：[链接](./vqa.md)
- 图像分类器：[链接](./image_classifier.md)
- 视频分类器：[链接](./video_classifier.md)
- Ultralytics 训练平台：[链接](../../examples/training/ultralytics/README.md)
- 文档解析与智能文字识别：[链接](./paddle_ocr.md)
- 3D 点云标注：[链接](./point_cloud.md)

---

### Zh Cn Video Classifier (`docs/zh_cn/video_classifier.md`)

# 概述

X-AnyLabeling 的视频分类器是面向动作识别和视频片段分类数据集的独立标注窗口。它支持加载视频、维护类别标签、在时间轴上创建片段、为每个片段分配类别、预览帧，并可导出按类别整理的视频片段或抽帧数据。

<video src="https://github.com/user-attachments/assets/33a57390-683d-4a24-b0cf-3668af5f7a13" width="100%" controls>
</video>

# 启动

可以从主窗口工具栏打开视频分类器，也可以使用配置中的快捷键：

- Windows/Linux：`Ctrl` + `5`
- macOS：`⌘` + `5`

打开窗口后，可以将视频拖入窗口，或点击预览区底部的打开视频按钮加载文件。常见视频格式如 `mp4`、`avi`、`mov`、`mkv`、`webm` 均可使用。

预览区右上角的教程图标会打开 GitHub 上的当前教程，旁边的快捷键图标会在窗口内弹出快捷键对照表。

# 教程

视频分类器主要由三块区域组成：

- 左侧预览区：显示当前视频帧、播放控制、AI 自动切分、保存当前帧、预览缩放、快捷键说明、教程入口和数据集导出入口。
- 右侧面板：管理标签、片段列表和片段描述。
- 底部时间轴：显示缩略图、时间刻度、播放头以及可编辑的标注片段。

## 标签

开始标注前，建议先在右侧的 Labels 面板准备好本次任务需要的类别。每个标签都会分配一个颜色，后续在时间轴和片段列表中都会沿用这套颜色，浏览长视频时更容易看出不同类别的分布。

点击添加按钮可以新增标签；如果需要重命名、调整颜色、批量导入或删除标签，可以进入标签设置。前十个标签会在名称后显示 `(0)` 到 `(9)`，标注时按对应数字键即可快速切换当前标签。

创建片段时会使用当前选中的标签。如果删除某个标签，已经使用该标签的片段也会一并删除，请在确认不再需要这些片段后再操作。

> [!TIP]
> 如果类别较多，可以提前准备一个 `classes.txt` 文件，每行写一个类别名称。进入右侧 Labels 面板的标签设置后，点击上传即可一次性导入。

## 创建片段

片段从时间轴标尺区域创建：

1. 在 Labels 面板中选择目标标签。
2. 将鼠标移动到时间轴上方的标尺区域。
3. 按住鼠标右键拖动到目标时间范围，松开后创建片段。
4. 新片段会使用当前选中的标签。

如果当前没有选中标签，软件会提示先选择或创建标签。

也可以使用 `I` 和 `O` 标记入点与出点，然后按 `Enter` 根据标记范围创建片段。

## AI 配置

视频分类器中的 AI 自动切分和片段描述生成功能共用[聊天机器人](./chatbot.md)中配置的模型。首次使用前，请先打开聊天机器人（Windows/Linux：`Ctrl` + `1`，macOS：`⌘` + `1`），在右侧设置 API Key、服务商、接口地址和当前模型。

以阿里云百炼的 `qwen3.6-flash` 为例，可以在 Chatbot 中选择 Qwen 提供商，填写百炼 API Key，并将当前模型设置为 `qwen3.6-flash`。如果通过 Custom 提供商接入兼容 OpenAI API 的端点，请确保接口地址与服务商要求一致，例如百炼兼容模式通常使用：

```text
https://dashscope.aliyuncs.com/compatible-mode/v1
```

> [!NOTE]
> 请自行确认当前选择的模型是否支持视频理解。不同服务商、不同模型对视频文件大小、时长、帧率、输入方式和计费方式的限制可能不同；以阿里云百炼为例，可以参考 [图像与视频理解](https://help.aliyun.com/zh/model-studio/vision?userCode=okjhlpr5#006b533c6cc0) 文档查看视频相关限制。

## AI 自动切分

如果已经在 Chatbot 中配置好支持视频理解的模型，可以点击预览区底部的魔法棒按钮，让 AI 根据视频内容自动生成片段。弹窗中会显示当前使用的模型，并提供可编辑的 Prompt。界面语言为中文时会默认填充中文模板，其他语言下会默认填充英文模板。

AI 自动切分支持两种输入范围：

- 选中片段时，默认只把当前选中片段发送给模型，并用模型返回的新片段替换该片段。
- 勾选 `Use full video` 时，会把整段视频发送给模型。若当前视频已经存在片段，继续前会提示确认，确认后会用 AI 生成的片段覆盖现有片段。

模型需要返回 JSON，例如：

```json
{
  "events": [
    {
      "start_time": "00:00:00",
      "end_time": "00:00:05",
      "event": "人物手持一个纸箱走向桌子，并将纸箱放在桌上。"
    }
  ]
}
```

其中 `start_time` 和 `end_time` 使用 `HH:mm:ss` 格式，`event` 会写入片段描述。若当前已经选中某个标签，生成片段会使用该标签；如果没有选中标签，则会自动使用 `片段1`、`片段2` 这样的内置标签名称。

## 编辑片段

已有片段可以直接在时间轴或片段列表中编辑。

| 操作 | 结果 |
|------|------|
| 单击片段 | 选中片段，并跳转播放帧到片段起始位置 |
| 双击片段 | 修改标签类别和片段描述 |
| 鼠标左键按住片段并拖动 | 移动片段 |
| 拖动片段左边缘或右边缘 | 调整片段起止时间 |
| Delete/Backspace | 删除选中的片段 |
| 剪刀按钮 | 在播放头位置切分选中的片段 |
| 撤销/重做 | 回退或恢复片段编辑 |

Segments 列表会与时间轴保持同步。点击某个片段时，播放帧会自动跳转到该片段的起始位置。

当光标位于片段区域时，界面会提示双击可编辑标签和描述，鼠标左键按住可拖动片段。

选中片段后，可以在右侧 Description 面板中编辑描述。Description 标题右侧的魔法棒按钮可以调用 Chatbot 中配置的 AI 模型，为当前片段自动生成描述。生成前会弹出 Prompt 编辑窗口，用户可以查看当前模型并调整 Prompt；生成过程中可以取消等待。该功能只修改当前片段的描述，不会改变片段的起止时间或标签。

## 播放与导航

可以使用底部控制按钮或快捷键进行逐帧检查。同样的快捷键对照表也可以从预览区右上角的快捷键图标打开。

| 快捷键 | 功能 |
|--------|------|
| Space | 播放或暂停 |
| Left/Right | 向后/向前移动一帧 |
| Shift + Left/Right | 向后/向前跳转一秒 |
| `,`/`.` | 跳转到上一个或下一个片段 |
| I/O | 标记入点/出点 |
| Enter | 根据入点和出点创建片段 |
| Delete/Backspace | 删除选中的片段 |
| Ctrl+S 或 ⌘+S | 保存 sidecar 标注文件 |
| Ctrl+Z 或 ⌘+Z | 撤销 |
| Ctrl+Shift+Z 或 ⌘+Shift+Z | 重做 |
| 0-9 | 选择对应编号的标签 |

时间轴支持缩放按钮，也支持在时间轴上使用 `Ctrl` + 鼠标滚轮缩放。长视频可以通过底部水平滚动条查看不同时间段。

将光标移动到时间轴标尺区域时，会显示按住鼠标右键拖动并释放以创建片段的提示。该提示只会出现在时间轴交互区域，不会覆盖缩略图片轴。

## 导出

完成片段标注后，点击预览区底部的 Export dataset 可以导出当前视频的标注结果。导出内容会按类别整理，便于后续检查、打包或接入自己的训练流程。

导出窗口中的选项含义如下：

| 选项 | 说明 |
|------|------|
| `Output` | 选择导出目录。默认会在视频所在目录下创建与当前视频 basename 同名的文件夹，例如 `sample.mp4` 默认导出到 `sample/`。 |
| `Video clips` | 将每个片段导出为 `.mp4` 文件，并按标签名称放入对应类别目录。 |
| `Raw frame sequences` | 将每个片段导出为 `img_00001.jpg` 形式的图片序列。 |
| `RawFrames FPS` | 设置抽帧帧率。填 `0` 表示使用源视频帧率。 |
| `Re-encode clips` | 重新编码片段，导出速度会慢一些，但起止位置更准确；关闭后会优先使用更快的 stream copy。 |
| `Pack output as .zip` | 导出完成后，在输出目录旁生成同名 zip 压缩包。 |

输出目录结构如下：

```bash
sample/
├── videos/
│   ├── label_a/
│   │   ├── sample_s000001.mp4
│   │   └── sample_s000002.mp4
│   └── label_b/
│       └── sample_s000003.mp4
├── rawframes/
│   ├── label_a/
│   │   └── sample_s000001/
│   │       ├── img_00001.jpg
│   │       └── img_00002.jpg
│   └── label_b/
│       └── sample_s000003/
│           ├── img_00001.jpg
│           └── img_00002.jpg
├── label_map.txt
└── metadata.json
```

视频片段切分和抽帧都由 `ffmpeg` 完成。X-AnyLabeling 会优先使用系统中的 `ffmpeg`，如果未检测到，也会尝试使用 `imageio-ffmpeg` 提供的可执行文件；两者都不可用时，导出功能无法继续。

# 数据格式

视频标注会保存为与视频同名的 sidecar JSON 文件。例如，`sample.mp4` 对应 `sample.json`。

```json
{
  "version": "1.0.0",
  "type": "video_classification",
  "video": "sample.mp4",
  "fps": 30.0,
  "duration_ms": 120000,
  "width": 1920,
  "height": 1080,
  "labels": ["run", "walk"],
  "label_colors": {
    "run": "#ff7f0e",
    "walk": "#1f77b4"
  },
  "segments": [
    {
      "id": "s1234567890",
      "label": "run",
      "start_ms": 1000,
      "end_ms": 3500,
      "start_frame": 30,
      "end_frame": 105,
      "description": "人物听到哨声后开始奔跑。"
    }
  ]
}
```

---

### Zh Cn Vqa (`docs/zh_cn/vqa.md`)

# 概述

X-AnyLabeling 的视觉问答工具用于标注多模态图像问答数据集。它支持创建图像对应的问题与答案，提供多种可配置的输入组件，并集成 AI 辅助功能，可为监督微调、强化学习后训练等任务准备结构化数据。

<video src="https://github.com/user-attachments/assets/53adcff4-b962-41b7-a408-3afecd8d8c82" width="100%" controls>
</video>

# 启动

要打开视觉问答工具，请先确保主窗口图像目录已加载，随后点击主窗口左侧工具栏中的视觉问答图标或使用如下快捷键快速启动 VQA 对话窗口。

- Windows/Linux: `Ctrl` + `2`
- macOS: `⌘` + `2`

每次启动时，系统会自动从下述路径加载默认配置，用户可按需修改：

```bash
~/xanylabeling_data/vqa/components.json
```

# 教程

视觉问答工具采用双面板设计，左侧为图像预览区域，右侧为标注控制区域。

<img src="../../assets/resources/vqa/entire_panel.png" width="100%" />

## 左侧面板：图像预览区

- **文件名与进度指示**：显示当前图像文件名及其在数据集中的位置（如 `000000000154.jpg (33/128)`）。
- **图像预览区域**：居中显示图像，支持自适应缩放。
- **面板打开/隐藏**：点击侧边栏图标可展开或收起左侧面板。

## 右侧面板：标注控制区

* **功能组件区**：

| 功能按钮 | 说明 |
|----------|------|
| Export Labels | 导出标注数据为 JSONL 格式 |
| Clear All | 清除当前图像的所有标注项 |
| Add Component | 新增标注组件 |
| Del Component | 删除已配置组件 |

* **标注组件区**：

| 组件名称 | 组件类型 | 说明 |
|----------|------| ------|
| 文本输入框 | QLineEdit | 用于开放式问答，如图像描述、详细回答等 |
| 单选按钮组 | QRadioButton | 适用于单选题，如任务类型选择、数据集划分等，仅支持单选 |
| 复选框组 | QCheckBox | 适用于多选题，如图像标签、属性标记等，支持多选 |
| 下拉菜单 | QComboBox | 适用于选项较多的单选场景，支持自定义选项列表 |

<div style="display: flex; justify-content: space-between;">
  <img src="../../assets/resources/vqa/add_compone.png" width="56%" />
  <img src="../../assets/resources/vqa/del_compone.png" width="43%" />
</div>

文本输入框组件支持 AI 辅助标注。使用前，请先按照[聊天机器人文档](./chatbot.md)完成模型配置。

<img src="../../assets/resources/vqa/chatbot.png" width="100%" />

完成配置后，点击标题栏右侧的魔法棒图标即可打开 AI 对话框。

<img src="../../assets/resources/vqa/assistance.png" width="100%" />

系统支持纯文本和图文多模态智能提示功能，提供以下特殊引用符：

**基础引用**

- `@image`：引用当前图像，AI 将理解并分析图像内容
- `@text`：引用当前文本输入框中的已有内容

**跨组件引用**

- `@widget.组件名称`：引用其他 QLineEdit 组件的值，如 `@widget.question` 引用名为 "question" 的组件内容

**标注数据引用**

- `@label.shapes`：引用当前图像的所有标注对象信息
- `@label.imagePath`：引用图像文件路径
- `@label.imageHeight`：引用图像高度
- `@label.imageWidth`：引用图像宽度
- `@label.flags`：引用标注标记

**使用示例**

```
描述图像中的对象：@image
结合现有标注分析：@image 基于标注信息 @label.shapes 进行分析
引用其他组件：根据问题 "@widget.question" 生成答案
```

为了提高标注效率和提示词的复用性，我们还提供了强大的提示模板库功能。系统预置了一些常用的基础提示模板，同时用户也可以根据具体项目需求，灵活地添加、编辑和删除自定义提示词。这些模板可以帮助用户快速构建高质量的提示，提升标注效率。

<img src="../../assets/resources/vqa/add_template.png" width="100%" />

鼠标悬停在提示文本上方时，系统会以悬浮提示的形式展示完整的提示内容，方便快速预览。对于用户自定义的提示词，你可以通过双击提示文本字段来快速编辑和修改提示的标题与具体内容。

<img src="../../assets/resources/vqa/template_gallery.png" width="100%" />

# 数据

X-AnyLabeling 采用自动保存机制，确保您的标注工作不会丢失。标注数据会以 JSON 格式自动保存在与图像文件相同的目录下。对于本任务，所有标注信息都被组织在标签文件的 `vqaData` 字段中。该字段包含了通过各类配置组件采集的所有标注数据，形成结构化的数据存储：

```json
{
  "version": "3.2.1",
  "flags": {},
  "shapes": [],
  ...
  "vqaData": {
    "question": "How many zebras are there here?",
    "answer": 3,
    "split": "train",
    "task": "Counting",
    "tags": [
      "natural"
    ]
  },
  "imagePath": "0000000000154.jpg",
  "imageHeight": 640,
  "imageWidth": 480
}
```

完成标注任务后，您可以点击 `Export Labels` 按钮导出标注数据。导出对话框提供了灵活的字段选择选项，主要包含以下两类：

- **基础字段**：包含图像文件名称以及相应的宽高信息
- **自定义组件字段**：包含所有已配置的自定义组件及其对应的标注数据

<img src="../../assets/resources/vqa/export.png" width="100%" />

导出数据默认采用 `JSONL` 格式，每行包含一条完整的标注记录。以下是导出文件的示例内容：

```jsonl
{"image": "0000000000154.jpg", "width": 640, "height": 480, "question": "图像中有几只斑马？", "answer": 3, "split": "train"}
{"image": "0000000000155.jpg", "width": 640, "height": 480, "question": "猫在做什么？", "answer": "睡觉", "split": "val"}
```

---

--- METRICS ---
- Files Extracted: 25
- Estimated Token Budget: ~134514 tokens
- Canonical Reference: https://codewiki.google/github.com/CVHub520/X-AnyLabeling
