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

    文章

    10981

    浏览量

    206687
  • 瑞芯微
    +关注

    关注

    23

    文章

    322

    浏览量

    50676
  • 人脸识别
    +关注

    关注

    76

    文章

    3953

    浏览量

    80531
  • 核心板
    +关注

    关注

    5

    文章

    837

    浏览量

    29122
  • rv1126
    +关注

    关注

    0

    文章

    30

    浏览量

    2359

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

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

收藏 人收藏

    评论

    相关推荐

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

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

    RV1126 适配 Debian10(搭建人脸识别云服务器)

    前言 主要借助人脸识别云服务器的应用来介绍 RV1126 的 Debian10 系统和 Rockx。 Debian10:Rockchip 官方只为 RV1126 适配了 Buildro
    发表于 07-12 10:13

    RV1126/RV1109 Linux平台的ISP和VICAP有何链接关系

    RV1126/RV1109 Linux平台的Camera驱动有哪些?RV1126/RV1109 Linu
    发表于 02-21 06:11

    RV1126 适配 Debian10 系统

    主要借助人脸识别云服务器的应用来介绍 RV1126 的 Debian10 系统和 Rockx。Debian10:Rockchip 官方只为 RV1126 适配了 Buildroot 系
    发表于 03-18 17:04

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

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

    分享一份有关TB-RV1126Ds开发硬件的规格书

    产品介绍TB-RV1126Ds开发是硬件针对RV1126芯片的开发参考设计、芯片调试和测
    发表于 06-16 17:22

    rv1126 SDK代码基础分析---rkmedia框架分析

    rv1126 SDK代码基础分析---rkmedia框架分析谁知道啊?能否告知一下呢http://blgxb.qiuyi.cn/gxb/http://blgxb.qiuyi.cn
    发表于 07-16 15:49

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

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

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

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

    RV1109主板在智能化小区出入管理控制中的应用

    ,NPU独立算力1。2T,搭载工业级双目摄像头和人脸活体识别技术,以及红外热成像模块,支持口罩识别
    发表于 01-10 14:18

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

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

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

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

    RV1126 38mm主控板数据手册

    本产品是基于瑞芯微 RV1126 媒体处理芯片开发的 IPC 开发板,分为核心板和底板,且 RV1126RV1109 是 pin to pin 兼容的,两者可共用
    发表于 08-30 11:55 13次下载

    RV1126开发板数据手册

    本产品是基于瑞芯微 RV1126 媒体处理芯片开发的 IPC 开发板,分为核心板和底板, 且 RV1126RV1109 是 pin to pin 兼容的,两者可共用
    发表于 08-28 11:09 13次下载

    rv1126芯片参数介绍

    芯片进行详细的介绍,并探讨其主要功能和应用场景。 RV1126芯片概述 RV1126芯片是一款由瑞芯微公司针对视觉智能领域而研发的专业芯片。它采用了新一代的6纳米制程技术,拥有4个核心处理器和1个NPU处理器。这些处理器能够相互
    的头像 发表于 08-17 11:09 4434次阅读