当前位置: 首页 > news >正文

虚拟环境的创建以及labelme的使用教程

本来打算是将这两部分分开的,但写完虚拟环境的创建似乎字数太少了,不过二者有关联,所以就放一起了。简单介绍一下,虚拟环境的创建有win11系统已经Ubuntu系统,labelme教程包括了下载及其使用的全部流程,以及我本人平时标注时使用的案例和快捷键,文末分享了json转png的脚本。希望这个教程能解决你的问题。

目录

Anaconda创建虚拟环境

win 11系统

Ubuntu系统

labelme的下载以及使用

1、激活环境

2、下载指定版本

3、创立图片文件夹

4、使用labelme标注

5、使用脚本将json转为png


Anaconda创建虚拟环境

win 11系统

我的是win11系统,可以点击搜索。或者是按下win+s键打开。

在里面输入Anaconda Prompt

初始是这样的:

(base) C:\Users\honor>

(base)是一个基础的环境,在这里我们先查看我们的虚拟环境

输入conda env list

除了base,其他都是我创建的虚拟环境,当然有的一直没有用。

然后我们需要创建自己的环境:conda create -n env_name python=3.7 

env-name就是环境的名称,可随意更改,python=3.7是环境安装的python版本,也可按需更改,高版本并不好,常常会出现一些bug,我最爱用的还是3.7及其下的版本。

  • 激活环境:activate env_name,然后你就可以根据需要pip下载包了
  • 退出环境:deactivate,我通常会省去这步,直接activate 其他的虚拟环境名,这样方便转换到其他虚拟环境
  • 删除虚拟环境:conda remove -n env_name --all

Ubuntu系统

当然啦,由于我们实验室有工作站,是Ubuntu系统的,情况类似,只是在激活环境和退出环境时,前面要加上source

  • 激活环境:source activate env_name
  • 退出环境:source deactivate
     

labelme的下载以及使用

首先,要安装好虚拟环境,如上所示,我的虚拟环境就叫labelme,专门使用它

1、激活环境

输入:activate labelme

2、下载指定版本

在该环境下,输入命令行

pip install labelme==3.16.7

据前辈所说,有些版本的labelme会发生错误,具体的错误为:Too many dimensions:3 > 2,

总之,这个下就行了。由于我的已经安装好了,所以这里不展示了。

3、创立图片文件夹

在一个文件下,我希望你有以下三个文件:

  • pic
  • json
  • lab

不管你的命名的是什么,搞清楚它们的作用就行了,pic是你需要标注的图片存放位置,json是你标注后生成的文件,lab是通过脚本将json文件转化为png格式的图片。

内容展示

4、使用labelme标注

激活环境后,直接输入labelme。

(labelme) C:\Users\honor>labelme

点击右边导航栏中顺数第二个,即可打开你需要标注的图片所在的文件夹进行批量标注。

我拿网上的数据集CrackForest,做为示范。

选中你要标记的图片,点击Create Polygons(顺数第七个)。

 

原始图片是这样的,在标注时一定要尽可能的放大最大去标注,你的预测效果与你的标注息息相关。如下图所示

记住一定要闭环,最后一个点一定要与起点相接。这里假设我们完成后,他就会出现这样的弹窗。

在这里的crack是我们自己输入的,输入一次后会默认,当然多个物体标注时,在下面的白色画布部分会有你想要分类的记录。

如果你觉得你自己有些点标注的地方不是很如意,可以点击Edit Ploygons(顺数第八个)。当你触碰到点时对应的点会变红变大,如果你移动到了中间的红色区域,你可以对其进行拖拽,对不满意的地方进行修改,这是其中的一个修改方法。

有些快捷键是你需要掌握的:

  • Ctrl+z:撤回上一个标注的点,不要一直按,它可能会同时将你已经标注好的区域全部撤回。
  • Ctrl+鼠标滚轮:对图片进行放大缩小
  • Alt+鼠标滚轮:左右横向移动
  • 鼠标滚轮:上下移动
  • Ctrl+s:保存

完成一张图后,一定一定要保存呀,位置就在json文件夹当中,保存成功后,右下角的File list对应图片的位置会有蓝底白色的小勾。

5、使用脚本将json转为png

Json2Image.py

