wider_face数据集制作

本文介绍如何处理WIDER FACE数据集用于小目标检测。从官网下载数据后,解析train和test文件,自定义函数进行数据划分。通过mean_std函数计算像素的均值和方差。实现继承自`data.Dataset`的子类,重写`__init__`, `__getitem__`, `__len__`方法,以适应WIDER FACE数据集的txt格式。详细步骤包括:提取NAME、num、gt_bbox,转换坐标格式并进行数据类型转换。" 108273598,8339514,WPF图片上传与数据库保存教程,"['C#', 'WPF开发', '数据库交互', '文件操作']
摘要由CSDN通过智能技术生成

WIDER FACE数据集的DATASET

我们从官方网站下载了wider_face的数据集,利用其进行小目标检测,对其相应的train文件与test文件读取,并且把相应的num以及gt_bboxes进行相应的解析,自定义函数对其进行划分,编写mean_std函数对相关的pathlist中的文件像素进行累加求均值,以及对其进行方差的求解。利用继承data.Dataset的子类,重新对__init__以及__getitem__以及__len__重新编写,对vocdataset的内容进行重新模仿编写,voc主要是xml与image的对应,而widerface主要是应用txt文件的照片名字,以及bboxes的个数以及人脸数据信息。首先,将NAME放入pathlist,num单独提取,最后gt_bbox进行相应的数量切分,并对相应的前四列数据提取,为(x, y, w, h),这时文件内部是str形式,将其在导入新的列表或者字典中的时候进行格式转换以及位置标定(x1,y1,x2,y2)
本文皆为原创,如有转载,请附文章链接:
https://blog.csdn.net/canmang1/article/details/106748486

from os import listdir  # 返回指定的文件夹包含的文件或文件夹的名字的列表 path=os.getcwd()
from os.path import join #/后添加路径使用
from random import random
from PIL import Image, ImageDraw
import xml.etree.ElementTree  # 用于解析VOC的xmllabel
import re
from multiprocessing import Pipe, Process
import torch
import torch.utils.data as data
import torchvision.transforms as transforms
import cv2
from tqdm import tqdm
import numpy as np
from sampling import sampleEzDetect
#>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
from tensorboardX import SummaryWriter
__all__ = ["vocClassName", "vocClassID", "vocDataset"]
# writer=SummaryWriter()
# sample_rate=44100
# for n_iter in range(100):
#     dummy_s1=loss
#     dummy_s2=patch
#     writer.add_scalar('data/scalar1',dummy_s1,n_iter)
#     writer.add_scalar('dara/scalar2',dummy_s2,n_iter)
#     writer.add_scalars('data/scalar_group', {'xsinx': n_iter * np.sin(n_iter),
#                                              'xcosx': n_iter * np.cos(n_iter),
#                                              'arctanx': np.arctan(n_iter)}, n_iter)
#>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#制作数据里字典,key:图片路径,value[0]:人脸数目,value[.......]每四个为一个人脸标准框架
#img = Image.open(“图片路径”).convert(‘RGB’)  此时使HWC,需要WHC 利用torch.contigous.view进行维度变换
class text_info:
    def __init__(self,path_filename,istraining=True,predict=False):
        self.path=path_filename
        self.pathlist =None
        self.istraining=istraining
        self.predict=predict
    def creat_dict_of_bbox(self,filepath):
        target_gt={
   }
        f_test_bbox=open(filepath, "r")
        test_bbox=f_test_bbox.readlines()
        pathlist=[]
        for lines in test_bbox:
            lines=lines.rstrip()
            if lines.endswith('.jpg'):
                if self.istraining:
                    path=join('./WIDER_train/images/',lines)
                else:
                    path = join('./WIDER_val/images/', lines)
                if self.predict:
                    path=join('./WIDER_test/images/', lines)
                pathlist.append(path)
                target_gt[path]=[]
            else:
                lines=lines.split()[0:4]
                # print('slipt后的结果:'+str(lines))
                target_gt[path].append(lines)
        f_test_bbox.close()
        return pathlist,target_gt
#>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#解析,重新获得对应的ground_truth
    def special_picture_bboxes(self,file_path_train_or_test):
        loc_bboxes=[
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值