一款人脸识别的芯片内部

news2024/11/14 16:32:05

三年前在一家3D人脸识别的芯片公司,先后做过两个稍具规模的芯片项目,因为各种原因,这些最终都没有上市,成为沉寂在实验室的产物。但是这些芯片的总体设计都颇具匠心,自己在当时也很有触动,现在拿出一点来供读者欣赏。为不侵犯原有设计者的创作,所有列举的芯片结构图已经经过本人抽取和改动,只为学习和演示这些设计的原理。

首先介绍的是一款当时爆炒的关于人脸识别的门锁芯片的VI系统,该系统如下所示,支持单摄象头和双摄像头模式。所有支持门锁应用的摄像头必须具有外部触发的slave方式,同步外部的sync 脚给过来的脉冲来触发每一帧sensor图像的输出。双设模式时在单摄像头上的分时演进,在dphy0 和dphy1 上接的两颗摄像头必须型号出图都完全一致,然后通过在switch 部件的后面VID IN的中断中根据实际需求去切换选择sensor。下面具体解释下在单摄像头情形下的图像数据的流动和处理。

  • 首先在dphy0或者dphy1 上接入一颗输出图像在5M 尺寸以下,出图30帧的IR sensor,配置switch模块的开关sensor_sel,正确选择链接的外部sensor。图像数据流从dphy 经过MIPI RX,通过switch模块选择进入到VID_IN 模块。 从VID_IN 模块处理出来后,数据分成两路,一路到经过左边的rgb bayer gen, 从IR变换成raw RGB的图像数据,然后经过display 多路器,通过 resize 模块缩放处理,最终通过am4_wr写入到显示需要用到的DDR buffer。这是送往显示的一路。

    从VID_IN 模块处理出来的右边的一路 ,经过lsc 光圈效果处理,出来后左边一路给到AE统计模块,生成统计的亮度分布信息,在统计结束后,通过中断和寄存器给出来统计结果。右边一路继续往下,经过gamma处理,提升合适的亮度。
    然后通过after1 模块,after1 模块可以打开关闭往after2 模块的输出。如果打开,after2模块也同样可以选择往display 多路器和 am1_wr的输出, 往display 多路器输出必须配置多路器的选择开关disp_sel。am1_wr的输出直接将gamma处理后的图像输出到DDR buffer。这after1,after2模块时可选打开模块,场景不使用时可以采用默认的关闭状态。
    after1 后面的crop 将sensor过来的全尺寸图裁剪到深度引擎可以处理的尺寸,一般不超过640 * 480,通过rectify模块将裁剪后的图像修正效果,将像素坐标系的图转换成世界坐标系的图。在depth模块这个核心模块做各像素的对应位置的深度信息产生,产生出来的深度信息也是640*480的图像。depth模块在运行前需要对各种sensor对具体的参考图标定,一般是在1米的距离对黑白色卡做上斜,下斜,正对等各种角度的采样,最后由PC端的工具产生出参考图,运行时通过am1_rd 模块读取到depth模块中去。深度图生成后,可以通过后面的resize模块缩放到需要的尺寸,然后最终写入DDR buffer,由后面的软硬件模块去判断当前截取的人脸信息和 实际注册登记的数据库中各种深度图像的相似度,从而决定门锁的开关。

    这是一般正常运行过程中产生的使用的图像数据流的规划,使用display这个模块通路做显示,使用it isp到depth这一通路做深度计算。下面说说关于am4_rd 模块, am1_wr模块这些非常规模块。
    在实际开发验证的过程中,am4_rd模块可以做offline级别的验证,在sensor 没有点起来之前,先行使用之前已经有的纯净图和散斑图,通过读入到crop后面的模块,直接做后级验证。等前面的sensor 和效果都OK之后,再通过crop切换 isp输出上。
    am1_wr,可以拿来做isp调教后的效果输出,来确保进入depth 模块通路前的图像效果对比。
    这就是验证的一个基本思路。offline的通路和am1_wr1的设计将直接的这条漫长的depth通路的问题可以分段处理,加速了后续验证和正常开发使用的效率。
    这是关于这颗门锁项目的人像处理的视频输入系统部分。

    另外这颗芯片还有关于功耗设计的优化,主芯片是arm m0的内核实现, 包含几乎所有的基本的外设端口,包括指纹识别这类,人像识别部分是risc-v架构的cpu实现,包含video input,video output,vide codec,NPU……等。在平常时刻,人没有走近门,mcu没有通过人像以外的方式识别到人,那mcu和cpu 都处于超低功耗的待机方式。当mcu识别到人走近,那mcu给cpu上电,并且通过处理器中断,通知cpu进行人像识别的动作,等上述识别到的结果给出来,cpu通过处理器间中断反馈给mcu,mcu决定是否开门,并给cpu下电。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2098868.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

