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

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

labelme安装并用标注获得的图片制作VOC数据集

1.Anconda安装

1.1 Anconda介绍

​ Anaconda包括Conda、Python以及一大堆安装好的工具包,比如:numpy、pandas等

因此安装Anaconda的好处主要为以下几点:

  1. 包含conda:conda是一个环境管理器,其功能依靠conda包来实现,该环境管理器与pip类似,那有童鞋会问了:我能通过pip装conda包达到conda环境管理器一样的功能吗?答案是不能,conda包的实现离不开conda环境管理器。想详细知道两者异同可以去知乎遛一遛https://www.zhihu.com/question/279152320

  2. 安装大量工具包:Anaconda会自动安装一个基本的python,该python的版本Anaconda的版本有关。该python下已经装好了一大堆工具包,这对于科学分析计算是一大便利,你愿意费时耗力使用pip一个个包去装吗?

  3. 可以创建使用和管理多个不同的Python版本:比如想要新建一个新框架或者使用不同于Anoconda装的基本Python版本,Anoconda就可以实现同时多个python版本的管理。

1.2 版本选择

​ 可根据你的操作系统是32位还是64位选择对应的版本到官网下载,但是官网下载龟速,建议到清华大学镜像站下载。并且并不推荐安装最新版本的anaconda,由于不稳定可能出现这样那样的问题。

​ 如果你的操作系统是64为的,也可直接点击一下链接下载安装包直接安装博主使用的版本。

  • Anaconda3-5.2.0-Windows-x86_64.exe

1.3 安装流程

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

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

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

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

Finish后安装完毕

1.4 运行BUG解决

​ 今天晚上打开anaconda,发现软件一直卡在loading applications。关闭重启了几次(包括重启系统)后发现依旧无法解决这个问题,于是在google中搜索解决方案,最后完美解决这个问题。具体可参考:link (用户limkin0902给出的解决方案)。

​ 这个方法就是先在anaconda3文件夹里找到conda_api.py文件,然后将conda_api.py文件中大约第1364行的data=yaml.load(f)改成。如果没有建议下载个Notepad++查找关键词。

data = yaml.safeload(f)

​ 根据原贴的描述对于windows用户应该可以根据路径:anaconda3\Lib\site-packages\anaconda_navigator\api\conda_api.py 找到conda_api.py文件。

2.labelme虚拟环境创建

2.1 测试安装

​ 终于到了最机激动人心的测试安装,这一步将直接检验你前面的步骤做的是否正确。在命令行中输入以下命令如果出Anaconda的版本号则安装成功。

conda --version

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

2.2 conda换源

​ 使用conda命令安装需要的Python包非常方便,但是官方服务器在国外,下载龟速,国内清华大学提供了Anaconda的镜像仓库,我们把源改为清华大学镜像源。

方法一

在命令行中直接输入

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --set show_channel_urls yes
conda config --set ssl_verify false

方法二

​ 打开“C:\Users\Administrator”,可以找到一个“.condarc”文件,打开该文件,更新为以下内容:

channels:
  - defaults
show_channel_urls: true
default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
ssl_verify: false

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

2.3 conda更新(选做)

​ 更新时间较长,建议找个空余时间更新,不更新也可以,但为避免后续安装其他东西出错最好更一下,这里我就不更了,把命令贴出来

先更新conda

conda update conda

再更新第三方所有包

conda upgrade --all

2.4 创建虚拟环境

在命令行中输如以下命令创建虚拟环境

conda create -n labelme python=3.8

在安装过程中还需要输入一个y代表同意安装

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

最后输入以下命令,查看环境是否创建成功。

conda env list

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

创建好虚拟环境后,需要激活,用如下命令

conda activate labelme

labelme 正常运转需要各种依赖的包,下面的 pypt 和 pillow 就是,它们用如下命令安装

conda install pyqt
conda install pillow

​ 安装好 labelme 依赖的包之后,正式开始安装 labelme,用如下命令,先用 conda 命令,如果安装不成功,则用 pip 命令

conda install labelme=3.16.7
#conda 安装命令如果出错也可以使用 pip 命令,使用逻辑等号"=="
pip install labelme==3.16.7
#也可以直接
conda install labelme
# 或者
pip install labelme

​ 如果上面的命令实在安装不下来可以换换版本号,换了版本号也还是安装不下来可以在你的源中添加多一个渠道。

conda config --append channels conda-forge

​ 原因在于:channel可以看成是托管python包的服务器,当无法通过标准channel获得python包时,社区驱动的conda-forge通常是一个很好的地点。大部分问题都可以利用这条语句解决。

安装成功后,需查看labelme版本号是否正确

labelme --version

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

3.labelme图像标注

3.1 labelme使用

每次使用虚拟环境的都需要几乎环境才能使用在命令行中输入以下命令就可以激活环境

activate labelme

用labelme的第三方库的名称就可以打开图形化界面

labelme

输入如上命令后,会弹出 labelme 操作界面,如下:

labelme安装与使用制作VOC数据集
每次标注完记得用ctrl+s保存json文件。

4.VOC数据集制作

4.1 VOC数据集简介

VOC数据集可以用于目标检测、目标分割。

该文件夹下有三个关键的子文件。分别为:ImageSets,JPEGImages,SegmentationClassPNG

JPEGImages该文件夹下一般放置原图;

SegmentationClassPNG存放标记图片;

制作好数据集就可以开始训练模型了。

4.2 单张测试

​ 仅想要查看标注的效果的话可以通过在虚拟环境中输入命令通过labelme制作语义分割图像

