版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章
K210和YOLOV3介绍Contents01.K21002.YOLOv301K210K210是由一家叫做嘉楠科技的公司推出的一款MCU(MicrocontrollerUnit,微控制单元,又称单片微型计算机或者单片机),其特色在于芯片架构中包含了一个自主研发的神经网络硬件加速器KPU(KnowledgeProcessingUnit),可以高性能地进行卷积神经网络运算。K210是一款基于RISC-V(V:表示第五代RISC)精简指令集的MCU(也就是我们通常所说的单片机),在其众多特色中,最大的特色便是芯片架构包含了一个自主研发的神经网络硬件加速器KPU,可以高性能地进行卷积神经网络运算。在MCU的AI计算方面,K210芯片的算力也是非常优秀的,根据嘉楠科技官网的描述,K210的KPU算力能够达到0.8TFLOPS(Floating-pointOperationsPerSecond,每秒所执行的浮点运算次数),这相当于什么水平呢?我们举个例子对比一下:最新树莓派4B的算力不到0.1TFLOPS,而以神经网络处理为卖点的JetsonNano拥有128个CUDA单元,其算力也仅仅是0.47TFLOPS。通过以上的简单对比可见,至少在AI计算方面K210的算力算是非常可观的。K210介绍除了KPU优秀的算力之外,K210芯片还有一些其他的特色。K210芯片内部是双核CPU,指令集为64位RISC-V,每个核心内置独立FPU(FloatPointUnit,浮点运算单元),可以单独进行浮点运算。为了更好地在机器视觉和听觉.上发挥作用,K210芯片自带计算卷积人工神经网络加速器KPU,以及处理麦克风阵列的APU(AcceleratedProcessingUnit,加速处理器),能够进行高性能机器视觉和听觉处理。不仅如此,K210还内置快速傅里叶变换加速器,可以进行复数FFT(FastFourierTransform,快速傅里叶变换)计算。在性能强劲的前提下,K210芯片还很注重安全性,内置了AES(AdvancedEncryptionStandard,高级加密标准)和SHA256(SHA256是安全散列算法SHA(SecureHashAlgorithm)系列算法之一,其摘要长度为256bits,即32个字节,故称SHA256)算法加速器,为用户的数据安全提供有效保障。K210介绍另外K210芯片还具有丰富的外设单元,这些外设单元有:DVP、JTAG、OTP、FPIOA、GPIO、UART、SPI、RTC、I2S、I2C、WDT、TIMER、PWM,这些外设在实际使用中发挥巨大的作用,基本满足大部分MCU外设的需求。K210还拥有高性能、低功耗的SRAM,总共8M,其中2M专用于Al计算,另外6M用于程序;专用外置Flash接口,增加自身的储存空间;数据传输可使用功能强大的DMA(DirectMemoryAccess,直接存储器访问),在数据吞吐能力方面性能优异。K210介绍K210芯片架构图下面我们一起来认识一下K210开发板,如右图所示:1-Type-C接口:供电、下载固件和串口调试等。2-状态指示灯:指示开发板的3.3V、1.8V电压是否正常,正常则亮灯。以及ESP模块状态。3-ESP模块串口和按键:可用于烧录ESP模块的固件或者和K210串口通信。4-拨轮开关keypad:三通道拨轮开关。5-RESET键:K210芯片的复位键。6-触摸板接口:用于连接触摸板排线,排线金手指向上。7-显示器接口:用于连接显示器排线,排线金手指向上。8-K210芯片:开发板主芯片,整个板子的核心处理器。9-外扩排针:开发板已经把K210所有10口引出,可以供外部设备连接使用。10-12C接口:可外接12C从机设备进行通信。11-RGB灯:设置三个10口电平,点亮不同颜色。12-麦克风:收录声音。13-LED灯:LED0和LED1。14-麦克风阵列接口:用于连接麦克风阵列。15-BOOT键:也可以作为自定义功能按键使用。K210介绍关于开发板套件正面的介绍,右图所示开发板套件(正面)。1-扬声器:播放声音。2-摄像头接口:连接摄像头。3-Wi-Fi模块:ESP8285,Wi-Fi模块,可以联网实现1oT功能。4-CH340芯片:下载固件和串口调试功能。5-电源开关:开发板电源总开关,拨向ON为开,拨向0FF为关。6-flash芯片用于保存程序固件和数据。7-六轴姿态传感器内部是一个三轴陀螺仪和一个三轴加速度计组成。8-TF卡槽需要自己插入TF卡,金手指朝向开发板。K210介绍用Type-C数据线将K210开发板和电脑进行连接,然后依次右击桌面的“此电脑”→“属性”→“设备管理器”→“端口(COM和CPT)”,就会识别到相应的CH340(USB转串口Windows驱动程序的安装包)端口(如图7-4所示)。这里需要注意的是:因为每台电脑的端口号可能会不一样,所以只要是识别到了CH340,那就是我们需要的端口。如果识别不出来,这个时候就需要我们手动安装了,这里就不做过多介绍了。驱动安装成功后,就可以识别到K210开发板了,下面我们对其开发环境进行搭建。K210是支持好几种编程环境的,从最基本的CMake命令行开发环境,到IDE开发环境,再到Python脚本式开发环境它都支持。在Win10系统下,官方是提供的有IDE的,官方的IDE是基于VisualStudioCode开发的。在这里我们介绍如何通过VSCode编辑器搭建K210的开发环境,以下是需要用到的工具及简介。K210开发环境搭建CMake:CMake是众多Make工具的一种,具有跨平台、跨编译器等特性,它可以用简单的语句来描述所有平台的安装(编译过程),是一种非常实用的工具。CMake官方下载网址:https://cmake.org/download/,K210开发环境搭建Toolchain:交叉编译器Toolchain是用于调试开发板的工具和相关库组合起来的集合,也称为工具链。一般内附有程式编译器(compiler),如GCC,可以进行程式编译、或跨平台编译工作。VSCode:VSCode是Microsoft出品的一款开源代码编辑器,支持多种插件,可扩展性强,具有代码高亮,自动补全等功能。VSCode官方下载地址:https://code.visualstudio.com/Download,如图7-6所示。可以根据自己系统版本选择,Windows用户下载后为exe文件,可以直接安装,并且可以给所有用户使用。K210开发环境搭建K210-SDK:K210官方出的SDK,是开发K210的基础,里面自带有芯片的各种驱动。K210官方提供两个SDK,一个是裸机版SDK,另一个是FreeRTOS系统SDK。K210裸机版SDK下载地址:https://github.com/kendryte/kendryte-standalone-sdk,如图7-7所示。点击右边的Code(有的此处显示的是Cloneordownload),DownloadZIP下载SDK。K210-SDKGitHub下载页K-Flash:K210芯片烧录程序的工具下载地址:https://github.com/kendryte/kendryte-flash-windows/releases,如图所示,下载最新版即可。K210开发环境搭建K210基础功能部分在这里我们介绍发光模块、串口通信模块、双核并行这三部分。LED(LightEmittingDiode)也称为发光二极管,是一种能够将电能转化为可见光的固态的半导体器件,它可以直接把电转化为光。LED的内部是一个半导体晶片,晶片的一端附在一个支架上,一端是负极,另一端连接电源的正极,使整个晶片被环氧树脂封装起来。只需要给正极输入正极电压,负极接地,形成回路就可以点亮LED。半导体晶片由两部分组成,一部分是P型半导体,在它里面空穴占主导地位,另一端是N型半导体,在这边主要是电子。但这两种半导体连接起来的时候,它们之间就形成一个P-N结。当电流通过导线作用于这个晶片的时候,电子就会被推向P区,在P区里电子跟空穴复合,然后就会以光子的形式发出能量,这就是LED灯发光的原理。而光的波长也就是光的颜色,是由形成P-N结的材料决定的。K210基础功能K210开发板出厂默认已经焊接好LED0和LED1。LED0连接的是100,LED1连接的是1017。LED0为红灯,LED1为绿灯,如图7-9所示。两颗LED灯都是低电平点亮,高电平熄灭。K210基础功能K210开发板LED灯K210开发板RGB灯内部分别是由红色、绿灯和蓝色的LED组成(如图7-10所示),所以发光原理与LED是一样的。不同的是三颗LED灯靠得很近,这样就可以设置不同的颜色,来达到展示不同颜色的功能。RGB灯可以点亮红色、绿色、蓝灯等颜色,再根据红色绿色蓝色的不同亮度组合成其他颜色,例如黄色、紫色等。K210基础功能K210的串口支持全双工通信,也就是使用一根线发送数据的同时,用另一根线接收数据。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验,对于两个通信的端口,这些参数是必须设置为相同的。在前面树莓派章节我们有简单的介绍过串口通信,这里就不做过多的介绍了。K210开发板上面的Type-C接口是连接到串口芯片上面的,具有供电和串口传输数据的功能,下载程序也是通过串口传输数据的功能把固件传输到K210芯片上的。Type-C接口是目前主流的数据传输连接接口,如图所示,市面上很多智能手机也是使用Type-C接口给手机充电和传输数据。Type-C接口是可以正反插的,不用担心反向拿反而插不进的问题。K210基础功能K210开发板Type-C接口K210开发板上面还有一个CH340串口芯片,CH340串口芯片是一个USB总线的转接芯片,可以实现USB转串口。具有全速USB设备接口,硬件全双工串口,内置收发缓冲区,支持通信波特率为50Mbps~2Mbps,兼容USBV2.0等特点。K210开发板CH340K210是双核CPU,那么什么是双核CPU呢?双核CPU是在一个CPU中拥有两个一样功能的处理器芯片,从而提高计算能力。K210的核心0和核心1都可以单独工作,系统默认使用核心0,如果需要使用核心1需要手动开启核心1的服务。K210芯片搭载基于RISC-VISA的双核心64位的高性能低功耗CPU,如图所示。FPU(浮点运算单元)是集成于CPU中的专用于浮点运算的处理器。K210核心0和核心1都具备独立的FPU,满足lEEE754-2008标准,计算流程以流水线方式进行,具备很强的运算能力,每个FPU都具备除法器和平方根运算器,支持单精度和双精度浮点硬件加速运算。K210基础功能KendryteK210具备机器视觉能力,是零门槛机器视觉嵌入式解决方案。它可以在低功耗情况下进行卷积神经网络计算。该芯片可以实现以下机器视觉能力:(1)基于卷积神经网络的一般目标检测。(2)基于卷积神经网络的图像分类任务。(3)人脸检测和人脸识别。(4)实时获取被检测目标的大小与坐标。(5)实时获取被检测目标的种类。在前面我们提到嘉楠科技的K210芯片架构中包含了一个自主研发的神经网络硬件加速器KPU。KPU是通用的神经网络处理器,它可以在低功耗的情况下实现卷积神经网络计算,实时获取被检测目标的大小、坐标和种类,对人脸或者物体进行检测和分类。使用KPU时,必须结合model—compiler。K210高级功能KPU的特点支持主流训练框架按照特定限制规则训练出来的定点化模型,对网络层数无直接限制。支持每层卷积神经网络参数单独配置,包括输入输出通道数目、输入输出行宽列高。支持两种卷积内核1x1和3x3。支持任意形式的激活函数。实时工作时最大支持神经网络参数大小为5.5MiB到5.9MiB。非实时工作时最大支持网络参数大小为(Flash容量-软件体积)。K210高级功能02YOLOv3YOLO(YouOnlyLookOnce)v3的算法是在YOLOv1和YOLOv2的基础上形成的,在介绍YOLOv3之前我们简单介绍一下YOLOv1和YOLOv2。YOLOv1将输入图像分成S×S个格子,若某个物体Groundtruth的中心位置的坐标落入到某个格子,那么这个格子就负责检测出这个物体。每个格子预测B个Boundingbox及其置信度(confidencescore),以及C个类别概率。bbox信息(x,y,w,h)为物体的中心位置相对格子位置的偏移及宽度和高度,均被归一化。置信度反映是否包含物体以及包含物体情况下位置的准确性。YOLOv1网络借鉴了GoogLeNet分类网络结构。不同的是,YOLO未使用inceptionmodule,而是使用1×1卷积层(此处1×1卷积层的存在是为了跨通道信息整合)+3×3卷积层简单替代。YOLOv1网络在最后使用全连接层进行类别输出,因此全连接层的输出维度是S×S(B×5+C)。YOLOv1网络比VGG16快(浮点数少于VGG的1/3),准确率稍差。YOLOv3介绍YOLOv1还是有缺陷的,比如:输入尺寸固定:由于输出层为全连接层,因此在检测时,YOLO训练模型只支持与训练图像相同的输入分辨率。其他分辨率需要缩放成该分辨率。占比较小的目标检测效果不好:虽然每个格子可以预测B个Boundingbox,但是最终只选择10U最高的Boundingbox作为物体检测输出,即每个格子最多只预测出一个物体。当物体占画面比例较小,如图像中有畜群或鸟群时,每个格子包含多个物体,但却只能检测出其中一个。YOLOv3介绍为提高物体定位精准性和召回率,YOLO作者提出了《YOLO9000:Better,Faster,Stronger》(JosephRedmon,AliFarhadi,CVPR2017,BestPaperHonorableMention),相比v1提高了训练图像的分辨率,引入了FasterRCNN中anchorbox的思想,对网络结构的设计进行了改进,输出层使用卷积层替代YOLO的全连接层,联合使用COCO物体检测标注数据和ImageNet物体分类标注数据训练物体检测模型。相比YOLO,YOLO9000在识别种类、精度、速度和定位准确性等方面都有大大提升。YOLO与FastR-CNN相比有较大的定位误差,与基于regionproposal的方法相比具有较低的召回率。因此YOLOv2主要改进是提高召回率和定位能力。下面是改进之处:BatchNormalization:v1中也大量用了BatchNormalization,同时在定位层后面用dropout,v2中取消了dropout,在卷积层全部使用BatchNormalization。高分辨率分类器:v1中使用224×224训练分类器网络,v2扩大到448用于检测网络。v2将ImageNet以448×448的分辨率微调最初的分类网络,迭代10epochs。YOLOv3介绍AnchorBoxes:v1中直接在卷积层之后使用全连接层预测bbox的坐标。v2借鉴FasterR-CNN的思想预测bbox的偏移。移除了全连接层,并且删掉了一个pooling层使特征的分辨率更大一些。另外调整了网络的输入(448→416)以使得位置坐标是奇数只有一个中心点(YOLOv1使用pooling来下采样,有5个size=2,stride=2的maxpooling,而卷积层没有降低大小,因此最后的特征是416/(2^5)=13)。v1中每张图片预测7×7×2=98个box,而v2加上AnchorBoxes能预测超过1000个。检测结果从69.5mAP,81%recall变为69.2mAP,88%recall。细粒度特征(finegrainfeatures):在FasterR-CNN和SSD均使用了不同的featuremap以适应不同尺度大小的目标。YOLOv2使用了一种不同的方法,简单添加一个passthroughlayer,把浅层特征图(26×26)连接到深层特征图(连接到新加入的三个卷积核尺寸为3×3的卷积层最后一层的输入)。通过叠加浅层特征图相邻特征到不同通道(而非空间位置),类似于Resnet中的identitymapping。这个方法把26×26×512的特征图叠加成13×13×2048的特征图,与原生的深层特征图相连接,使模型有了细粒度特征。此方法使得模型的性能获得了1%的提升。YOLOv3介绍Multi-ScaleTraining:和YOLOv1训练时网络输入的图像尺寸固定不变不同,YOL0v2(在cfg文件中random=1时)每隔几次迭代后就会微调网络的输入尺寸。训练时每迭代10次,就会随机选择新的输入图像尺寸。因为YOLOv2的网络使用的downsamples倍率为32,所以使用32的倍数调整输入图像尺寸{320,352,...608}。训练使用的最小的图像尺寸为320×320,最大的图像尺寸为608×608。这使得网络可以适应多种不同尺度的输入。其次,如果训练集中某一个groundtruth对应的Boundingbox中心恰好落在了输入图像的某一个gridcell中(如图中的红色gridcell),那么这个gridcell就负责预测此物体的boundingbox,于是这个gridcell所对应的objectnessscore就被赋予1,其余的gridcell则为0。此外,每个gridcell还被赋予3个不同大小的priorbox。在学习过程中,这个gridcell会逐渐学会如何选择哪个大小的priorbox,以及对这个priorbox进行微调(即offset/coordinate)。但是gridcell是如何知道该选取哪个priorbox呢?在这里作者定义了一个规则,即只选取与groundtruthboundingbox的IOU重合度最高的哪个priorbox。YOLOv3介绍YOLOv3检测物体上面说了有三个预设的不同大小的priorbox,但是这三个大小是怎么计算得来的呢?作者首先在训练前,提前将COCO数据集中的所有boundingbox使用K-meansclustering分成9个类别,每3个类别对应一个scale,这样总共3个scale。遵循的原则是特征图的尺寸越小,则分配的anchorbox的尺寸越大。不同anchorbox对图像感知视野的不同。这种关于box大小的先验信息极大地帮助网络准确的预测每个box的offset/coordinate,因为从直观上,大小合适的box将会使网络更快速精准地学习。YOLOv3主要的改进有:调整了网络结构;利用多尺度特征进行对象检测;对象分类用Logistic取代了Softmax。YOLOv3介绍使用预训练模型进行检测:使用预训练的模型来检测物体。如果尚未安装Darknet,则应首先进行安装。训练YOLOv3模型然后下载预训练模型的权重文件:wget/nedia/files/yolov3.weights。对单图片进行检测:./darknetdetectcfg/yo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 文物保护工程从业资格考前押题卷(含答案)
- 临床护士输血知识考试题及答案2026版
- 手术室安全使用管理
- 橡皮膏小熊安全
- 关爱健康 拒绝垃圾食品
- 2026年安全网络知识竞赛题库及答案
- 剖宫产再次妊娠并发症
- 安全培训和应急管理
- 教育心理学考试试题及答案
- 社工模拟试题及答案
- 2026年福建省厦门市辅警招聘真题解析含答案
- 2026年吉林镇赉县社区就业服务专员招聘考试试卷(完整版含答案解析)
- 2026年全民健康生活方式宣传月专题讲座课件
- 企业声誉危机处理协议2026
- 山东省淄博市2025-2026学年高二下学期7月期末考试英语试卷
- 作业活动安全风险评估管理办法
- 骨质疏松症诊疗指南
- 2026年湖南省事业单位面试真题附答案
- 2025年中国邮政集团四川省公司校园招聘笔试历年参考题库附带答案详解
- 2026主管护师考试历年真题及答案
- 2026年天津市专业技术人员继续教育公需课答案
评论
0/150
提交评论