摘要:一個Linux人臉識別小項目,可以拿過來來練練手。使用瑞芯微RV1126核心板通過瑞芯微API進行視頻采集并進行人臉識別,并輸出到設(shè)備上。
一、搭建NFS環(huán)境
網(wǎng)絡(luò)文件系統(tǒng)NFS,是由SUN公司研制的UNIX表示層協(xié)議,能使使用者訪問網(wǎng)絡(luò)上別處的文件就像在使用自己的計算機一樣。我們可以Ubuntu上制作板子需要的文件,然后使用NFS來加載文件到板子的DDR上。
因為我們使用的板子內(nèi)存太小,而人臉識別有需要很多的文件來支持,板子放不下,只能通過這種掛載的方式,將程序運行所需要的數(shù)據(jù)庫模型文件放在掛載的目錄下,這樣就可以了。
1.1 安裝NFS服務(wù)
在Ubuntu終端執(zhí)行以下指令安裝NFS。
sudoapt-getinstallnfs-kernel-server
1.2 新建NFS共享目錄
新建NFS共享目錄,并給予NFS目錄可讀可寫可執(zhí)行權(quán)限。
sudomkdir/home/zhiguoxin/linux/nfs sudochmod777/home/zhiguoxin/linux/nfs/
1.3 配置NFS服務(wù)
執(zhí)行以下指令打開etc/exports文件
sudovi/etc/exports
進入etc/exports文件,在最后添加如下內(nèi)容
/home/zhiguoxin/linux/nfs*(rw,sync,no_root_squash)
/home/zhiguoxin/linux/nfs 表示NFS共享的目錄,*表示允許所有的網(wǎng)絡(luò)段訪問,rw表示訪問者具有可讀寫權(quán)限,sync表示將緩存寫入設(shè)備中,可以說是同步緩存的意思。no_root_squash表示訪問者具有root權(quán)限。修改完如下圖所示。
修改完以后保存退出。執(zhí)行以下指令重啟 NFS 服務(wù)器。
sudo/etc/init.d/nfs-kernel-serverrestart
執(zhí)行以下指令查看 NFS 共享目錄。
showmount-e

網(wǎng)絡(luò)環(huán)境
確保網(wǎng)絡(luò)環(huán)境正常,Ubuntu、Windows和開發(fā)板能相互ping 通。開發(fā)板IP:192.168.100.75虛擬機IP:192.168.100.100電腦網(wǎng)口IP:192.168.100.102
二、交叉編譯SQLite3數(shù)據(jù)庫
2.1、準(zhǔn)備源碼
源碼可以周期官網(wǎng)下載,放在我的共享文件夾下,然后解壓。
2.2、準(zhǔn)備RV1126的sdk包
這個RV1126的源碼包在購買板子的時候商家會送你的
這個那文件夾里面有交叉編譯工具鏈。在交叉編譯之前,得在sdk里面找到交叉編譯工具鏈:
商家提供的sdk里面的交叉工具鏈
然后我這里放在samba共享目錄下,我的共享文件夾對應(yīng)我的ubuntu的目錄是
/home/zhiguyoxin/shared/

現(xiàn)在開始來交叉編譯SQLite3,這個SQLite3的源碼還是用之前給大家的源碼包:
使用命令解壓
tar-zxvfsqlite-autoconf-3380500.tar.gz


2.3、交叉編譯SQLite3
然后開始進行交叉編譯,不過在在這之前,先在當(dāng)前目錄下創(chuàng)建一個文件夾來存放等下交叉編譯出來文件:
mkdirarm_sqlite3_install

最后最為關(guān)鍵部分是,現(xiàn)在找到那個之前交叉編譯的路徑來,也就是結(jié)對路徑:
/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

最后就可以按照下面這個命令來執(zhí)行編譯了:
./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

然后執(zhí)行分別執(zhí)行以下命令即可:
make-j8 makeinstall
最后在arm_sqlite3_install目錄下生成四個文件:
進入到arm_sqlite_install目錄下的lib目錄,這里面就是交叉編譯出來的.so的動態(tài)庫文件,如下圖所示:
我們把這些動態(tài)庫進行一個打包:
zip-rarm_sqlite3_lib.zip*so*

把這個打包文件拷貝到nfs目錄下去:
cp-rfarm_sqlite3_lib.zip/home/zhiguoxin/linux/nfs


令外還要將sqlite3可執(zhí)行文件拷貝至/home/zhiguoxin/linux/nfs目錄下
使用這個可執(zhí)行文件我們查看數(shù)據(jù)庫中的數(shù)據(jù),做一下添加刪除的操作。
三、交叉編譯OpenCV
同樣現(xiàn)在官網(wǎng)下載號源碼包,放再共享文件夾下
解壓
unzipopencv-3.4.12.zip-dopencv-3.4.12