#查看标注图片
labelme_draw_json XXX.json
#转成标注图片
labelme_json_to_dataset XXX.json -o 想要存入的文件夹地址

4.3 批量转换

​ 但如果标注图像数量较大那用命令行的方式显然不方便,因此可以通过以下程序来简化操作。在要转换标注图片的同级目录下建立两个文件labelme2voc.pylabels.txt

  • 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
__ignore__
_background_
crop

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

接下来在地址栏中输入cmd就能打开命令行然后输入activate labelme命令打开虚拟环境运行以下命令。

python labelme2voc.py Image CrdldVOC --label labels.txt

如果你不运行成功,有可能遇到到了以下的这几种情况。

  • 情况1:labels.txt配置文档配置错误

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

原因:

​ 由于我一开始labels.txt文档中没有加入__ignore__参数到时识别不了。

解决:

​ 按照我以上文档配置labels.txt文档即可。

  • 情况2:AttributeError: module ‘labelme’ has no attribute ‘LabelFile’

原因:

​ 这是由于 labelme 版本的问题。高版本在 labelme 的utils文件夹里缺少 LabelFile 文件。

解决:

​ 在虚拟环境中输入以下命令更新一下labelme即可

pip install -U labelme

​ 如果还有别的错误可以在评论区留言,看到了我回及时回复的.文章来源地址https://www.toymoban.com/news/detail-456202.html

​ 在虚拟环境中输入以下命令更新一下labelme即可

pip install -U labelme

​ 如果还有别的错误可以在评论区留言,看到了我回及时回复的.

参考链接

  • 史上最全最详细的Anaconda安装教程_anacoda安装_OSurer的博客-CSDN博客
  • (19条消息) 一种简洁且有效的方式解决anaconda一直卡在loading applications_Henry积少成多的博客-CSDN博客
  • Labelme 安装以及使用_期待686的博客-CSDN博客

到了这里,关于labelme安装与使用制作VOC数据集的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • ubuntu20.04系统安装使用labelme标注数据集

    请参考:Mediapipe+VSCode+Anaconda 实时检测手部关键点并保存视频_苦瓜汤补钙的博客-CSDN博客 1.打开终端创建虚拟环境   输入“y”,然后回车。  2.激活虚拟环境,开始安装  1、启动 2、点击【open】,选择图片;【Edit Polygons】---- 【Create Polygons】  3、可以选择自动保存  

    2024年02月16日
    浏览(35)
  • 深度学习——制作自己的VOC图像分割数据集

    1、数据集介绍 COCO数据集有80个类别,VOC数据集有20个类别。当这些数据集类别中没有自己需要的时候,就需要自己动手做自己的数据集了。 我自己在做数据集的时候主要使用到了labelme和labelImg两个工具。labelme主要是制作语义分割数据集(ImageSets,JPEGImages,SegmentationClass,Segmenta

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

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

    2024年02月03日
    浏览(37)
  • labelme的安装及使用

    步骤1:访问Anaconda官网,点击Download,下载Anaconda软件安装包。 步骤2:双击刚下载好的anaconda软件安装包,按照提示进行下一步操作即可。 步骤1:打开Anaconda Prompt,然后执行下面的命令,创建 labelme虚拟环境 步骤2:输入下面的命令,检查labelme是否下载成功,如果有如下图所

    2024年02月10日
    浏览(24)
  • 【技能---labelme软件的安装及其使用--ubuntu】

    图像检测需要自己的数据集,为此需要对一些数据进行数据标注,这里提供了一种图像的常用标注工具——labelme。 下面对其进行有一些介绍: Labelme 是一个图形界面的图像标注软件。其的设计灵感来自于 http://labelme.csail.mit.edu/ 。它是用 Python 语言编写的,图形界面使用的是

    2024年01月25日
    浏览(28)
  • labelImg和labelme的区别、安装和基本使用

    labelimg是一种矩形标注工具,常用于目标识别和目标检测,其标记数据输出为.xml和.txt labelme是一种多边形标注工具,可以准确的将轮廓标注出来,常用于分割,其标记输出格式为json labelImg和labelme都是训练数据集时,用于给数据集打标签的软件,但一个是矩形框,一个是可以

    2024年02月06日
    浏览(30)
  • Labelme使用——数据集标注详解

     1、Labelme的安装: Windows下首先安装Anaconda,安装教程:Windows下Anaconda的下载与安装_一诺长安的博客-CSDN博客 安装成功后,电计电脑左下角“开始”,找到Anaconda3(64-bit )下的Anaconda Prompt,并打开。  查看python版本:输入python或者python -V  创建虚拟环境:conda create -n labelm

    2024年02月08日
    浏览(30)
  • PaddleDetect图像目标检测模型训练之数据标注——使用labelme进行标注

    在做PaddleDetect图像检测模型训练时,需要对数据集进行人工标注,下面将已货车检测为例,使用labelme进行标注的详细过程记录一下,以防日后忘记。 本文中使用到的文件请到这里下载:https://download.csdn.net/download/loutengyuan/87616492 labelme是图形图像注释工具,它是用Python编写的

    2024年02月16日
    浏览(32)
  • 使用LabelMe标注目标检测数据集并转换为COCO2017格式

    当你安装好labelme启动后,open dir开始标注,选择Create Rectangle 拖拽画框,然后选择类别(没有就直接输入会自动新建),标注好一幅图后点击next image会弹框提示保存json文件,保存即可。 当你将所有图像标注完后,点击Next Image是没有反应的(因为没有Next图了),此时直接x掉

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

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

    2024年02月21日
    浏览(31)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包