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

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

3天内不再提示

YOLOv6模型文件的输入与输出结构

OpenCV学堂 来源:OpenCV学堂 2023-06-25 15:37 次阅读

YOLOv6人脸检测模型

YOLOv6上次(应该是很久以前)发布了一个0.3.1版本,支持人脸检测与五点landmark调用,后来我就下载,想使用一下,发现居然没有文档,也没有例子。但是官方有个infer.py文件是可以调用的,说明这个模型文件应该没问题。下载打开模型文件的输入与输出结构如下:

9294c64c-117e-11ee-962d-dac502259ad0.png

输出格式8400x16,其中16的输出表示为人脸框+landmark坐标信息xyxy, conf, cls, lmdks,前面四个是Box信息、后面是置信度与分类得分、最后是10个值五点XY坐标

输出解析顺序

官方代码与参考文档给出的解析顺序,xyxy, conf, cls, lmdks,这部分还有官方的参考文件:

https://github.com/meituan/YOLOv6/blob/yolov6-face/yolov6/core/inferer.py

92d37716-117e-11ee-962d-dac502259ad0.png

第110行就是这样说明的,于是我按上述格式一通解析,结果让我崩溃了,输入图像与解析结果如下:

92ed582a-117e-11ee-962d-dac502259ad0.png

这个时候我才明白为什么这个发布了这么久,网上居然一篇文章关于YOLOv6人脸检测的文章都没有,网上的文章很多都是YOLOv5跟YOLOv7的人脸+Landmark检测,原因一切都是有原因的。 我debug一下,发现预测出来的16个值,只有最后两个值的结果是小于或者等于1的,所以我当时猜想16个顺序应该是:xyxy, lmdks, conf, cls,按照我猜测的顺序我又改下代码,然后直接运行测试,奇迹出现了:

这张图是AI生成的,如有雷同纯属巧合! 整个推理的流程跟YOLOv5、YOLOv6对象检测一样,就是后处理不同,所以附上后处理部分的代码:

defwrap_detection(self,input_image,out_data):
confidences=[]
boxes=[]
kypts=[]
rows=out_data.shape[0]

image_width,image_height,_=input_image.shape

x_factor=image_width/640.0
y_factor=image_height/640.0

sd=np.zeros((5,2),dtype=np.float32)
sd[0:5]=(x_factor,y_factor)
sd=np.squeeze(sd.reshape((-1,1)),1)
#xyxy,lmdks,conf,cls,
forrinrange(rows):
row=out_data[r]
conf=row[14]
cls=row[15]
if(conf>0.25andcls>0.25):
confidences.append(conf)
x,y,w,h=row[0].item(),row[1].item(),row[2].item(),row[3].item()
left=int((x-0.5*w)*x_factor)
top=int((y-0.5*h)*y_factor)
width=int(w*x_factor)
height=int(h*y_factor)
box=np.array([left,top,width,height])
boxes.append(box)
kypts.append(np.multiply(row[4:14],sd))

indexes=cv.dnn.NMSBoxes(boxes,confidences,0.25,0.25)

result_confidences=[]
result_boxes=[]
result_kypts=[]

foriinindexes:
result_confidences.append(confidences[i])
result_boxes.append(boxes[i])
result_kypts.append(kypts[i])

returnresult_kypts,result_confidences,result_boxes

责任编辑:彭菁

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

    关注

    1

    文章

    2707

    浏览量

    47710
  • 代码
    +关注

    关注

    30

    文章

    4557

    浏览量

    66826
  • 人脸检测
    +关注

    关注

    0

    文章

    71

    浏览量

    16288

原文标题:YOLOv6 人脸Landmark检测

