furg-fire-datase解析,坐标提取,label制作

火灾检测——相关数据集 收集了火灾检测研究的主要数据集,包括数据集的简要信息,可供下载。 阅读详情

训练环境:darknet+yolov3,坐标写入格式:x,y,w,h,如果需要去他格式的坐标可以修改

def convert(size, box)函数。

furg-fire-datase:

火焰检测数据机,涵盖了大部分交通事故中火焰检测的场景。

数据集制作脚本

# -*- coding: utf-8 -*-
# @Time : 2020/7/14 13:23
# @Author : Libin
# @File : ReadXml.py
# @Software: PyCharm
import os

import glob
import shutil
import cv2


debug=False


train_dir='/mnt/temp/'
train_data_path='/mnt/temp/train_set.txt'

path = "./"
# save_path = "C:/Users/91324/Desktop/model/Xml2Txt/"
xml_file = os.listdir(path)
def convert(size, box):
    """
    :param size:image size
    :param box: minx,miny,maxx,maxy
    :return:
    """
    dw = 1./size[0]
    dh = 1./size[1]
    x = (box[0] + box[2])/2.0
    y = (box[1] + box[3])/2.0
    w = box[2] - box[0]
    h = box[3] - box[1]
    x = x*dw
    w = w*dw
    y = y*dh
    h = h*dh
    return (x,y,w,h)

def rename(base_path):
    """

    :param base_path:dataset directory
    :return: None
    """
    print("***********************rename XML***********************\n")
    try:
        xmllist=glob.glob(os.path.join(base_path,"*.xml"))

    except Exception as e:
        print(" %s " %e)
        return False

    for xml_file in xmllist:
        txt_file=xml_file[:-4]+'.txt'
        # os.rename(xml_file, txt_file)
        shutil.copy(xml_file, txt_file)

        read_coordinate(txt_file)
    if len(xmllist)==0:
        txtlist = glob.glob(os.path.join(base_path, "*.txt"))
        for txt_file in txtlist:
            read_coordinate(txt_file)

def draw_rect(txt_path,coor):
    """
    :param txt_path: label file save to txt_path
    :param coor: region coor
    :return: None
    """
    img_name=txt_path[:-4]+'.jpg'
    if not os.path.exists(img_name):
        return
    img=cv2.imread(img_name)
    cv2.rectangle(img,(coor[0],coor[1]),(coor[2],coor[3]),color=(0,255,0),thickness=1)
    cv2.imwrite(img_name,img)

