tag 标签: 米尔电子

相关博文
  • 2024-11-1 16:38
    213 次阅读|
    0 个评论
    1.引言 随着网络视频平台的发展,用户对于4K高清画质的需求日益增长。然而,许多用户发现,即使购买了视频平台的会员,观看4K内容时画质却不如预期,有时甚至还会出现模糊、卡顿的情况。这种现象背后涉及到视频编码、网络带宽、和视频传输的诸多因素。 近期“影视飓风”发布的视频《清晰度不如4年前!视频变糊是你的错觉吗?》因讨论视频平台降低码率和改变编码格式以压缩视频画质,影响了内容表达。 4K视频清晰度下降的一个主要原因是平台为了节省带宽而压缩视频流,有时导致比特率降低,无法发挥4K分辨率的全部潜力。 在这种背景下,如何 高效地压缩和传输4K视频成为了一个关键技术难题 。本文将探讨如何通过 米尔电子的ZU4EV MPSoC平台, 接入真4k 60UHD-SDI视频源后,使用VCU进行高效H.265编解码,再通过 SGMII万兆以太网 实现 网络推流,以确保高质量4K视频的流畅传输。 2.视频质量下降的原因与优化方法 1) 带宽瓶颈 :在用户数量增加的情况下,服务器和网络的带宽常常无法满足4K视频流的需求。 2) 压缩算法不足 :传统的视频压缩技术在高分辨率内容上表现不佳,容易导致画面模糊。 3) 视频流传输的优化 在推流过程中,网络带宽和视频压缩效率直接决定了视频播放的清晰度与流畅度。为了确保4K视频在万兆以太网上的高效传输,本设计采用以下优化措施: 合理的码率控制 :在保证视频清晰度的前提下,调整H.265编码的目标码率,避免过低的码率影响视频质量或过高的码率导致带宽浪费或。通过CBR或VBR模式可以根据网络情况动态调整码率。 低延时模式 :VCU支持低延时编码模式,确保视频在压缩和传输过程中保持尽可能低的延迟,提升用户的观看体验。 网络传输协议选择 :根据应用场景选择合适的传输协议。对于实时性要求较高的场景,可选择UDP传输,而对于数据可靠性要求较高的场景,则推荐使用TCP协议。 3.MPSoC与VCU架构在4K UHD音视频广播领域的优势 1. 高性能与低功耗的结合 :Zynq UltraScale+ MPSoC采用了16nm FinFET工艺,集成了多核处理器和可编程逻辑,能够在提高性能的同时降低功耗,这对于音视频广播领域来说至关重要,因为它可以在保证高清晰度视频传输的同时,减少能源消耗。 2. 实时压缩与解压缩能力 :集成的VCU支持H.264/AVC和H.265/HEVC标准,能够实现高达4K UHD分辨率的视频的实时压缩和解压缩。这意味着在广播应用中,可以利用VCU进行高效的视频编码,减少存储空间和带宽的需求,同时保持视频质量。 3. 多视频流处理能力 :VCU能够同时处理多达八个不同的视频流,这对于需要同时广播多个视频源的4K UHD广播应用来说非常有用。这种多任务处理能力使得MPSoC成为多媒体中心和视频服务器的理想选择。 4. 灵活性和可扩展性 :MPSoC的可编程逻辑(PL)提供了任意到任意高速视频/音频接口的灵活性,可以为多媒体管道带来定制图像及视频处理功能的差异化效果。这种可编程性使得系统能够适应不断变化的音视频广播需求。 5. 专用硬件加速 :MPSoC提供了专用的处理引擎,如基于ARM Cortex A53的APU、Mali图形处理单元等,这些专用硬件能够加速图形和视频处理任务,提高系统的整体性能。 6. 支持多种视频格式 :VCU支持高达4:2:2 10位UHD-4K的视频格式,适合专业和高端消费级的制作与后期制作解决方案。这种广泛的格式支持使得MPSoC可以应用于各种不同的音视频广播场景。 7. 集成的多媒体框架支持 :MPSoC结合常见的多媒体框架GStreamer,可以开发硬件加速型多媒体应用。这种集成支持简化了开发过程,使得开发者能够快速实现复杂的音视频处理任务。 8. 优化的功耗管理 :Zynq UltraScale+ MPSoC将处理引擎、硬件编解码器等组件放置在具有独立电轨的不同电源域中,这种配置可用于为整个系统设计优化功耗管理方案,进一步降低系统功耗。 9. 高速互联外设 :MPSoC提供高速互联外设,如集成式DisplayPort接口模块,支持高达6 Gb/s的工作速率,这有助于处理来自PS或PL的实时音视频流,进一步降低系统BOM成本。 10. 支持新一代地面数字电视广播技术 :随着超高清电视时代的到来,MPSoC与VCU架构能够支持新一代地面数字电视广播技术,如DVB-T2、ATSC 3.0和DTMB-A等,这些技术支持更高的视频质量和新的广播应用模式。 综上所述,MPSoC与VCU架构在4K UHD音视频广播领域提供了高性能、低功耗、实时压缩解压缩、多视频流处理、灵活性、硬件加速、广泛格式支持、多媒体框架集成、优化的功耗管理和高速互联外设等多重优势,使其成为该领域理想的解决方案。 4.系统架构概述 在本设计中,我们使用Zynq UltraScale+ MPSoC平台(具体型号为MYIR XCZU4EV),通过FPGA实现对SDI视频的H265压缩,并通过SGMII接口推送到万兆以太网上。系统架构主要包括以下几个部分: 1. 视频输入 :输入源可以是SDI摄像机、SDI信号发生器或通过HDMI转SDI设备从电脑接入的HDMI信号。视频信号通过TI公司的LMH1219芯片做均衡处理,并将单端信号转换为差分信号后输入FPGA。 2. SDI视频解码 :FPGA中的UHD-SDI GT IP核用于SDI视频的解串,并将视频信号转换为AXI4-Stream格式供后续处理。通过SMPTE UHD-SDI RX SUBSYSTEM IP核,SDI视频被解码为RGB格式。 3. 视频帧缓存与处理 :解码后的视频信号存储在PS侧的DDR4中,通过Xilinx提供的Video Frame Buffer Write IP核实现。在这一阶段,可以对视频帧进行颜色转换、缩放等处理。 4. H.265视频压缩 :使用Zynq UltraScale+ VCU IP核对存储的RGB视频帧进行H.265编码压缩。VCU支持YUV420格式的视频,编码分辨率最高可达到4K@60fps。 5. SGMII万兆以太网传输 :经过H.265压缩后的视频流通过SGMII接口推送至万兆以太网。通过PetaLinux系统,利用TCP/UDP协议将压缩后的码流传输到PC或服务器端,用户可以通过VLC播放器等软件实时播放接收到的H.265码流。 5.工程设计主要流程 1. SDI输入 :通过LMH1219进行信号均衡,SDI信号转换为AXI4-Stream格式。 通过HDMI转SDI盒子,通过12G UHD-SDI输出4K 60FPS视频给FPGA,用户也可以使用SDI 工业相机; 2. 视频解码 :UHD-SDI GT IP核完成视频解串,SMPTE UHD-SDI RX SUBSYSTEM IP核将视频解码为RGB信号。 3. 视频缓存 :使用Video Frame Buffer Write IP核将视频写入DDR4。 用户可以选择在这里做出customer ISP,例如图像缩放,拼接 4. 视频压缩 :通过Zynq UltraScale+ VCU IP核对视频进行H265压缩。 5. 网络传输 :通过SGMII万兆以太网接口,将压缩后的H265视频流通过UDP协议推送至PC端,使用VLC播放器播放。 6.结论 在视频内容不断向4K发展的大背景下, 通过Zynq UltraScale+ MPSoC平台,基于VCU实现的SGMII万兆以太网视频压缩推流方案,不仅能够高效地压缩和传输4K视频,还可以确保较低的延迟和高质量的图像输出。该方案适用于视频监控、医疗影像、工业自动化等对高分辨率视频有需求的应用场景。 对于希望在网络视频平台上获得更好观看体验的用户来说,视频平台和服务提供商则需要在视频编码、网络传输等方面进行优化,以满足用户对于4K视频的画质需求。 7.互动环节 在SGMII网兆以太网推流到PC端,因为是万兆网,CPU无法负担这里的高速吞吐率,这里我们需要用到网络卸载,米尔电子的MYC-J7A100T双芯设计核心板可通过SFP采集SGMII万兆以太网数据后,PC通过PCIE读取视频源,实现万兆网口数据包卸载,我们会在后续系列文章中做出分享基于米尔MYC-J7A100TSFP采集后PCIE XDMA中断读取。
  • 2024-10-25 17:21
    0 个评论
    随着科技的快速发展,AIoT智能终端对嵌入式模块的末端计算能力、数据处理能力等要求日益提高。 近日,米尔电子发布了一款基于瑞芯微 RK3576核心板和开发板 。核心板提供4GB/8GB LPDDR4X、32GB/64GB eMMC等多个型号供选择。瑞芯微RK3576核心优势主要包括高性能数据处理能力、领先的AI智能分析、多样化的显示与操作体验以及强大的扩展性与兼容性。‌下面详细介绍这款核心板的优势。 6 TOPS超强算力,8核C PU 赋能A I 瑞芯微RK3576搭载了四核A72与四核A53处理器,主频高达2.2GHz,确保了系统的高效运行和强大的计算能力。RK3576集成了6TOPS的NPU,支持多种深度学习框架,能够处理复杂的AI算法,提高监控效率,降低误报率。 A I算力强, 搭 载 6 TOPS 的 NPU加速器,3D GPU ,赋能工业 A I 三屏异显,丰富多媒体功能 RK3576支持三屏异显,最高支持4K分辨率的视频显示,提供清晰的视觉体验。它还支持8K分辨率的硬解码,满足多场景多样化的显示需求。此外,RK3576的灵活VOP设计允许根据实际需求调整视频输出配置,提升系统的适用性和易用性‌。 丰富的接口,强大的扩展性和兼容性 RK3576拥有双千兆以太网接口、PCIE2.1、USB3.2、SATA3、DSMC/Flexbus、CANFD、UART等丰富接口,具备强大的扩展性和兼容性,支持大模型运行和多模态检索功能,处理复杂的监控数据和场景信息。它还支持512Mbps的接入、转发和存储能力,确保数据的高效传输和存储。 米尔 RK3576 核心板采用 LGA创新设计,可靠性高,又能节省连接器成本。 高可靠性保证,严格的测试标准,保障产品高质量 国产核心板,应用场景丰富 专为新一代 电力智能设备 、工业互联网设备、 工业控制设备 、 工业机器人 、 商显 、触控一体机、 工程机械 、 轨道交通 等行业设计
  • 热度 2
    2024-10-11 16:28
    66 次阅读|
    0 个评论
    米尔电子发布了基于新唐MA35D1处理器设计的MYC-LMA35核心板,MA35D1处理器集成了双核Cortex-A35和Cortex-M4,原生17路UART和4路CAN FD接口,可实现多种设备的高效互联并满足通信需求,此外,MYC-LMA35核心板还提供了丰富的外设资源:RGMII/USB/SDIO/I2S/I2C/EADC/EPWM/SPI等,丰富的外设资源使得MYC-LMA35核心板能够广泛应用于串口服务器、工业网关、新能源充电桩、振动监测、工程机械控制器、运动控制器和电力DTU等场景。 图1MYC-LMA35 核心板框图 下面是基于MYC-LMA35核心板(米尔基于MA35D1核心板)在串口服务器、工业网关、充电桩、振动监测应用的介绍。 串口服务器: 串口服务器是一种网络设备,主要用于将串行通信设备与网络转换和通信,实现远程数据传输和管理。它通过将传统的串口信号转换为网络协议,使得用户能够访问和控制多个串行设备。可应用于工业自动化、数据采集、智能家居等。 在串口服务器上,米尔基于MA35D1核心板具备强大的应用优势。MA35D1处理器支持17个原生UART接口,可以根据需求灵活实现RS232、RS485串口通信方式,利用这些串口连接多种传感器,满足不同设备的连接需求,确保数据实时采集;配备4路CAN FD接口,支持高速的数据速率和更大的有效载荷,适用于复杂的工业通信场景;双千兆以太网接口的设计可用于连接网络,提供了更快的数据传输速度;核心板支持USB HOST,可连接WIFI/4G模块,实现灵活的无线通讯。这些特性使得MYC-LMA35核心板能够更好地应用在串口服务器中,高效地处理实时数据,适应多样化的应用需求。 图2串口服务器应用框图 工业网关: 工业网关是一种专为工业环境设计的网络设备,用于连接不同的工业网络和设备,帮助实现数据的采集、传输和处理。它充当了各种工业控制系统之间的桥梁,使得不同协议和接口的设备能够无缝通信,从而提高了生产效率和设备管理的灵活性。 在工业网关上,米尔基于MA35D1核心板展现了强大的应用能力。核心板支持USB HOST,方便连接4G模组,确保工业设备能够进行实时数据传输;配备两路千兆以太网接口,确保高速数据传输;原生4路CAN FD接口可用于连接CAN 设备,提升工业自动化系统的互联互通性;核心板能够通过EBI与FPGA进行高效数据交互,拓展系统的处理能力;原生UART能够连接传感器等多种外部设备,可检测环境并采集数据;可利用SDHC连接WIFI/BT模块,增强无线通信的灵活性;I2C接口向外拓展连接RTC,确保系统时间准确性;核心板还支持LINUX操作系统,提供灵活的开发环境,适合工业应用的定制需求。基于这些性能MYC-LMA35核心板在工业网关中广泛应用,处理和管理来自不同设备的数据流。 图3 工业网关应用框图 充电桩: 充电桩是为电动车辆提供电能补给的设备,通过将电网中的电能转换为适合电动车使用的形式,实现快速、安全的充电。充电桩种类多样,包括直流快充和交流慢充,满足不同用户的需求。随着电动车的普及,充电桩的建设变得越来越重要,为绿色出行提供了便利保障。 MYC-LMA35核心板在充电桩的应用中展现了其强大的技术优势。MA35D1处理器配备原生17路UART接口,能够利用UART接口实现内外电压检测、计量电压采样和调试,也可以将UART接口根据需求转换为RS232、RS485串口通信方式,连接刷卡器、电表和扫码枪,使得其与电动车及其他设备的通信更加高效和灵活;核心板支持ADC,能够监测控制电压电流和温度,确保充电过程安全与高效;USB接口可连接U盘,实现数据存储和更新;两路千兆以太网,可以实现高速数据传输,满足充电桩实时监控和远程管理的需求;支持SPI和I2C接口,为外部传感器和模块的连接提供了便利;I2S、RGB等多媒体接口,帮助实现人机交互的界面显示和操作输入。MYC-LMA35核心板支持的多种拓展外设,使得其成为充电桩解决方案的理想选择,推动智能充电技术的发展。 图4 直流充电桩应用框图 振动监测: 振动监测是对设备或结构的振动特性进行检测、分析和评估的过程,以了解其运行状态和性能。分为高频振动监测,如电机振动监测;低频振动监测,如桥梁振动监监测。振动监测能够及时发现设备故障、评估设备性能、预测潜在风险,并采取相应的维护措施,确保设备安全、稳定、高效地运行。 MYC-LMA35核心板在振动监测领域具有强大的应用潜力。MA35D1芯片内置的DDR内存,使得数据处理更加高效,支持复杂的硬件设计;芯片集成的M4内核能够有效解决实时数据采集的问题,能够灵活配置ADC、串口、SPI和IIC等外设,确保系统在高频率下的稳定运行;核心板支持LINUX操作系统,方便程序的编制与维护,并通过以太网和4G模块实现更优的连接性能,增强了系统的兼容性和稳定性;M4内核与A35内核之间通过共享DDR内存进行数据传输,确保了在微秒级别内完成大量数据的传递。以上特性确保MYC-LMA35在振动监测中能够更好地应用。 图5 振动监测应用框图 综上所述,核心板在振动监测、充电桩、工业网关和串口服务器等领域的应用展现了其广泛的适用性和灵活性。原生17路UART和4路CAN FD为工业自动化和智能设备的开发提供了强有力的支持,满足更复杂和多样化的应用需求。 图6 米尔基于MA35D1核心板及开发板
  • 2024-8-16 17:39
    0 个评论
    米尔发布基于 新唐MA35D1芯片 设计的嵌入式处理器模块 MYC-LMA35核心板及开发板 ,MA35D1是集成2个Cortex-A35与1个Cortex-M4的异构微处理器芯片。核心板采用创新LGA 252PIN设计,存储配置256MB DDR3L、256MB Nand Flash/ 8GB EMMC,同时具有丰富的通讯接口,可广泛应用于新能源充电桩、工程机械控制器、OBD汽车诊断仪、工业网关、运动控制器和电力DTU等场景。 MA35D1是一款高性能的嵌入式处理器芯片,配备了双核Cortex-A35和Cortex-M4。它拥有强大的处理能力和丰富的通讯接口,支持多种外设连接,包括Gigabit Ethernet/SDIO3.0/USB 2.0 /CAN FD/UART等接口;集成了2D图形加速器、LCD 控制器、JPEG 和 H.264 解码器。此外,该处理器具备硬件加速的AES加密引擎和真随机数发生器,支持安全启动和数据加密,确保系统安全性。 MA35D1核心板原生支持17路UART和4路CAN FD接口,无需额外扩展即可适合于需要大量串行通信和多路CAN总线连接的应用。除此之外,核心板还提供了双千兆以太网、16bit EBI并口总线、24bit RGB等接口,增强了其在不同应用场景中的灵活性和扩展性。 MA35D1处理器还配备了多重先进的安全机制,包括新唐的TSI(Trusted Secure Island)独立安全硬件单元、TrustZone技术、安全启动(secure boot)、篡改检测、内建的AES、SHA、ECC、RSA以及SM2/3/4加解密加速器,以及真随机数生成器(TRNG)。此外,还包含密钥存储和一次编程内存(OTP memory)。所有涉及安全的操作均在TSI内部执行,能够有效保护敏感和高价值数据。 了解更多: https://www.myir.cn/shows/147/77.html
  • 热度 8
    2023-2-18 11:57
    971 次阅读|
    0 个评论
    本篇测评由电子发烧友的优秀测评者“ALSET”提供。 电子发烧友网发布了一款试用产品:米尔 MYD-Y6ULX-V2 开发板,基于 NXP i.MX6UL/i.MX6UL L处理器,该开发板被米尔称之为经典王牌产品。本次测试目标是在此开发板上进行神经网络框架ncnn的移植与测试开发,测试ncnn在此开发板上的性能与应用测试。 01 . 什么是ncnn ncnn 是腾讯优图推出的在手机端极致优化的高性能神经网络前向计算框架。也能够在移动设备上的高性能神经网络前向计算框架。ncnn 从设计之初深刻考虑移动端的部署和使用。无第三方依赖,跨平台,其中手机端 cpu的速度快于目前所有已知的开源框架。 基于ncnn,能够将深度学习算法轻松移植到手机端和移动设备上高效执行,开发人工智能应用。以腾讯内部应用为例,ncnn目前已在QQ,Qzone,微信,天天P图等上得到应用。 ncnn支持大部分常用的CNN 网络: Classical CNN: VGG AlexNetGoogleNet Inception … Practical CNN: ResNetDenseNet SENet FPN … Light-weight CNN:SqueezeNet MobileNetV1/V2/V3 ShuffleNetV1/V2 MNasNet … Detection: MTCNNfacedetection … Detection: VGG-SSDMobileNet-SSD SqueezeNet-SSD MobileNetV2-SSDLite … Detection: Faster-RCNNR-FCN … Detection: YOLOV2 YOLOV3MobileNet-YOLOV3 … Segmentation: FCN PSPNetUNet … 腾讯优图实验室是主要研究计算机视觉技术,ncnn的许多应用方向也都在图像方面,如人像自动美颜,照片风格化,超分辨率,物体识别。 腾讯优图ncnn提供的资料显示:对比目前已知的同类框架,ncnn是cpu框架中最快的,安装包体积最小,跨平台兼容性中也是最好的。以苹果主推的CoreML为例,CoreML是苹果主推的 iOS gpu计算框架,速度非常快,但仅支持 iOS11以上的 iphone手机受众太狭窄。非开源也导致开发者无法自主扩展功能。 02 . ncnn功能简介 ncnn支持卷积神经网络,支持多输入和多分支结构,可计算部分分支无任何第三方库依赖,不依赖 BLAS/NNPACK 等计算框架纯 C++ 实现,跨平台,支持 android ios 等ARM NEON 汇编级良心优化,计算速度极快精细的内存管理和数据结构设计,内存占用极低支持多核并行计算加速,ARM big.LITTLE cpu 调度优化。 支持基于全新低消耗的 vulkan api GPU 加速整体库体积小于 700K,并可轻松精简到小于 300K可扩展的模型设计,支持 8bit 量化和半精度浮点存储,可导入 caffe/pytorch/mxnet/onnx 模型支持直接内存零拷贝引用加载网络模型可注册自定义层实现并扩展。 ncnn 与同类框架对比 03 . 在i.MX6ull上移植编译ncnn 工程地址: githubhttps://github.com/Tencent/ncnn 从工程的readme文件看,该工程已经支持很多嵌入式CPU的架构,其中就有arm 32位版本。 既然支持arm32位,那么ixm6ull处理器也应该支持,即着手编译MYD-Y6ULX-V2开发板上的版本。 1.从github 上拉取ncnn源码 在主机上执行命令: Sudo git clonehttps://github.com/Tencent/ncnn.git 可见是一个 cmake工程,那么尝试cmake 编译。 2.初次使用camke编译 先进入ixml6ull的SDK下,切换到交叉编译环境,然后创建 build 目录,进入build目录下,执行cmake命令 cmake ../ 从输出信息上看 cmake失败,查看cmake 日志,发现错误原因是cmake在生成开发板的makefile文件时,需要指定使用的编译工具链。 3.添加imx6ull开发板的编译配置 根据脚本的过程,在toolchains目录下,有很多其它开发板的编译配置文件,参照其它开发板的配置文件,添加一个该开发板的配置文件。 文件名:arm-poky-linux-gnueabi.cmake 内容如下: set(CMAKE_SYSTEM_NAME Linux) set(CMAKE_SYSTEM_PROCESSOR arm) set(CMAKE_C_COMPILER "arm-poky-linux-gnueabi-gcc") set(CMAKE_CXX_COMPILER "arm-poky-linux-gnueabi-g++") set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) set(CMAKE_C_FLAGS "-march=armv7-a -mfloat-abi=hard -mfpu=neon --sysroot=/home/lutherluo/workspace/fsl-imx-fb/5.10-gatesgarth/sysroots/cortexa7t2hf-neon-poky-linux-gnueabi") set(CMAKE_CXX_FLAGS "-march=armv7-a -mfloat-abi=hard -mfpu=neon --sysroot=/home/lutherluo/workspace/fsl-imx-fb/5.10-gatesgarth/sysroots/cortexa7t2hf-neon-poky-linux-gnueabi") # cache flags set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "c flags") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" CACHE STRING "c++ flags") 4.再使用cmake生成编译文件 添加完该开发板的编译工具链后,就可以使用cmake来生成编译所需的makefile文件了。在cmake时,可以指定除了编译ncnn库外,还可以编译ncnn例子程序。命令如下: cmake-DCMAKE_BUILD_TYPE=Release -DNCNN_SIMPLEOCV=ON-DCMAKE_TOOLCHAIN_FILE=../toolchains/arm-poky-linux-gnueabi.cmake-DNCNN_BUILD_EXAMPLES=ON .. 查看目录下,已经顺利地生成了 Makefile文件。 5.使用make编译文件 然后可以正式编译ncnn库和测试样例程序了。 直接执行 make –j4 就开始愉快地编译了。 编译libncnn库文件成功,会继续自动编译 examples 下的例子文件。 大约10多分钟,顺利地全部编译完成。 在编译测试用例时,会出现库格式错误的提示,此时需要设置一下交叉编译环境下的库归档工具,系统默认使用的是arm-poky-linux-gnueabi-ar 工具,这个工具产生的 .a文件有问题,经过测试使用 arm-poky-linux-gnueabi-gcc-ar 即可。 只需要在执行切换交叉环境脚本后,再单独执行一下以下命令即可修改该问题: export ar=arm-poky-linux-gnueabi-gcc-ar 再进行编译即可。 6.查看编译结果 编译完成后,在build目录下,可以看到 benchmark 目录,该目录下就是ncnn的基准测试工具,可以看到目标板执行文件已经编译出来。 再进入到 build/example 下,可以看到所有例程也编译出来了。 04 . 板上运行测试ncnn 编译完成把可执行文件与模型文件复制到开发板里进行测试。 把 build/benchmark 下的benchmark 复制到开发板/home/root/ncnn 目录下,同时把工程根目录下的benchmark 目录下所有文件也复制到开发板 /home/root/ncnn目录下, 然后就可以执行 benchmark 执行文件来测试开发板的人工神经网络的计算能力。 先把开发环境下目标文件系统arm目录下/usr/lib下的libgomp.so.1文件复制到开发板的/usr/lib下,这个文件是并行计算库,ncnn编译时用到了这个库,这个库在多核处理器上能够支持执行并行计算。然后再在本开发板执行benchmark,执行输出结果如下图: 可见大部分的模型能够跑通了,有部分模型运行出现异常。 从抛出的分值可以评估该开发板的神经网络推理计算能力了。 这个分值是一个模型推理一次的耗时,所以数值越小意味着算力越强。考虑到这个开发板是一个arm v7入门级的开发板,这样的性能已经超乎预料了。 05 . 测试基于ncnn的应用 这里在MYD-Y6ULX-V2开发板上测试ncnn的应用例子,这里就用ncnn下的例程来做测试,在上面编译完example后,在build目录下会产生example的目标板的可执行文件。编译出来的例子程序如下,把他们全部传到开发板上。 需要注意的是,除了ncnn的应用执行文件,在这些例子执行的时候,还需要模型和测试的资源文件,而这些文件体积都比较大,因此不能传送到开发板的系统目录上,需要单独存在扩展的存储空间上。 经过观察板上的文件系统,发现有3.1G的空间没有使用,此时可以使用fdisk 来格式化该空间,格式化成 ext4 格式,重启板子后,就可以看到这部分空间了,然后把ncnn的所有测试执行文件和资源文件传到该目录下,这样就够用了。 在板上执行各个测试例子,会提示缺少相关模型文件和参数文件,这些模型和参数文件在这个github上面,下载相应的文件到当前目录下就可以。 https://github.com/nihui/ncnn-assets/tree/master/models 1. 测试图片分类器 准备被测试图片,test,jpg ,传到上ncnn当前目录下 并且下载好 squeezenet_v1.1.param和 squeezenet_v1.1.bin 文件到 ncnn当前目录下,然后执行一下命令: ./squeezenet./test.jpg 很快就输出识别结果,输出结果如下图 输出结果前面的编号和分类号,具体可以参考: mageNet20121000分类名称和编号 https://zhuanlan.zhihu.com/p/315368462 但不知本测试模型所用分类的版本是否和这个一致。 2测试图片内容多目标识别 测试图片内容识别,先用上面的图,再使用 squeezenetssd 来执行。执行前先下载 squeezenet_ssd_voc.bin和 squeezenet_ssd_voc.param 到板上ncnn当前目录下,然后执行: ./squeezenetssd./test.jpg 大约3秒左右输出结果如图: 输出的分类编号,可见代码的定义: 同时输出了识别结果图: 再测试另外一张图: 执行结果如下: 输出识别结果图: 上面的识别,因为输出的第二个目标被第三个目标遮盖,第二个识别为“Dog”,所以识别准确度还是比较高的。 再测试了一张图: 输出: 识别效果也比较理想。 06 . ncnn移植测试总结 经过在MYD-Y6ULX-V2开发板上,进行这次的ncnn移植测试,总体非常顺利,在移植中只需要针对开发板的编译器,修改添加相应的编译脚本即可顺利的编译ncnn库和所有例程。并不需要对代码做任何改动或者调整,因此过程很快,短暂的时间就可以完成ncnn这样一个神经网络框架在本开发板上运行起来。 对ncnn的benchmark的性能测试来看,因为本开发板仅为arm v7单核处理器,处于入门级的一款开发板,能跑出这样的成绩已经出乎意料。 在对实际图像分类和图像内容识别测试中,其中图像分类仅百十毫秒就出结果,对多目标识别单张图在2秒左右,这对一些静态的环境下已经能够达到业务使用的需求了,再综合其硬件性能,可见效能比是非常高的。同时工程里还带有一些各种其它框架模型转化ncnn的工具,方便将其它模型转化到ncnn上来使用,非常方便。 同时也测试出ncnn的良好的可移植性和对不同嵌入式硬件的支持较好,其它任何一个神经网络框架恐怕无法在这样一个系统上运行,因此也为这样一个有效的国产开源神经网络项目点赞。