完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大信(QQ:8125036) 感谢电子发烧友网与米尔科技给予的MYD-JX8MMA7开发板开发板试用机会。MYD-JX8MMA7开发板是一款整合了高性能ARM与较高参数的FPGA芯片的异构硬件平台。 该开发板比较适用在高级图形、高级成像、高级机器视觉、高端音频、高端语音、高端视频和高安全的嵌入式应用等跨领域的多种应用场景。 此将尝试使用该开发板进行图像神经网络框架NCNN的移植测试和应用开发测试。 一、Ncnn简介 Ncnn 是腾讯优图推出的在手机端极致优化的高性能神经网络前向计架框架。也能够在移动设备上的高性能神经网络前向计算框架。ncnn 从设计之初深刻考虑移动端的部署和使用。 基于ncnn,能够将深度学习算法轻松移植到手机端和移动设备上高效执行,开发人工智能应用。 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 … 详细功能介绍,请参考以前的这篇文章: https://bbs.elecfans.com/jishu_2328174_1_1.html 二、在MYD-JX8MMA7上移植编译ncnn首先从github地址:githubhttps://github.com/Tencent/ncnn 的项目说明看,该工程支持很多嵌入式CPU的架构,也支持arm64位的处理器。 下面就着手移植NCNN到MYD-JX8MMA7开发板上来: 1.从github 上拉取ncnn源码 在主机上执行命令: Sudo git clone https://github.com/Tencent/ncnn.git 2.添加MYD-JX8MMA7开发板的编译配置 工程在toolchains目录下,有一些其它开发板的编译配置参考文件,参照aarch64-linux-gnu.toolchain.cmake文件,复制一个,改名为jx8mma7-linux-gnu.toolchain.cmake,并打开该文件根据MYD-JX8MMA7的编译器配置进行修改。 修改内容如下:
3.再使用cmake生成编译文件 添加完该开发板的编译工具链后,就可以使用cmake来生成编译所需的makefile文件了。在cmake时,可以指定除了编译ncnn库外,还可以编译ncnn例子程序。编译脚本命令如下:
编辑好之后,在开发板上直接执行该脚本: 查看目录下,已经顺利的生成了 Makefile文件。 4.使用make编译文件 然后可以正式编译ncnn库和测试样例程序了。直接执行 make –j4 就开始愉快的编译了。 编译libncnn库文件成功,会继续自动编译 examples 下的例子文件。 大约10多分钟,顺利的全部编译完成。 整个编译时,非常顺利,一次就得编译通过。 5.查看编译结果 编译完成后,在build目录下,可以看到 benchmark 目录,该目录下就是ncnn的基准测试工具,可以看到目标板执行文件已经编译出来。 再进入到 build/example 下,可以看到所有例程也编译出来了。 四、MYD-JX8MMA7板上运行测试ncnn 编译完成就可以把可执行文件与模型文件传送到开发板里进行测试。 把 build/benchmark 下的benchmark 复制到开发板/home/root/ncnn 目录下,同时把工程根目录下的benchmark 目录下所有文件也复制到开发板 /home/root/ncnn目录下, 先把开发环境下目标文件系统arm目录下/usr/lib下的libgomp.so.1文件复制到开发板的/usr/lib下,这个文件是并行计算库,ncnn编译时用到了这个库,这个库在多核处理器上能够支持执行并行计算。然后再在本开发板执行benchmark,执行输出结果如下图: 五、测试基于ncnn的应用这里在MYD-JX8MMA7开发板上测试ncnn的应用例子,用ncnn下的例程来做测试,在上面编译完example后,在build目录下回产生example的目标板的可执行文件。编译出来的例子程序如下,把他们全部传到开发板上。 https://github.com/nihui/ncnn-assets/tree/master/models 先准备好测试的图片,使用squeezenetssd 来测试图片内容识别,执行前先下载 squeezenet_ssd_voc.bin和 squeezenet_ssd_voc.param 到板上ncnn当前目录下然后执行: ./squeezenetssd./test.jpg 执行时提示缺少 libopencv_superres.so.4.5 libopencv_core.so.4.5.2,把这两个文件从开发机armlinx环境下复制到开发板板下 /usr/lib 下即可。 从上面测试看,使用 squeezenetssd 耗时2秒多,这对于实时检测,显然不够,那再使用另外一个模型fastestdet 来检测一下,fastesdet 是在保持检测高精度的同时具有最快的速度,那么实际测试一下: 把 FastestDet.param模型文件传输到开发板上,执行: ./fastestdettest.jpg 输出结果如下: 2.YOLOV7模型运行测试 Yolov7是一个使用非常广泛的多目标识别模型,这里测试一下它再MYD-JXMMA7上的识别效果;上传yolov7 的模型文件和执行文件。 执行 ./yolov7test.jpg 六、交通流量统计应用开发 通过上面的测试可以看出FastestDct模型对图片识别的测试速度达到了每秒15帧,这个速度可以用来测试视频内容了。因此我们在fastestdct的基础上,整合Gstream流媒体SDK,来开发一个交通流量统计的应用。 应用的整体思路是,通过gststeam来接收交通监控的rtsp视频流,然后统购gststream来进行解码,解出每帧的视频画,因为视频画面数率超过15fps,这里做一些丢弃处理,使用15fps的速度,把画面送到fastestdct的识别模块里进行识别,然后把识别的结果进行统计,并把统计的结果使用OpenCV函数画到画面上,再送回GGStreamer播放窗口上显示,从而形成交通流量统计的一个原型。 统计的基本算法为,通过识别监控画面中十字路口的的车辆和行人数量,再根据该路口通行的不同时段的速率图,从而统计该路口的人流量和车流量。 部分代码如下: |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
【米尔-Xilinx XC7A100T FPGA开发板试用】 UART测试
1171 浏览 0 评论
【米尔RK3576开发板评测】+项目名称米尔RK3576开发板人脸疲劳检测代码测试
895 浏览 0 评论
【米尔RK3576开发板评测】+项目名称值得购买的米尔RK3576开发板
830 浏览 0 评论
【米尔RK3576开发板评测】+项目名称2、基于gstreamer + mpp硬件编码 实现摄像头推流
1216 浏览 0 评论
【米尔-紫光MYB-J7A100T国产FPGA开发板试用】米尔-紫光PG2L100H国产FPGA开发板开箱评测
1250 浏览 0 评论
【米尔-瑞米派兼容树莓派扩展模块-试用体验】基于ROS系统的三麦轮小车自主导航
3755浏览 2评论
【米尔NXP i.MX 93开发板试用评测】5、安装Debian和排除启动故障
890浏览 2评论
【米尔NXP i.MX 93开发板试用评测】2、异构通信环境搭建和源码编译
1003浏览 2评论
【米尔-瑞米派兼容树莓派扩展模块-试用体验】Free RTOS应用开发环境部署
1530浏览 1评论
【米尔-芯驰D9开发板- 国产平台试用】- 03- 外设接口测试-U盘、485总线
6861浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-2-3 10:01 , Processed in 0.576973 second(s), Total 66, Slave 49 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号