如何使用yolov8训练模型json标注
时间: 2025-05-30 22:19:51 浏览: 15
### 使用YOLOv8训练模型时处理JSON标注文件
在使用YOLOv8进行物体检测任务之前,准备合适的标注数据至关重要。通常情况下,原始的标注可能是以JSON格式保存的,而YOLO框架期望的是特定结构下的标签文件。
#### 数据预处理阶段
对于从JSON转换至YOLO所需的TXT格式的过程,可以采用自定义脚本完成这一转换工作。考虑到可能出现的数据异常情况,比如边界框坐标超出图像尺寸范围等问题,在转换过程中应当加入必要的校验逻辑来确保最终生成的标签文件不会含有非法数值[^3]。
```python
def convert(img_size, box):
dw = 1. / (img_size[0])
dh = 1. / (img_size[1])
# 调整中心点计算方式避免越界
x_center = max(0, min((box[0] + box[2]) / 2.0 - 1, img_size[0]))
y_center = max(0, min((box[1] + box[3]) / 2.0 - 1, img_size[1]))
width = abs(box[2] - box[0])
height = abs(box[3] - box[1])
normalized_x = round(abs(x_center * dw), 6)
normalized_y = round(abs(y_center * dh), 6)
normalized_width = round(abs(width * dw), 6)
normalized_height = round(abs(height * dh), 6)
return (normalized_x, normalized_y, normalized_width, normalized_height)
```
上述代码片段展示了如何安全地将矩形区域描述由绝对像素位置转变为相对于整个图片大小的比例形式,并且通过`max()`和`min()`函数防止了可能存在的负值问题。
#### 创建Dataset Configuration YAML 文件
为了使YOLO能够识别所创建的数据集,还需要编写相应的`.yaml`配置文件指定各类别的名称以及其他必要信息。类别名应为字符串而非纯数字字符序列以防解析错误[^1]。
```yaml
train: ./datasets/images/train/
val: ./datasets/images/valid/
nc: 3
names: ['cat', 'dog', 'bird']
```
此段YAML示例设定了三个不同的目标分类——猫(`'cat'`)、狗(`'dog'`)以及鸟(`'bird'`),并且指明了用于训练与验证目的子目录的位置。
#### 开始训练过程
一旦完成了以上准备工作,则可以通过命令行启动实际的训练流程:
```bash
yolo detect train \
data=datasets/seal/seal_ccm.yaml \
model=yolov8n.yaml \
pretrained=ultralytics/yolov8n.pt \
epochs=100 \
batch=2 \
lr0=0.01 \
resume=True
```
这条指令设置了多个重要参数,包括但不限于使用的数据源路径、基础架构模板、预训练权重来源、迭代轮次数量、批量大小及初始学习率等[^2]。
阅读全文
相关推荐


