def read_coordinate(txt_file):
    """
    :param txt_file: read text from txt_file (coordinate )
    :return:
    """
    global iw,ih
    iw=-1
    ih=-1

    try:
        new_frames = False
        with open(txt_file,'r') as f:
            lines=f.readline()
            while lines !="":
                print(lines)
                """
                Get image size
                """
                if lines.strip().find("</frameWidth>") !=-1:

                    iw=int(lines.strip().split('</frameWidth>')[0].split('<frameWidth>')[1])
                elif lines.strip().find("</frameHeight>") !=-1:
                    ih=int(lines.strip().split('</frameHeight>')[0].split('<frameHeight>')[1])


                target_single_frame=[]
                # single_box=[]
                #检测到了视频帧
                if lines.find('frameNumber') !=-1 :
                    frames_num=int(lines.strip().split('<frameNumber>')[1].split('</frameNumber>')[0])  # <_><frameNumber>0</frameNumber>
                    print("frames number :%d " %frames_num)

                    while True:
                        lines=f.readline()



                        if lines.find('frameNumber') ==-1:
                            if lines.find('</_></annotations></_>')!=-1:#包含坐标值的行

                                need_value=lines.strip().split('</_></annotations></_>')[0]
                                if need_value=='</_></annotations></_>':
                                    continue
                                else:

                                    print("read from txt: ",need_value)
                                    minx,miny,w,h=[int(i) for i in need_value.split(' ')]


                                    target_single_frame.append([minx,miny,minx+w,miny+h])
                        else:
                            new_frames = True
                            if len(target_single_frame) !=0:

                                # label_file=save_path+str(frames_num)+'_train.txt'
                                label_dir=path+os.path.basename(txt_file)[:-4]
                                if not os.path.exists(label_dir):
                                    os.makedirs(label_dir, exist_ok=True)

                                label_file=label_dir+'/'+str(frames_num)+'.txt'
                                print(label_file)
                                fw=open(label_file,'w')

                                for box in target_single_frame:
                                    if debug:
                                        draw_rect(label_file, box)
                                    con_box = convert((iw, ih), box)
                                    fw.write(str('2') + " " + " ".join([str(a) for a in con_box]) + '\n')
                                    fw.close()

                                    if os.path.exists(label_file[:-4] + '.jpg'):
                                        base_label_path = os.path.basename(label_file)
                                        src_img_path = label_file[:-4] + '.jpg'
                                        save_label_to_path = train_dir + base_label_path
                                        save_img_to_path = train_dir + base_label_path[:-4] + '.jpg'
                                        shutil.copy(src_img_path, save_img_to_path)
                                        shutil.copy(label_file, save_label_to_path)


                                        with open(train_data_path, 'a') as tfp:
                                            tfp.write(save_img_to_path + '\n')


                            break

                        if lines.strip()=='':
                            """写入视频最后一帧数据集"""
                            # label_file = save_path + str(frames_num) + '_train.txt'
                            label_file = path + os.path.basename(txt_file)[:-4] + '/' + str(frames_num) + '.txt'

                            print(label_file)
                            fw = open(label_file, 'w')

                            for box in target_single_frame:
                                if debug:
                                    draw_rect(label_file, box)
                                con_box = convert((iw, ih), box)
                                fw.write(str('2') + " " + " ".join([str(a) for a in con_box]) + '\n')
                                fw.close()

                                if os.path.exists(label_file[:-4] + '.jpg'):
                                    base_label_path = os.path.basename(label_file)
                                    src_img_path = label_file[:-4] + '.jpg'
                                    save_label_to_path = train_dir + base_label_path
                                    save_img_to_path = train_dir + base_label_path[:-4] + '.jpg'
                                    shutil.copy(src_img_path, save_img_to_path)
                                    shutil.copy(label_file, save_label_to_path)

                                    with open(train_data_path, 'a') as tfp:
                                        tfp.write(save_img_to_path + '\n')


                            return #文件读完

                if new_frames==True:
                    new_frames=False
                    continue
                else:
                    lines = f.readline().strip()

    except Exception as e:
        print(" %s " %e)
        return False





def save_video_frame():
    """

    :return:
    """

    videos = glob.glob(os.path.join(path,"*.mp4"))
    print("video path:",videos)
    for video_name in videos:
        folder_name=path+os.path.basename(video_name)[:-4]
        os.makedirs(folder_name, exist_ok=True)
        print("="*10+'开始处理视频:%s'%video_name+"="*10)
        vc = cv2.VideoCapture(video_name)
        c = 0
        rval = vc.isOpened()

        while rval:

            rval, frame = vc.read()
            pic_path = folder_name + '/'
            if rval:
                cv2.imwrite(pic_path + str(c) + '.jpg', frame)
                cv2.waitKey(10)
                c += 1
            else:
                break
            print('='*10+'%s图片数量:%i'%(video_name,c)+'='*10)
        vc.release()
        print('save_success')
        print(folder_name)



if __name__=='__main__':
    # save_video_frame()
    rename(path)


 

火焰数据集(含标注好的标签) 火焰的数据集,里面有1553张图片,含有标注好的txt和xml文件,自己标注,用yolov5训练,mAP@.5为0.953,mAP@.5:.95:为0.679 立即下载

相关推荐

fire_dataset.zip

火焰视频数据集,里面包含有9个火焰视频

【AI】Datasets

然而,随着计算机视觉技术的进步,现实世界中的噪声图像去噪问题也随之而来。为了在实现并发真实世界图像去噪数据集的同时促进对该问题的研究,作者们构建了一个新的基准数据集,其中包含不同自然场景的综合真实世界噪声图像。这些图像是由不同的相机在不同的相机设置下拍摄的。Exclusively Dark (ExDARK) 数据集是 7,363 张从极低光环境到黄昏(即 10 种不同条件)的低光图像的集合,具有 12 个对象类(类似于 PASCAL VOC),在图像类级别和局部对象边界上进行了注释盒子。

bryant_meng 1271

火焰烟雾检测数据集

火焰检测数据集, 数据集中包含了火焰和烟雾的数据集, 可以用火焰以及烟雾检测的训练或者是测试

火灾数据集处理

