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

孝感做网站xgsh/深圳高端网站制作公司

孝感做网站xgsh,深圳高端网站制作公司,辽宁省人民政府大楼,婚恋网站制作yolov2检测网数据集标注_labelme使用_json2txt格式转换 一、安装Anaconda二、创建labelme虚拟环境三、使用labelme标注健康非健康猫狗数据3.1 打开数据集所在文件夹3.2 进行标注数据集3.3 json2txt3.4 按文件目录和训练测试数据集重分配 四、数据喂给服务器网络参考链接 一、安…

yolov2检测网数据集标注_labelme使用_json2txt格式转换

  • 一、安装Anaconda
  • 二、创建labelme虚拟环境
  • 三、使用labelme标注健康非健康猫狗数据
    • 3.1 打开数据集所在文件夹
    • 3.2 进行标注数据集
    • 3.3 json2txt
    • 3.4 按文件目录和训练测试数据集重分配
  • 四、数据喂给服务器网络
  • 参考链接

一、安装Anaconda

下载anaconda:https://www.anaconda.com/download/

选择自己电脑相应的版本即可,具体的安装过程可自行百度。

二、创建labelme虚拟环境

打开Anaconda Prompt,或者将anaconda添加到系统环境cmd命令打开也可,可参考链接1。

conda create --name=labelme python=3.6conda activate labelmepip install pyqt5
![请添加图片描述](https://img-blog.csdnimg.cn/684a1bcd66f641bb80aad9e05584550a.png)pip install labelme

在该环境下输入labelme,具体的使用方法可以参考链接2
请添加图片描述

三、使用labelme标注健康非健康猫狗数据

labelme的标注快捷键:
W——新建标注框
A——上一张
D——下一张
ctrl+D——复制标签(选中需要复制的标签,ctrl+D,新复制的标签重叠在原标签上,拉出来就好了)
ctrl+S——保存
ctrl+滑动鼠标——放大缩小

3.1 打开数据集所在文件夹

3.2 进行标注数据集

标签对应:0 healthy_cat 300张1 unhealthy_cat 300张2 healthy_dog 300张 3 unhealthy_dog 300张
按照训练集:验证集:测试集 = 8:1:1


点击Create Polygons —> 鼠标放在图片上,按右键选create rectangle (一定需要是矩形,按两个点矩形不能旋转,一定就要正矩形

因为健康非健康猫狗的区分特征主要是身体毛色等信息,所以我们需要标注整体动物个体,如上图所示。

说明:label按照上面所提的标签进行标注,Group ID可以不用填写。


为了实现标注后自动保存:点击左上角的File,找到Save Automatically并点击上,做完标注后后自动生成json文件,保存在放图片的文件夹下面,成功生成后,右下角小框会打勾。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OHyDVZWo-1691505768382)(02_标注健康与非健康猫狗数据.assets/image-20230507155220958.png)]
可以在file list中点下一张图片,也可以左边点next image,为了更快标注,使用快捷键A(上一张) 或 D(下一张) 进行切换图片进行标注。

3.3 json2txt

因为我们使用的是yolo检测框架,其训练环境为darknet,我们需要将前面得到的json标注文件转换为训练框架能够识别的格式,具体格式要求如下所示:

darknet标注信息的数据格式如下:
Class id    center_x    center_y    w    h
对数据格式解释如下:
Class id:表示标注框的类别,从0开始计算,当前只要手部1类检测物体,故Class id全为0;
center_x:表示归一化后的手部框中心点坐标的X值。归一化坐标 = 实际坐标 / 整个图片宽
center_y:表示归一化后的手部框中心点坐标的Y值。归一化坐标 = 实际坐标 / 整个图片高
w:表示归一化后的手部框的宽。归一化长度 = 实际长度 / 整个图片宽
h:表示归一化后的手部框的高。归一化长度 = 实际长度 /整个图片高

在这里插入图片描述

下面是labelme的json格式转换为darknet所需的txt格式程序:

