YOLOv8教程系列:二、为YOLO系列数据集添加背景图片,降低误识别率

这篇具有很好参考价值的文章主要介绍了YOLOv8教程系列:二、为YOLO系列数据集添加背景图片,降低误识别率。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.新建脚本

在自己的工作空间里新建一个create_xml.py的文件,将下述代码复制进去

import os
import glob
import cv2
import threading
import queue

class CreateXml:
    def __init__(self,JpgPath: str, XmlPath: str):
        # 指定作为背景图片的图片路径
        self.JpgPath = JpgPath
        # 即将生成的xml存放路径
        self.XmlPath = XmlPath  
        # 创建读图线程以及处理线程,防止读图时间过长影响处理
        self.readimageThread = threading.Thread(target=self.readImg)
        self.createThread = threading.Thread(target=self.create)              
        # 获取所有图片的列表
        self.imglist = os.listdir(self.JpgPath)
        # 最大长度设定为列表总长度
        self.imgQueue = queue.Queue(maxsize=len(self.imglist))

    
    def readImg(self):
        for jpgFile in self.imglist:
            #不加后缀,用以拼接xml
            jpg_prefix = os.path.splitext(jpgFile)[0]
            # 图片全路径
            jpg_full_path = os.path.join(self.JpgPath, jpgFile)
            img = cv2.imread(jpg_full_path)
            width, height,channel = img.shape
            array = [jpgFile,jpg_prefix,jpg_full_path,width,height,channel]
            self.imgQueue.put(array) 
        print("写入图片线程已结束")


    def create(self):
        # 为了保险起见,所有图片都要被读完
        count = 0
        while True:
        # 如果数组不为空则进行处理
            try:
                imgArray = self.imgQueue.get(block=False)
                xmlFilepath = os.path.join(self.XmlPath, imgArray[1] + '.xml')
                with open(xmlFilepath,'w') as f:
                    f.write('<annotation>\n')
                    f.write('\t<folder>JPEGImages</folder>\n')
                    f.write('\t<filename>' + str(imgArray[0]) + '</filename>\n')
                    f.write('\t<path>' + str(imgArray[2]) + '</path>\n')
                    f.write('\t<source>\n')
                    f.write('\t\t<database>' + 'Unknown' + '</database>\n')
                    f.write('\t</source>\n')
                    f.write('\t<size>\n')
                    f.write('\t\t<width>' + str(imgArray[3]) + '</width>\n')
                    f.write('\t\t<height>' + str(imgArray[4]) + '</height>\n')
                    f.write('\t\t<depth>'+ str(imgArray[5])+'</depth>\n')
                    f.write('\t</size>\n')
                    f.write('\t<segmented>0</segmented>\n') 
                    f.write('</annotation>')
                print(f"{xmlFilepath} 已写入")
                count += 1

            except queue.Empty :
                # print("queue get失败,即将再次尝试")
                if count == len(self.imglist):
                    break

        print("写入xml线程已结束")

    def run(self):
        # 开始读图、处理线程
        self.readimageThread.start()
        self.createThread.start()      

if __name__ == "__main__": 
    Annotation = CreateXml(JpgPath='/Users/lizhijun/demo/create_xml/background',
                            XmlPath ='/Users/lizhijun/demo/create_xml/empty_xml')

    Annotation.run()

2.修改脚本

新建一个保存xml的文件夹,将脚本的74行的JpgPath和XmlPath修改为自己的文件夹路径,这是我的background文件夹:
YOLOv8教程系列:二、为YOLO系列数据集添加背景图片,降低误识别率,YOLOv8目标检测,python,计算机视觉,人工智能,深度学习

3.运行脚本

python create_xml.py

这是我运行成功的截图
YOLOv8教程系列:二、为YOLO系列数据集添加背景图片,降低误识别率,YOLOv8目标检测,python,计算机视觉,人工智能,深度学习
这是新生成的xml文件
YOLOv8教程系列:二、为YOLO系列数据集添加背景图片,降低误识别率,YOLOv8目标检测,python,计算机视觉,人工智能,深度学习
最后,将图片和xml都复制到对应的待训练文件夹中,即可导出训练啦~

YOLOv8的训练教程可参看这篇文件:
YOLOv8教程系列:一、使用自定义数据集训练YOLOv8模型(详细版教程),包含环境搭建/数据准备/模型训练/预测/验证/导出等文章来源地址https://www.toymoban.com/news/detail-647903.html