数据集 下载链接:https://github.com/steffensbola/furg-fire-dataset 内容:MP4的视频和对应的xml文件 问题:1.This XML was generated using OpenCv 2.4.9 2.xml文件中很多帧的图片没有坐标信息 目标:处理成VOC2007数据集格式 一,视频解帧 import cv2 import numpy as n...

qq_43100178的博客 4758

火灾检测图片voc集,和训练好的yolo_tiny模型weights

火焰图集合和训练好的yolo_tiny火焰检测weights,经过处理成voc数据集,而且经过训练,可以实现yolo-tiny的图像检测。

fire数据集10000个case

可以用来学习数据挖掘,机器学习算法的数据集

Furg-Fire-Dataset 项目常见问题解决方案

Furg-Fire-Dataset 项目常见问题解决方案 1. 项目基础介绍和主要编程语言 Furg-Fire-Dataset 是一个开源数据集,旨在为比较不同非固定视频基础的火焰检测器的性能提供一个简单直接的方式。该项目包含了一系列视频文件,每个视频文件都对应一个XML格式的注释文件,这些注释文件中定义了视频中的火焰矩形框。这个数据集主要用于计算机视觉和机器学习领域,尤其是视频处理和火焰检测相关...

gitblog_00122的博客 750

火焰识别3k张VOC已标注数据集

本数据集包含的火焰类别有“蜡烛火苗”、“森林大火”、“城市火灾”等,适用于做火焰识别的目标检测初学者或者与火焰识别有关的项目用户进行学习训练使用。

furg-fire-dataset 使用教程

furg-fire-dataset 使用教程 本教程将指导您了解并使用 furg-fire-dataset 这一开源项目,该项目旨在提供一种简单的方法来比较不同非固定视频基础的火灾检测器的性能。以下是核心内容概览: 1. 项目目录结构及介绍 项目基于 GitHub,其基本目录结构如下所示: furg-fire-dataset/ │ ├── Car1.mp4 // 视频样本文件 ├─...

gitblog_00334的博客 422

深度学习 - 目标识别 - 火焰识别 - 标注完成 - 视频标注 - 消防数据

深度学习 - 目标识别 - 火焰识别 - 标注完成 - 视频标注 - 消防数据

furg-fire-dataset-master.7z

火焰数据集——视频逐帧数据集600M

火灾检测新利器:Furg-Fire-Dataset深度探索

火灾检测新利器:Furg-Fire-Dataset深度探索 在快速响应火灾现场的智能化进程中,准确而高效的视频基础火源探测技术变得至关重要。今天,我们要向大家推荐的是一个专为比较不同非稳态视频火灾检测器性能而设计的重量级开源项目——Furg-Fire-Dataset。 项目介绍 Furg-Fire-Dataset是一个针对非稳定场景下视频火焰检测的重要数据集。它包含了多段视频素材,每一段视频都配以...

gitblog_00337的博客 984

furg-fire-dataset:提供数据集和评估方案,以提供一种直接的方式来比较不同的基于非固定视频的火灾探测器的性能