import os
import json
import numpy as np
from PIL import Imagedef json2txt(path_json,path_txt,path_image):img = Image.open(path_image)w = img.width       #图片的宽h = img.height      #图片的高with open(path_json,'r', encoding='gb18030') as path_json:jsonx=json.load(path_json)with open(path_txt,'w+') as ftxt:for shape in jsonx['shapes']:xy=np.array(shape['points'])seq = []#print(xy[1][1])  #xy[1]表示第二个点的坐标,xy[1][1]表示第四个值,即第二点的y坐标center_x = (xy[0][0] + xy[1][0])/2/w  #归一化后的中心点坐标的X值center_y = (xy[0][1] + xy[1][1])/2/h  #归一化后的中心点坐标的Y值pet_w = abs(xy[0][0] - xy[1][0])/w #归一化后的宽pet_h = abs(xy[0][1] - xy[1][1])/h  # 归一化后的高# for m,n in xy:#     seq.append(str(m)+" "+str(n))#info = '0' + center_x + center_y + pet_w + pet_h# 0健康猫 1非健康猫 2健康狗 3非健康狗ftxt.writelines( '2 %.5f %.5f %.5f %.5f' % (center_x, center_y, pet_w, pet_h) + "\n") ## ftxt.writelines(" ".join(seq)+"\n")  #\n换行#join(),str = "-";举例:seq = ("a", "b", "c"); # 字符串序列 print str.join( seq );  结果:a-b-cdir_json = 'C:/Users/tanhui/Desktop/code/cat_dog_dataset/user_json/3_unhealthy_dogs/'   #json路径
dir_txt = 'C:/Users/tanhui/Desktop/code/cat_dog_dataset/user_txt/3_unhealthy_dogs/'  #存取的txt路径
dir_image = 'C:/Users/tanhui/Desktop/code/cat_dog_dataset/user_jpg/3_unhealthy_dogs/'  #图片的路径if not os.path.exists(dir_txt):os.makedirs(dir_txt)
list_json = os.listdir(dir_json)
list_image = os.listdir(dir_image)for cnt,json_name in enumerate(list_json):path_json = dir_json + json_namepath_image = dir_image + list_image[cnt]  #image_name=list_image[cnt]print('cnt=%d,name=%s,image=%s' % (cnt, json_name, list_image[cnt]))path_txt = dir_txt + json_name.replace('.json','.txt')json2txt(path_json, path_txt, path_image)

3.4 按文件目录和训练测试数据集重分配

如图是训练集和测试集文件夹结构:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U2pF7IRo-1691505768383)(02_标注健康与非健康猫狗数据.assets/image-20230507200455460.png)]
JPEGImages放的是原始图像,labels放的是json2txt后的darknet标注格式信息,list存放的是原始图像的全局路径(放在服务器上的路径)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kD31t2b7-1691505768383)(02_标注健康与非健康猫狗数据.assets/image-20230507200842076.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WZkaya1B-1691505768383)(02_标注健康与非健康猫狗数据.assets/image-20230507200858973.png)]在这里插入图片描述
接下来给出写入原始图像路径到list中的程序:

import os# 指定图片所在路径
img_dir = r"cat_dog_dataset\training_dataset\JPEGImages"# 自定义输出文件路径和文件名
output_file = r"cat_dog_dataset\training_dataset\list\cat_dog_train.txt"# 自定义写入txt文件的内容
txt_path = "/home/nicta100-s12/ai/cat_dog_detect/training_dataset/JPEGImages" #服务器绝对路径# 写入文件
with open(output_file, "w") as f:# 循环遍历所在路径下所有文件for filename in os.listdir(img_dir):filepath = os.path.join(img_dir, filename)path = os.path.join(txt_path, filename)path = path.replace("\\", "/") # 将路径中的反斜杠替换为正斜杠# 判断是否为图片文件if os.path.isfile(filepath) and (filepath.endswith(".jpg") or filepath.endswith(".png")):# 将图片路径写入输出文件中f.write(path + "\n")

四、数据喂给服务器网络