到了这里,关于YOLOv8教程系列:二、为YOLO系列数据集添加背景图片,降低误识别率的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 从YOLOv1到YOLOv8的YOLO系列最新综述【2023年4月】

    作者: Juan R. Terven 、 Diana M. Cordova-Esparaza 摘要: YOLO已经成为 机器人 、 无人驾驶汽车 和 视频监控应用 的核心实时物体检测系统。我们对YOLO的演变进行了全面的分析,研究了从最初的YOLO到YOLOv8每次迭代的创新和贡献。我们首先描述了标准指标和后处理;然后,我们讨论了

    2024年02月04日
    浏览(44)
  • YOLO-NAS对象检测算法再一次颠覆YOLO系列算法——已超越YOLOv8

    对象检测彻底改变了机器感知和解释人类世界的方式。这是计算机视觉中一项特别关键的任务,使机器能够识别和定位图像或视频中的物体。如自动驾驶汽车、面部识别系统等。推动对象检测进步的一个关键因素是发明了神经网络架构。强大的神经网络推动了对象检测的进步

    2024年02月09日
    浏览(24)
  • CBCGPRibbon 添加背景图片

    resource.h中声明资源的ID:ID_RIBBON_BACKIMAGE rc文件中添加png图片路径: ID_RIBBON_BACKIMAGE     PNG     DISCARDABLE     \\\"res\\\\bkribbon.png\\\" 代码中添加下测: //添加背景图片     m_wndRibbonBar.SetBackgroundImage(ID_RIBBON_BACKIMAGE);   背景色图片加上来了

    2024年02月14日
    浏览(27)
  • 添加背景图片画图matlab

    clear clc close all cd(\\\'C:UserswindDesktop\\\') ha=axes(\\\'units\\\',\\\'normalized\\\',\\\'position\\\',[0 0 1 1]); uistack(ha,\\\'down\\\') II=imread(\\\'PP.png\\\'); image(II) colormap gray set(ha,\\\'handlevisibility\\\',\\\'off\\\',\\\'visible\\\',\\\'off\\\'); x=-pi:0.1:pi; y=x.*sin(x.*cos(x)).*tan(x); plot(x,y,\\\'LineWidth\\\',2) set(gca,\\\'color\\\',\\\'none\\\') %这里以前自己没有注意

    2024年04月09日
    浏览(32)
  • pygame如何添加背景图片

    Pygame可以使用pygame.image模块来添加背景图片,方法如下: 使用pygame.image.load( )加载图片; 使用pygame.transform.scale( )缩放图片; 使用pygame.display.set_mode( )创建一个新的显示窗口; 使用pygame.display.get_surface( )获取窗口表面; 使用pygame.display.update( )更新窗口表面; 使用pygame.display

    2024年02月11日
    浏览(41)
  • MFC为控件添加背景图片

    1、 添加选择Bitmap导入图片,图片文件最好放在项目res目录中,同时是BMP格式。上传后的图片在资源视图,命名为IDB_BITMAP_M_BACK。 2、在cpp的C***Dlg::OnPaint()函数下添加如下代码 如果是主程序的cpp文件中已有OnPaint函数,则修改else部分代码: 运行效果:

    2024年02月12日
    浏览(40)
  • 给vue的页面添加背景图片

    1.在tempalate下面建设两个div,两个div建设在同一个div内 2.在第一个div内添加一个图片 img   :src=\\\"imgSrc\\\" width=\\\"100%\\\" height=\\\"100%\\\" alt=\\\"\\\" / 3.js里面定义图片的返回路径 在data {return内}因为存放路径没办法读取所以就 把类型写为require imgSrc:require( \\\'../../assets/images/bg2.jpg\\\' ) 4.给他俩添加styl

    2024年02月11日
    浏览(34)
  • CSDN独家|YOLOv5改进、YOLOv7改进、YOLOv8改进、YOLOX改进目录一览|YOLO改进模型全系列目录(芒果书系列) | 人工智能专家老师联袂推荐

    🔥 《芒果书》系列改进专栏内的改进文章,均包含多种模型改进方式,均适用于 YOLOv3 、 YOLOv4 、 YOLOR 、 YOLOX 、 YOLOv5 、 YOLOv7 、 YOLOv8 改进(重点)!!! 🔥 专栏创新点教程 均有不少同学反应和我说已经在自己的数据集上有效涨点啦!! 包括COCO数据集也能涨点 , 所有文

    2024年02月03日
    浏览(43)
  • Java的GUI(Swing)添加背景图片

    众所周知,在Java中GUI的各种都是需要自己编写的,然后在添加背景图片的时候有时候会覆盖其他组件,所以下面具体讲述怎么插入背景图片,并且不覆盖。 直接调用以下方法即可,记得方法中的图片路径需要修改 将对应的组件设置成透明即可,如下示例 我的具体界面如下

    2024年02月12日
    浏览(34)
  • MFC 给对话框添加图片背景

    在windows开发当中做界面的主要技术之一就是使用MFC,通常我们看到的QQ,360,暴风影音这些漂亮的界面都可以用MFC来实现。今天我们来说一下如何用MFC美化对话框,默认情况下,对话框的背景如下: 那么,我们如何将它的背景变成如下界面呢,而且还要保留对话框的移动功能,

    2024年02月06日
    浏览(31)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包