烟雾数据集 一个数据集,用于比较不同的基于非固定视频的火灾探测器的性能。 每个视频文件都有一个关联的XML注释文件(采用怪异的OpenCv 2.4.9 XML格式)。 我们不再更新此存储库。 每个视频文件都有一个对应的XML文件,每个火焰周围都有规则的矩形。 它们是OpenCv矩形定义。 此XML是使用OpenCv 2.4.9生成的,此后未(可能不会)进行更新。 Rect(int x,int y,int width,int height)x和y是左上角。 有关更多信息,请查看文档: 参考: @inproceedings{huttner2017first, title={First response fire combat: Deep leaning based visible fire detection}, author={H{\"u}ttner, Valqu{\'\i}

FURG火灾检测数据集指南

FURG火灾检测数据集指南 1. 项目介绍 FURG火灾检测数据集是由Steffens Cristiano Rafael等人创建的一个重要资源,旨在促进非固定位置视频基础火灾探测器的性能评估。这个开源项目提供了一套完整的数据集及评价方案,使得研究者能够以直观的方式对比不同火灾检测算法的效果。数据集中包含了多种场景的视频文件,每段视频都有对应的XML注释文件,采用OpenCV 2.4.9时期的XML...

gitblog_00503的博客 713

别再手动算重量了!用C++给UG/NX写个自动计算零件质量与质心的插件(附完整源码)

本文详细介绍了如何使用C++为UG/NX开发智能质量分析插件,实现零件质量与质心的自动计算。通过结合NXOpen和UF_MODL API,设计高效的数据结构和批量处理机制,大幅提升机械设计效率。文章包含完整源码和实用技巧,帮助工程师告别手动计算,适用于复杂装配体的自动化工程计算。

weixin_30247307的博客 134

基于opencv自定义网格板的相机标定软件源码

本软件开发版使用的是VS2013和QT5.7, 安装版的需要安装VS核心库(目录里的vcredist_x64.exe, 已安装VS的不需要)。采用强大的模板匹配算法,本程序适用于自定义大范围网格标定(本例程网格使用的是自己画的网格板31*21*10cm),网格点识别度高,矫正速度快,精度高。 使用步骤 第1步: 打开图片,打开标定工具GridCalibTool.exe, 然后选择打开一张待标定的图(CalibFiles文件夹下的500.jpg)。如下图: 第2步: 提取待标定区域(去掉多余部分,只保留网

qq_33138437的博客 1121

yolov3-tiny 火焰目标检测+数据集+模型测试

yolo火焰目标检测+数据集+模型测试

量子君的blog 1689

RK3588内核崩溃日志捕获:pstore与ramoops的实战配置指南

本文详细介绍了在RK3588嵌入式设备上配置pstore与ramoops以捕获内核崩溃日志的实战指南。通过内核配置调整、设备树设置及高级调试技巧,帮助开发者有效定位系统崩溃原因,特别适合户外智能设备等无法长期连接调试器的场景。文章还提供了生产环境优化建议,确保日志捕获的可靠性与安全性。

weixin_29189363的博客 407

火灾(火焰)数据集链接

火灾视频数据集链接:https://github.com/steffensbola/furg-fire-dataset 火灾图片数据集链接:https://collections.durham.ac.uk/files/r2d217qp536#.XW9UE_y-vCI

南洲.的博客 2万+

图解转置卷积原理

声明:本文大部分搬运自【机器学习】详解 转置卷积 (Transpose Convolution) 感谢博主花与人间事同,本人只是在博主原创文章上做补充以及添加一些自己的理解。 1 转置卷积的背景 通常,对图像进行多次卷积运算后,特征图的尺寸会不断缩小。而对于某些特定任务 (如图像分割和图像生成等),需将图像恢复到原尺寸再操作。这个将图像由小分辨率映射到大分辨率的尺寸恢复操作,称为上采样 (Upsample),如下图所示: 上采样方法有很多,详见【图像处理】详解 最近邻插值、线性插值、双线性插值、双三次插值

laonafahaodange的博客 5686

485芯片AB波形正负半周的问题探讨

      本人做的一个产品,产品的其中一个接口是RS485的,我们使用的芯片是MAX13487E。MCU是STM32F103,MCU的USART通过光耦隔离后,接到MAX13487E。因为STM32F103的VCC是3.3V的,MAX13487E的VCC是5V。      部分原理图如下,上述部分电路参考了官方的参考设计,现在测试的AB波形时候发现如下问题。1.把R10和R16改为1k,示波器C...

qq_26308521的博客 1万+

火焰检测数据集

以下数据集是在火灾检测研究中遇到的数据集,不是标准数据集(貌似也没有标准数据集),不过可供火灾检测研究使用,我看了一些论文,用的较多的数据集是最后一个。 火灾图片数据集链接1: https://collections.durham.ac.uk/files/r2d217qp536#.XW9UE_y-vCI 火灾图片数据集链接2: https://github.com/cair/Fire-Detection-Image-Dataset 火灾视频数据集链接: https://github.com/steffens

程序员吗? 3713

架构师之HBase vs MongoDB 技术选型与场景决策实战案例

面对海量数据和高并发查询,该选 HBase 还是 MongoDB?本文为你提供完整的决策框架!从数据模型对比、架构解析、六大真实场景(电信 CDR、金融行情、广告点击流、电商商品、社交档案、内容管理)到性能、一致性、运维全面对比,助你在 PB 级时序数据和灵活查询之间做出精准选择!

肖哥弹架构博客 1102
上一篇: linux下,批量复制文件名带空格的文件
下一篇: C循环读指定路径下的文件
LiBin1103
博客等级 码龄9年 38粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值