基于TINYYOLO2神经网络视觉翻译棒
2021-07-19刘潇元任钊婷杨晨
刘潇元 任钊婷 杨晨
摘要:2015年10月,AlphaGo在没有任何让子的情况下,以5:0的悬殊比分击溃欧洲围棋冠军樊麾二段。随即第二年六月战胜第一围棋手柯洁。人工智能初露锋芒,而在当今人工智能的发展下各个产业出现了新的转变,人脸识别,视网膜识别,虹膜识别,掌纹识别,专家系统,无人驾驶,智能搜索,定理证明,博弈等人工智能逐渐改变着人们的生活,神经网络在图像处理的运用上更加广泛,常应用于车辆检测、目标分类识别。本项目意在通过YOLO2的剪枝算法TINY yolo2实现在嵌入式soc上进行目标检测达到图像转文字的目的。再尔,通过云服务实现文字转语音的服务。完成整个项目的目的,即图像转文字的过程,适用于幼儿教学市场。
关键词:TINY YOLO2;云服务;视觉翻译
中图分类号:TP311 文献标识码:A
文章编号:1009-3044(2021)15-0182-02
1 神经网络单元TPU介绍
在芯片集成度方面,勘智K210采用视听一体化设计。在机器视觉上,芯片基于自主研发的神经网络加速器KPU,可完成基于神经网络的图像分类任务,进行人脸识别与检测,以及实时获取被检测目标的分类。在听觉能力上,芯片自带APU语音处理单元,最高可支持8路音频数据及16个方向,无须占用CPU即可实现声源定向、声场成像、波束形成、语音识别与唤醒等功能。
在算法定制化方面,勘智K210在可编程能力上呈现出更高的灵活性。首先,相比ARM等架构,勘智K210采用RISC-V架构,拥有更强的可定制化能力,便于开发者根据具体应用场景定制算法。其次,芯片搭载FPIOA现场可编程IO阵列,支持TensorFlow、Keras、Darknet、PaddlePaddle和Caffe等主流AI编程框架,以及全面的开发文档,对开发者十分友好。
2 摄像头
OV7670,本设计采用自带FiFo的模组,使用FIFO模组可以大大减少K210的计算量,数字摄像头的构成主要是由镜头、基座、红外滤波片、图像传感器。部分数字摄像头可能带有马达用以调节像距。本设计中为了提高处理速度,使用CIF格式的图像格式传输到K210中进行计算,经过实际的测试,空载的帧率可以达到80FPS。在实际加载上TINY YOLO2的程序测试可以达到60FPS左右,达到了实际使用的需求。
3 识别算法TINY YOLO2
相较于RCNN系列算法,YOLO算法最大的创新在于将物体检测作为回归问题来求解,而RCNN系列算法是将目标检测用一个region proposal + CNN来作为分类问题求解。 如下图所示,YOLO通过对输入图像进行推测,得到图中所有物体的位置及其所属类别的相应概率。
YOLO的网络模型结构包含有24个卷积层和2个全链接层,其具体结构如下:
4 百度云语音合成API
为了减小内存的使用,本项目采用了百度语音合成python接口,只需要使用http请求的REST API接口,将文本转换为可以播放的音频文件。再通过K210的播放器进行输出。由于k210的性能限制,本项目使用内存占用极小的PCM编码,声音经过采集和处理装置的抽样、量化和编码就实现了脉冲编码调制。本系统中使用K210的I2S总线连接麦克风模块,模拟声音信号经过麦克风抽样采集。传送到K210端口,经过K210通过DAC发送音频放大器,最后由扬声器将PCM编码的声音量播报出来,实现了语音播报。
PCM以采样技术为定理。采样定理:如果在规定的时间内,以有效信号最高频率的二倍或二倍以上的速率对该信号进行采样,则这些采样信息值中包含了全部原始信号信息。再进行实际实验时 Tiny yolo2在k210平台上帧率能达到60fps+。
5 系统菜单设计
为了完成该项目的多个功能需要设计一个菜单搭配按键进行功能的选择,这里我们采用了有限状态机。也称为FSM,其特点是任意状态在任意时刻都有对应的下一状态。每个状态具有同样的属性,当其属性进行转移时,FSM将一直保持消亡状态。状态转移图中还有两个特殊状态:状态1状态被称为“起始状态”,表示FSM的初始化状态,状态6称为“结束状态”。表示成功识别了所有属性而后进入下一流程。使用编程思维理解,建立结构体数组成员变量使用UP、DOWN、ENTER,来表示每个状态对应的属性操作。建立Index成员表示当前的序列号,函数指针表示当前状态所需要执行的函数。通过Index序号根据用户的操作UP、DOWN或是ENTER来进入下一个所需要执行的函数。达到逻辑清晰、代码量简洁高效的目的。
然后我们开始程序设计。CurrerIndex表示当前标号,UpIndex表示按下上键跳入的菜单标号,DnIndex表示按下下键跳入的菜单标号,EnterIndex表示按下确认键跳入的菜单标号,(*CurOperate)表示这个菜单对应的函数指针。
Encoder_EC11_Scan()函数这个本来是编码器EC11的扫描函数,由于体积大小原因,将旋转编码器替换成了三个按键。AA代表上键,BB代表下键,Keyenter键代表确认键。当按键按下对应引脚接地,引脚电平为0。为了消除抖动使用了Delay5ms()这个函数延迟5ms如果这时按键还是低电平,就说明不是因为抖动而是人为按下。置ScanResult返回值为0,1,2,3分别代表按键没有按下,上键,下键,确认键的按下标志位并作为函数的返回值返回。
状态机从0开始,通过Encoder_EC11_Scan()函数来返回用户的操作键码,通过Switch语句跳转到各个键码对应的操作中去。如按下上键Encoder_EC11_Scan()函数会返回1。并把此时菜单上键对应的键码赋值给Fun_index全局变量。然后将对应的函数指针赋值给CurOperate_Ptr。而后执行函數完成函数的跳转。
6基本流程
1)k210通过摄像头获取图像;
2)图像输入变换进入模型比对;
3)图像中是否存在目标物体;
4)存在物体,文本信息送入百度云api进行转化然后送入扬声器进行播报。否则返回获取图像继续搜索目标物体。
7 项目总结
本项目将神经网络识别技术与物联网技术结合在一起。意在通过图像得到语音的输出,适用于早教市场,幼儿外语的学习。项目的不足,因为是通过网络进行语音转化,所以本项目离不开网络,必须通过手机开启热点或连接家中wifi使用,本项目将会继续研究离线的文字语音转化技术。
参考文献:
[1] Real-Time Pattern-Recognition of GPR Images with YOLO v3 Implemented by Tensorflow. 10.3390/s20226476.
[2] 谢兄,杨金鹏.YOLO-wLU:考虑定位不确定性的目标检测算法[J]. 计算机工程与应用.
[3] 黄凤琪,陈明,冯国富,基于可变形卷积改进的yolo目标检测算法[J].计算机工程.https://doi.org/10.19678/j.issn.1000-3428.0059096.
【通联编辑:李雅琪】