目标检测:2如何生成自己的数据集

目录

1. 数据采集

2. 图像标注

3. 开源已标记数据集

4. 数据集划分

参考:


1. 数据采集


数据采集是深度学习和人工智能任务中至关重要的一步,它为模型提供了必要的训练样本和测试数据。在实际应用中,数据采集的方法多种多样,每种方法都有其独特的优势和适用场景。本次将介绍如何标记数据集、

一、什么是数据标注?
数据标注即通过分类、画框、标注、注释等,对图片、语 音、文本、视频等数据进行处理,标记对象的特征,以作为机器学习基础 素材的过程。机器学习需要反复学习以训练模型和提高精度,同时自动驾驶、语言大模型、AI医疗、等各大应用场景都需要标注数据。

二、数据标注的分类
对于数据标注,按照不同的分类标准,可以有不同划分。以标注对象作为分类基础,可将数据标注划分为图像标注、语音标注、文本标注以及视频标注

2. 图像标注

图像标注是一个将标签添加到图像上的过程。图像标注类型包括拉框、语义分割、实例分割、 目标检测、图像分类、关键点、线段标注、文字识别转写、点云标注、属性判断等。图像标注在人工智能与各行各业应用相结合的研究过程中扮演着重要的角色:通过对路况图片中的汽车和行人进行筛选、分类、标框, 可以提高安防摄像头以及无人驾驶系统的识别能力。

  • 通过LabelImg来标注矩形框;
  • 通过LabelMe来进行多边形框的标定;
  • 通过PPOCRLabel来完成文本识别标注任务;
  • 通过roLabelImg来解决旋转目标检测的功能;
  • 通过DarkLabel来完成视频文件的标注及对象的跟踪功能;
  • 通过ELAN完成对视频序列中人物动作的识别以及对应字幕的捕捉;

简单的使用,在线标注数据集的工具Make Sense。

开始标注

打开Make Sense点击Get Start即可开始标注。

进入下一个页面,点击Drop images并选中所有数据集。

点击 Object Detection ,并添加标签,笔者这里以安全帽为例,所以创建标签Helmet。然后手动画出安全帽对应的矩形。

 

               

标注完成后,点击Action->Export Annotation,即可导出Yolo格式的标签。

导出的文件如下所示

<object-class> <x> <y> <width> <height>

其中,object-class为类别,x,y,width和height是指目标的中心点坐标及宽高信息。

3. 开源已标记数据集


使用开源数据集是一种常见且有效的数据采集方法。开源数据集通常已经过标记和验证,可大大节省数据采集和标注的时间和资源成本。例如ImageNet数据集,包含超过1400万张图像,可用于深度学习模型训练。此外,还有像Coco、DOTA数据集等,笔者在这里为大家整理了常见的深度学习开源数据集地址,具体如下,以供参考。

coco数据集:https://cocodataset.org
Pascal Voc数据集:https://pjreddie.com/projects/pascal-voc-dataset-mirror/

猫咪数据集:http://m6z.cn/5TAgbw
宠物图像数据集:http://m6z.cn/5TAgdC
HMDB人类动作识别数据集:http://m6z.cn/6gGlzF
KITTI道路数据集:http://m6z.cn/5xz4OW
MPII人体模型数据集:http://m6z.cn/69aaIe
天池铝型材表面缺陷数据集:http://m6z.cn/61EksR
防护装备-头盔和背心检测:http://m6z.cn/61zarT
Linkopings交通标志数据集:http://m6z.cn/68ldS0
RMFD口罩遮挡人脸数据集:http://m6z.cn/61z9Fv
生活垃圾数据集:http://m6z.cn/6n5Adu
火焰和烟雾图像数据集:http://m6z.cn/6fzn0f
MTFL人脸识别数据集:http://m6z.cn/6fHmaT

4. 数据集划分

有了数据集之后,对齐划分,分别分为train,val,test三块。

创建helmet_dataset/images保存图像文件,创建helmet_dataset/labels保存标记文件。

分割脚本如下:

import os
import shutil
import zipfile
from sklearn.model_selection import train_test_split# 定义目录路径
dataset_directory = r'helmet_dataset'
images_directory = os.path.join(dataset_directory, 'images')
labels_directory = os.path.join(dataset_directory, 'labels')# 定义备份 zip 文件路径
backup_zip_path = os.path.join(dataset_directory, 'helmet_dataset.zip')# 将整个数据集目录压缩备份
with zipfile.ZipFile(backup_zip_path, 'w') as backup_zip:for folder in [images_directory, labels_directory]:for root, dirs, files in os.walk(folder):for file in files:file_path = os.path.join(root, file)backup_zip.write(file_path, os.path.relpath(file_path, dataset_directory))# 所有图像文件名(不带扩展名)的列表
image_filenames = [os.path.splitext(filename)[0] for filename in os.listdir(images_directory) if filename.endswith('.jpg')]# 定义拆分比例
train_ratio = 0.7
validation_ratio = 0.2
test_ratio = 0.1# 执行拆分
train_filenames, test_filenames = train_test_split(image_filenames, test_size=1 - train_ratio)
validation_filenames, test_filenames = train_test_split(test_filenames, test_size=test_ratio/(test_ratio + validation_ratio))# 创建目录并移动文件的函数
def create_and_move_files(file_list, source_folder, destination_folder, file_extension):os.makedirs(destination_folder, exist_ok=True)for filename in file_list:shutil.move(os.path.join(source_folder, filename + file_extension),os.path.join(destination_folder, filename + file_extension))# 为每个集创建目录并移动文件
sets_directories = {'train': os.path.join(dataset_directory, 'train'),'val': os.path.join(dataset_directory, 'val'),'test': os.path.join(dataset_directory, 'test')
}for set_name, file_list in zip(['train', 'val', 'test'], [train_filenames, validation_filenames, test_filenames]):images_set_directory = os.path.join(sets_directories[set_name], 'images')labels_set_directory = os.path.join(sets_directories[set_name], 'labels')create_and_move_files(file_list, images_directory, images_set_directory, '.jpg')create_and_move_files(file_list, labels_directory, labels_set_directory, '.txt')# 删除空的images和labels文件夹
for folder in [images_directory, labels_directory]:if os.path.exists(folder) and not os.listdir(folder):os.rmdir(folder)# 返回备份文件路径和已创建目录的路径
print(backup_zip_path, sets_directories)