# test_dataset为测试数据
# training_dataset为训练数据
# JPEGImages目录下是需要进行训练的数据集图片
# labels目录下的txt是JPEGImages目录下对应图片所标注的labels
# list目录下的hand_train.txt文件中保存的是JPEGImages目录下所有图片的绝对路径。
# 注意:所有的txt文件都必须是linux格式的,可以使用 dos2unix 工具进行文件格式的转换
# 使用方法: dos2unix filename   (如果还不知道如何使用,可上网咨询度娘)注意:所有的txt文件都必须是linux格式的(包括了标签txt),可以使用 dos2unix 工具进行文件格式的转换,
使用方法: dos2unix filename (如果还不知道如何使用,可上网咨询度娘)
sudo apt-get install dos2unix  # 如果服务器没有dos2unix这个软件的话,执行这条命令,先进行安装dos2unix hand_test.txt         # 修改某个文件的文件格式dos2unix  *                    # 修改该目录下的所有文件的文件格式

DOS2UNIX 安装与使用简介 (gnss.help)

参考链接

  1. Anaconda3安装深度学习标记工具labelme

  2. 数据标注软件labelme详解

相关文章:

yolov2检测网数据集标注_labelme使用_json2txt格式转换

yolov2检测网数据集标注_labelme使用_json2txt格式转换 一、安装Anaconda二、创建labelme虚拟环境三、使用labelme标注健康非健康猫狗数据3.1 打开数据集所在文件夹3.2 进行标注数据集3.3 json2txt3.4 按文件目录和训练测试数据集重分配 四、数据喂给服务器网络参考链接 一、安…...

C/C++面试总结

一、关键字static、const、extern、volatile作用 1、const 1.修饰常量 用const修饰的变量是不可变的,修饰后的变量只能使用,不能修改。 2.修饰指针 如果const位于*的左侧,eg:const int* a,则const就是用来修饰指针…...

Python爬虫的Selenium(学习于b站尚硅谷)

