# 用户手册

本指南提供了使用 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-对比视图)
   * [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-模型下载源配置)
   * [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 Grounding](#812-grounding)
   * [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) 快速切换到上一张或下一张图片。

除了常规的切换图片操作外，还支持以下几种方式：

| 快捷键 | switch_to_checked | 描述 |
|--------|------|------|
| Ctrl+Shift+A | true | 跳转到上一张已标注的图片 |
| Ctrl+Shift+D | true | 跳转到下一张已标注的图片 |
| Ctrl+Shift+A | false | 跳转到上一张未标注的图片 |
| Ctrl+Shift+D | false | 跳转到下一张未标注的图片 |

这里，`switch_to_checked` 字段定义了不同的切换模式，可在用户目录下的 `~/.xanylabelingrc` 文件中修改。

文件列表中的复选框默认不可编辑，如需启用编辑功能，可在配置文件中将 `file_list_checkbox_editable` 设置为 `true`。

### 1.4 保存标签数据

X-AnyLabeling 默认开启自动保存功能，用户在初次启动界面时，可点击菜单栏中的 `文件` 下拉框查看 `自动保存` 选项是否被勾选。

标签文件默认保存在当前图片目录下，文件格式为 `*.json`，模板如下：

```json
{
  "version": "${version}", // X-AnyLabeling 版本号
  "flags": {},             // 图片级标志 (如果存在)
  "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,      // 图片的文本描述
  "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]]`，若无此信息则为空字典 `[]`。   |

此外，对于一些特殊的属性定义，可参考此[文件](../../anylabeling/views/labeling/shape.py)。

当前，X-AnyLabeling 支持创建以下形状类型的对象：

- **rectangle**（R）：通过左键单击开始绘制，移动光标，左键再次单击结束矩形框绘制；
- **rotation**（O）：通过左键单击开始绘制，移动光标，左键再次单击结束旋转框绘制；
- **polygon**（P）：通过左键单击开始绘制，沿着物体边缘点击添加分割点，光标移动到起始顶点处单击即可结束绘制。当前最少需绘制 3 个顶点。
- **point**：通过左键单击即可直接创建关键点；
- **line**：通过左键单击开始绘制，移动光标，左键再次单击即可结束单线段绘制；
- **linestrip**：通过左键单击开始绘制，移动光标再次单击创建线段，左键双击即可结束多线段绘制；
- **circle**：通过左键单击开始绘制，移动光标确定半径，左键再次单击即可结束圆形绘制；

用户可通过左侧菜单栏中的对应功能选项、鼠标右键或快捷键进行操作。

### 2.2 编辑对象

当前，X-AnyLabeling 中定义了两种对象操作模式，即 **绘制模式** 和 **编辑模式**。

- **绘制模式**：在绘制状态下，可进行对象的快速创建；
- **编辑模式**：在编辑状态下，可进行对象的编辑（Ctrl+E）、撤销（Ctrl+Z）、复制（Ctrl+C）、粘贴（Ctrl+V）、删除（Delete）、移动、缩放、旋转等操作。

用户可通过快捷键 `Ctrl+J` 在绘制模式与编辑模式之间快速切换。此外：

- 对于矩形框对象，可通过四个角点调整大小；支持多选并通过右键菜单中的合并选中对象进行合并。另外也支持鼠标滚轮编辑功能，可在用户配置文件中设置（`wheel_rectangle_editing`）：启用后，滚轮在矩形内可缩放，在外部可调整对应边缘位置。注意：当启用 `auto_highlight_shape` 时，滚轮矩形编辑将自动关闭。
- 对于多边形框对象，可通过在边上拖拽新增一个新的顶点或按住 `Shift` 键配合鼠标左键移除选中顶点（编辑模式下），同样也支持多对象合并。
- 对于旋转框对象，可先单击选中目标，并通过 `Z`、`X`、`C`、`V` 控制对象的旋转角度和方向。此外，也支持显示实时的旋转角度预览。

此外，用户可通过右键菜单中的 **复制坐标** 功能快速复制当前选中对象的坐标信息到剪贴板。对于矩形框，输出格式为 `[x1, y1, x2, y2]`（左上角和右下角坐标）；对于其他形状类型，输出格式为 `[x1, y1, x2, y2, x3, y3, ...]`（所有顶点坐标）。

> [!TIP]
> X-AnyLabeling 提供两个便捷的对象浏览功能：
> - **遍历放大对象**（Ctrl+Shift+N）：依次放大显示画布中的每个对象，便于逐一检查标注质量。
> - **遍历选中对象**（Ctrl+Shift+C）：依次选中画布中的每个对象，便于快速编辑或管理标注。

### 2.3 编辑标签

当用户创建（未勾选`自动使用上一个标签`）或编辑一个对象时，默认弹出一个标签编辑框，用于编辑对象的标签信息。

字段 | 描述
---- | ----
对象标签 | 输入当前对象的类别标签，支持模糊搜索。
群组编号 | 用于关键点检测、多目标跟踪等特定任务。
困难标签 | 标识当前对象是否难以识别。
标签列表 | 展示当前已添加的标签列表，默认按字母序排列。
标签描述 | 附加的标志信息，用于存储额外的状态或属性，若无此信息则为 `null`。
标签连接 | 用于标识关键信息提取-关系抽取任务中的连接字段。

### 2.4 编辑图片

当前，X-AnyLabeling 支持对当前图片进行 `Caption` 描述。具体操作是打开编辑模式，点击图片空白处，在右侧的 `Description` 区域填充图片描述。

### 2.5 搜索图片

X-AnyLabeling v3.3.5+ 引入了强大的文件搜索功能，支持多种搜索模式，帮助用户快速定位目标图片。在右侧文件列表上方的搜索框中输入搜索条件，按回车键执行搜索。

当前支持的搜索模式包括：

**文本搜索**

直接输入文本内容，系统会在文件名中查找包含该文本的文件。例如输入 `test` 可以找到所有文件名包含 "test" 的图片。

**正则表达式搜索**

使用 `<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`（旋转框）、`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`：查找包含非空描述的图片

## 3. 视图

本章节将向您展示如何在 X-AnyLabeling 中优化和自定义图像及标注对象的显示效果，包括画布和图片的可视化调整，以及对象信息的可视化设置，确保您的标注工作既高效又直观。

### 3.1 画布可视化

当前，X-AnyLabeling 支持以下对画布的操作：

- **放大**（Ctrl++）
- **缩小**（Ctrl+-）
- **重置**（Ctrl+0）

除了可以在左侧窗口设置缩放比例和使用快捷键触发外，还可以通过按住 `Ctrl` 键并配合鼠标滚轮对感兴趣的区域进行局部缩放操作，用于精细化和小目标对象标注。如果您想将此更改应用到全局，请务必勾选 `视图` 下拉选项中的 `保留先前的缩放比例` 选项。

### 3.2 图片可视化

<p align="center">
  <img src="../../assets/resources/brightness_contrast.png" alt="Brightness-Contrast">
</p>

X-AnyLabeling 支持对当前图片进行色彩调整。具体操作如下：

- 在界面上方菜单栏中的 `视图` 下拉选项中选择 `亮度对比度` 选项，调整合适的亮度和对比度，以获得更好的视觉效果。
- 如果想将此更改应用到全局，请勾选 `视图` 下拉选项中的 `保持当前亮度` 和 `保持当前对比度` 选项。

此外，当光标移动时，GUI 界面底部的信息栏会实时显示当前图片的文件名及标注进度。

### 3.3 对象可视化

对象可视化功能包括显示当前图片中已标注对象的文本描述（Ctrl+T）、标签名称（Ctrl+L）、分组编号、旋转角度、预测分数等信息。

用户可以通过快捷键或者在界面上方菜单栏中的 `视图` 下拉选项中勾选相应功能来进行设置。

同时，当用户将光标移至感兴趣的对象时，GUI 界面底部的信息栏会实时显示当前对象的宽度、高度等信息。

<p align="center">
  <img src="../../assets/resources/filter.png" alt="Brightness-Contrast">
</p>

> [!TIP]
> 在 GUI 界面的右侧中间面板，我们提供了 `标签过滤器` 和 `组编号` 过滤器，方便你筛选显示特定标签或组编号的对象。在 X-AnyLabeling v3.2.4+ 版本中，新增了一键全选/反选当前对象的功能，让你可以更快速地管理和操作多个对象。

### 3.4 十字瞄准线

<p align="center">
  <img src="../../assets/resources/crosshair.png" alt="Brightness-Contrast">
</p>

关于十字瞄准线，用户可以通过界面上方菜单栏中的 `视图` 下拉选项中点击 `设置交叉线` 选项，调整当前十字瞄准线的宽度、透明度及颜色。

此外，当光标移动时，GUI 界面底部的信息栏会实时显示位置坐标信息。

### 3.5 导航器

X-AnyLabeling v3.2.3+ 版本新增了导航器功能，当你处理高分辨率图像时，可以通过导航器快速定位到图像的任意区域。

要打开导航器，只需在菜单栏点击 `视图` -> `导航器` 或直接按快捷键 `F9` 即可。导航器会在独立窗口中显示当前图像的缩略图，并用红色框标出你当前的可视区域。

你可以直接点击缩略图上的任意位置快速跳转，或者拖拽红色框来移动视野。导航器还会实时显示你标注的所有对象，让你对整体进度一目了然。

在导航器底部，你可以通过输入框精确设置缩放比例（支持1%到1000%），也可以拖拽滑动条进行调整。此外，无论是在主画布还是导航器窗口内，都可以直接用鼠标滚轮缩放。

这个功能特别适合处理超大分辨率图像，既能保持局部的精细操作，又不会失去全局视野。

### 3.6 对比视图

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

X-AnyLabeling 提供了对比视图功能，允许你通过分屏界面并排比较两张图像。该功能特别适用包括但不仅限于以下场景：

- **红外与可见光融合**：对比热成像和 RGB 图像，识别在不同光谱下更清晰的目标。
- **掩码预览**：实时查看分割结果与原图的叠加效果。
- **图像超分**：对比增强后的图像与原始图像。

**使用方法：**

1. 打开图像目录并加载图像。
2. 点击 `文件` > `对比视图`（或按 `Ctrl+Alt+C`）打开对比目录选择器。
3. 选择包含对比图像的目录，文件名需与主图像匹配（基础文件名相同，扩展名可不同）。
4. 使用底部滑块调整分割位置，或按住 `Shift` 键并滚动鼠标滚轮移动分割线。
5. 点击滑块上的关闭按钮（×）退出对比视图。

> **注意**：对比图像必须与原图尺寸一致，否则将在状态栏显示警告信息。

## 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，以便 X-AnyLabeling 在导出时能够理解它们之间的从属关系。

> [!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)。
instances_default
### 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)。

**导入任务**：
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 v2.4.0+ 版本提供对应的导出设置，具体可参考以下步骤实施：
1. 点击上方菜单栏的 `导出`-`导出 MOTS 标签` 按钮。
2. 上传准备好的配置文件。
3. 选择保存路径，点击确定即可。

需要注意的是，默认导出的 mots 标签并非最终官方数据集格式，这里我们提供了对应的转换代码，仅供参考：

```bash
python3 tools/label_converter.py --task mots --mode custom_to_gt --src_path /path/to/your/custom_gt.txt
```

> [!NOTE]
> 请执行此脚本之前, 你需要先正确安装对应的 `pycocotools` 库。

### 4.7 PPOCR标签

当前 X-AnyLabeling 最新版本（v2.4.0+）支持一键导入/导出以下两种 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 v3.1.2+ 版本支持一键导入基于 [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：所有类别列表

- 灵活的统计范围
  - 支持选择指定范围内的图像进行统计
  - 可查看单张或多张图像的统计信息
  - 实时更新统计结果

- 多维度数据分析
  - 按标签类别统计：展示每个类别的标注数量
  - 按形状类型统计：包括多边形、矩形、旋转框、点、线条、圆形等
  - 总体数据概览：显示数据集的整体分布情况

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

> 使用说明：
> 1. 点击顶部菜单栏的"工具" -> "数据总览"
> 2. 在弹出的统计窗口中查看数据分布
> 3. 可选择特定范围的图像进行统计
> 4. 点击"导出"按钮将统计结果保存为压缩包

### 5.2 保存子图

子图保存功能可通过以下步骤实施：

1. 点击上方菜单栏的 **工具** -> **保存子图** 选项。
2. 在弹出的对话框中设置：
   - 保存路径：选择子图保存的目标文件夹
   - 最小宽度：设置过滤的最小宽度像素值
   - 最小高度：设置过滤的最小高度像素值
3. 点击确定后，系统会自动将所有标注对象按照类别名称分类导出到指定路径下。

### 5.3 标签管理器

当前，`X-AnyLabeling` 提供对标签对象的全局管理功能。用户可以通过以下操作进行管理：

- **删除标签**：移除不需要的标签。
- **替换标签名称**：更新标签名称以适应新的分类标准。
- **控制标签可见性**：通过 `Visible` 列的复选框控制特定标签在画布上的显示或隐藏。
- **更改标签颜色**：调整标签的显示颜色以提高辨识度。

用户可通过点击 **工具** -> **标签管理器** 选项（快捷键：**Alt+L**），在弹出的标签管理窗口中进行相应操作。

**可见性快捷操作**：
- 在 `Visible` 列上点击鼠标右键，可快速执行以下操作：
  - **Select All**：一键显示所有标签
  - **Deselect All**：一键隐藏所有标签
- 可见性设置会在切换图片时保持，点击 `Go` 按钮确认后生效。

此外，当需要快速选择画布上的所有标注对象时，请按照以下步骤操作：

1. **切换编辑模式**  
   在左侧工具栏中点击选择相应图标（或按快捷键 `Ctrl+E`）进入编辑模式

2. **激活标签列表**  
   在右侧对象标签栏中，使用鼠标左键单击任意一个目标标签

3. **执行全选操作**  
   保持按住 `Shift` 键的同时：
   - 先按 `Home` 键选中当前标签以上的所有对象
   - 再按 `End` 键选中当前标签以下的所有对象

### 5.4 标签类型转换

`X-AnyLabeling` 提供了标签类型转换功能，允许用户在界面上方菜单栏的 **工具** 选项中点击对应的设置项，以完成标签类型的转换。当前支持的标签类型转换包括：

- **矩形框转旋转框**：一键将矩形框标签转换为旋转框标签。
- **旋转框转矩形框**：一键将旋转框标签转换为矩形框标签。
- **多边形框转多边形框**：一键将多边形框标签转换为多边形框标签。
- **多边形框转旋转框**：一键将多边形框标签转换为旋转框标签。

注意：`旋转框转矩形框` 和 `多边形框转多边形框` 操作默认取最大外接矩，因此会丢失一些标签信息，如旋转角度等。这些操作为**不可逆**，请谨慎使用。


### 5.5 数字快捷键管理器

数字快捷键管理器是 X-AnyLabeling 提供的一项实用功能，它允许用户为数字键（0-9）配置快速绘制形状的功能，大幅提高标注效率。通过预先设置数字键对应的绘制模式和标签名称，用户可以在标注过程中一键快速创建所需的标注形状。

在主界面上方菜单栏选择**工具**，然后点击**数字快捷键管理器**选项，或者直接使用快捷键 **Alt+D** 即可打开配置界面。

在数字快捷键管理器对话框中，用户可以看到一个包含所有数字键（0-9）的表格，每行包含以下信息：

- **数字**：表示键盘上的数字键（0-9）
- **绘制模式**：从下拉菜单中选择绘制形状的类型，包括矩形框、多边形、旋转框、圆形、线段、点、折线或空选项
- **标签**：为该形状指定默认标签名称（必填）

**配置快捷键**：选择数字对应的绘制模式，输入该形状的默认标签名称（启用绘制模式后必须填写），然后点击**确定**保存设置。

**重置快捷键**：点击**重置**按钮可清除所有快捷键设置，系统会弹出确认对话框，确认后将清除所有配置。

**使用快捷键**：在标注界面中，直接按下已配置的数字键（0-9），系统会自动切换到对应的绘制模式，并预设标签名称。绘制完成后，标注将自动使用预设的标签名称。

**离线配置**：除了通过GUI界面配置外，用户还可以直接在用户目录下的 `.xanylabelingrc` 配置文件中进行离线配置。配置格式如下：

```yaml
digit_shortcuts:
  0: {mode: polygon, label: person}
  1: {mode: rectangle, label: car}
  2: {mode: rotation, label: truck}
  # 更多配置...
```

通过GUI界面配置的数字快捷键设置会自动同步保存到当前用户目录下的 `.xanylabelingrc` 配置文件中，下次启动软件时会自动加载。同样，如果直接修改配置文件，软件重启后也会自动识别并应用这些更改。

通过合理配置数字快捷键，您可以显著提高标注效率，减少重复操作，特别适合需要频繁切换不同标注类型的场景。

### 5.6 群组编号管理器

群组编号管理器是针对群组编号字段提供的批量管理功能，允许用户对指定范围内的群组编号进行统一修改和删除操作。您可以通过以下两种方式打开：

- 在主界面上方菜单栏选择**工具** -> **群组编号管理器**
- 直接使用快捷键 **Alt+G**

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

### 5.7 对象管理器

对象管理器用于视频帧序列的批量标注处理，通过 **工具 -> 对象管理器** 或快捷键 **Alt+S** 打开。

对话框提供四种操作模式（单选）：

- **删除所有标注**：移除指定帧范围内的所有 JSON 标注文件，图像文件保留。执行后会自动取消对应帧的勾选状态。

- **删除所有图像及标注**：同时删除图像和标注文件。图像文件会移至 `_delete_` 目录作为备份，而非永久删除。完成后文件列表自动刷新。

- **移除选定形状**：从帧范围内查找并移除与当前选中形状匹配的对象。若某帧仅包含匹配对象则删除整个标注文件，否则仅移除匹配部分。使用前需在画布上至少选中一个形状作为匹配模板。

- **添加选定形状**：将当前选中的形状批量复制到指定帧。系统会自动检测边界并跳过超出图像范围的形状，同时避免重复添加已存在的相同对象。若目标帧无标注文件会自动创建，完成后自动勾选对应帧。

使用时需设置起止帧编号：From 默认为当前帧，To 默认为空需手动填写。帧编号对应文件列表序号（从1开始）。点击 Go 后会弹出二次确认，通过后开始执行。移除和添加操作支持进度显示和中途取消。

> ![NOTE]
> 注意删除标注操作不可恢复，删除图像可从备份目录手动恢复。


## 6. 帮助及语言

### 6.1 获取版本信息

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

在界面上方菜单栏中，用户可点击 **帮助** -> **关于** 选项，查看当前版本的详细信息，包括版本号和运行环境等。

### 6.2 设置软件语言

在界面上方菜单栏中，用户可点击 **语言** 下拉框，选择所需语言进行设置。目前支持 **中文** 和 **英文** 两种语言。切换语言后，软件将自动重启，请确保在切换前保存好当前数据，以防数据丢失。


## 7. 用户配置

`X-AnyLabeling` 的用户配置文件默认存放在当前用户目录下的 `.xanylabelingrc` 文件中。您可以通过以下路径找到该文件：

- **Linux**: `~/.xanylabelingrc`
- **Windows**: `C:\Users\<用户名>\.xanylabelingrc`

在该配置文件中，您可以调整各种用户自定义设置，例如界面布局、快捷键配置等。

### 7.1 快捷键设置

当前 X-AnyLabeling 默认的快捷键配置如下，用户可以根据自身需求进行修改，确保避免快捷键冲突：

| 快捷键                 | 功能                                    |
|-----------------------|----------------------------------------|
| d                     | 打开下一个文件                          |
| a                     | 打开上一个文件                          |
| Ctrl + Shift + d      | 打开下一个已标注或未标注的文件                 |
| Ctrl + Shift + a      | 打开上一个已标注或未标注的文件                 |
| p or Ctrl + n         | 创建多边形                              |
| o                     | 创建旋转框                              |
| r or Ctrl + r         | 创建矩形框                              |
| i                     | 运行模型                                |
| q                     | `SAM 模式` 的正样本点                   |
| e                     | `SAM 模式` 的负样本点                    |
| b                     | `SAM 模式` 快速清除提示点               |
| f                     | `SAM 模式` 确认完成                    |
| g                     | 组合选定的对象                         |
| u                     | 取消组合选定的对象                     |
| s                     | 隐藏选定的对象                         |
| w                     | 显示选定的对象                         |
| Alt + d               | 打开数字快捷键管理器                    |
| Alt + g               | 打开群组编号管理器                      |
| Alt + l               | 打开标签管理器，支持批量重命名、删除、显示/隐藏、调整标签颜色 |
| Alt + s               | 打开对象管理器，支持批量新增、删除、移除指定对象 |
| Ctrl + Delete         | 删除当前标签文件                    |
| Ctrl + Shift + Delete | 删除当前图像文件                        |
| Ctrl + 1              | 打开聊天机器人对话窗口                   |
| Ctrl + 2              | 打开视觉问答窗口                     |
| Ctrl + 3              | 打开图像分类器窗口                   |
| 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 + k              | 显示/隐藏连接线                         |
| Ctrl + Shift + l      | 显示/隐藏属性                           |
| Ctrl + Shift + s      | 更改输出目录                           |
| Ctrl + z              | 撤销上一操作                           |
| Ctrl + 0              | 缩放至原始大小                         |
| Ctrl + + or Ctrl +=   | 放大                                   |
| Ctrl + f              | 适应窗口                               |
| Ctrl + Shift + f      | 适应宽度                               |
| Ctrl + Shift + m      | 合并选定的对象                         |
| Ctrl + Shift + n      | 遍历放大对象                         |
| Ctrl + Shift + c      | 遍历选中对象                           |
| Ctrl + z              | 撤销上一操作                           |
| Delete                | 删除选中对象                          |
| Esc                   | 取消选择的对象                         |
| Backspace             | 删除选定的点                           |
| ↑→↓←                  | 使用键盘箭头移动选定的对象             |
| zxcv                  | 使用键盘旋转选定的矩形框               |
| F9                    | 显示/隐藏导航器                       |
| Ctrl + Alt + c        | 切换对比视图                           |


### 7.2 修改自定义标签颜色

以下是修改自定义标签颜色的步骤：

a. 打开用户目录下的配置文件 `.xanylabelingrc`，您可以使用文本编辑器或命令行工具进行编辑。

b. 在配置文件中找到字段 `shape_color`，确保其值设置为 "manual"，这表示您将手动设置标签的颜色。

c. 定位到 `label_colors` 字段，这是一个包含各个标签及其对应颜色的部分。

d. 在 `label_colors` 中，找到您希望修改颜色的标签，例如 "person"、"car"、"bicycle" 等。

e. 使用 RGB 值表示颜色，例如 `[255, 0, 0]` 表示红色，`[0, 255, 0]` 表示绿色，`[0, 0, 255]` 表示蓝色。

f. 将您想要设置的颜色值替换到相应标签的值中，保存文件并关闭编辑器。

具体示例如下：
```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]
  ...
...
```

完成上述步骤后，您已成功修改了自定义标签的颜色。下次在标注过程中使用这些标签时，它们将显示您所设置的颜色。

> 当前 X-AnyLabeling v2.4.0+ 版本支持在 GUI 界面直接设置 `label_colors`。您可以点击菜单栏的 `工具` -> `标签管理` 进行设置，此更改仅对当前窗口生效。

### 7.3 加载预定义标签

为了兼顾标签管理的灵活性与用户在不同场景下的使用需求，X-AnyLabeling 在支持通过软件启动命令加载标签的基础上，还提供了另外两种便捷方式，用于加载预定义标签。

**方式一：通过配置文件设置（永久生效）**

直接修改配置文件中的 `labels` 字段来设置标签。需要注意的是，如果标签名称是纯数字，请务必用单引号 `''` 括起来。例如：

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

**方式二：通过界面上传（临时生效）**

只需准备一个简单的文本文件（`.txt`），将标签名称逐行列出：
```txt
person
car
bicycle
dog
cat
```

然后通过菜单栏的 `Upload` → `Upload Label Classes File` 上传该文件。

🔔 **小贴士：**
- 配置文件方式设置的标签会永久保存，重启软件后依然有效，适合长期使用固定标签集的场景
- 界面上传方式的标签仅在当前使用期间有效，重启后需要重新上传，适合需要经常切换不同标签集的场景

### 7.4 自动切换编辑模式

在 X-AnyLabeling v2.4.0 及以上版本，新增**自动切换至编辑模式**功能，用户可通过配置文件中的`auto_switch_to_edit_mode`字段进行设置：

| 选项            | 功能                                    |
|-------------------|----------------------------------------|
| true   | 创建对象后自动切换为编辑模式。                     |
| false  | 支持连续创建多个同类型对象，需手动切换为编辑模式。  |

### 7.5 悬浮自动高亮模式

在 X-AnyLabeling v2.4.0 及以上版本，新增**悬浮自动高亮模式**功能，用户可通过配置文件中的`auto_highlight_shape`字段进行设置：

| 选项            | 功能                                    |
|-------------------|----------------------------------------|
| true   | 鼠标悬浮在对象上方时自动高亮，用于快速调整当前选中对象。 |
| false  | 鼠标悬浮在对象上方时需用户手动点击对应对象显示高亮。  |

注：在`多标签分类任务`的标定中，当用户手动上传属性文件时，`auto_highlight_shape`字段会被设置为`false`，以避免因误触而导致的属性窗口状态栏的切换，从而提升用户体验。

### 7.6 对象属性自定义

a. 打开用户目录下的配置文件 `.xanylabelingrc`，您可以使用文本编辑器或命令行工具进行编辑。

b. 在配置文件中找到字段 `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 支持从不同的模型中心下载预训练模型。用户可以通过设置环境变量、修改配置文件 `.xanylabelingrc` 或根据软件语言来指定模型下载源。下载源的优先级顺序如下：

1.  **环境变量 (最高优先级)**: 设置环境变量 `XANYLABELING_MODEL_HUB`。
    -   例如，在 Linux/macOS 使用 `export XANYLABELING_MODEL_HUB=modelscope`。
    -   在 Windows 使用 `set XANYLABELING_MODEL_HUB=modelscope`。
    -   如果此环境变量设置为 `modelscope`，将强制使用 ModelScope，覆盖配置文件的设置。如果设置为其他值或为空，则会考虑配置文件。

2.  **配置文件 (中等优先级)**: 打开用户目录下的配置文件 `.xanylabelingrc`。
    -   找到 `model_hub` 字段。
    -   可选值为 `github` (默认) 或 `modelscope`。
    -   如果环境变量 `XANYLABELING_MODEL_HUB` 未设置或为空，则此配置生效。设置为 `model_hub: modelscope` 将优先从 ModelScope 下载模型。

    ```yaml
    language: en_US
    model_hub: github  # 可选: github, modelscope
    ...
    ```

3.  **语言设置 (最低优先级)**:
    -   如果环境变量和配置文件中的 `model_hub` 都没有明确设置为 `modelscope`（即它们未设置、为空或为 `github`），则软件语言设置为中文 (`language: zh_CN`) 时，会默认尝试从 ModelScope 下载模型。
    -   在其他情况下（例如，语言为英文，且没有其他设置指定 `modelscope`），将使用默认的 GitHub URL。


## 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/multiple_object_tracking/README.md)

### 8.6 深度估计

- 深度估计：[链接](../../examples/estimation/depth_estimation/README.md)

### 8.7 光学字符识别

- 文本检测与识别：[链接](../../examples/optical_character_recognition/text_recognition/README.md)
- 关键信息提取：[链接](../../examples/optical_character_recognition/kie/README.md)

### 8.8 交互式视频目标分割

- SAM2-Video: [链接](../../examples/interactive_video_object_segmentation/sam2/README.md)
- SAM3-Video: [链接](../../examples/interactive_video_object_segmentation/sam3/README.md)

### 8.9 抠图

- 图像抠图：[链接](../../examples/matting/image_matting/README.md)

### 8.10 视觉-语言

- Rex-Omni: [链接](../../examples/vision_language/rexomni/README.md)
- Florence 2：[链接](../../examples/vision_language/florence2/README.md)

### 8.11 基于检测与分割的零样本计数

- GeCo：[链接](../../examples/counting/geco/README.md)

### 8.12 Grounding

- 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)
- 聊天机器人：[链接](../zh_cn/chatbot.md)
- 视觉问答: [链接](../zh_cn/vqa.md)
- 图像分类器：[链接](../zh_cn/image_classifier.md)
- Ultralytics 训练平台：[链接](../../examples/training/ultralytics/README.md)
