【SSD目标检测】2:如何制作自己的数据集_predefined_classes

这篇具有很好参考价值的文章主要介绍了【SSD目标检测】2:如何制作自己的数据集_predefined_classes。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
【SSD目标检测】2:如何制作自己的数据集_predefined_classes,2024年程序员学习,目标检测,人工智能,计算机视觉
【SSD目标检测】2:如何制作自己的数据集_predefined_classes,2024年程序员学习,目标检测,人工智能,计算机视觉
【SSD目标检测】2:如何制作自己的数据集_predefined_classes,2024年程序员学习,目标检测,人工智能,计算机视觉
【SSD目标检测】2:如何制作自己的数据集_predefined_classes,2024年程序员学习,目标检测,人工智能,计算机视觉
【SSD目标检测】2:如何制作自己的数据集_predefined_classes,2024年程序员学习,目标检测,人工智能,计算机视觉

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注运维)
【SSD目标检测】2:如何制作自己的数据集_predefined_classes,2024年程序员学习,目标检测,人工智能,计算机视觉

正文

  • JPEGImages:用于存放训练、测试的图片(图片格式最好为.jpg)
  • Annotations:用于存放.xml格式的文件,也就是图片对应的标签,每个.xml文件都对应于JPEGImages文件夹的一张图片
  • ImageSets:内含Main文件夹,在…/ImageSets/Main文件夹下包含test.txt、train.txt、val.txt、trainval.txt四个文件,生成的方式第二步有详细说明

-----------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------

2、制作自己的数据集

第一步:下载图片,存入JPEGImages文件夹——你可以直接从各种渠道下载得到所需要的图片集,存入到JPEGImages文件夹下,命名格式统一为“00xxxx.jpg”,如下图:
【SSD目标检测】2:如何制作自己的数据集_predefined_classes,2024年程序员学习,目标检测,人工智能,计算机视觉
-------------------------------------------------------------------------------------**----

第二步:使用labelImg工具给图片打标签——这是最重要的一步。如果你的python已经pip install lxml下载了lxml,就可以直接在我网盘下载labelImg工具windows版使用,密码:gyf3。
通过以上网盘下载得到工具文件后,打开…/data/predefined_classes.txt文件,可以发现这里都是图片标签——把你将要用到的标签都事先存入在这里,注意标签不能有中文。每次使用都把.exedata这两个文件拖到桌面上(如果直接在文件夹内运行.exe会报错不能运行),打开labelImg.exe文件,运行界面如下:就可以开始给图片打标签了

labelImg工具简单的使用步骤就是:

  1. 打开单个文件,或者打开一个图片文件夹
  2. 给目标物体建立box边框
  3. 对box边框内的物体贴上标签
  4. 把一张图片内所有目标物都打上各自标签后,再保存生成.xml文件,注意存入Annotations文件夹,文件名也要与当前图片保存一致
  5. 然后next下一张图片继续打标签,直到所有图片内物体都打上了标签,最后exit

-------------------------------------------------------------------------------------**----

第三步:生成Main文件夹下的.txt文件——在主目录下运行以下代码既可生成test.txt、train.txt、val.txt、trainval.txt四个文件,请注意每一个path地址是否正确(其实这四个txt文件在后续并没有什么用处)

# -\*- coding:utf-8 -\*-
# -\*- author:zzZ\_CMing CSDN address:https://blog.csdn.net/zzZ\_CMing
# -\*- 2018/07/18; 15:19
# -\*- python3.5
import os  
import random  

trainval_percent = 0.7  
train_percent = 0.8
xmlfilepath = 'Annotations/'
txtsavepath = 'ImageSets/Main'  
total_xml = os.listdir(xmlfilepath)  

num = len(total_xml)  
list = range(num)  
tv = int(num\*trainval_percent)  
tr = int(tv\*train_percent)  
trainval = random.sample(list,tv)  
train = random.sample(trainval,tr)  

ftrainval = open(txtsavepath+'/trainval.txt', 'w')  
ftest = open(txtsavepath+'/test.txt', 'w')  
ftrain = open(txtsavepath+'/train.txt', 'w')  
fval = open(txtsavepath+'/val.txt', 'w')  

for i in list:  
    name = total_xml[i][:-4]+'\n'  
    if i in trainval:  
        ftrainval.write(name)  
        if i in train:  
            ftrain.write(name)  
        else:  
            fval.write(name)  
    else:  
        ftest.write(name)  

ftrainval.close()  
ftrain.close()  
fval.close()  
ftest .close()
print('Well Done!!!')

