yolov6人脸检测模型
yolov6上次(应该是很久以前)发布了一个0.3.1版本,支持人脸检测与五点landmark调用,后来我就下载,想使用一下,发现居然没有文档,也没有例子。但是官方有个infer.py文件是可以调用的,说明这个模型文件应该没问题。下载打开模型文件的输入与输出结构如下:
输出格式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
第110行就是这样说明的,于是我按上述格式一通解析,结果让我崩溃了,输入图像与解析结果如下:
这个时候我才明白为什么这个发布了这么久,网上居然一篇文章关于yolov6人脸检测的文章都没有,网上的文章很多都是yolov5跟yolov7的人脸+landmark检测,原因一切都是有原因的。 我debug一下,发现预测出来的16个值,只有最后两个值的结果是小于或者等于1的,所以我当时猜想16个顺序应该是:xyxy, lmdks, conf, cls,按照我猜测的顺序我又改下代码,然后直接运行测试,奇迹出现了:
这张图是ai生成的,如有雷同纯属巧合! 整个推理的流程跟yolov5、yolov6对象检测一样,就是后处理不同,所以附上后处理部分的代码:
def wrap_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, for r in range(rows): row = out_data[r] conf = row[14] cls = row[15] if (conf > 0.25 and cls > 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 = [] for i in indexes: result_confidences.append(confidences[i]) result_boxes.append(boxes[i]) result_kypts.append(kypts[i]) return result_kypts, result_confidences, result_boxes
乐视Pro 3与一加3T,谁能稳坐2017安卓旗舰之王?
时间继电器的复位功能
5G网络为通往数字未来铺平道路
M5246-00000P-025BG压力传感器在计量泵中的应用
6.0KV抽能变压器400V侧零序过电流保护(含接线图)
YOLOv6模型文件的输入与输出结构
三种常用的加速晶体管开关的方法
等了7年,小米6终于涨价了!1999元:再见
仿制PCB板的过程及方法解析
使用人工智能技术研发癌症新药真的靠谱吗
带宽进步推动 PCIe 标准
无线和TVB的区别
FCC正在更新基础设施政策,并鼓励私营企业投资 5G网络
关于FPGA芯片的故事,你知道多少呢?
光学生物传感器的具体应用及原理介绍
BUCK芯片外围的电阻是用来干什么的
ARM存储格式的“大小端”解析,原来是这样!
日本知名的元器件大厂,在目前的市场环境下,好像有点“慌”!
VR+教育是否行得通?博士们是这么认为的
基于一个超快速可扩展和去中心化的区块链网络IOST介绍