進入解壓后的opencv版本platforms/linux目錄下去:
cdopencv-3.4.12/platforms/linux
修改arm-gnueabi.toolchain.cmake
vimarm-gnueabi.toolchain.cmake

將里面的交叉編譯路徑修改成你自己的路徑
/home/zhiguoxin/shared/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf

建立一個build目錄,并進入build下去:
編譯:
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../


然后執(zhí)行下面兩句
make-j8 makeinstall
最后結(jié)果:
先進入到build目錄下的lib目錄下,你會看到很多動態(tài)庫,
對其打包:
zip-rarm_opencv_lib.ziplib*

將文件拷貝至/home/zhiguoxin/linux/nfs//共享文件夾
cp-rfarm_opencv_lib.zip/home/zhiguoxin/linux/nfs/

四、移植rknn動態(tài)庫
把sdk里面的rknn動態(tài)庫移植到nfs目錄下,這是我放sdk的路徑:
將這個文件拷貝到/home/zhiguoxin/linux/nfs目錄下,用啥方式都可以,只要拷貝過去就可以了。
五、RV1126人臉識別工程交叉編譯
首先下載人臉識別源碼,我下載后之后放在這里
在編譯之前,我們要修改一下Makefile:
vimMakefile
這里修改成你的sdk交叉編譯工具鏈的路徑
然后make就看可以了
make
5.1 移植人臉識別數(shù)據(jù)模型
將人臉識別數(shù)據(jù)模型拷貝至/home/zhiguoxin/linux/nfs/
cd/home/zhiguoxin/myproject/rockx_face_recognize_project_rtsp cprockx_data/-rf/home/zhiguoxin/linux/nfs/

5.2 移植人臉識別可執(zhí)行程序
將人臉識別編譯出來的可執(zhí)行程序拷貝至/home/zhiguoxin/linux/nfs/
5.3 移植人臉識別插入人臉數(shù)據(jù)可執(zhí)行程序
將人臉識別編譯出來的插入人臉數(shù)據(jù)庫可執(zhí)行程序拷貝至/home/zhiguoxin/linux/nfs/
5.4 移植人臉識別數(shù)據(jù)庫
將數(shù)據(jù)庫文件face.db文件拷貝至/home/zhiguoxin/linux/nfs/
六、RV1126板子的處理
6.1 掛載
在開發(fā)板的/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是板子的掛載目錄
6.2 刪除原有數(shù)據(jù)庫表
./sqlite3face.db .tables select*fromface_data_table; deletefromface_data_table; .quit
6.3 插入人臉數(shù)據(jù)
./rkmedia_rockx_face_insertliuyaoliuyao.png ./rkmedia_rockx_face_insertyangjiachengyangjiacheng.png

6.4執(zhí)行程序
./rkmedia_rockx_face_rga_rtsp_main

ffplay–x800–y400rtsp://192.168.100.75/live/main_stream
或者使用vlc拉流
審核編輯:湯梓紅
-
Linux
+關(guān)注
關(guān)注
87文章
11406瀏覽量
212082 -
瑞芯微
+關(guān)注
關(guān)注
24文章
484瀏覽量
51970 -
人臉識別
+關(guān)注
關(guān)注
76文章
4043瀏覽量
83188 -
核心板
+關(guān)注
關(guān)注
5文章
1078瀏覽量
30456 -
rv1126
+關(guān)注
關(guān)注
0文章
75瀏覽量
3198
原文標(biāo)題:單片機可以人臉識別嗎?不行,是Linux
文章出處:【微信號:果果小師弟,微信公眾號:果果小師弟】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
一個基于瑞芯微Linux RV1126人臉識別項目
RV1126基于虹軟人臉識別算法實現(xiàn)指南
瑞芯微RV1126支持車載視覺產(chǎn)品產(chǎn)品開發(fā)
基于瑞芯微RV1109 電子哨兵健康碼核驗終端的高鐵人臉識別檢票系統(tǒng)
人臉識別速度提升50%,瑞芯微推出RV1126智能考勤/門禁/閘機產(chǎn)品方案
芯微Rockchip RV1109和RV1126芯片規(guī)格

瑞芯微RV1126榮獲第十六屆中國芯“優(yōu)秀市場表現(xiàn)產(chǎn)品獎”

RV1126 38mm主控板數(shù)據(jù)手冊
RV1126開發(fā)板數(shù)據(jù)手冊
rv1126和rk3568對比

評論