手把手实战教学:语义分割数据集制作全攻略

作者:很酷cat2024.08.16 06:55浏览量:35

简介:本文详细讲解了如何从头开始制作语义分割数据集,包括工具选择、数据标注、格式转换等步骤,帮助读者轻松上手语义分割任务。

千帆应用开发平台“智能体Pro”全新上线 限时免费体验

面向慢思考场景,支持低代码配置的方式创建“智能体Pro”应用

立即体验

手把手实战教学!语义分割从0到1:一、数据集制作

引言

深度学习和计算机视觉领域,语义分割是一项重要的任务,它要求将图像中的每个像素点分类到特定的类别中。为了进行语义分割任务,首先需要有一个高质量的数据集。本文将详细介绍如何从头开始制作一个语义分割数据集,包括工具选择、数据标注、格式转换等步骤。

一、工具选择

标注工具:LabelMe

LabelMe是一款强大的图像标注工具,支持多边形、矩形、圆形、线条等多种标注方式,非常适合用于语义分割数据集的标注。LabelMe的安装非常简单,可以通过Python的pip命令直接安装:

  1. pip install labelme

安装完成后,通过labelme -h可以查看帮助信息,了解各个参数的含义。

二、准备数据

原始数据准备

  1. 收集图像:首先,你需要收集一批用于标注的图像。这些图像应该是你想要进行语义分割的目标场景,比如街道、室内环境等。
  2. 组织文件:将收集到的图像放在一个统一的文件夹中,例如命名为“imgs”。

类别定义

在标注之前,你需要明确你想要分割的类别。然后,在一个文本文件(如labels.txt)中定义这些类别,格式如下:

  1. __ignore__ _background_ classA classB

其中,__ignore___background_是特殊类别,分别表示忽略和背景。

三、数据标注

启动LabelMe进行标注

在命令行中,使用以下命令启动LabelMe并指定你的图像文件夹和输出文件夹:

  1. labelme imgs --output jsons --nodata --autosave --labels labels.txt
  • imgs:原始图像文件夹。
  • --output jsons:输出文件夹,用于存放标注生成的JSON文件。
  • --nodata:不在JSON文件中存储图像数据。
  • --autosave:自动保存标注。
  • --labels labels.txt:指定类别文件。

标注操作

  • 按下Ctrl+N加载新图像。
  • 使用鼠标逐点勾勒出目标的轮廓,形成一个闭环。
  • 标注完成后,按下Ctrl+S保存标注,LabelMe会自动生成一个JSON文件。

四、格式转换

转换为VOC格式

标注完成后,你会得到一系列JSON文件。然而,为了与现有的深度学习框架兼容,通常需要将JSON文件转换为VOC格式的图像和标签。

LabelMe提供了一个脚本json_to_dataset.py,可以用于将JSON文件转换为VOC格式的图像和标签。运行该脚本,你可以将JSON文件转换为PNG格式的掩码图像,并存放在指定的文件夹中。

示例命令(假设你的JSON文件存放在jsons文件夹中):

  1. python path/to/labelme/cli/json_to_dataset.py jsons output_folder
  • jsons:存放JSON文件的文件夹。
  • output_folder:输出文件夹,用于存放转换后的图像和标签。

五、数据整理

组织文件结构

将转换后的图像和标签组织为VOC格式的标准目录结构,包括JPEGImages(存放原始图像)、SegmentationClass(存放标签图像)等文件夹。

划分训练集和验证集

为了训练模型,你需要将数据集划分为训练集和验证集。可以使用脚本或手动操作来完成这一步。

六、总结

通过本文的详细步骤,你应该能够从头开始制作一个语义分割数据集。从工具选择、数据准备、标注操作到格式转换和数据整理,每一步都至关重要。希望这篇文章能为你进行语义分割任务提供有力的支持。

如果你在实际操作中遇到任何问题,欢迎在评论区留言,我将尽力解答。


:本文中提到的工具和命令可能随着软件版本的更新而发生变化,请根据实际情况进行调整。

article bottom image

相关文章推荐

发表评论