创建好的数据集,留待使用,下一次学习如何利用数据集训练。

参考:

目标检测:1预备知识

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/453197.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python||五城P.M.2.5数据分析与可视化_使用复式柱状图分析各个城市的P.M.2.5月度差异情况(中)

目录 4.上海市空气质量月度差异 5.沈阳市空气质量月度差异 五城P.M.2.5数据分析与可视化_使用复式柱状图分析各个城市的P.M.2.5月度差异情况 4.上海市空气质量月度差异 import numpy as np import pandas as pd import matplotlib.pyplot as plt#读入文件 sh pd.read_csv(./S…

chisel RegInit/UInt/U

val reg RegInit(0.U(8.W)) //ok val reg RegInit(0.UInt(8.W)) //errU 使用在数字 . 后边50.U UInt 使用在IO(new Bundle val a Input(UInt(8.W)) 或者 def counter(max:UInt, a1:UInt) package emptyimport chisel3._ import chisel3.util._class MyCounter extends …

26.云原生ArgoCD高级之ApplicationSet

云原生专栏大纲 文章目录 ApplicationSet介绍ApplicationSet 特性ApplicationSet 安装ApplicationSet 工作原理ApplicationSet 生成器列表类型生成器集群生成器基础使用方法Label Selector 指定集群Values 字段传递额外的参数 git生成器git目录生成参数排除目录git文件生成器矩…

山西电力市场日前价格预测【2024-02-03】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2024-02-03&#xff09;山西电力市场全天平均日前电价为442.47元/MWh。其中&#xff0c;最高日前电价为633.60元/MWh&#xff0c;预计出现在09:30。最低日前电价为367.07元/MWh&#xff0c;预计…

计算机设计大赛 深度学习 机器视觉 车位识别车道线检测 - python opencv

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习 机器视觉 车位识别车道线检测 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f947;学长这里给一个题目综合评分(每项满分5分) …

Java tomcat 使用spring-task,实现定时任务功能

前言 今天接触到一个需求&#xff0c;需要添加一个定时任务功能&#xff0c;第一反应是启动类EnableScheduling、定时任务方法使用Scheduled实现&#xff0c;导入项目后才发现&#xff0c;这个项目是ssm整合框架的tomcat项目&#xff0c;没有启动类&#xff0c; 于是改变了思路…

机器学习本科课程 实验3 决策树处理分类任务

实验3.1 决策树处理分类任务 使用sklearn.tree.DecisionTreeClassifier完成肿瘤分类&#xff08;breast-cancer&#xff09;计算最大深度为10时&#xff0c;十折交叉验证的精度(accuracy)&#xff0c;查准率(precision)&#xff0c;查全率(recall)&#xff0c;F1值绘制最大深度…

算法学习——华为机考题库8(HJ46 - HJ55)

算法学习——华为机考题库8&#xff08;HJ46 - HJ50&#xff09; HJ46 截取字符串 描述 输入一个字符串和一个整数 k &#xff0c;截取字符串的前k个字符并输出 数据范围&#xff1a; 字符串长度满足 1≤n≤1000 &#xff0c; 1≤k≤n 输入描述&#xff1a; 1.输入待截取的…

Go语言深度解析:探索 crypto/md5 标准库的强大功能

Go语言深度解析&#xff1a;探索 crypto/md5 标准库的强大功能 引言Go语言和MD5的基础知识MD5算法简介Go语言概述Go中的MD5实现 crypto/md5 库的使用方法基本用法处理大型数据安全注意事项 实际案例分析示例1&#xff1a;文件的MD5校验示例2&#xff1a;网络数据的MD5哈希示例3…

专业课130+总分420+南京大学851信号与系统考研经验南大电子信息与通信系统

经过一年的复习&#xff0c;顺利上岸&#xff0c;被南京大学录取&#xff0c;今年专业课130&#xff0c;总分420&#xff0c;回忆这一年的复习还是有很多经验分享&#xff0c;希望对大家复习有帮助。 专业课&#xff1a; 南京大学851信号与系统难度这几年无论是范围还是难度都…

Java使用规范

1.关键字 定义&#xff1a;被Java语言赋予了特殊含义&#xff0c;用做专门用途的字符串(单词) 特点&#xff1a;关键字中的所有字母都是小写 2.保留字 java保留字&#xff1a;现有Java版本尚未使用&#xff0c;但以后的版本可能会作为关键字使用。命名标识符时要避免使用这些…

回归预测 | Matlab实现WOA-CNN-LSTM-Attention鲸鱼算法优化卷积长短期记忆网络注意力多变量回归预测(SE注意力机制)

回归预测 | Matlab实现WOA-CNN-LSTM-Attention鲸鱼算法优化卷积长短期记忆网络注意力多变量回归预测&#xff08;SE注意力机制&#xff09; 目录 回归预测 | Matlab实现WOA-CNN-LSTM-Attention鲸鱼算法优化卷积长短期记忆网络注意力多变量回归预测&#xff08;SE注意力机制&…