AI 探索-如何创建自己的yolo数据集

如何创建自己的数据集(datasets)

ML需要的数据有3 训练集,验证集,测试集, 通常偷懒的做法我们会直接拿训练集作为验证集。我们的训练集数据是考卷加答案的形式,也就是我们的源数据&标签数据。

这里主要记录如何创建yolo的数据集、yolo是有自己专属的数据格式要求的。我们这里讲制作detect(图像识别)模型的数据。图像识别最终的结果会输出一个class(分类),以及一个圈住目标的矩形框。

官方是有提供自己的训练集的,但是通常我们要落地到我们自己的业务上去的时候,我们还是需要拿自己的数据去训练才行。

主要步骤(参考

1. 你需要创建一个.yaml的配置文件

# 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: ../datasets/coco8  # dataset root dir
train: images/train  # train images (relative to 'path') 4 images
val: images/val  # val images (relative to 'path') 4 images
test:  # test images (optional)

# Classes (80 COCO classes)
names:
  0: person
  1: bicycle
  2: car
  # ...
  77: teddy bear
  78: hair drier
  79: toothbrush

示例:

   path: Circle-2023_09_10_17
   train: images
   val: images
   test:
   nc: 1
   names: 
      0: circle

2. 我们的图片以及标签文件的组织

img

这个示例对应第一条的示例,images里面存放我们的图片labels就是跟images里面名字一一对应的.txt的标签文件。

标签文件示例
img

按照一行来说依次为: class x_center y_center width height

3. 有了1、2、的基础之后,我们就需要提供足够多的image以及对应的标签文件,那么接下来就需要使用到打标签的工具了。

列举2个

  • labelme 比较基础开源免费且一直在更新
  • X-AnyLabeling 开源免费更新频繁,支持AI打标签,源码开源可以自己扩展功能以满足自己的业务需求 推荐

接下来主要讲一下 X-AnyLabeling 的使用,以及关键的如何添加自己的AI模型实现AI 打标签:

考虑到需要扩展自己的功能的话建议直接fork一份源代码、

按照官方文档进行环境安装,

  1. Download Source Code:
git clone https://github.com/CVHub520/X-AnyLabeling.git
  1. Install Dependencies:
# upgrade pip to its latest version
pip install -U pip

pip install -r requirements-dev.txt
  1. Launch the Tool:
# cd 到 X-AnyLabeling 项目目录 
python anylabeling/app.py

macos上面是没有编译好的包的!!!
打开之后如下
img

X-AnyLabeling 实用技巧

1. 添加自己的ai模型 实现自动打标签

  1. 按照文档配置 在/X-AnyLabeling/anylabeling/configs/auto_labeling/ 添加.yaml配置文件 model_path 下面需要放自己的.onnx 的模型(circle.yaml)
type: yolov8
name: circle-0202
display_name: 3C circle
model_path: anylabeling/configs/auto_labeling/circle.onnx
nms_threshold: 0.45
confidence_threshold: 0.25
classes:
  - circle
  1. /X-AnyLabeling/anylabeling/configs/auto_labeling/models.yaml配置文件中添加 我们定义好的模型配置文件

img

配置好以后我们就可以看到
img

img

列表里面就会有我们配置好的模型了

img

在实际操作中我们通常先用少量的数据训练一个大概能用的模型,就可以使用我们训练的这个模型去进行AI打标签了,不过需要注意的是,我们需要自己去确认标签的准确性、只是省去部分复杂的操作。并且我们的模型也可以随着后续的训练进行更新,以提高AI打标签的准确性,减少我们修改的成本。

2. 使用工具的Export功能导出yolo格式的标签数据

打好的标签默认都是json文件,我们需要使用工具的Export功能导出yolo格式的标签数据

img

这里需要配置一个classes.txt的分类的文件内容就是罗列所有的classes,可以理解为我们数据集配置文件的names,去掉序号、直接罗列即可

示例:

person
bicycle
car
teddy bear
hair drier
toothbrush

3. 定制自己的导出方法

可以参考fork的源码

posted @ 2024-02-21 10:40  shafujiu  阅读(793)  评论(0)    收藏  举报