专栏感知使用Yolov5训练手势检测

使用Yolov5训练手势检测

J6标定问题2024-05-30
102
0

使用Yolov5训练手势检测

1.手势数据

1.1手势数据集介绍

  • hagrid数据集既可以做手的检测任务,还可以做手的图像分类任务。该数据集总大小为716GB,包含552992张rgb图像,图像的分辨率1920x1080,总共有18类静态手势,类别如下:
    Description

1.2 手势数据集下载地址

1.3 hagrid数据集格式转换

  • 将hagrid里的标签json数据转换成xml标签数据,使用json_xml.py这个脚本代码进行转换。该脚本需要将目录变成下面这种格式存放,call.json是标签,JPEGImages是存放call的图像文件。

Description

2.yolov5环境搭建

3.yolov5数据集准备

3.1 将 hagrid数据集转换成voc数据集格式

    1. 在yolov5目录下创建paper_data文件夹(名字可以自定义),目录结构如下,

  • 示例如下:

  • paper_data文件夹下内容如下
    Description
  • ImageSets文件夹下面有个Main子文件夹,其下面存放训练集、验证集、测试集的划分,通过脚本生成,可以使用split_train_val.py脚本生成。运行代码后,在Main文件夹下生成下面四个txt文档:

Description
    1. 将数据集格式转换成yolo_txt格式

  • 接下来准备labels,把数据集格式转换成yolo_txt格式,即将每个xml标注提取bbox信息为txt格式(这种数据集格式成为yolo_txt格式),每个图像对应一个txt文件,文件每一行为一个目标的信息,包括class, x_center, y_center, width, height格式。格式如下:
    Description
  • 使用voc_label.py文件,将训练集、验证集、测试集生成label标签(训练中要用到),同时将数据集路径导入txt文件中。

  • 运行后会生成如下labels文件夹和三个包含数据集的txt文件,其中labels中为不同图像的标注文件,train.txt等txt文件为划分后图像所在位置的绝对路径,如train.txt就含有所有训练集图像的绝对路径。这一步最重要是将自己类别修改对。
    Description
    Description
  • 三个txt文件里面的内容如下:
    Description

3.2 yolov5配置文件修改

3.2.1 修改ab.yaml文件

  • 在yolov5目录下的data文件夹下新建一个ab.yaml文件(可以自定义命名),用来存放训练集和验证集的划分文件(train.txt和val.txt),这两个文件是通过运行voc_label.py代码生成的,然后是目标的类别数目和具体类别列表,ab.yaml内容如下:
    Description

3.2.2 聚类得出先验框

  • 聚类得出先验框(可选)(聚类重新生成anchors运行时间较长),最新版的yolov5,它会自动kmeans算出anchors,使用clauculate_anchors.py 内要修改为自己数据集的路径,如下:
    Description
  • 运行clauculate_anchors.py跑完会生成一个文件 anchors.txt,里面有得出的建议先验框anchors,内容如下:

Description

3.2.3 模型配置的修改

  • 在yolov5目录下的model文件夹下是模型的配置文件,这边提供s、m、l、x版本,逐渐增大(随着架构的增大,训练时间也是逐渐增大),假设采用yolov5s.yaml,只用修改一个参数,把nc改成自己的类别数;如果anchors是重新生成的,也需要修改,根据anchors.txt 中的 Best Anchors 修改,需要取整(可选) 如下:
    Description

4.yolov5训练

  • 在train.py进行以下几个修改
    Description
  • 开始训练命令如下

5.yolov5检测效果如下

  • 使用检测命令如下

Description
感知
征程5
评论0
0/1000