目录 一、Selenium  1.为什么要学习Selenium  (1)什么是Selenium  (2)为什么使用selenium?  (3)代码演示 2. selenium的基本使用  (1)如何安装selenium  (2…...

springboot 对接 minio 分布式文件系统

1. minio介绍 Minio 是一个基于Go语言的对象存储服务。它实现了大部分亚马逊S3云存储服务接口,可以看做是是S3的开源版本,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象…...

前端小练习:案例4.3D图片旋转展示(旋转木马)

一.效果预览图 二.实现思路 1.实现旋转木马效果的第一步是先准备好自己需要的图片,创建html文件 2.旋转木马的实现,关键点在3D形变和关键帧动画。 3.步骤,定义一个div使其居中,,把图片放进div盒子里,因为图…...

Linux这17个操作技巧是每个运维工程师应知必会的吧?

今天跟大家分享17个linux运维中常用的操作技巧!掌握好这些技巧,或许某一天能够让老板给你涨工资! 1、查找当前目录下所有以.tar结尾的文件然后移动到指定目录: find . -name “*.tar” -exec mv {}./backup/ ; ❝ 注解&#xff1…...

音视频基础:分辨率、码率、帧率之间关系

基础 人类视觉系统 分辨率 像素: 是指由图像的小方格组成的,这些小方块都有一个明确的位置和被分配的色彩数值,小方格颜色和位置就决定该图像所呈现出来的样子;可以将像素视为整个图像中不可分割的单位或者是元素;像素…...

Java基础八 - HTTP相关/Cookie/Session/网络攻击

一、 反射/序列化/拷贝 1. 反射 //反射主要是指程序可以访问、检测和修改它本身状态或行为的一种能力 //在Yaml数据驱动自动化框架比较适用,能获取到当前的类名及方法名 import java.lang.reflect.*;public class ReflectionExample {public static void main(Str…...

【车道线】TwinLiteNet 复现过程全纪录

码字不易,喜欢的请点赞收藏!!!!! 论文全文翻译:【freespace】TwinLiteNet: An Efficient and Lightweight Model for Driveable Area and Lane Segmentation_莫克_Cheney的博客-CSDN博客 目录…...

七牛云获取qn(url、bucket、access-key、secret-key)

1.注册账号 2.access-key和secret-key: 点击“密钥管理” 复制AK和SK即可 域名: bucket: 这个就是对象存储空间名字 先新建一个空间(没买需要先购买),步骤如下: 填写存储空间名字&#xff0…...

定时任务实现 - Cron表达式知识

Cron表达式 cron表达式是一个字符串,由6到7个字段组成,用空格分隔。其中前6个字段是必须的,最后一个是可选的。每个字段的含义为:秒 分 时 日 月 周 年 字符解释: 枚举:, (cron“7,9,23****?”):任意时刻…...

【java】抽象

java抽象 抽象类抽象方法抽象类和抽象方法 抽象类 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就…...

Qt应用开发(基础篇)——时间微调输入框 QDateTimeEdit、QDateEdit、QTimeEdit

一、前言 QAbstractSpinBox是全部微调输入框的父类,这是一种允许用户通过点击上下箭头按钮或输入数字来调整数值的图形用户界面控件,父类提供了当前值text、对齐方式align、只读readOnly等通用属性和方法。在上一篇数值微调输入框中有详细介绍。 QDateTi…...

日撸代码300行:第63天(集成学习之 AdaBoosting-1)

代码来自闵老师”日撸 Java 三百行(61-70天) 日撸 Java 三百行(61-70天,决策树与集成学习)_闵帆的博客-CSDN博客 学习过程中理解算法参考了:(十三)通俗易懂理解——Adaboost算法原…...

抽象父类获取子类的泛型 或接口泛型

jie通过getClass().getGenericSuperclass()或者子类的泛型 getClass().getGenericInterfaces();获取多个接口的泛型 GenericTypeResolver.resolveTypeArgument(GenericityService.class, GenericitySuper.class) 抽象父类 public abstract class GenericitySuper<T> …...

题目:2341.数组能形成多少数对

​​题目来源&#xff1a; leetcode题目&#xff0c;网址&#xff1a;2341. 数组能形成多少数对 - 力扣&#xff08;LeetCode&#xff09; 解题思路&#xff1a; 使用哈希表对数组中元素及其出现次数计数后对其进行统计即可。 解题代码&#xff1a; class Solution {public …...

NB-IOT 和蜂窝通信(2/3/4/5G)的区别和特点是什么?

NB-IOT 和蜂窝通信(2/3/4/5G)的区别和特点是什么? 参考链接:https://www.sohu.com/a/221664826_472880 NB IOT是窄带物联网技术,主要解决的是低速率数据传输,可使用GSM900或DCS1800频段,在频段使用上比较灵活,可以和GSM,UMTS或LTE共存,具备优异的MCL(最小耦合损耗…...

vue3 动态导入src/page目录下的所有子文件,并自动注册所有页面组件

main.js添加一下代码&#xff1a; const importAll (modules) > {Object.keys(modules).forEach((key) > {const component key.replace(/src/, /).replace(.vue, );const componentName key.split(/).slice(-2, -1)[0] -page;app.component(componentName, modules…...

python优雅地爬虫

申明&#xff1a;仅用作学习用途&#xff0c;不提供任何的商业价值。 背景 我需要获得新闻&#xff0c;然后tts&#xff0c;在每天上班的路上可以听一下。具体的方案后期我也会做一次分享。先看我喜欢的万能的老路&#xff1a;获得html内容-> python的工具库解析&#xff0…...

mysql8查看执行sql历史日志、慢sql历史日志,配置开启sql历史日志general_log、慢sql历史日志slow_query_log

0.本博客sql总结 -- 1.查看参数 -- 1.1.sql日志和慢sql日志输出方式(TABLE/FILE)。global参数 SHOW GLOBAL VARIABLES LIKE log_output; -- 1.2.sql日志开关。global参数 SHOW GLOBAL VARIABLES LIKE general_log%; -- 1.3.慢sql日志开关。global参数 SHOW GLOBAL VARIABLE…...

vscode关闭绑定元素“xxx”隐式具有“any”类型这类错误

在ts的项目里面&#xff0c;真的经常看到any类型的报错&#xff0c;真的很烦的 所以为了眼不见心不乱&#xff0c;我决定消除这个错误提示 在tsconfig.json里面配置 "noImplicitAny": false 就可以了 {"compilerOptions": {"target": "E…...

View绘制流程-Window创建

前言&#xff1a; View绘制流程中&#xff0c;主要流程是这样的&#xff1a; 1.用户进入页面&#xff0c;首先创建和绑定Window&#xff1b; 2.首次创建以及后续vsync信号来临时&#xff0c;会请求执行刷新流程&#xff1b; 3.刷新流程完成后&#xff0c;会通知SurfaceFlin…...

Jenkins build包时虽然单元测试失败了,但是仍然可以成功build包(最终结束时build success)

1.尝试方案1&#xff1a; 尽管单元测试失败&#xff0c;Jenkins Maven仍然可以获得成功-Java 学习之路 将 -Dmaven.test.failure.ignorefalse 添加到 MAVEN_OPTS artifactoryMaven {goals "-U clean install -Dmaven.test.skipfalse -DallowSnapshotstrue -Dmaven.te…...

【vue3】基础知识点-setup语法糖

学习vue3&#xff0c;都会从基础知识点学起。了解setup函数&#xff0c;ref&#xff0c;recative&#xff0c;watch、comptued、pinia等如何使用 今天说vue3组合式api&#xff0c;setup函数 在学习过程中一开始接触到的是这样的&#xff0c;定义数据且都要通过return返回 <…...

idol!! 2023牛客暑期多校训练营6 C

登录—专业IT笔试面试备考平台_牛客网 题目大意&#xff1a;定义n!!等于与n的奇偶性相同的所有小于等于n的数的阶乘之和&#xff0c;问n!!的末尾有多少0 1<n<1e18 思路&#xff1a;因为末尾0的来源是2*5&#xff0c;而2的个数明显比5的个数多得多&#xff0c;所以末尾…...

深入理解Jdk5引入的Java泛型:类型安全与灵活性并存

深入理解Jdk5引入的Java泛型&#xff1a;类型安全与灵活性并存 ​ 在Java的中&#xff0c;有一个强大的工具&#xff0c;它可以让你在编写代码时既保持类型安全&#xff0c;又享受灵活性。**这个工具就是——泛型&#xff08;Generics&#xff09;。**本文将引导你深入了解Java…...

idea在控制台中输出文字显示乱码

VM options中加入下面这行 -Dfile.encodingutf-8...

hacksudo3 通关详解

环境配置 一开始桥接错网卡了 搞了半天 改回来就行了 信息收集 漏洞发现 扫个目录 大概看了一眼没什么有用的信息 然后对着login.php跑了一下弱口令 sqlmap 都没跑出来 那么利用点应该不在这 考虑到之前有过dirsearch字典太小扫不到东西的经历 换个gobuster扫一下 先看看g…...

CentOS 虚拟机磁盘扩容(非常实用)

新手村的选手在刚开始安装使用 CentOS 虚拟机时&#xff0c;很多选项都会按照推荐操作来&#xff0c;比如&#xff1a;磁盘推荐大小为 20 GB&#xff1b;但随着后面的使用&#xff0c;总会因为“磁盘根目录不足”原因&#xff0c;而导致软件无法安装、虚拟机无法正常运行等&…...

docker案例复现

$uri导致的CRLF注入漏洞 前期准备dockerdocker compose 漏洞配置 前期准备 docker 要完成这样的测试&#xff0c;需要我们有一定的环境&#xff0c;也就是需要大家去安装docker 更新系统软件包&#xff1a; sudo yum update 安装 Docker 的依赖软件包&#xff1a; sudo yum …...