揭秘难以复现Bug的解决之道:堆栈分析实战

目录 引言 友情提示难以复现的Bug之痛 寄存器(SP、LR)详解 SP寄存器:堆栈的指路明灯LR寄存器:函数调用与异常处理的桥梁 问题分析与解决流程揭秘 保存现场分析堆栈数据 堆栈结构入栈顺序 案例 J-Link工具 常用命令保存RAM数据到本地 分析栈基本信息 分…

【最新华为OD机试E卷】最大报酬(100分)-多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-E/D卷的三语言AC题解 💻 ACM金牌🏅️团队| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,…

【Python】企业排名、地域分布与词云分析可视化

目录 数据处理 Pyecharts 各国数量 分布地图 数量占比 城市分布 营业收入 利润转化 数据处理 2021世界五百强企业数据,包含公司名称、公司链接、营业收入(百万美元)、利润(百万美元)、国家等信息。数据集下载:Python企业排名、地域分布与词云分…

opencv-python 图像增强十七:泊松图像融合

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、概述二,实现: 前言 在深入探讨图像处理与计算机视觉领域的过程中,我们不禁对图像融合技术的精妙与实用性感到着迷。图像…

物联网之云平台架构

一,一个典型的物联网云平台 一个典型的物联网(IoT)云平台需要实现多个功能,以支持物联网设备的接入、数据处理、设备管理、实时控制等需求。 (一)核心功能 1,设备接入与管理: - 设…

【达梦数据库】DBeaver连接达梦数据库

打开 DBeaver&#xff0c;新建驱动管理器 新建驱动管理器&#xff0c;配置信息如下 添加库文件&#xff0c;jar包使用项目上使用的jdbc驱动包即可&#xff0c;找到本地maven仓库jar位置进行添加。 <dependency><groupId>com.dameng</groupId><artifact…

打开配置好的gee的jupyter Lab环境

目录 打开anconda 打开箭头下的cmd环境&#xff0c;输入jupyter lab

Spring MVC 八股文

目录 重点 SpringMVC的工作原理 Spring MVC 拦截器 Spring MVC 的拦截器和 Filter 过滤器有什么差别&#xff1f; 基础 什么是SpringMVC SpringMVC的优点 Spring MVC的核心组件 Spring MVC的常用注解由有哪些 Controller 注解有什么用 重点 SpringMVC的工作原理 1、客…

人脸静态活体检测(高精度版) API 对接说明

人脸静态活体检测&#xff08;高精度版&#xff09; API 对接说明 本文将介绍人脸静态活体检测&#xff08;高精度版&#xff09;API 对接说明&#xff0c;它可用于对用户上传的静态图片进行防翻拍活体检测&#xff0c;以判断是否是翻拍图片。 接下来介绍下 人脸静态活体检测…

浅谈sizeof() 函数在Arduino中的使用

下面浅谈 sizeof() 函数在Arduino中的使用 注意&#xff1a;这里用sizeof(str[2])&#xff0c;sizeof(str[0])&#xff0c;sizeof(str[1])都是一样的 String str[6]{"abc","defg","hijk","lm","n"}; int num; void setup…

C++项目详细分析_WebServer

