0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用瑞芯微RV1126核心板的Linux人脸识别项目

LZL18611808956 来源:果果小师弟 作者:果果小师弟 2022-10-17 14:08 次阅读

摘要:一个Linux人脸识别小项目,可以拿过来来练练手。使用瑞芯微RV1126核心板通过瑞芯微API进行视频采集并进行人脸识别,并输出到设备上。

一、搭建NFS环境

网络文件系统NFS,是由SUN公司研制的UNIX表示层协议,能使使用者访问网络上别处的文件就像在使用自己的计算机一样。我们可以Ubuntu上制作板子需要的文件,然后使用NFS来加载文件到板子的DDR上。

因为我们使用的板子内存太小,而人脸识别有需要很多的文件来支持,板子放不下,只能通过这种挂载的方式,将程序运行所需要的数据库模型文件放在挂载的目录下,这样就可以了。

1.1 安装NFS服务

在Ubuntu终端执行以下指令安装NFS。

sudoapt-getinstallnfs-kernel-server

1.2 新建NFS共享目录

新建NFS共享目录,并给予NFS目录可读可写可执行权限。

sudomkdir/home/zhiguoxin/linux/nfs
sudochmod777/home/zhiguoxin/linux/nfs/

1.3 配置NFS服务

执行以下指令打开etc/exports文件

sudovi/etc/exports

进入etc/exports文件,在最后添加如下内容

/home/zhiguoxin/linux/nfs*(rw,sync,no_root_squash)

/home/zhiguoxin/linux/nfs 表示NFS共享的目录,*表示允许所有的网络段访问,rw表示访问者具有可读写权限,sync表示将缓存写入设备中,可以说是同步缓存的意思。no_root_squash表示访问者具有root权限。修改完如下图所示。

30c24060-4dd0-11ed-a3b6-dac502259ad0.png

修改完以后保存退出。执行以下指令重启 NFS 服务器。

sudo/etc/init.d/nfs-kernel-serverrestart

执行以下指令查看 NFS 共享目录。

showmount-e
30e85bb0-4dd0-11ed-a3b6-dac502259ad0.png

网络环境

确保网络环境正常,Ubuntu、Windows和开发板能相互ping 通。开发板IP:192.168.100.75虚拟机IP:192.168.100.100电脑网口IP:192.168.100.102

二、交叉编译SQLite3数据库

2.1、准备源码

源码可以周期官网下载,放在我的共享文件夹下,然后解压。

30fefe38-4dd0-11ed-a3b6-dac502259ad0.png

2.2、准备RV1126的sdk包

这个RV1126的源码包在购买板子的时候商家会送你的

312f3f76-4dd0-11ed-a3b6-dac502259ad0.png

这个那文件夹里面有交叉编译工具链。在交叉编译之前,得在sdk里面找到交叉编译工具链:

314117aa-4dd0-11ed-a3b6-dac502259ad0.png商家提供的sdk里面的交叉工具链

然后我这里放在samba共享目录下,我的共享文件夹对应我的ubuntu的目录是

/home/zhiguyoxin/shared/
315972c8-4dd0-11ed-a3b6-dac502259ad0.png

现在开始来交叉编译SQLite3,这个SQLite3的源码还是用之前给大家的源码包:

30fefe38-4dd0-11ed-a3b6-dac502259ad0.png

使用命令解压

tar-zxvfsqlite-autoconf-3380500.tar.gz
31a33660-4dd0-11ed-a3b6-dac502259ad0.png31bc8714-4dd0-11ed-a3b6-dac502259ad0.png

2.3、交叉编译SQLite3

然后开始进行交叉编译,不过在在这之前,先在当前目录下创建一个文件夹来存放等下交叉编译出来文件:

mkdirarm_sqlite3_install
31eaf5d6-4dd0-11ed-a3b6-dac502259ad0.png

最后最为关键部分是,现在找到那个之前交叉编译的路径来,也就是结对路径:

/home/zhiguoxin/shared/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin

接着刚才建立的arm_sqlite3_install,也是要找到他的绝对路径来:

/home/zhiguoxin/shared/sqlite-autoconf-3380500/arm_sqlite3_install
321e59ee-4dd0-11ed-a3b6-dac502259ad0.png

最后就可以按照下面这个命令来执行编译了:

./configureCC=/home/zhiguoxin/shared/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc--host=arm-linux--prefix=/home/zhiguoxin/shared/sqlite-autoconf-3380500/arm_sqlite3_install
322f0104-4dd0-11ed-a3b6-dac502259ad0.png

然后执行分别执行以下命令即可:

make-j8
makeinstall

最后在arm_sqlite3_install目录下生成四个文件:

3244ae82-4dd0-11ed-a3b6-dac502259ad0.png

进入到arm_sqlite_install目录下的lib目录,这里面就是交叉编译出来的.so的动态库文件,如下图所示:

325e3334-4dd0-11ed-a3b6-dac502259ad0.png

我们把这些动态库进行一个打包:

zip-rarm_sqlite3_lib.zip*so*
326dce70-4dd0-11ed-a3b6-dac502259ad0.png

把这个打包文件拷贝到nfs目录下去:

cp-rfarm_sqlite3_lib.zip/home/zhiguoxin/linux/nfs
32864d92-4dd0-11ed-a3b6-dac502259ad0.png35a043a2-4dd0-11ed-a3b6-dac502259ad0.png

令外还要将sqlite3可执行文件拷贝至/home/zhiguoxin/linux/nfs目录下

35ba5ddc-4dd0-11ed-a3b6-dac502259ad0.png

使用这个可执行文件我们查看数据库中的数据,做一下添加删除的操作。

三、交叉编译OpenCV

同样现在官网下载号源码包,放再共享文件夹下

35cfdeaa-4dd0-11ed-a3b6-dac502259ad0.png

解压

unzipopencv-3.4.12.zip-dopencv-3.4.12
35ec487e-4dd0-11ed-a3b6-dac502259ad0.png

进入解压后的opencv版本platforms/linux目录下去:

cdopencv-3.4.12/platforms/linux

修改arm-gnueabi.toolchain.cmake

vimarm-gnueabi.toolchain.cmake
36017e06-4dd0-11ed-a3b6-dac502259ad0.png

将里面的交叉编译路径修改成你自己的路径

/home/zhiguoxin/shared/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf
361a2118-4dd0-11ed-a3b6-dac502259ad0.png

建立一个build目录,并进入build下去:

3640cdd6-4dd0-11ed-a3b6-dac502259ad0.png

编译:

cmake-DCMKAE_BUILD_TYPE=Release-DCMAKE_TOOLCHAIN_FILE=../platforms/linux/arm-gnueabi.toolchain.cmake-DCMAKE_INSTALL_PREFIX=/opt/arm_opencv-DSOFTFP=ON-DENABLE_PROFILING=OFF-DWITH_OPENCL=OFF-DWITH_TBB=ON-DWITH_V4L=ON-DHAVE_CAMV4L2=ON-DBUILD_TESTS=OFF-DINSTALL_PYTHON_EXAMPLES=OFF-DBUILD_EXAMPLES=OFF-DWITH_FFMPEG=ON-DHAVE_FFMPEG=ON-DBUILD_opencv_js=OFF-DENABLE_NEON=OFF-DENABLE_VFPV3=OFF../
366467c8-4dd0-11ed-a3b6-dac502259ad0.png36784da6-4dd0-11ed-a3b6-dac502259ad0.png

然后执行下面两句

make-j8
makeinstall

最后结果:

368bd22c-4dd0-11ed-a3b6-dac502259ad0.png

先进入到build目录下的lib目录下,你会看到很多动态库,

36ab96ac-4dd0-11ed-a3b6-dac502259ad0.png

对其打包:

zip-rarm_opencv_lib.ziplib*
37aa2eec-4dd0-11ed-a3b6-dac502259ad0.png

将文件拷贝至/home/zhiguoxin/linux/nfs//共享文件夹