import base64
import json
import os
import os.path as ospimport numpy as np
import PIL.Image
from labelme import utilsif __name__ == '__main__':jpgs_path = "E:\Deeplearning\Road_Detect_Project\THREE_ZJR\zjr"pngs_path = "E:\Deeplearning\Road_Detect_Project\THREE_ZJR\png"# classes     = ["_background_","aeroplane", "bicycle", "bird", "boat", "bottle", "bus", "car", "cat", "chair", "cow", "diningtable", "dog", "horse", "motorbike", "person", "pottedplant", "sheep", "sofa", "train", "tvmonitor"]# classes     = ["_background_","cat","dog"]classes = ["_background_", "crack"]count = os.listdir("E:\Deeplearning\Road_Detect_Project\THREE_ZJR\json")for i in range(0, len(count)):path = os.path.join("E:\Deeplearning\Road_Detect_Project\THREE_ZJR\json", count[i])print(count[i])if os.path.isfile(path) and path.endswith('json'):data = json.load(open(path), strict=False)if data['imageData']:imageData = data['imageData']else:imagePath = os.path.join(os.path.dirname(path), data['imagePath'])with open(imagePath, 'rb') as f:imageData = f.read()imageData = base64.b64encode(imageData).decode('utf-8')img = utils.img_b64_to_arr(imageData)label_name_to_value = {'_background_': 0}for shape in data['shapes']:label_name = shape['label']if label_name in label_name_to_value:label_value = label_name_to_value[label_name]else:label_value = len(label_name_to_value)label_name_to_value[label_name] = label_value# label_values must be denselabel_values, label_names = [], []for ln, lv in sorted(label_name_to_value.items(), key=lambda x: x[1]):label_values.append(lv)label_names.append(ln)assert label_values == list(range(len(label_values)))lbl = utils.shapes_to_label(img.shape, data['shapes'], label_name_to_value)PIL.Image.fromarray(img).save(osp.join(jpgs_path, count[i].split(".")[0] + '.jpg'))new = np.zeros([np.shape(img)[0], np.shape(img)[1]])for name in label_names:index_json = label_names.index(name)index_all = classes.index(name)new = new + index_all * (np.array(lbl) == index_json)utils.lblsave(osp.join(pngs_path, count[i].split(".")[0] + '.png'), new)print('Saved ' + count[i].split(".")[0] + '.jpg and ' + count[i].split(".")[0] + '.png')

在这里面,凡是出现了路径都要改,对应的部分一定要分清楚,然后所需要分的类型也要修改,也就是classes变量。接着点击运行就可以了。我的建议呢就是每个工程文件下都留有这个py文件,有好处的。

相关文章:

虚拟环境的创建以及labelme的使用教程

本来打算是将这两部分分开的,但写完虚拟环境的创建似乎字数太少了,不过二者有关联,所以就放一起了。简单介绍一下,虚拟环境的创建有win11系统已经Ubuntu系统,labelme教程包括了下载及其使用的全部流程,以及…...

CSS中的BFC详细讲解(易懂)

带你用最简单的方式理解最全面的BFC~~~1.先了解最常见定位方案普通流元素按照其在 HTML 中的先后位置至上而下布局行内元素水平排列,直到当行被占满然后换行,块级元素则会被渲染为完整的一个新行所有元素默认都是普通流定位浮动元素首先按照普通流的位置…...

华为3面,官网显示面试通过了...开始泡池子,进入漫长等待期

背景: 现在双非本科,非计算机科班,有算法方面的奖,有嵌入式开发经历,官网显示面试通过,短信说录用情况在十个工作日内告知,看别人的说法应该是泡池子了。 全程视频面试,一天面完三…...

【新2023】华为OD机试 - 构成的正方形数量(Python)

构成的正方形数量 题目 输入 N 个互不相同的二维整数坐标, 求这 N 个坐标可以构成的正方形数量。(内积为零的两个向量垂直) 输入 第一行输入为 N,N 代表坐标数量,N为正整数。N <= 100 之后的 K 行输入为坐标 x y以空格分隔,x, y 为整数, -10 <= x, y <= 10 输…...

ElasticSearch之RestClient操作索引库和文档

前言&#xff1a;上文介绍了使用DSL语言操作索引库和文档&#xff0c;本篇文章将介绍使用Java中的RestClient来对索引库和文档进行操作。 希望能够加深自己的印象以及帮助到其他的小伙伴儿们&#x1f609;&#x1f609;。 如果文章有什么需要改进的地方还请大佬不吝赐教&#x…...

Lp正则化

一、L1 和 L2范数&#xff08;norm&#xff09;A norm is a mathematical thing that is applied to a vector. The norm of a vector maps vector values to values in [0,∞). In machine learning, norms are useful because they are used to express distances: this vect…...

云原生 -- Docker进阶(Docker-compose,Docker网络简单介绍)

Dockerfile的构建过程 每条保留字段必须为大写字母。Dockerfile每行只支持一条指令&#xff0c;但是每条指令可以带多个参数&#xff0c;并且每条保留字指令后面至少要带有一个参数。从上到下依次执行。每条指令都会创建一个新的镜像层&#xff0c;并提交新的镜像。 大致流程…...

taskset命令:让进程运行在指定CPU上

