0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用DSFD检测DarkFace数据集过程

张嘉振 ? 来源:jf_63760997 ? 作者:jf_63760997 ? 2023-07-02 10:26 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1.下载Dark Face数据集,使用track2.2_test_sample文件中图片进行人脸检测测试。

2.修改DSFD源码中demo.py部分:

test_oneimage():
def test_oneimage():
# load net

# 影响网络的自动求导机制,使网络前向传播后不进行求导和反向传播(仅测试时使用)
torch.set_grad_enabled(False)

# 加载config配置参数
cfg = widerface_640
# 分类的类别数目---widerface.py
num_classes = len(WIDERFace_CLASSES) + 1 # +1 background
# 加载SSD网络模型,返回一个SSD实例
net = build_ssd('test', cfg['min_dim'], num_classes) # initialize SSD
# 加载预训练模型train_model
net.load_state_dict(torch.load(args.trained_model))
net.cuda()
# 表示进入评估模式,神经网络中有train(),eval()两种模式,使用eval()可关闭dropout
net.eval()
print('Finished loading model!')

# evaluation
cuda = args.cuda
transform = TestBaseTransform((104, 117, 123))
thresh=cfg['conf_thresh']
#save_path = args.save_folder
#num_images = len(testset)

# load data,从指定路径加载待测图像

'''
以此为界,前半部分为网络模型加载和初始化,后半部分为单张图片的人脸检测。此处为测试图片的路
径设置过程。
修改部分,不适用arg.imag_root作为测试图像路径.
遍历darkface数据集100张图片,依次读取并进行测试
'''

folder = './data/'

#img_id = 'face'
for i in range(100):

img = cv2.imread(folder + str(i) + '_fake_B.jpg', cv2.IMREAD_COLOR)
img_id = 'test' + str(i)


# 单张图片的测试过程
max_im_shrink = ( (2000.0*2000.0) / (img.shape[0] * img.shape[1])) ** 0.5
shrink = max_im_shrink if max_im_shrink < 1 else 1

det0 = infer(net , img , transform , thresh , cuda , shrink)
det1 = infer_flip(net , img , transform , thresh , cuda , shrink)
# shrink detecting and shrink only detect big face
st = 0.5 if max_im_shrink >= 0.75 else 0.5 * max_im_shrink
det_s = infer(net , img , transform , thresh , cuda , st)
index = np.where(np.maximum(det_s[:, 2] - det_s[:, 0] + 1, det_s[:, 3] - det_s[:, 1] + 1) > 30)[0]
det_s = det_s[index, :]
# enlarge one times
factor = 2
bt = min(factor, max_im_shrink) if max_im_shrink > 1 else (st + max_im_shrink) / 2
det_b = infer(net , img , transform , thresh , cuda , bt)
# enlarge small iamge x times for small face
if max_im_shrink > factor:
bt *= factor
while bt < max_im_shrink:
det_b = np.row_stack((det_b, infer(net , img , transform , thresh , cuda , bt)))
bt *= factor
det_b = np.row_stack((det_b, infer(net , img , transform , thresh , cuda , max_im_shrink) ))
# enlarge only detect small face
if bt > 1:
index = np.where(np.minimum(det_b[:, 2] - det_b[:, 0] + 1, det_b[:, 3] - det_b[:, 1] + 1) < 100)[0]
det_b = det_b[index, :]
else:
index = np.where(np.maximum(det_b[:, 2] - det_b[:, 0] + 1, det_b[:, 3] - det_b[:, 1] + 1) > 30)[0]
det_b = det_b[index, :]
det = np.row_stack((det0, det1, det_s, det_b))
det = bbox_vote(det)
vis_detections(img , det , img_id, args.visual_threshold)
3.运行demo.py即可。能在arg.save_folder处得到100张dark_face人脸检测结果。

补充:

DSFD只接收输入格式为jpg的图片,因此对darkface数据集进行批量转换。

import os
from PIL import Image

