深度学习——制作自己的VOC图像分割数据集

这篇具有很好参考价值的文章主要介绍了深度学习——制作自己的VOC图像分割数据集。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、数据集介绍
COCO数据集有80个类别,VOC数据集有20个类别。当这些数据集类别中没有自己需要的时候,就需要自己动手做自己的数据集了。

我自己在做数据集的时候主要使用到了labelme和labelImg两个工具。labelme主要是制作语义分割数据集(ImageSets,JPEGImages,SegmentationClass,SegmentationObject几个文件夹),labelImg主要是制作目标检测数据集(主要是Annoations中的xml文件),最后把两个合在一起就可以使用maskR-CNN来训练了。文件结构如下图所示:
voc分割数据集,深度学习,python,人工智能
2、安装labelme

参考:Windows下使用labelme标注图像
voc分割数据集,深度学习,python,人工智能

3、开始数据集制作
点击OpenDir打开要制作数据集图片的文件夹。点击CreatePolygons标记图片就可以了,最后每张图片标记好之后,别忘记点击save保存。此时的会保存问json格式的文件,如图所示:
voc分割数据集,深度学习,python,人工智能
接下来就要转换这些json格式为轮廓图片。
将图片和json文件放在同一个文件夹,命名为data_annotated
voc分割数据集,深度学习,python,人工智能

在data_annotated文件的目录下启动cmd,命令conda activate labelme切换至labelme环境下。

编辑labelme2voc.py文件

#!/usr/bin/env python

from __future__ import print_function

import argparse
import glob
import os
import os.path as osp
import sys

import imgviz
import numpy as np

import labelme


def main():
    parser = argparse.ArgumentParser(
        formatter_class=argparse.ArgumentDefaultsHelpFormatter
    )
    parser.add_argument("input_dir", help="input annotated directory")
    parser.add_argument("output_dir", help="output dataset directory")
    parser.add_argument("--labels", help="labels file", required=True)
    parser.add_argument(
        "--noviz", help="no visualization", action="store_true"
    )
    args = parser.parse_args()

    if osp.exists(args.output_dir):
        print("Output directory already exists:", args.output_dir)
        sys.exit(1)
    os.makedirs(args.output_dir)
    os.makedirs(osp.join(args.output_dir, "JPEGImages"))
    os.makedirs(osp.join(args.output_dir, "SegmentationClass"))
    os.makedirs(osp.join(args.output_dir, "SegmentationClassPNG"))
    if not args.noviz:
        os.makedirs(
            osp.join(args.output_dir, "SegmentationClassVisualization")
        )
    os.makedirs(osp.join(args.output_dir, "SegmentationObject"))
    os.makedirs(osp.join(args.output_dir, "SegmentationObjectPNG"))
    if not args.noviz:
        os.makedirs(
            osp.join(args.output_dir, "SegmentationObjectVisualization")
        )
    print("Creating dataset:", args.output_dir)

    class_names = []
    class_name_to_id = {}
    for i, line in enumerate(open(args.labels).readlines()):
        class_id = i - 1  # starts with -1
        class_name = line.strip()
        class_name_to_id[class_name] = class_id
        if class_id == -1:
            assert class_name == "__ignore__"
            continue
        elif class_id == 0:
            assert class_name == "_background_"
        class_names.append(class_name)
    class_names = tuple(class_names)
    print("class_names:", class_names)
    out_class_names_file = osp.join(args.output_dir, "class_names.txt")
    with open(out_class_names_file, "w") as f:
        f.writelines("\n".join(class_names))
    print("Saved class_names:", out_class_names_file)

    for filename in glob.glob(osp.join(args.input_dir, "*.json")):
        print("Generating dataset from:", filename)

        label_file = labelme.LabelFile(filename=filename)

        base = osp.splitext(osp.basename(filename))[0]
        out_img_file = osp.join(args.output_dir, "JPEGImages", base + ".jpg")
        out_cls_file = osp.join(
            args.output_dir, "SegmentationClass", base + ".npy"
        )
        out_clsp_file = osp.join(
            args.output_dir, "SegmentationClassPNG", base + ".png"
        )
        if not args.noviz:
            out_clsv_file = osp.join(
                args.output_dir,
                "SegmentationClassVisualization",
                base + ".jpg",
            )
        out_ins_file = osp.join(
            args.output_dir, "SegmentationObject", base + ".npy"
        )
        out_insp_file = osp.join(
            args.output_dir, "SegmentationObjectPNG", base + ".png"
        )
        if not args.noviz:
            out_insv_file = osp.join(
                args.output_dir,
                "SegmentationObjectVisualization",
                base + ".jpg",
            )

        img = labelme.utils.img_data_to_arr(label_file.imageData)
        imgviz.io.imsave(out_img_file, img)

        cls, ins = labelme.utils.shapes_to_label(
            img_shape=img.shape,
            shapes=label_file.shapes,
            label_name_to_value=class_name_to_id,
        )
        ins[cls == -1] = 0  # ignore it.

        # class label
        labelme.utils.lblsave(out_clsp_file, cls)
        np.save(out_cls_file, cls)
        if not args.noviz:
            clsv = imgviz.label2rgb(
                cls,
                imgviz.rgb2gray(img),
                label_names=class_names,
                font_size=15,
                loc="rb",
            )
            imgviz.io.imsave(out_clsv_file, clsv)

        # instance label
        labelme.utils.lblsave(out_insp_file, ins)
        np.save(out_ins_file, ins)
        if not args.noviz:
            instance_ids = np.unique(ins)
            instance_names = [str(i) for i in range(max(instance_ids) + 1)]
            insv = imgviz.label2rgb(
                ins,
                imgviz.rgb2gray(img),
                label_names=instance_names,
                font_size=15,
                loc="rb",
            )
            imgviz.io.imsave(out_insv_file, insv)


