YOLOv8-obb训练DOTAv2数据集(官网代码/数据集转换/2024.1.2)

目的

由于项目里面需要用到机载的旋转目标检测(Oriented Bounding Box, OBB),本来想在yolov8上面直接加obb检测相关的模块,没想到官方更新了DOTAv2数据的yaml文件,意味着v8已经支持了obb检测,但是现在版本还不是很完善,遂记录一下在这里面的一些坑。

安装YOLOv8

可供参考的官网地址:https://docs.ultralytics.com/zh/modes/
官方支持用pip、conda、gitclone、Docker4种方法安装,需要注意的是在当前(2024.1.2)使用pip安装是不包含obb检测的,只能去git上面clone一下代码

   克隆ultralytics仓库
 git clone https://github.com/ultralytics/ultralytics

  导航到克隆的目录
 cd ultralytics

   为开发安装可编辑模式下的包
   pip install -e .

将DOTAv2的数据集装换成YOLOv8可以训练的模式

v8用起来爽的地方就是无脑用,官方已经更新了一个英文版教程,参考:https://docs.ultralytics.com/datasets/obb/#yolo-obb-format
这个过程中间其实还有挺多问题的,这里也记录一下:

  1. obb检测方法里面旋转框的表示方法有好几种,v8这里使用的是

    class_index, x1, y1, x2, y2, x3, y3, x4, y4(需要做归一化)
    示例:0 0.780811 0.743961 0.782371 0.74686 0.777691 0.752174 0.776131 0.749758

    要用自己数据的小伙伴们记得把数据转成这个格式。

  2. 把DOTAv2数据集转成YOLOv8可训练的模式
    官方已经写好了代码:

from ultralytics.data.converter import convert_dota_to_yolo_obb

convert_dota_to_yolo_obb('path/to/DOTA')

记得要自己新建一个py文件,然后把path改成指向DOTAv2数据集的地址。

DOTAv2数据集准备的形式

 Notes:
        The directory structure assumed for the DOTA dataset:
            - DOTA
                ├─ images
                │   ├─ train
                │   └─ val
                └─ labels
                    ├─ train_original
                    └─ val_original

        After execution, the function will organize the labels into:
            - DOTA
                └─ labels
                    ├─ train
                    └─ val

注意:DOTA数据集有3个版本,需要用v2的标注(1和1.5第一二行都是图片来源介绍,会有bug)
01.08更新一下:如果要用这个代码修改自己的训练集的话,一个是要修改converter.py文件中第186-204行,把自己的类别对应上;第二个问题是,如果自己的数据不是png格式的,需要注释掉234-235行(这两行是判断文件夹下的文件是否是png格式,不是则直接跳过)

准备好数据和模型之后就可以直接开始训练了,参考代码:

yolo detect train data=DOTAv2.yaml model=yolov8n.pt epochs=100 imgsz=640

单卡3090ti训不动的,我把batch改成了4(好卡都给学生了哈哈哈哈)

有一个该看但是我还没看的地方是关于DOTA数据集里图像裁切的问题,我看DOTA数据集提供的toolkit里面自带了这个功能,但是v8有没有集成暂时还没有去细究

01.08更新一下
1月2日那天是跑失败了,最后还是hbb的框,后来继续follow这个问题,发现issue里面很多人也在问,1.5号晚上的时候官方update了一下代码和官网文档,在task下新增了obb,代码里也更新了obb检测相关的模块,更新代码之后,我加载yolov8n.pt为与训练权重,已经能跑通DOTAv2数据集了。

官方在issue里说会在1月10号发布最新的带有OBB的版本,那个时候应该支持通过pip直接安装了(1月8号目前还是只支持将代码下载后本地安装),拭目以待

目前我还在跑自己的数据集,成功了之后我会继续更新一下。

你可能感兴趣的:(深度学习,yolov8,DOTAv2数据集,OBB)