cp-rfarm_opencv_lib.zip/home/zhiguoxin/linux/nfs/
37c752b0-4dd0-11ed-a3b6-dac502259ad0.png

四、移植rknn动态库

把sdk里面的rknn动态库移植到nfs目录下,这是我放sdk的路径:

37ee046e-4dd0-11ed-a3b6-dac502259ad0.png

将这个文件拷贝到/home/zhiguoxin/linux/nfs目录下,用啥方式都可以,只要拷贝过去就可以了。

五、RV1126人脸识别工程交叉编译

首先下载人脸识别源码,我下载后之后放在这里

38004c46-4dd0-11ed-a3b6-dac502259ad0.png

在编译之前,我们要修改一下Makefile:

vimMakefile

这里修改成你的sdk交叉编译工具链的路径

38331edc-4dd0-11ed-a3b6-dac502259ad0.png

然后make就看可以了

make

5.1 移植人脸识别数据模型

将人脸识别数据模型拷贝至/home/zhiguoxin/linux/nfs/

cd/home/zhiguoxin/myproject/rockx_face_recognize_project_rtsp
cprockx_data/-rf/home/zhiguoxin/linux/nfs/
3866700c-4dd0-11ed-a3b6-dac502259ad0.png

5.2 移植人脸识别可执行程序

将人脸识别编译出来的可执行程序拷贝至/home/zhiguoxin/linux/nfs/

38862e38-4dd0-11ed-a3b6-dac502259ad0.png

5.3 移植人脸识别插入人脸数据可执行程序

将人脸识别编译出来的插入人脸数据库可执行程序拷贝至/home/zhiguoxin/linux/nfs/

38e8c28c-4dd0-11ed-a3b6-dac502259ad0.png

5.4 移植人脸识别数据库

将数据库文件face.db文件拷贝至/home/zhiguoxin/linux/nfs/

390559d8-4dd0-11ed-a3b6-dac502259ad0.png

六、RV1126板子的处理

6.1 挂载

在开发板的/mnt/新建一个nfs文件夹

cd/mnt/
mkdirnfs

在板子上使用nfs挂载,之后在ubuntu上的/home/zhiguoxin/linux/nfs放的文件,都会在共享在板子的/mnt/nfs目录下

mount-tnfs192.168.100.100:/home/zhiguoxin/linux/nfs/mnt/nfs-onolock

192.168.100.100是我虚拟机的IP地址

/home/zhiguoxin/linux/nfs是我虚拟机下的nfs目录

/mnt/nfs是板子的挂载目录

393a22da-4dd0-11ed-a3b6-dac502259ad0.png

6.2 删除原有数据库表

./sqlite3face.db
.tables
select*fromface_data_table;
deletefromface_data_table;
.quit

6.3 插入人脸数据

./rkmedia_rockx_face_insertliuyaoliuyao.png
./rkmedia_rockx_face_insertyangjiachengyangjiacheng.png
39aee0ac-4dd0-11ed-a3b6-dac502259ad0.png

6.4执行程序

./rkmedia_rockx_face_rga_rtsp_main
39cbac3c-4dd0-11ed-a3b6-dac502259ad0.png
ffplay–x800–y400rtsp://192.168.100.75/live/main_stream

或者使用vlc拉流

39debade-4dd0-11ed-a3b6-dac502259ad0.png3a29a008-4dd0-11ed-a3b6-dac502259ad0.png

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11304

    浏览量

    209467
  • 瑞芯微
    +关注

    关注

    23

    文章

    418

    浏览量

    51330
  • 人脸识别
    +关注

    关注

    76

    文章

    4012

    浏览量

    81893
  • 核心板
    +关注

    关注

    5

    文章

    1014

    浏览量

    29768
  • rv1126
    +关注

    关注

    0

    文章

    30

    浏览量

    2848

原文标题:单片机可以人脸识别吗?不行,是Linux

