博客
关于我
SSD框架训练自己的数据集
阅读量:108 次
发布时间:2019-02-26

本文共 1567 字,大约阅读时间需要 5 分钟。

BBox-Label-Tool工具支持多类别标注,生成的label文件中增加了类别名称信息。以下是详细的标注和数据转换步骤:

1. 数据集的标注

数据的标注使用Python实现,支持多label标签标注。修改后的工具生成的标签格式为:

object_number className x1min y1min x1max y1max classname x2min y2min x2max y2max ...

labelTool工具的使用说明

BBox-Label-Tool工具实现较为简单,原始版本使用起来有一些小问题,经过修改后,工具更加稳定,支持多类别标注。具体修改内容包括:

  • 数据格式转换支持多label标签
  • 生成的标签格式增加了类别名称信息
  • 工具界面优化,支持更流畅的操作

2. 数据集的转换

Caffe训练使用LMDB格式的数据,SSD框架中提供了VOC数据格式转换成LMDB格式的脚本。实践中先将BBox-Label-Tool标注的数据转换成VOC数据格式,然后再转换成LMDB格式。

2.1 VOC数据格式

VOC数据格式的注释文件保存为XML格式,包含以下信息:

  • <annotation>标签下包含图片的基本信息
  • <object>标签下包含物体的类别信息
  • <bndbox>标签下包含物体的边界框坐标

2.2 Label转换成VOC数据格式

BBox-Label-Tool工具标注好的bounding box坐标文件转换成VOC数据格式的形式,具体转换步骤包括:

  • 将BBox-Label-Tool下的txt格式保存的bounding box信息转换成VOC数据格式下的XML表示
  • 生成用于训练的数据集和用于测试的数据集
  • 2.3 VOC数据转换成LMDB数据

    SSD提供了VOC数据到LMDB数据的转换脚本create_list.shcreate_data.sh,这些脚本是完全针对VOC0712目录下的数据进行的转换。为了适应我们自己的数据集,修改了上述脚本,将VOC0712替换成indoor

    3. 使用SSD进行自己数据集的训练

    训练时使用SSD Demo中提供的预训练好的VGG Net模型,将该模型保存到$CAFFE_ROOT/models/VGGNet下。将ssd_pascal.py复制一份ssd_pascal_indoor.py文件,根据自己的数据集修改ssd_pascal_indoor.py,主要修改点包括:

    • train_datatest_data修改成指向自己的数据集LMDB
    • num_test_image修改成自己数据集中测试数据的数量
    • num_classes修改成自己数据集中标签类别数量

    4. 训练命令

    运行训练命令:

    python examples/ssd/ssd_pascal_indoor.py

    5. 测试命令

    测试SSD框架中提供了C++版本和Python版本的测试工具。C++版本的测试命令如下:

    ./build_release/examples/ssd/ssd_detect.bin

    Python版本的测试过程参见examples/detection.ipynb教程文件。

    6. 优化脚本

    为适应自己的数据集,修改了以下脚本:

    • create_list_indoor.shcreate_data_indoor.sh:将脚本中涉及到VOC0712的信息替换成indoor
    • labelmap_indoor.prototxt:将该文件中的类别修改成和自己的数据集相匹配,保留一个label 0(background类别)。

    7. 训练结果

    训练完成后,可以在$CAFFE_ROOT/indoor目录下查看转换完成的LMDB数据。

    以上就是完整的标注、数据转换和SSD训练测试流程。

    转载地址:http://jnik.baihongyu.com/

    你可能感兴趣的文章
    opencv——图像缩放1(resize)
    查看>>
    Opencv——模块介绍
    查看>>
    OpenCV与AI深度学习 | 2024年AI初学者需要掌握的热门技能有哪些?
    查看>>
    OpenCV与AI深度学习 | CIB-SE-YOLOv8: 优化的YOLOv8, 用于施工现场的安全设备实时检测 !
    查看>>
    OpenCV与AI深度学习 | OpenCV图像拼接--Stitching detailed使用与参数介绍
    查看>>
    OpenCV与AI深度学习 | OpenCV快速傅里叶变换(FFT)用于图像和视频流的模糊检测(建议收藏!)
    查看>>
    OpenCV与AI深度学习 | SAM2(Segment Anything Model 2)新一代分割一切大模型介绍与使用(步骤 + 代码)
    查看>>
    OpenCV与AI深度学习 | YOLO11介绍及五大任务推理演示(目标检测,图像分割,图像分类,姿态检测,带方向目标检测)
    查看>>
    OpenCV与AI深度学习 | YOLOv11来了:将重新定义AI的可能性
    查看>>
    OpenCV与AI深度学习 | YOLOv8重磅升级,新增旋转目标检测,又该学习了!
    查看>>
    OpenCV与AI深度学习 | 使用OpenCV轮廓检测提取图像前景
    查看>>
    OpenCV与AI深度学习 | 使用Python和OpenCV实现火焰检测(附源码)
    查看>>
    OpenCV与AI深度学习 | 使用PyTorch进行小样本学习的图像分类
    查看>>
    OpenCV与AI深度学习 | 使用YOLO11实现区域内目标跟踪
    查看>>
    OpenCV与AI深度学习 | 使用YOLOv8做目标检测、实例分割和图像分类(包含实例操作代码)
    查看>>
    OpenCV与AI深度学习 | 使用单相机对已知物体进行3D位置估计
    查看>>
    OpenCV与AI深度学习 | 初学者指南 -- 什么是迁移学习?
    查看>>
    OpenCV与AI深度学习 | 十分钟掌握Pytorch搭建神经网络的流程
    查看>>
    OpenCV与AI深度学习 | 基于GAN的零缺陷样本产品表面缺陷检测
    查看>>
    OpenCV与AI深度学习 | 基于OpenCV和深度学习预测年龄和性别
    查看>>