# 数据准备

## 使用公共数据集

## PASCAL VOC格式

PASCAL VOC格式的目标检测任务标注文件采用XML格式，其中包含了每个目标的位置、类别、难度等信息。具体来说，标注文件中每个目标的信息包括以下几个部分：

1. 目标类别：标注文件中，每个目标都会被赋予一个类别，例如人、狗、汽车等。在XML文件中，类别信息通常保存在`<name>`标签中。
2. 目标边界框：对于目标检测任务，每个目标都会被框定一个边界框，用于表示目标在图像中的位置和大小。边界框通常由四个坐标值表示，即左上角和右下角的(x,y)坐标值。在XML文件中，边界框信息通常保存在`<bndbox>`标签中，其中包括`<xmin>`、`<ymin>`、`<xmax>`、`<ymax>`四个子标签，分别表示边界框的左上角和右下角的x、y坐标值。
3. 目标难度：对于目标检测任务，标注文件中还可能包含目标的难度信息，用于表示该目标在图像中的难易程度。通常，难度信息包括三个等级：easy、medium、hard，分别表示目标在图像中的大小、遮挡程度和视角变化程度等因素的影响程度。

### YOLO格式

YOLO格式的数据集特点是将图像和标注信息保存在一个文本文件中，方便数据的读取和处理。具体来说，YOLO格式数据集中的每个图像对应一个文本文件，文件名与图像文件名相同，只是后缀名为`.txt`。文本文件中包含了每个目标的类别、边界框位置和大小等信息。具体格式如下：

```csharp
<object-class> <x> <y> <width> <height>
```

其中，`<object-class>`表示目标的类别，是一个整数值，对应于数据集中的类别标签；`<x>`和`<y>`表示目标边界框的中心点在图像中的相对位置，是一个0到1之间的浮点数；`<width>`和`<height>`表示目标边界框的宽度和高度在图像中的相对大小，也是0到1之间的浮点数。这些信息以空格分隔，每行表示一个目标。

与其他数据集格式相比，YOLO格式的数据集具有以下优点：

1. 方便读取和处理：YOLO格式的数据集将图像和标注信息保存在同一个文本文件中，方便研究者和开发者进行数据读取和处理。
2. 易于扩展：YOLO格式的数据集可以很容易地扩展到新的类别和数据集，只需添加新的类别标签和对应的标注信息即可。
3. 适用于实时检测：YOLO算法本身就是一种实时目标检测算法，采用YOLO格式的数据集可以更好地适应实时检测的需求。

### MS COCO格式

COCO格式的数据集主要包括以下几个文件：

1. `train2017/`和`val2017/`文件夹：包含训练集和验证集的图像文件，每个文件名对应一个唯一的图像ID。
2. `annotations/instances_train2017.json`和`annotations/instances_val2017.json`文件：包含训练集和验证集的目标实例标注信息，以JSON格式保存。
3. `annotations/instances_train2017.json`和`annotations/instances_val2017.json`文件：包含训练集和验证集的图像信息，以JSON格式保存。

COCO格式的数据集中的每个目标实例都包含以下信息：

1. `id`：目标实例的唯一标识符。
2. `image_id`：目标实例所属的图像ID。
3. `category_id`：目标实例的类别ID。
4. `bbox`：目标实例的边界框信息，包括左上角的坐标和宽度、高度。
5. `area`：目标实例的面积。
6. `iscrowd`：目标实例是否是一组对象。

## 制作自己的数据集

### 安装标注工具

可以使用labelimg标注数据

```
pip install labelimg
```

建议“拥抱”Segment Anything，高效依托SAM实现半自动标注

{% embed url="<https://github.com/zhouayi/SAM-Tool>" %}

### 数据标注方法

LabelImg是一个用于图像标注的开源工具，可以用于创建图像分类、检测和分割等任务的标注数据。以下是LabelImg的使用方法：

1. 下载并安装LabelImg软件。
2. 打开LabelImg软件，点击“Open Dir”按钮选择要标注的图像文件夹。
3. 在左侧的列表中选择要标注的图像，然后点击“Create RectBox”按钮开始标注。
4. 在图像上用鼠标拖拽创建矩形框来标注物体，可以使用“Create Circle”、“Create Line”等按钮创建其他形状的标注。
5. 在标注框上方的“Label”下拉菜单中选择物体类别，并可以在“Annotations”列表中查看已标注的物体。
6. 可以使用“Next Image”、“Prev Image”等按钮切换到下一张或上一张图像进行标注。
7. 完成标注后，点击“Save”按钮保存标注结果，标注结果将保存为XML或YAML格式的文件。
8. 可以使用“View”菜单中的“Auto Save Mode”选项开启自动保存模式，以便在标注过程中自动保存标注结果。
9. 可以使用“View”菜单中的“Change Save Dir”选项更改标注结果保存的文件夹。
10. 可以使用“View”菜单中的“Zoom In”、“Zoom Out”等选项调整图像的缩放比例，以便更好地标注物体。

<figure><img src="https://3201209864-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkMYrQMMPupnihEKpoldT%2Fuploads%2FQTMmUoAXVPmcAEWaxbFs%2Fimage.png?alt=media&#x26;token=eb164db0-b308-48bd-b2d3-1e40552e1a67" alt=""><figcaption></figcaption></figure>

### 数据集准备

**本文使用VOC格式进行训练，训练前需要自己制作好数据集。**

coco、yolo等格式数据可使用data\_process文件夹下的代码做格式转换。\
建议将标签文件放在VOCdevkit文件夹下的VOC2007文件夹下的Annotation中；将图片文件放在VOCdevkit文件夹下的VOC2007文件夹下的JPEGImages中。

####


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://hhu-leons-organization.gitbook.io/uav_lodboost_docs/quick-start/shu-ju-zhun-bei.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