文章出处:【微信号:果果小师弟,微信公众号:果果小师弟】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于RV1126的边缘计算人工智能开发套件快速入手案例

    RV1126内置AI智能算法,与大部分其他同类方案相比,影像处理能力更为强大且全面。 RV 112
    的头像 发表于 10-12 18:03 5282次阅读
    基于<b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RV1126</b>的边缘计算人工智能开发套件快速入手案例

    一个基于Linux RV1126人脸识别项目

    关于RV1109/RV1126,之前芯片刚出的时候就搞了将近一年,当时没有什么参考资料,于是只能根据经验去慢慢摸索,也总结了不少这方面的笔记。
    发表于 11-23 09:23 5516次阅读

    RV1126基于虹软人脸识别算法实现指南

    1、RV1126基于虹软人脸识别算法实现的示例使用教程示例(rkmedia_vi_arc_rtsp_test.cc) 使用 CORE-1126-JD4 配套的 os04a10 摄像头进
    发表于 06-08 15:51

    RV1126支持车载视觉产品产品开发

    预警)、DMS(驾驶员疲劳检测)、BSD(盲区检测算法)等的搭载需求正不断提高。RV1126支持Linux操作系统,拥有独立的NPU,
    发表于 08-02 16:49

    基于高性能核心板人脸识别方案

    、图书馆,收银台 RV1126高性能人脸识别核心板
    发表于 01-05 14:15

    基于RV1109的酒店人脸识别应用

    技术,以及红外热成像模块,支持口罩识别RV1126高性能人脸
    发表于 01-29 14:41

    基于RV1109 电子哨兵健康码核验终端的高铁人脸识别检票系统

    支持系统级、APP离线级、APP+后 台网络级多种API对接,文档完善,支持二次开发 RV1126高性能人脸
    发表于 02-08 14:01

    RV1126RV1109 IPC方案优势解析

    面对复杂光照环境、人流与车流、多变人体动作等复杂场景,成像质量和画面效果以及细节呈现能力,是考量IPC方案技术的重要指标。近日旗下两款IPC方案RV1126
    的头像 发表于 03-02 16:49 3541次阅读

    人脸识别速度提升50%,推出RV1126智能考勤/门禁/闸机产品方案

    近日推出RV1126方案,应用于智能考勤设备、门禁设备、闸机等产品,全新升级四大技术优势,强化相关产品的核心竞争力。 (企业供图,下同) 优势一、人脸检测速度提升50% 排队时间大
    的头像 发表于 04-01 16:49 2957次阅读

    Rockchip RV1109和RV1126芯片规格

    Banana Pi 基于Rockchip RV1109和RV1126的AI 智能摄像头开发方案
    发表于 10-25 15:20 3283次阅读
    <b class='flag-5'>芯</b><b class='flag-5'>微</b>Rockchip <b class='flag-5'>RV</b>1109和<b class='flag-5'>RV1126</b>芯片规格

    RV1126荣获第十六届中国“优秀市场表现产品奖”

    了“中国”优秀产品征集结果发布仪式,微电子股份有限公司(以下简称“”)旗下高端视觉芯
    发表于 12-22 11:36 981次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RV1126</b>荣获第十六届中国<b class='flag-5'>芯</b>“优秀市场表现产品奖”

    RV1126 38mm主控数据手册

    本产品是基于 RV1126 媒体处理芯片开发的 IPC 开发,分为核心板和底板,且
    发表于 08-30 11:55 13次下载

    RV1126开发数据手册

    本产品是基于 RV1126 媒体处理芯片开发的 IPC 开发,分为核心板和底板, 且
    发表于 08-28 11:09 16次下载

    rv1126芯片参数介绍

    芯片进行详细的介绍,并探讨其主要功能和应用场景。 RV1126芯片概述 RV1126芯片是一款由公司针对视觉智能领域而研发的专业芯片。
    的头像 发表于 08-17 11:09 7372次阅读

    rv1126和rk3568对比

    视频编解码。而RK3568开发创龙科技旗下工业开发,基于RK3568J/RK3568B2处理器设计,四核ARM Cortex-A5
    的头像 发表于 01-23 18:05 1.1w次阅读
    <b class='flag-5'>rv1126</b>和rk3568对比