前言 项目地址 项目介绍 源码详细分析 项目路径如下&#xff1a; 1.webserver.cpp 头文件和构造函数 #include "webserver.h"WebServer::WebServer() {// http_conn类对象users new http_conn[MAX_FD];// root文件夹路径char server_path[200];getcwd(server…

【C++】N卡无法录制,如何下载C++

N卡无法录制&#xff0c;如何下载C C 官方下载路径&#xff1a; https://www.microsoft.com/zh-cn/download/details.aspx?id48145&134b2bb0-86c1-fe9f-d523-281faef416951&751be11f-ede8-5a0c-058c-2ee190a24fa6True 第一步 检查N卡驱动是不是最新版本 第二步 下载…

拓扑结构_替代SN6505推挽式低噪声隔离变压驱动器输出功率1-3W

PC6505 是一款专门为小体积、低待机功耗微功率隔离电源而设计的推挽式变压器驱动器&#xff0c;其外围只需匹配简单的输入输出滤波电容、隔离变压器和整流电路&#xff0c;即可实现 3.3V 或 5V 输入、3.3V~24V 输出、输出功率 1~3W 的隔离电源。 PC6505 芯片内部集成振荡器&am…

简单的棒棒图绘制教程

原文教程链接&#xff1a;R 语言绘图 | GO、KEGG等富集棒棒图 往期部分文章 1. 最全WGCNA教程&#xff08;替换数据即可出全部结果与图形&#xff09; WGCNA分析 | 全流程分析代码 | 代码一 WGCNA分析 | 全流程分析代码 | 代码二 WGCNA分析 | 全流程代码分享 | 代码三 WGC…

stun和trun

在 WebRTC 中&#xff0c;STUN&#xff08;Session Traversal Utilities for NAT&#xff09;和 TURN&#xff08;Traversal Using Relays around NAT&#xff09;是用于NAT穿透的两种不同的技术&#xff0c;它们解决的问题不同&#xff0c;因此在某些情况下需要同时使用。 ST…

VM虚拟机:虚拟机能ping通主机,主机ping不通虚拟机,永久解决办法。

最近在安装VM虚拟机的时候,出现了虚拟机能ping通主机,主机ping不通虚拟机。着实令人恶心,尤其是虚拟机在设置网络的时候,网上五花八门,修改什么配置的都有,最多的就是修改宿主机的ipv4,这种我个人感觉不可取。宿主机不要乱改配置,需要修改尽量在虚拟机中修改即可。 还需…

el-time-select 动态增加时间

<template><div><div v-for"(item, index) in timeSlots" :key"index"><el-time-select placeholder"起始时间" v-model"item.startTime" :picker-options"{start: 00:00,step: 00:15,end: 23:59,}"&g…

VMware安装windows虚拟机详细过程

目录 准备工作配置虚拟机为虚拟机设置操作系统镜像安装windows10 准备工作 安装好VMware软件并激活&#xff0c;激活码自行查找 准备好系统镜像文件&#xff0c;可以在MSDN中下载&#xff0c;地址&#xff1a;https://next.itellyou.cn/ 配置虚拟机 选择自定义 默认 选择稍后…

C语言操作符详解1(含进制转换,原反补码)

文章目录 一、操作符的分类二、二进制和进制转换1.二进制与十进制的相互转换2,二进制与八进制的相互转换3.二进制与十六进制的相互转换 三、原码、反码和补码四、移位操作符1.左移操作符&#xff08;1&#xff09;左移操作符移位方法&#xff08;2&#xff09;左移操作符规律总…

编程要由 “手动挡” 变 “自动挡” 了?Cursor+Claude-3.5-Sonnet,Karpathy 点赞的 AI 代码神器。如何使用详细教程

Cursor 情况简介 AI 大神 Andrej Karpathy 都被震惊了&#xff01;他最近在试用 VS Code Cursor Claude Sonnet 3.5&#xff0c;结果发现这玩意儿比 GitHub Copilot 还好用&#xff01; Cursor 在短短时间内迅速成为程序员群体的顶流神器&#xff0c;其背后的原因在于其默认使…