前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >YOLOv8 OBB实现自有数据集缺陷旋转检测,从数据标记格式转换到训练的手把手教程

YOLOv8 OBB实现自有数据集缺陷旋转检测,从数据标记格式转换到训练的手把手教程

原创
作者头像
AI小怪兽
发布2024-01-20 14:55:32
1.5K07
代码可运行
发布2024-01-20 14:55:32
举报
文章被收录于专栏:YOLO大作战YOLO大作战
运行总次数:7
代码可运行

???本文内容:YOLOv8 OBB实现自有数据集缺陷旋转检测,从数据标记到训练的手把手教程

1.如何OBB旋转目标

YOLO OBB格式通过四个角点指定边界框,坐标在0到1之间归一化。它遵循以下格式:

代码语言:python
代码运行次数:2
复制
class_index, x1, y1, x2, y2, x3, y3, x4, y4

在内部,YOLO以xywhr格式处理损失和输出,xywhr格式表示边界框的中心点(xy)、宽度、高度和旋转。

1.1 labelme下载

代码语言:python
代码运行次数:2
复制
# 安装labelme
pip install labelme

1.2 labelme介绍

1)Create Polygons生成polygon框;

1.3 数据集标注

2.数据集格式转换

2.1标记后的数据格式如下

一张图片对应一个json文件

json部分内容如下:

代码语言:python
代码运行次数:3
复制
{
  "version": "5.1.1",
  "flags": {},
  "shapes": [
    {
      "label": "defect",
      "points": [
        [
          160.21164021164026,
          25.312169312169328
        ],
        [
          447.5132275132275,
          23.19576719576721
        ],
        [
          448.04232804232805,
          448.06349206349205
        ],
        [
          162.32804232804233,
          445.4179894179894
        ]
      ],
      "group_id": null,
      "shape_type": "polygon",
      "flags": {}
    }
  ],

2.2 obb生成适合yolo格式的txt

obb_json_to_txt

详见博客

?

3.OBB旋转目标训练

下载最新版即可,已支持OBB

GitHub - ultralytics/ultralytics: NEW - YOLOv8 ? in PyTorch > ONNX > OpenVINO > CoreML > TFLite

3.1 defect_obb.yaml

代码语言:python
代码运行次数:0
复制
# Ultralytics YOLO ?, AGPL-3.0 license
# DOTA 1.0 dataset https://captain-whu.github.io/DOTA/index.html for object detection in aerial images by Wuhan University
# Documentation: https://docs.ultralytics.com/datasets/obb/dota-v2/
# Example usage: yolo train model=yolov8n-obb.pt data=DOTAv1.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── dota1  ← downloads here (2GB)

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: ./data/defect_obb/defect_obb  # dataset root dir
train: images/train  # train images (relative to 'path') 1411 images
val: images/val  # val images (relative to 'path') 458 images
#test: images/test  # test images (optional) 937 images

# Classes for DOTA 1.0
names:
  0: defect?

3.2 如何训练

代码语言:python
代码运行次数:0
复制
import warnings
warnings.filterwarnings('ignore')
from ultralytics import YOLO

if __name__ == '__main__':
    model = YOLO('ultralytics/cfg/models/v8/yolov8-obb.yaml')
    model.load('yolov8n-obb.pt') # loading pretrain weights
    model.train(data='data/defect_obb/defect_obb.yaml',
                cache=False,
                imgsz=640,
                epochs=50,
                batch=2,
                close_mosaic=10,
                workers=0,
                device='0',
                optimizer='SGD', # using SGD
                project='runs/train',
                name='exp',
                )

3.3训练结果可视化

代码语言:python
代码运行次数:0
复制
YOLOv8-obb summary (fused): 187 layers, 3077414 parameters, 0 gradients, 8.3 GFLOPs
                 Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 2/2 [00:00<00:00,  8.20it/s]
                   all          4          4      0.986          1      0.995      0.904

我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.如何OBB旋转目标
    • 1.1 labelme下载
      • 1.2 labelme介绍
        • 1.3 数据集标注
        • 2.数据集格式转换
          • 2.1标记后的数据格式如下
            • 2.2 obb生成适合yolo格式的txt
            • 3.OBB旋转目标训练
              • 3.1 defect_obb.yaml
                • 3.2 如何训练
                  • 3.3训练结果可视化
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
                  http://www.vxiaotou.com