文章出处:【微信号:CVSCHOOL,微信公众号:OpenCV学堂】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Yolov5算法解读

    中,这几个模型结构基本一样,不同的是depth_multiple模型深度和width_multiple模型宽度这两个参数。 yolov5主
    的头像 发表于 05-17 16:38 4343次阅读
    <b class='flag-5'>Yolov</b>5算法解读

    YOLOV7网络架构解读

    继美团发布YOLOV6之后,YOLO系列原作者也发布了YOLOV7。
    的头像 发表于 11-29 10:00 939次阅读
    <b class='flag-5'>YOLOV</b>7网络架构解读

    maixcam部署yolov5s 自定义模型

    部分不一样。 获得自定义训练得到的yolov5s onnx模型 准备自定义数据集(博主用的是VOC数据集) 数据集目录结构如下: └─VOC2028:自定义数据集 ├─Annotations存放
    发表于 04-23 15:43

    yolov5-face的pt模型是怎样转为onnx模型

    yolov5-face的pt模型是怎样转为onnx模型的?有哪些转换步骤?
    发表于 02-21 07:19

    怎样使用PyTorch Hub去加载YOLOv5模型

    图像会自动传输到正确的模型设备。静音输出模型可以静默加载_verbose=False:输入通道要加载具有 4 个输入通道而不是默认的 3 个
    发表于 07-22 16:02

    YOLOv6中的用Channel-wise Distillation进行的量化感知训练

    1、YOLOv6中的用Channel-wise Distillation进行的量化感知训练来自哪里  知识蒸馏 (KD)已被证明是一种用于训练紧凑密集预测模型的简单有效的工具。轻量级学生网络通过
    发表于 10-09 16:25

    YOLOv5网络结构解析

    1、YOLOv5 网络结构解析  YOLOv5针对不同大小(n, s, m, l, x)的网络整体架构都是一样的,只不过会在每个子模块中采用不同的深度和宽度,  分别应对yaml文件
    发表于 10-31 16:30

    全志V853 在 NPU 转换 YOLO V3 模型

    原内部格式表示文件,分别对应原始模型文件yolov3.weights 和 yolov3.cfg创建 YML
    发表于 12-19 10:36

    yolov7 onnx模型在NPU上太慢了怎么解决?

    yolov7tiny.onnx。输入大小为 224x224,但 npu 推理时间为 127 毫秒。好像太慢了。这个时间合理吗?以下是我的onnx模型转换步骤和我的onnxruntime执行代码: 1. 从 https
    发表于 04-04 06:13

    无法使用MYRIAD在OpenVINO trade中运行YOLOv7自定义模型怎么解决?

    无法确定如何将 YOLOv7 模型的重量(.pt 文件)转换为OpenVINO™中间表示 (IR) 并推断有 MYRIAD 的 IR。 分辨率 转换使用此 GitHub* 存储库
    发表于 08-15 08:29

    YOLOv3的darknet模型先转为caffe模型后再转为fp32bmodel,模型输出和原始模型输出存在偏差是怎么回事?

    YOLOv3的darknet模型先转为caffe模型后再转为fp32bmodel,模型输出和原始模型
    发表于 09-19 06:26

    一文彻底搞懂YOLOv8【网络结构+代码+实操】

    从上面可以看出,YOLOv8 主要参考了最近提出的诸如 YOLOX、YOLOv6YOLOv7 和 PPYOLOE 等算法的相关设计,本身的创新点不多,偏向工程实践,主推的还是 ultralytics 这个框架本身。
    的头像 发表于 06-15 17:15 6764次阅读
    一文彻底搞懂<b class='flag-5'>YOLOv</b>8【网络<b class='flag-5'>结构</b>+代码+实操】

    YOLOv8+OpenCV实现DM码定位检测与解析

    YOLOv8是YOLO系列模型的最新王者,各种指标全面超越现有对象检测与实例分割模型,借鉴了YOLOv5、YOLOv6、YOLOX等
    的头像 发表于 08-10 11:35 750次阅读
    <b class='flag-5'>YOLOv</b>8+OpenCV实现DM码定位检测与解析

    YOLOv5网络结构训练策略详解

    前面已经讲过了Yolov5模型目标检测和分类模型训练流程,这一篇讲解一下yolov5模型结构,数
    的头像 发表于 09-11 11:15 1125次阅读
    <b class='flag-5'>YOLOv</b>5网络<b class='flag-5'>结构</b>训练策略详解

    深度学习YOLOv3 模型设计的基本思想

    在检测任务中,将图中C0后面的平均池化、全连接层和Softmax去掉,保留从输入到C0部分的网络结构,作为检测模型的基础网络结构,也称为骨干网络
    发表于 10-17 10:32 152次阅读
    深度学习<b class='flag-5'>YOLOv</b>3 <b class='flag-5'>模型</b>设计的基本思想