YOLOv8-OBB 旋转目标检测训练自己的数据
数据集制作
标注工具:X-AnyLabeling
https://github.com/CVHub520/X-AnyLabeling
下载链接:https://pan.baidu.com/s/1UsnDucBDed8pU1RtaVZhQw?pwd=5kel
数据标注可以参考:https://zhuanlan.zhihu.com/p/665036259
1. 选择导出方式为DOTA标签;

2. 使用方法
基本用法
使用快捷键'O'来生成一个旋转变换。
在进入编辑模式(按住Ctrl+J启动)后,请点击以选择旋转变换框。
通过特定的快捷组合完成旋转变换操作:
* z: 实现较大角度的逆时针转动
* x: 实现较小幅度的逆时针转动
* c: 实现较小幅度的顺时针转动
* v: 实现较大角度的顺时针转动
高级用法
此外,您可以使用训练好的模型批量预标记当前数据集。
- 启动自动标注功能;
- 根据需求选择预设模型或自定义配置。
- 批量处理所有图片。
标注好的数据格式:
--images
-- 1.png
-- 1.json
-- 2.png
-- 2.json
-- labels
--1.txt
--2.txt
特别注意以下几点:在训练过程中,默认输入的图片应采用 png 图像格式。如果输入的图片不是 png 格式,则需转为 png 格式,并修改相关代码设置以适应需求。为了操作简便,建议将所有图片一次性转码为 png 格式。
训练数据
1. 安装yolov8
参考:https://github.com/ultralytics/ultralytics
Install the ultralytics package using pip, which requires including all dependencies listed in its requirements file, available at https://github.com/ultralytics/ultralytics/blob/main/pyproject.toml, and running the installation in an environment where Python version is at least 3.8 and PyTorch version is at least 1.8.
在上述PyTorch运行环境中,默认情况下可以通过简单的pip命令完成安装操作;此外还可以将代码上传至本地存储空间进行处理。
pip install ultralytics
2. 新建项目文件夹,用于存放数据集以及相关配置文件,权重等。

其中datasets为标注的数据,需要目录格式如下:
--images
--test
--test_1.png
--test_2.png
--train
--train_1.png
--train_2.png
--val
--val_1.png
--val_2.png
--labels
--train_original
--train_1.txt
--train_2.txt
--test_original
--test_1.txt
--test_2.txt
--val_original
--val_1.txt
--val_2.txt
3. 将dota数据格式转换为yolo_obb格式;
- 需要进入convert_dota_to_yolo_obb中修改 class_mapping = {}
如果本地安装,目录如下:
D:\Anaconda3\envs\pytorch2.0\Lib\site-packages\ultralytics\data\converter.py


- 执行转换代码
1. # 转换代码
2. from ultralytics.data.converter import convert_dota_to_yolo_obb
3. # 将 DOTA 数据集格式转换为YOLO OBB 格式,所传参数为dota格式数据集路径
4. convert_dota_to_yolo_obb(r'C:\Users\Administrator\Desktop\chip_detection\datasets')
转换后格式如下:

4 . 创建\修改训练配置文件
- 创建DOTAv1.5.yaml,修改数据集路径和names标签名;
# Ultralytics YOLO 🚀, AGPL-3.0 license
# DOTA 1.5 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.5.yaml
# parent
# ├── ultralytics
# └── datasets
# └── dota1.5 ← 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: C:/Users/Administrator/Desktop/chip_detection/datasets # 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.5
names:
0: 'a0'
1: 'a1'
2: 'b0'
3: 'b1'
4: 'b2'
# Download script/URL (optional)
# download: https://github.com/ultralytics/assets/releases/download/v0.0.0/DOTAv1.5.zip
- 修改类别各数
D:\Anaconda3\envs\pytorch2.0\Lib\site-packages\ultralytics\cfg\models\v8\yolov8-obb.yaml

5. 开始训练
yolo train model=yolov8n-obb.pt data=DOTAv1.5.yaml batch=8 workers=1

训练结束:


6. 测试
yolo predict model="C:\Users\Administrator\Desktop\chip_detection\runs\obb\train6\weights\best.pt" source="C:\Users\Administrator\Desktop\chip_detection\datasets\images\test\Core_70.png"
7.导出
8.推理