dirname_read="/home/...DSFD/darkface_png/"   # png格式图片的输入路径
dirname_write="/home/...DSFD/data/"    # jpg图片的输出路径
names=os.listdir(dirname_read)
count=0
for name in names:
   img=Image.open(dirname_read+name)
   name=name.split(".")
   if name[-1] == "png":
       name[-1] = "jpg"
       name = str.join(".", name)
       #r,g,b,a=img.split()
       #img=Image.merge("RGB",(r,g,b))
       to_save_path = dirname_write + name
       img.save(to_save_path)
       count+=1
       print(to_save_path, "------conut:", count)
   else:
       conti

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 网络
    +关注

    关注

    14

    文章

    7881

    浏览量

    91322
  • 源码
    +关注

    关注

    8

    文章

    675

    浏览量

    30474
  • 数据集
    +关注

    关注

    4

    文章

    1225

    浏览量

    25636
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    请问AICube所需的目标检测数据标注可以使用什么工具?

    请问AICube所需的目标检测数据标注可以使用什么工具? 我使用labelimg进行标注,标注后的数据改好文件名后导入不进去。一直卡在
    发表于 08-11 08:07

    AIcube1.4目标检测模型导入yolotxt格式数据后一直显示数据正在解析,为什么?

    AIcube1.4目标检测模型导入yolotxt格式数据后一直显示数据正在解析 数据有问题,把数据
    发表于 08-13 07:16

    开发和测试应该有多大?

    的开发将无法检测出这 0.1% 的差异。与我所遇到的机器学习问题相比,一个样本容量仅为 100 的开发,规模太小了。通常来说,开发的规模应该在 1,000 到 10,000 个样
    发表于 12-10 10:23

    建立开发和测试(总结)

    ,可以考虑花费更长的时间来执行这些工作。? 传统的 70% / 30% 训练/测试划分对于大规模数据并不适用,实际上,开发和测试的比
    发表于 12-14 10:56

    阻塞信号的设定过程

    PCB的信号阻塞信号的设定过程
    发表于 02-24 07:35

    一个benchmark实现大规模数据上的OOD检测

    的样本类别,所以在训练模型过程中,需要完成对于OOD样本的检测。然而,现有的解决方案主要是由小型、低分辨率的数据驱动的,如CIFAR和MNIST。像自动驾驶汽车这样的部署系统通常对分
    发表于 08-31 15:11

    基于SP-LNS-kNN的半导体生产过程故障检测方法研究

    的统计模量,其次对样本的统计模量使用其局部K近邻进行标准化,最后计算样本与其前K近邻距离,得到平均累积距离D作为检测指标,进而对工业过程故障进行在线检测。统计模量保留了
    发表于 02-10 10:06 ?1次下载

    多维数据是什么

    使用多维数据向导,可以在 SQL Server 2005 中轻松定义简单的多维数据。该向导可以帮助您为多维数据
    的头像 发表于 02-24 10:48 ?9941次阅读
    多维<b class='flag-5'>数据</b><b class='flag-5'>集</b>是什么

    深度学习数据,哪里可以获得这些数据

    这是用于开发物体检测算法的真实世界图像数据。这些只需要最少的数据预处理。它与本列表中提到的MNIST数据
    的头像 发表于 04-27 16:28 ?1.3w次阅读

    腾讯优图推出名为DSFD(中文名为双分支人脸检测器)的全新算法

    该算法已被计算机视觉顶级会议CVPR 2019接收,原文《DSFD: Dual Shot Face Detector》由南京理工大学计算机科学与工程学院 PCALab 与腾讯优图实验室合作完成。
    的头像 发表于 04-12 12:19 ?5979次阅读

    一种基于检测层次聚类的否定选择算法

    传统的否定选择过程需要将全部检测器与测试数据进行匹配以排除异常数据,该匹配过程需要花费大量时间,导致检测
    发表于 04-01 14:08 ?13次下载
    一种基于<b class='flag-5'>检测</b>器<b class='flag-5'>集</b>层次聚类的否定选择算法

    PyTorch教程14.6之对象检测数据

    电子发烧友网站提供《PyTorch教程14.6之对象检测数据.pdf》资料免费下载
    发表于 06-05 11:23 ?0次下载
    PyTorch教程14.6之对象<b class='flag-5'>检测</b><b class='flag-5'>数据</b><b class='flag-5'>集</b>

    PyTorch教程-14.6. 对象检测数据

    14.6. 对象检测数据? Colab [火炬]在 Colab 中打开笔记本 Colab [mxnet] Open the notebook in Colab Colab [jax
    的头像 发表于 06-05 15:44 ?790次阅读
    PyTorch教程-14.6. 对象<b class='flag-5'>检测</b><b class='flag-5'>数据</b><b class='flag-5'>集</b>

    最全自动驾驶数据分享系列一:目标检测数据

    自动驾驶数据分享是整数智能推出的一个全新分享系列,在这个系列中,我们将介绍目前为止各大科研机构和企业推出的所有公开自动驾驶数据数据
    发表于 06-06 11:15 ?2次下载
    最全自动驾驶<b class='flag-5'>数据</b><b class='flag-5'>集</b>分享系列一:目标<b class='flag-5'>检测</b><b class='flag-5'>数据</b><b class='flag-5'>集</b>

    PyTorch如何训练自己的数据

    数据。本文将深入解读如何使用PyTorch训练自己的数据,包括数据准备、模型定义、训练过程
    的头像 发表于 07-02 14:09 ?3857次阅读