电子商务网站建设类论文,怎么样在网站做产品推广,网站通内容管理系统,wordpress免费的模板下载文章目录 一、Labelme是什么#xff1f;二、安装步骤1.新建虚拟环境2.安装Labelme3.Labelme的使用 三、json2yolo 一、Labelme是什么#xff1f;
Labelme是一个用于图像标注的开源工具#xff0c;可以实现图像标注、语义分割、实例分割等。
本文记录一下labelme的安装与使… 文章目录 一、Labelme是什么二、安装步骤1.新建虚拟环境2.安装Labelme3.Labelme的使用 三、json2yolo 一、Labelme是什么
Labelme是一个用于图像标注的开源工具可以实现图像标注、语义分割、实例分割等。
本文记录一下labelme的安装与使用主要是用于语义分割的因为我只有一个类别~。
二、安装步骤
1.新建虚拟环境
我这边是新建了一个新的虚拟环境这样看起来更直观一些。当然也可以在已安装的虚拟环境中安装毕竟也只是一个工具模块。新建虚拟环境的推荐使用Annconda进行新建虚拟环境。在安装完成Annconda后在菜单栏搜索界面中搜索Anaconda Prompt (Anaconda)并打开输入conda create -n test python3.8创建虚拟环境。
conda create -n test python3.8输入y确认安装。 命令会自动安装一些必要库结束之后虚拟环境就创建完成啦。
2.安装Labelme 查看本地使用annconda创建的所有虚拟环境可以看到刚刚创建的test也在其中。 conda env list输入conda activate test激活虚拟环境test为刚刚创建的虚拟环境名称 conda activate test在输入了激活命令后便由基础环境base转到了test输入conda install pyqt这是在安装labelme之前需要安装的第一个库安装过程中选择y继续安装pyqt的相关库。 conda install pyqt继续输入conda install pillow安装pillow模块 conda install pillow在安装labelme库的时候就不能在conda里面进行安装了需要使用pip命令。这里记录一个简便进入虚拟环境的方法。打开Annconda的安装目录D:\Anaconda3\envs这里是我的安装路径在envs里面就是所有创建的虚拟环境啦。进入刚刚创建的虚拟环境在 D:\Anaconda3\envs\test\Scripts此目录下在上方文件目录中输入cmd就进入到虚拟环境中了。 连接清华镜像源后进行安装 pip install labelimg -i https://pypi.tuna.tsinghua.edu.cn/simple至此模块的安装部分就结束了在命令行中输入labelme便会打开labelme的操作界面。 ps在安装pyqt和pillow的时候也可以像安装labelme一样在文件中打开虚拟环境连接镜像源进行安装。
3.Labelme的使用
在控制台输入labelme打开Labelme。 在labelme软件中最主要的几个功能如下
1️⃣打开只打开一张图像进行标注建议通过第二个功能打开包含图像的文件夹进行标注。
2️⃣打开目录点击后会弹出一个窗口选择一个文件夹文件夹中包含要进行标注的图像。
3️⃣上一幅在打开目录的情况下点击后可切换到上一张图片也可以使用快捷键a。
4️⃣下一幅在打开目录的情况下点击后可切换到下一张图片也可以使用快捷键d。
5️⃣保存在标注完成后会生成标签文件。保存选项即选择本地的一个文件夹保存标签文件。建议在选择完打开目录后便选择一个文件夹路径保存将要生成的标签文件。
6️⃣创建多边形这一个功能是最重要的选择了一张图像后便可以进行标注选择这个功能后即可这对界面中显示的图像进行分割标注注意标注点要尽可能贴合目标也可以使用快捷键w。
❗ 注意在标注的时候最后一个点要首尾相连。完成后会弹出一个窗口在窗口内输入标签确认后一幅图像就标注完成啦。这样便会在保存目录中生成标签的json文件。 在json文件中 shapes用于内存放目标的相关信息
imagePath表示被标注图像的相对存储路径
imageData表示被存储的图像的编码数据
imageHeight表示该图像的高度
imageWidth表示该图像的宽度。 shapes内中的label是目标名称points内保存了标注过程中点的坐标从左上角00开始算起。 三、json2yolo
为了能够满足yolo模型的训练其传入的标签格式是txt的所以需要将标注的json格式的数据转成txt格式代码如下
import cv2
import os
import json
import glob
import numpy as np def convert_json_label_to_yolov_seg_label(): json_path rD:\\image_denoising_test\\self_test\\RestLabel # 本地json路径json_files glob.glob(json_path /*.json) print(json_files) # 指定输出文件夹 output_folder D:/image_denoising_test/self_test/RestLabel/txt # txt存放路径if not os.path.exists(output_folder): os.makedirs(output_folder) for json_file in json_files: print(json_file) with open(json_file, r) as f: json_info json.load(f) img cv2.imread(os.path.join(json_path, json_info[imagePath])) height, width, _ img.shape np_w_h np.array([[width, height]], np.int32) txt_file os.path.join(output_folder, os.path.basename(json_file).replace(.json, .txt)) with open(txt_file, w) as f: for point_json in json_info[shapes]: txt_content np_points np.array(point_json[points], np.int32) norm_points np_points / np_w_h norm_points_list norm_points.tolist() txt_content 0 .join([ .join([str(cell[0]), str(cell[1])]) for cell in norm_points_list]) \n f.write(txt_content) convert_json_label_to_yolov_seg_label()