运行完成,得到如下文件:可以打开看一看,内容就是各个图片的索引,意味着哪些图片用做训练,哪些用做测试。

3、用.xml标签,生成.tfrecord文件

说明:SSD框架所用到的标签文件并不直接是.xml格式文件,而是.tfrecord文件,因为这一部分比较重要,代码先贴上——只为想研究如何生成.tfrecord文件的同学准备,想要了解 SSD目标检测(3):使用自己的数据集做识别(详细说明附源码),请继续点击,详细过程讲解+源码即刻奉上文章来源地址https://www.toymoban.com/news/detail-860259.html

# -\*- coding:utf-8 -\*-
# -\*- author:zzZ\_CMing CSDN address:https://blog.csdn.net/zzZ\_CMing
# -\*- 2018/07/17; 13:18
# -\*- python3.5
"""
特别注意: 17行VOC\_LABELS标签要修改,189行的path地址要正确
"""

import os
import sys
import random
import numpy as np
import tensorflow as tf
import xml.etree.ElementTree as ET

# 我的标签定义只有手表这一类,所以下面的VOC\_LABELS要根据自己的图片标签而定,第一组'none': (0, 'Background')是不能删除的;
VOC_LABELS = {
    'none': (0, 'Background'),
    'watch': (1, 'watch')
}

# 图片和标签存放的文件夹.
DIRECTORY_ANNOTATIONS = 'Annotations/'
DIRECTORY_IMAGES = 'JPEGImages/'

# 随机种子.
RANDOM_SEED = 4242
SAMPLES_PER_FILES = 3  # 每个.tfrecords文件包含几个.xml样本



def int64\_feature(value):
    """
 生成整数型,浮点型和字符串型的属性
 """
    if not isinstance(value, list):
        value = [value]
    return tf.train.Feature(int64_list=tf.train.Int64List(value=value))


def float\_feature(value):
    if not isinstance(value, list):
        value = [value]
    return tf.train.Feature(float_list=tf.train.FloatList(value=value))


def bytes\_feature(value):
    if not isinstance(value, list):
        value = [value]
    return tf.train.Feature(bytes_list=tf.train.BytesList(value=value))


def \_process\_image(directory, name):
    """
 图片处理
 """
    # Read the image file.
    filename = directory + DIRECTORY_IMAGES + name + '.jpg'
    image_data = tf.gfile.FastGFile(filename, 'rb').read()

    # Read the XML annotation file.
    filename = os.path.join(directory, DIRECTORY_ANNOTATIONS, name + '.xml')
    tree = ET.parse(filename)
    root = tree.getroot()

    # Image shape.
    size = root.find('size')
    shape = [int(size.find('height').text),
             int(size.find('width').text),
             int(size.find('depth').text)]
    # Find annotations.
    bboxes = []
    labels = []
    labels_text = []
    difficult = []
    truncated = []
    for obj in root.findall('object'):
        label = obj.find('name').text
        labels.append(int(VOC_LABELS[label][0]))
        labels_text.append(label.encode('ascii'))  # 变为ascii格式

        if obj.find('difficult'):
            difficult.append(int(obj.find('difficult').text))
        else:
            difficult.append(0)
        if obj.find('truncated'):
            truncated.append(int(obj.find('truncated').text))
        else:
            truncated.append(0)

        bbox = obj.find('bndbox')
        a = float(bbox.find('ymin').text) / shape[0]
        b = float(bbox.find('xmin').text) / shape[1]
        a1 = float(bbox.find('ymax').text) / shape[0]
        b1 = float(bbox.find('xmax').text) / shape[1]
        a_e = a1 - a
        b_e = b1 - b
        if abs(a_e) < 1 and abs(b_e) < 1:
            bboxes.append((a, b, a1, b1))

    return image_data, shape, bboxes, labels, labels_text, difficult, truncated


def \_convert\_to\_example(image_data, labels, labels_text, bboxes, shape,difficult, truncated):
    """
 转化样例
 """


### 最后的话

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

### 资料预览

给大家整理的视频资料:

【SSD目标检测】2:如何制作自己的数据集_predefined_classes,2024年程序员学习,目标检测,人工智能,计算机视觉

给大家整理的电子书资料:

  

【SSD目标检测】2:如何制作自己的数据集_predefined_classes,2024年程序员学习,目标检测,人工智能,计算机视觉



**如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!**


**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注运维)**
【SSD目标检测】2:如何制作自己的数据集_predefined_classes,2024年程序员学习,目标检测,人工智能,计算机视觉

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注运维)**
[外链图片转存中...(img-YXfWliY0-1713199321779)]

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

