yolov5训练自己的数据集txt
时间: 2025-05-26 20:04:44 浏览: 6
### 使用YOLOv5训练自定义数据集并生成对应的txt文件
#### 数据标注文件格式
在YOLOv5中,用于目标检测的数据标注文件是以`.txt`格式存储的。每个图像对应一个`.txt`文件,其中每一行表示一个对象的边界框坐标及其类别索引。具体格式如下:
每行的内容由五个数值组成:
`<class_index> <x_center> <y_center> <width> <height>`
- `<class_index>` 是类别的索引编号(从0开始)。例如,如果数据集中有两个类别“猫”和“狗”,则它们分别被标记为0和1。
- `<x_center>` 和 `<y_center>` 表示边界框中心点相对于整个图像宽度和高度的比例位置[^1]。
- `<width>` 和 `<height>` 则是边界框宽高相对于整张图片尺寸的比例。
这些比例值均需归一化到范围 `[0, 1]` 中。计算方法如下:
```python
x_center = (box_xmin + box_width / 2) / image_width
y_center = (box_ymin + box_height / 2) / image_height
width = box_width / image_width
height = box_height / image_height
```
#### 示例
假设有一张分辨率为 `640x480` 的图片,在该图上有一个矩形区域包围了一只猫,其左上角坐标 `(xmin=100, ymin=120)` ,右下角坐标 `(xmax=300, ymax=350)` 。那么这个物体的 `.txt` 文件内容应写成这样:
```
0 0.375 0.395833 0.3125 0.479167
```
解释:
- 类别索引为 `0` (代表 “猫”)
- 归一化的中心点坐标分别为 \( \frac{100+(300-100)/2}{640} = 0.375 \),\( \frac{120+(350-120)/2}{480} = 0.395833 \)
- 宽度和高度分别是 \( \frac{(300-100)}{640}=0.3125\) , \( \frac{(350-120)}{480}=0.479167\)
#### 配置文件设置
为了使YOLOv5能够识别您的自定义数据集,还需要创建一个配置文件来指定路径和其他参数。此文件通常命名为类似于 `custom_dataset.yaml` 并包含以下字段:
```yaml
train: data/custom_dataset/images/train/
val: data/custom_dataset/images/val/
nc: 2 # 数字代表总共有多少种类别
names: ['cat', 'dog'] # 字符串列表给出各个类名
```
这里设置了两个类别:“猫”和“狗”。实际应用时,请根据自己的需求调整上述两项中的数量以及名称数组内的条目数[^2]。
#### 开始训练过程
当准备好所有的必要组件之后——即已有的预处理好的图片、相应的标签TXT文档还有刚刚编辑完成的数据设定档YAML档案,则可以通过命令行启动训练流程。下面展示了一个基本的例子,它选用的是小型版本的基础网络结构(yolov5s),并且指定了GPU设备数目(如果有多个的话)[^3]:
```bash
!python train.py --img 416 --batch 16 --epochs 50 --data custom_dataset.yaml --cfg models/yolov5s.yaml --weights '' --name my_custom_model_run_1
```
阅读全文
相关推荐


