1. 操作场景 taskset命令&#xff0c;可用于进程的CPU调优&#xff0c;可以把云服务器上运行的某个进程&#xff0c;指定在某个CPU上工作。 本节操作指导用户使用taskset命令让进程运行在指定CPU上。 2. 操作步骤 2.1. 执行如下命令&#xff0c;查看云服务器CPU核数。 cat …...

Pod基本概念与Pod应用生命周期

Pod是一个逻辑抽象概念&#xff0c;kubernetes创建和管理的最小单元&#xff0c;一个Pod由一个容器或多个容器组成。特点&#xff1a;一个Pod可以理解为是一个应用实例&#xff0c;提供服务Pod中容器始终部署在一个Node上Pod中容器共享网络、存储资源Pod主要用法&#xff1a;运…...

DDL 数据定义语言

DDL 数据定义语言 目录概述一、库的管理1、库的创建2、库的修改【一般不修改&#xff0c;容易出现错误】3、库的删除二、表的管理【重要】1、表的创建2、表的修改3、表的删除4、表的复制 【可以跨库复制】练习题概述 数据定义语言 库和表的管理 一、库的管理 创建、修改、删除…...

设计模式概述

1. 概念 设计模式概念的提出&#xff1a;   设计模式最早于1977年在建筑设计行业中被 克里斯托夫亚历山大&#xff08;Christopher Alexander&#xff09; 在他的著作 《建筑模式语言&#xff1a;城镇、建筑、构造》 中提出。   软件工程界在1990年开始了设计模式话题的研…...

华为OD机试 - 箱子之形摆放(Python)| 真题+思路+考点+代码+岗位

箱子之形摆放 题目 有一批箱子(形式为字符串,设为str), 要求将这批箱子按从上到下以之字形的顺序摆放在宽度为 n 的空地,请输出箱子的摆放位置。 例如:箱子ABCDEFG,空地宽度为3,摆放结果如图: 则输出结果为: AFG BE CD 输入 输入一行字符串,通过空格分隔,前面部…...

第九章:创建用户和用户权限

Windows&#xff1a;创建用户&#xff1a;第一种方法创建用户&#xff1a;先点右上角的工具&#xff0c;然后点击AD用户和计算机双击skills.com打开目录&#xff0c;再双击Users&#xff0c;进入文件夹中在右框中右击空白处&#xff0c;新建用户填充好用户信息后点击下一步然后…...

如何制定人生目标

一、如何分解目标 人生终极目标并不一定要多详细精确&#xff0c;但一定要被分解&#xff0c;要分成长期目标、中期目标和一系列的短期目标&#xff0c;其中短期目标又可以分解为你能够马上操作的一个个的小目标。 二、目标制定的原则 目标制定遵循 SMART-W 原则&#xff1a; …...

用户认证概述

文章目录一、用户身份认证1.1 单一服务器模式1.2 SSO&#xff08;Single Sign On&#xff09;模式1.3 Token模式二、JWT令牌2.1 JWT 令牌说明2.2 JWT令牌的组成2.3 JWT 问题和趋势2.4 JWT 测试一、用户身份认证 1.1 单一服务器模式 一般过程如下&#xff1a; 用户向服务器发送…...

XQuery FLWOR + HTML

XML 实例文档 我们将在下面的例子中继续使用这个 "books.xml" 文档&#xff08;与上一节中的文件相同&#xff09;。 在您的浏览器中查看 "books.xml" 文件。 在一个 HTML 列表中提交结果 请看下面的 XQuery FLWOR 表达式&#xff1a; for $x in doc(&…...

MySQL用户管理

文章目录MySQL用户管理用户用户信息创建用户修改用户密码删除用户数据库的权限MySQL中的权限给用户授权回收权限MySQL用户管理 与Linux操作系统类似&#xff0c;MySQL中也有超级用户和普通用户之分。如果一个用户只需要访问MySQL中的某一个数据库&#xff0c;甚至数据库中的某…...

C++【模板初阶】

✨个人主页&#xff1a; Yohifo &#x1f389;所属专栏&#xff1a; C修行之路 &#x1f38a;每篇一句&#xff1a; 图片来源 No one saves us but ourselves, no one can and no one may. We ourselves must walk the path. 除了我们自己&#xff0c;没有人能拯救我们&#xf…...

华为OD机试 - 磁盘容量(Python)| 真题+思路+考点+代码+岗位

磁盘容量 题目 磁盘的容量单位常用的有M、G、T 他们之间的换算关系为1T =1024G,1G=1024M 现在给定n块磁盘的容量,请对他们按从小到大的顺序进行稳定排序 例如给定5块盘的容量 5 1T 20M 3G 10G6T 3M12G9M 排序后的结果为 20M 3G 3M12G9M 1T 10G6T 注意单位可以重复出现 上述…...