到了这里,关于【SSD目标检测】2:如何制作自己的数据集_predefined_classes的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 目标检测制作数据集时画框的原则

    数据标注是通过人工把需要识别和分辨的数据贴上标签。深度神经网络学习这些标注数据的特征,最终实现自主识别的功能。下面介绍几个目标检测中的标注通用规则: 1、贴边规则 :标注框需紧贴目标物体的边缘进行画框标注,不可框小或框大。 2、重叠规则 :当两个目标

    2024年02月16日
    浏览(13)
  • 经典目标检测神经网络 - RCNN、SSD、YOLO

    目标检测算法主要分两类:One-Stage与Two-Stage。One-Stage与Two-Stage是两种不同的思路,其各有各的优缺点。 One-Stage     主要思路:直接通过卷积神经网络提取特征,预测目标的分类与定位; Two-Stage     主要思路:先进行区域生成,即生成候选区域(Region Proposal),在通

    2024年02月08日
    浏览(16)
  • 使用YOLOv8训练自己的【目标检测】数据集

    随着深度学习技术在计算机视觉领域的广泛应用,行人检测和车辆检测等任务已成为热门研究领域。然而,实际应用中,可用的预训练模型可能并不适用于所有应用场景。 例如,虽然预先训练的模型可以检测出行人,但它无法区分“好人”和“坏人”,因为它没有接受相关的

    2024年04月10日
    浏览(26)
  • Yolopose关键点检测:自己标注数据集,制作数据集(二)

    继Yolopose关键点检测:自己标注数据集,制作数据集(一)后,完成了labelme下的JSON转coco格式的JSON,接下来需要介绍如何将coco格式的JSON文件转换成 yolo的txt文件,以及coco_kpts文件夹的内容布局。 通过edgeai-yolov5-yolo-pose工程下的README.md可知,官方已经给了labels格式及coco_kpts文件夹

    2024年02月15日
    浏览(13)
  • 目标检测之FasterRcnn算法——训练自己的数据集(pytorch)

    数据集 数据集目录如上,VOC数据集的格式 JPEGImages目录下,放上自己的训练集和测试集 Annotations 下,放上自己的xml文档配置,如上。 在VOCdevkitVOC2012ImageSetsMain下,放上自己的train.txt和val.txt, 上面,我按照VOC的格式来的,前面是所有的XML,因为VOC有21类,这里有我懒的删除,

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

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

    2024年02月21日
    浏览(18)
  • 用自己的数据集训练YOLO-NAS目标检测器

    YOLO-NAS 是 Deci 开发的一种新的最先进的目标检测模型。 在本指南中,我们将讨论什么是 YOLO-NAS 以及如何在自定义数据集上训练 YOLO-NAS 模型。 在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 3D场景编辑器 为了训练我们的自定

    2024年02月05日
    浏览(18)
  • 【Yolov5+Deepsort】训练自己的数据集(1)| 目标检测&追踪 | 轨迹绘制

    📢前言: 本篇是关于 如何使用YoloV5+Deepsort训练自己的数据集 ,从而实现目标检测与目标追踪,并绘制出物体的运动轨迹。本章讲解的为第一个内容:简单介绍YoloV5+Deepsort中所用到的 目标检测,追踪及sortDeppsort算法。 本文中用到的数据集均为自采,实验动物为斑马鱼。 文尾

    2024年02月14日
    浏览(18)
  • 【YOLOv7】使用 YOLOv7 做目标检测 (使用自己的数据集 + 图解超详细)

    论文链接:https://arxiv.org/abs/2207.02696 GitHub 链接:https://github.com/WongKinYiu/yolov7 修改YOLOV7配置 data.yaml 新建data.yaml文件,配置yolov7的数据集,数据集为 YOLO格式 。 weights 新建weights文件夹,下载yolov7.pt https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7.pt。 train.py 修改如下的参数,

    2024年02月12日
    浏览(12)
  • 【Yolov5+Deepsort】训练自己的数据集(3)| 目标检测&追踪 | 轨迹绘制 | 报错分析&解决

    📢前言: 本篇是关于 如何使用YoloV5+Deepsort训练自己的数据集 ,从而实现目标检测与目标追踪,并绘制出物体的运动轨迹。本章讲解的为第三部分内容:数据集的制作、Deepsort模型的训练以及动物运动轨迹的绘制。本文中用到的数据集均为自采,实验动物为斑马鱼。 💻环境

    2024年02月10日
    浏览(17)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包