本发明专利技术属于集成电路技术领域,具体为一种面向人机交互领域的动态手势识别硬件加速器。本发明专利技术电路包括:图像预处理模块,待机模块,RISCV处理器,动态手势识别协处理器;该加速器采用低复杂度手势识别算法,将RGB图像转化为YCrCb图像,并根据YCrCb图像提取二值肤色图像,有效地降低片上存储容量,降低数据搬运功耗,进而提升整个芯片的能效比;该加速器采用外围轮廓查找手势重心,通过追踪重心的位移得到手势移动方向,具有优越的识别效果,可以广泛应用于无接触式人机交互领域;此外该加速器采用RISCV处理器进行控制,具有较强的灵活性,并为长期待机运行设置了待机模块,有效地降低长期工作的功耗。
【技术实现步骤摘要】
一种面向人机交互领域的动态手势识别硬件加速器
本专利技术属于集成电路
,具体涉及一种面向人机交互领域的动态手势识别硬件加速器。
技术介绍
自然的、无障碍的、实效性高的、无接触的新型智能人机交互系统成为信息发展中必然趋势。手势作为人机交互领域极其重要的通道之一,具有应用广泛,操作简单,使用频率高等优点。手势识别分为静态手势识别和动态手势识别,其中静态手势识别是通过静态手势图像进行分类,例如“ok“、”比心“、”yes“等手势,动态手势识别是通过视频序列下的手势行为进行分析,例如”上“、”挥手“、”推“等手势。然而,对于动态手势识别,传统的基于模板训练、特征提取、手势分类等多种算法其算法复杂度过高,对于资源要求高,相应的功耗也会过高,无法部署于移动端、IoT、可穿戴设备中。此外,由于外界环境的复杂程度很高,以机器学习等智能算法在动态手势识别领域的实际应用面临着巨大挑战,并且智能算法实现的参数量大,复杂度高,也是难以满足移动端、IoT、可穿戴设备对于低功耗的要求。因而,为移动端、IoT、可穿戴设备等智能终端设计一款可靠性强、识别精度高、低功耗的动态手势识别的人机交互智能芯片已经成为迫切需要。
技术实现思路
为了克服现有技术的不足,本专利技术提出一种面向人机交互领域的动态手势识别硬件加速器。以期能够实现算法复杂度低,资源消耗少,功耗低,可靠性强的动态手势识别硬件加速器,该加速器可以广泛应用于移动端、IoT、可穿戴设备等智能终端领域,具有超长待机功能和高精度的实时识别能力。本专利技术提供的面向人机交互领域的动态手势识别硬件加速器,其结构包括图像预处理模块、待机模块、2KBFIFO(先入先出队列)、RISCV处理器和动态手势识别协处理器;其中:所述RISCV处理器,包括:闪存、串口、摄像机、RoCC、总线、rocket核、一级数据缓存、一级指令缓存组成;其中闪存中保存编译C产生的汇编指令,系统启动后首先rocket核初始化以后根据指令不断地访问4KB一级指令缓存,读取下一条指令;然而当一级指令缓存miss后,一级指令缓存会经过spi接口读取闪存保存的汇编代码并反馈给rocket核;rocket核获取指令后根据指令首先通过gpio端口配置摄像头,设置摄像头输出图像大小为320x240,帧频为30帧/秒;摄像头配置完成后rocket核向待机模块发送最小肤色阈值肤色总和;其后,rocket核通过RoCC向动态手势识别协处理器发送配置指令,设置参数:最小帧数/横向最小位移/纵向最小位移/横向最大位移/纵向最大位移;配置完成后,rocket核会通过总线读取2KBFIFO的empty信号,当empty=0时,此时FIFO中含有数据,rocket核会通过gpio和总线读取数据并传输至24KB一级数据缓存;每读取一行数据以后,rocket核通过RoCC向动态手势识别协处理器发送执行指令,其中包括:滤波指令,膨胀指令,腐蚀指令,外围轮廓查找指令,等待指令;当完整的一张图像加载完毕后,RISCV处理器通过RoCC向动态手势识别协处理器发送输出指令,动态手势识别协处理器会根据该指令传输输出方向direction;RISCV处理器接收到direction会将其发送至UART模块进行输出;所述图像预处理模块,用于接收来自摄像头采集的图像。根据颜色域转化公式:Y=(77*R+150*G+29*B)>>8,Cr=(-43*R-85*G+128*B)>>8+128,Cb=(128*R-107*G-21*B)>>8+128,将RGB图像转化为YCrCb,其后根据肤色区域在CrCb的分布情况:skincolor=(133<Cr<173)&&(77<Cb<127),从而将YCrCb图像转化为二值肤色图像,二值肤色图像中肤色值为1,非肤色值为0;图像预处理模块发送二值肤色图像至待机模块和2KBFIFO;所述待机模块,用于接收图像预处理模块发送的二值肤色图像,统计图像中所有的肤色值个数肤色总和;当肤色总和超过由RISCV处理器配置的肤色阈值,此时会打开拉升唤醒信号,并在下一帧图像保持唤醒信号为1;当肤色总和低于肤色阈值,唤醒信号置为0,并在下一帧保持为0;待机模块发送唤醒信号至2KBFIFO;所述2KBFIFO,用于接收图像预处理模块发送的二值肤色图像和待机模块发送的唤醒信号;若唤醒信号为高时,2KBFIFO会保存二值肤色图像并拉低传输至RISCV处理器的empty信号;若唤醒信号为低时,2KBFIFO会忽略二值肤色图像并保持empty信号不变;当2KBFIFO中所有二值肤色图像传输至RISCV处理器,2KBFIFO中的empty信号会拉高;所述动态手势识别协处理器,包括:译码模块、执行模块和手势跟踪识别模块;其中:译码模块是由配置指令寄存器、配置寄存器块、膨胀指令寄存器、腐蚀指令寄存器、滤波指令寄存器、轮廓查找指令寄存器以及输出指令寄存器构成;配置指令模块接收到RISCV处理器的配置指令,根据其中的序列号将配置参数config(包括最小帧数、横向最小位移、纵向最小位移、横向最大位移、纵向最大位移)分别写入配置寄存器块并发送到手势跟踪识别模块;滤波指令寄存器、膨胀指令寄存器、腐蚀指令寄存器、轮廓查寄存器分别用于接收RISCV处理器的滤波指令、膨胀指令、腐蚀指令、轮廓查找指令,对这些进行译码得到初始地址blur_addr、dila_addr、eros_addr、cont_addr和blur_start、dila_start、eros_start、cont_start,并发送至执行模块;输出指令寄存器用于接收输出指令,对输出指令进行译码并发送读取使能read至手势跟踪识别模块,并在下一周期发送读取的direction至RISCV处理器;执行模块包括膨胀操作、腐蚀操作、滤波操作、轮廓查找操作;滤波操作接收blur_addr和blur_start后,通过RoCC读取一级数据缓存中(blur_addr,blur_addr+5行)的5行图像,并在5行图像左右两边添加2列0值;对最左边5*5的图像块进行求和得到滤波总和,当滤波总和超过12输出为1,否则为0;其后按步长为1不断向右滑动最终得到一行完整的输出,将该输出替换一级数据缓存中以blur_addr为起点的一行图像;膨胀操作接收dila_addr和dila_start后,通过RoCC读取一级数据缓存中(dilat_addr,dila_addr+5行)的5行图像;并在5行图像左右两边添加2列0值;对最左边5*5图像块进行按位或,图像块内含有值为1则输出为1,否则为0;其后按步长为1不断向右滑动最终得到一行完整的输出,将该输出替换一级数据缓存中以dilation_addr为起点的一行图像;腐蚀操作接收eros_addr和eros_start后,通过RoCC读取一级数据缓存中(eros_addr,eros_addr+5行)的5行图像;并在5行图像左右两边添加2列0值;对最左边5*5图像块进行按位与,图像块内含有值为0则输出为0,否则为1;其后按本文档来自技高网...
【技术保护点】
1.一种面向人机交互领域的动态手势识别硬件加速器,其特征在于,结构包括图像预处理模块、待机模块、2KB FIFO、RISCV处理器和动态手势识别协处理器;其中:/n所述RISCV处理器,包括:闪存、串口、摄像机、RoCC、总线、rocket核、一级数据缓存、一级指令缓存组成;其中闪存中保存编译C产生的汇编指令,系统启动后首先rocket核初始化以后根据指令不断地访问4KB一级指令缓存,读取下一条指令;然而当一级指令缓存miss后,一级指令缓存会经过spi接口读取闪存保存的汇编代码并反馈给rocket核;rocket核获取指令后根据指令首先通过gpio端口配置摄像头,设置摄像头输出图像大小为320x240,帧频为30帧/秒;摄像头配置完成后rocket核向待机模块发送最小肤色阈值肤色总和;其后,rocket核通过RoCC向动态手势识别协处理器发送配置指令,设置参数:最小帧数/横向最小位移/纵向最小位移/横向最大位移/纵向最大位移;配置完成后,rocket核会通过总线读取2KBFIFO的empty信号,当empty=0时,此时FIFO中含有数据,rocket核会通过gpio和总线读取数据并传输至24KB一级数据缓存;每读取一行数据以后,rocket核通过RoCC向动态手势识别协处理器发送执行指令,其中包括:滤波指令,膨胀指令,腐蚀指令,外围轮廓查找指令,等待指令;当完整的一张图像加载完毕后,RISCV处理器通过RoCC向动态手势识别协处理器发送输出指令,动态手势识别协处理器会根据该指令传输输出方向direction;RISCV处理器接收到direction会将其发送至UART模块进行输出;/n所述图像预处理模块,用于接收来自摄像头采集的图像;并将RGB图像转化为YCrCb,再根据肤色区域在CrCb的分布情况,将YCrCb图像转化为二值肤色图像,二值肤色图像中肤色值为1,非肤色值为0;图像预处理模块发送二值肤色图像至待机模块和2KBFIFO;/n所待机模块,用于接收图像预处理模块发送的二值肤色图像,统计图像中所有的肤色值个数肤色总和;当肤色总和超过由RISCV处理器配置的肤色阈值,此时会打开拉升唤醒信号,并在下一帧图像保持唤醒信号为1;当肤色总和低于肤色阈值,唤醒信号置为0,并在下一帧保持为0;待机模块发送唤醒信号至2KBFIFO;/n所述2KBFIFO,用于接收图像预处理模块发送的二值肤色图像和待机模块发送的唤醒信号;若唤醒信号为高时,2KBFIFO会保存二值肤色图像并拉低传输至RISCV处理器的empty信号;若唤醒信号为低时,2KBFIFO会忽略二值肤色图像并保持empty信号不变;当2KBFIFO中所有二值肤色图像传输至RISCV处理器,2KBFIFO中的empty信号会拉高;所述动态手势识别协处理器,包括:译码模块、执行模块和手势跟踪识别模块;其中:/n译码模块是由配置指令模块、配置寄存器块、膨胀指令寄存器、腐蚀指令寄存器、滤波指令寄存器、轮廓查找指令寄存器以及输出指令寄存器构成;/n配置指令模块接收到RISCV处理器的配置指令,根据其中的序列号将配置参数config(包括最小帧数、横向最小位移、纵向最小位移、横向最大位移、纵向最大位移)分别写入配置寄存器块并发送到手势跟踪识别模块;滤波指令寄存器、膨胀指令寄存器、腐蚀指令寄存器、轮廓查寄存器分别用于接收RISCV处理器的滤波指令、膨胀指令、腐蚀指令、轮廓查找指令,对这些进行译码得到初始地址blur_addr、dila_addr、eros_addr、cont_addr和blur_start、dila_start、eros_start、cont_start,并发送至执行模块;输出指令寄存器用于接收输出指令,对输出指令进行译码并发送读取使能read至手势跟踪识别模块,并在下一周期发送读取的direction至RISCV处理器;/n执行模块包括膨胀操作、腐蚀操作、滤波操作、轮廓查找操作;/n所述手势跟踪识别模块,包括手势跟踪模块和方向判断模块;其中:/n手势跟踪模块用于接收多个轮廓重心值C(x,y)和轮廓面积,然后取出面积最大的重心坐标作为当前坐标减去上一帧坐标,得到帧间位移(Δx,Δy)=C(x,y)-L(x,y),并用C(x,y)替换L(x,y);判断Δx是否处于横向最小位移和横向最大位移以及Δy是否处于纵向最小位移和纵向最大位移之间;/n(一)若是,则:该重心坐标有效,选出历史位移(dest_x,dest_y)中绝对值最大的值进行临界判断:/n①若dest_x绝对值大,则判断dest_x与Δx是否同号:/n同号表示运动方向不变,dest_x=dest_x+Δx与dest_y=dest_y+Δy,累计帧数增加1,并继续下一帧检测;/n若不同号,则:/n(a)累计帧数大于等于最...
【技术特征摘要】
1.一种面向人机交互领域的动态手势识别硬件加速器,其特征在于,结构包括图像预处理模块、待机模块、2KBFIFO、RISCV处理器和动态手势识别协处理器;其中:
所述RISCV处理器,包括:闪存、串口、摄像机、RoCC、总线、rocket核、一级数据缓存、一级指令缓存组成;其中闪存中保存编译C产生的汇编指令,系统启动后首先rocket核初始化以后根据指令不断地访问4KB一级指令缓存,读取下一条指令;然而当一级指令缓存miss后,一级指令缓存会经过spi接口读取闪存保存的汇编代码并反馈给rocket核;rocket核获取指令后根据指令首先通过gpio端口配置摄像头,设置摄像头输出图像大小为320x240,帧频为30帧/秒;摄像头配置完成后rocket核向待机模块发送最小肤色阈值肤色总和;其后,rocket核通过RoCC向动态手势识别协处理器发送配置指令,设置参数:最小帧数/横向最小位移/纵向最小位移/横向最大位移/纵向最大位移;配置完成后,rocket核会通过总线读取2KBFIFO的empty信号,当empty=0时,此时FIFO中含有数据,rocket核会通过gpio和总线读取数据并传输至24KB一级数据缓存;每读取一行数据以后,rocket核通过RoCC向动态手势识别协处理器发送执行指令,其中包括:滤波指令,膨胀指令,腐蚀指令,外围轮廓查找指令,等待指令;当完整的一张图像加载完毕后,RISCV处理器通过RoCC向动态手势识别协处理器发送输出指令,动态手势识别协处理器会根据该指令传输输出方向direction;RISCV处理器接收到direction会将其发送至UART模块进行输出;
所述图像预处理模块,用于接收来自摄像头采集的图像;并将RGB图像转化为YCrCb,再根据肤色区域在CrCb的分布情况,将YCrCb图像转化为二值肤色图像,二值肤色图像中肤色值为1,非肤色值为0;图像预处理模块发送二值肤色图像至待机模块和2KBFIFO;
所待机模块,用于接收图像预处理模块发送的二值肤色图像,统计图像中所有的肤色值个数肤色总和;当肤色总和超过由RISCV处理器配置的肤色阈值,此时会打开拉升唤醒信号,并在下一帧图像保持唤醒信号为1;当肤色总和低于肤色阈值,唤醒信号置为0,并在下一帧保持为0;待机模块发送唤醒信号至2KBFIFO;
所述2KBFIFO,用于接收图像预处理模块发送的二值肤色图像和待机模块发送的唤醒信号;若唤醒信号为高时,2KBFIFO会保存二值肤色图像并拉低传输至RISCV处理器的empty信号;若唤醒信号为低时,2KBFIFO会忽略二值肤色图像并保持empty信号不变;当2KBFIFO中所有二值肤色图像传输至RISCV处理器,2KBFIFO中的empty信号会拉高;所述动态手势识别协处理器,包括:译码模块、执行模块和手势跟踪识别模块;其中:
译码模块是由配置指令模块、配置寄存器块、膨胀指令寄存器、腐蚀指令寄存器、滤波指令寄存器、轮廓查找指令寄存器以及输出指令寄存器构成;
配置指令模块接收到RISCV处理器的配置指令,根据其中的序列号将配置参数config(包括最小帧数、横向最小位移、纵向最小位移、横向最大位移、纵向最大位移)分别写入配置寄存器块并发送到手势跟踪识别模块;滤波指令寄存器、膨胀指令寄存器、腐蚀指令寄存器、轮廓查寄存器分别用于接收RISCV处理器的滤波指令、膨胀指令、腐蚀指令、轮廓查找指令,对这些进行译码得到初始地址blur_addr、dila_addr、eros_addr、cont_addr和blur_start、dila_start、eros_start、cont_start,并发送至执行模块;输出指令寄存器用于接收输出指令,对输出指令进行译码并发送读取使能read至手势跟踪识别模块,并在下一周期发送读取的direction至RISCV处理器;
执行模块包括膨胀操作、腐蚀操作、滤波操作、轮廓查找操作;
所述手势跟踪识别模块,包括手势跟踪模块和方向判断模块;其中:
手势跟踪模块用于接收多个轮廓重心值C(x,y)和轮廓面积,然后取出面积最大的重心坐标作为当前坐标减去上一帧坐标,得到帧间位移(Δx,Δy)=C(x,y)-L(x,y),并用C(x,y)替换L(x,y);判断Δx是否处于横向最小位移和横向最大位移以及Δy是否处于纵向最小位移和纵向最大位移之间;
(一)若是,则:该重心坐标有效,选出历史位移(dest_x,dest_y)中绝对值最大的值进行临界判断:
①若dest_x绝对值大,则判断dest_x与Δx是否同号:
同号表示运动方向不变,dest_x=dest_x+Δx与dest_y=dest_y+Δy,累计帧数增加1,并继续下一帧检测;
若不同号,则:
(a)累计帧数大于等于最小帧数,拉高direct_en,并将direct_en与(dest_x,dest_y)发送至方向判断模块,下一周期将(dest_x,dest_y),累计帧数,direct_en置0,重新检测;<...
【专利技术属性】
技术研发人员:韩军,张永亮,李强,张辉,王威振,贾立兴,曾晓洋,
申请(专利权)人:复旦大学,
类型:发明
国别省市:上海;31
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。