if __name__ == "__main__":
    main()

编辑labels.txt文件
内容是数据集的各个类别
voc分割数据集,深度学习,python,人工智能
运行指令:

python labelme2voc.py data_annotated data_dataset_voc --labels labels.txt

voc分割数据集,深度学习,python,人工智能
即生成如下文件夹
voc分割数据集,深度学习,python,人工智能文章来源地址https://www.toymoban.com/news/detail-762402.html

到了这里,关于深度学习——制作自己的VOC图像分割数据集的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 深度学习目标检测数据VisDrone2019(to yolo / voc / coco)---MMDetection数据篇

    深度学习目标检测数据VisDrone2019(to yolo / voc / coco)---MMDetection数据篇

    配备摄像头的无人机(或通用无人机)已被快速部署到广泛的应用领域,包括农业、航空摄影、快速交付和监视。因此,从这些平台上收集的视觉数据的自动理解要求越来越高,这使得计算机视觉与无人机的关系越来越密切。我们很高兴为各种重要的计算机视觉任务展示一个大

    2024年02月04日
    浏览(46)
  • labelme安装与使用制作VOC数据集

    labelme安装与使用制作VOC数据集

    1.1 Anconda介绍 ​ Anaconda包括Conda、Python以及一大堆安装好的工具包,比如:numpy、pandas等 因此安装Anaconda的好处主要为以下几点: 包含conda:conda是一个环境管理器,其功能依靠conda包来实现,该环境管理器与pip类似,那有童鞋会问了:我能通过pip装conda包达到conda环境管理器一

    2024年02月06日
    浏览(7)
  • 【DETR】DETR训练VOC数据集/自己的数据集

    【DETR】DETR训练VOC数据集/自己的数据集

    DETR用的是COCO格式的数据集。 如果要用DETR训练自己的数据集,直接利用Labelimg标注成COCO格式。 1.如果是VOC数据集的话,要做一个格式转换。网上一大堆格式转换的代码都很乱,所以自己写了一个针对VOC数据集的转换。 更新: 2.针对yolo格式的数据集,转换成coco格式,可以参考

    2023年04月27日
    浏览(5)
  • yolov5-7.0训练自己的VOC数据集

    yolov5-7.0训练自己的VOC数据集

    这个笔记可能只适用于7.0版本的,写这个笔记主要是给工作室伙伴参考的,大佬请绕行 有错误之处欢迎指出 yolov5的GitHub仓库地址:Release v7.0 - YOLOv5 SOTA Realtime Instance Segmentation · ultralytics/yolov5 (github.com) 需要下载源码和预训练模型 将源码解压,在其文件夹里面新建一个weights文

    2024年02月12日
    浏览(44)
  • Paddlepaddle使用自己的VOC数据集训练目标检测(0废话简易教程)

    Paddlepaddle使用自己的VOC数据集训练目标检测(0废话简易教程)

    笔者使用的是自己的数据集 其中 xml文件内容如下: 另外新建一个createList.py文件: 一个data2tarin.py文件: 运行以上两个脚本,结果如图: 新建label_list.txt文件,内容如下,为标签文件: 内容如下: 主要修改num_classes以及dataset_dir和anno_path 主要修改第一行 七 推理 修改yolov3.

    2024年02月21日
    浏览(16)
  • 【DL系列】VOC数据集转YOLO数据集(制作YOLOv5/v7自定义数据集)

    【DL系列】VOC数据集转YOLO数据集(制作YOLOv5/v7自定义数据集)

    前言 平时我们在使用 YOLOv5 、 YOLOv7 官方模型进行魔改训练的时候,一般不会用到 COCO2017 等这样的大型数据集,一般是在自己的自定义数据集或者是一些小的开源数据集上进行调试,这时候就要涉及到数据集的问题。 这里我就 VOC格式的数据集 如何转成 YOLO格式的数据集 ,如

    2024年02月03日
    浏览(12)
  • YOLO目标检测——VOC2007数据集+已标注VOC格式标签下载分享

    YOLO目标检测——VOC2007数据集+已标注VOC格式标签下载分享

    VOC2007数据集是一个经典的目标检测数据集,该数据集包含了20个常见的目标类别,涵盖了人、动物、交通工具等多个领域,共同11220图片。使用lableimg标注软件标注,标注框质量高,标签格式为VOC格式(即xml标签),可以直接用于YOLO系列的目标检测。 数据集点击下载 :YOLO目

    2024年02月09日
    浏览(18)
  • VOC 数据集下载

    VOC 数据集下载

    Pascal VOC挑战是一个非常流行的数据集,用于构建和评估图像分类、对象检测和分割的算法。然而,网站总是宕机。如果你需要文件,下面是它们下载地址: 介绍 这项挑战的主要目标是从许多视觉对象中识别对象 现实场景中的对象类(即不是预先分割的对象)。是的 从根本上

    2024年02月07日
    浏览(6)
  • Voc数据集简述

    Voc数据集简述

    是一种数据集的格式——VOC格式的数据集 PASCAL VOC挑战赛 (The PASCAL Visual Object Classes )是一个世界级的计算机视觉挑战赛, PASCAL VOC挑战赛主要包括以下几类: 图像分类(Object Classification) 目标检测(Object Detection) 目标分割(Object Segmentation) 行为识别(Action Classification) 等。 现在主

    2024年02月04日
    浏览(8)
  • 【深度学习】YOLOv5实例分割 数据集制作、模型训练以及TensorRT部署

    【深度学习】YOLOv5实例分割 数据集制作、模型训练以及TensorRT部署

    yolov5-seg:官方地址:https://github.com/ultralytics/yolov5/tree/v6.2 TensorRT:8.x.x 语言:C++ 系统:ubuntu18.04 前言:由于yolo仓中提供了标准coco的json文件转txt代码,因此需要将labelme的json文件转为coco json. labelme JSON 转COCO JSON 使用labelme的CreatePolygons按钮开始绘制多边形,然后保存为json格式。

    2024年02月06日
    浏览(10)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包