更专业、安全、可控!政企都选择WorkPlus私有化部署

现如今政企机构在信息化建设的过程中&#xff0c;内部的沟通协作都离不开即时通讯软件。但大多数企业使用的即时通讯软件都是Saas部署的&#xff0c;虽然使用Saas部署产品成本低&#xff0c;又方便快捷&#xff0c;但还是建议企业有条件最好使用私有化部署的即时通讯软件&#…...

终极Windows文件完整性验证指南:为什么专业开发者都选择HashCheck Shell Extension

终极Windows文件完整性验证指南&#xff1a;为什么专业开发者都选择HashCheck Shell Extension 【免费下载链接】HashCheck HashCheck Shell Extension for Windows with added SHA2, SHA3, and multithreading; originally from code.kliu.org 项目地址: https://gitcode.co…...

Bedtools:基因组数据分析的高效工具集

Bedtools&#xff1a;基因组数据分析的高效工具集 【免费下载链接】bedtools A powerful toolset for genome arithmetic. 项目地址: https://gitcode.com/gh_mirrors/be/bedtools 项目价值与应用场景 Bedtools作为一款专注于基因组算术操作的工具集&#xff0c;在生物…...

FLUX.1-dev开源镜像部署教程:像素幻梦免配置环境3步快速上手

FLUX.1-dev开源镜像部署教程&#xff1a;像素幻梦免配置环境3步快速上手 1. 像素幻梦简介 像素幻梦(Pixel Dream Workshop)是一款基于FLUX.1-dev扩散模型构建的像素艺术生成工具。它采用独特的16-bit像素风格界面设计&#xff0c;为创作者提供沉浸式的AI绘图体验。 与传统AI…...

别再死记硬背了!用‘快递寄送’和‘跨国通话’的比喻,5分钟搞懂OSI七层模型与TCP/IP五层模型

快递与越洋电话&#xff1a;用生活场景拆解网络分层模型 想象一下&#xff0c;你网购的商品从深圳工厂到北京家门口&#xff0c;要经过打包、装车、跨省运输、本地配送多个环节——这和网络数据传输的层层封装如出一辙。而当你给海外亲友视频通话时&#xff0c;双方手机自动协商…...

注CO2驱替煤层气THM耦合模型与自定义PDE耦合固体力学

注co2驱替煤层气THM耦合模型 自定义pde耦合固体力学今天&#xff0c;我来分享一下关于CO2驱替煤层气的THM&#xff08;热-水-力学&#xff09;耦合模型的构建过程。这个模型听起来有点复杂&#xff0c;但其实拆开来理解&#xff0c;每一步都还挺有意思的。尤其是其中涉及的自定…...

Android开发者必看:火山引擎API验签实战,5步搞定接口适配

Android开发者实战指南&#xff1a;火山引擎API验签与接口适配全解析 在移动应用开发领域&#xff0c;直接调用第三方API服务已成为提升开发效率的常见做法。火山引擎作为国内领先的云服务平台&#xff0c;其丰富的API接口为Android应用开发提供了强大支持。然而&#xff0c;由…...

ComfyUI-WanVideoWrapper:AI视频生成性能优化的终极指南

ComfyUI-WanVideoWrapper&#xff1a;AI视频生成性能优化的终极指南 【免费下载链接】ComfyUI-WanVideoWrapper 项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI-WanVideoWrapper 在AI视频生成领域&#xff0c;显存限制和部署复杂性一直是开发者面临的核心挑…...

AI语音智能体赋能12345热线,实现政务服务数智化

12345政务服务便民热线作为连接政府与群众的“连心桥”&#xff0c;承载着政策咨询、诉求举报、民生求助等核心职能&#xff0c;是政务服务的重要窗口。但随着民生需求日益多元&#xff0c;传统12345热线逐渐面临话务高峰拥堵、人工座席压力大、响应效率不均、诉求闭环不及时等…...

炉石传说脚本Hearthstone-Script:三步从零到精通的自动化游戏指南 [特殊字符]

炉石传说脚本Hearthstone-Script&#xff1a;三步从零到精通的自动化游戏指南 &#x1f3ae; 【免费下载链接】Hearthstone-Script Hearthstone script&#xff08;炉石传说脚本&#xff09;&#xff08;2024.01.25停更至国服回归&#xff09; 项目地址: https://gitcode.com…...

新手入门实战:基于 Spring Boot 的计算机毕设题目推荐管理系统设计与实现

对于计算机专业的同学来说&#xff0c;毕业设计&#xff08;毕设&#xff09;是大学学习成果的一次重要检验。然而&#xff0c;选题环节往往令人头疼&#xff1a;题目来源分散、重复率高、与个人兴趣或能力不匹配&#xff0c;缺乏一个集中的平台进行管理和推荐。今天&#xff0…...