摘要:一個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權限。修改完如下圖所示。
修改完以后保存退出。執行以下指令重啟 NFS 服務器。
sudo/etc/init.d/nfs-kernel-serverrestart
執行以下指令查看 NFS 共享目錄。
showmount-e
網絡環境
確保網絡環境正常,Ubuntu、Windows和開發板能相互ping 通。開發板IP:192.168.100.75虛擬機IP:192.168.100.100電腦網口IP:192.168.100.102
二、交叉編譯SQLite3數據庫
2.1、準備源碼
源碼可以周期官網下載,放在我的共享文件夾下,然后解壓。
2.2、準備RV1126的sdk包
這個RV1126的源碼包在購買板子的時候商家會送你的
這個那文件夾里面有交叉編譯工具鏈。在交叉編譯之前,得在sdk里面找到交叉編譯工具鏈:
商家提供的sdk里面的交叉工具鏈
然后我這里放在samba共享目錄下,我的共享文件夾對應我的ubuntu的目錄是
/home/zhiguyoxin/shared/
現在開始來交叉編譯SQLite3,這個SQLite3的源碼還是用之前給大家的源碼包:
使用命令解壓
tar-zxvfsqlite-autoconf-3380500.tar.gz
2.3、交叉編譯SQLite3
然后開始進行交叉編譯,不過在在這之前,先在當前目錄下創建一個文件夾來存放等下交叉編譯出來文件:
mkdirarm_sqlite3_install
最后最為關鍵部分是,現在找到那個之前交叉編譯的路徑來,也就是結對路徑:
/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
最后就可以按照下面這個命令來執行編譯了:
./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
然后執行分別執行以下命令即可:
make-j8 makeinstall
最后在arm_sqlite3_install目錄下生成四個文件:
進入到arm_sqlite_install目錄下的lib目錄,這里面就是交叉編譯出來的.so的動態庫文件,如下圖所示:
我們把這些動態庫進行一個打包:
zip-rarm_sqlite3_lib.zip*so*
把這個打包文件拷貝到nfs目錄下去:
cp-rfarm_sqlite3_lib.zip/home/zhiguoxin/linux/nfs
令外還要將sqlite3可執行文件拷貝至/home/zhiguoxin/linux/nfs目錄下
使用這個可執行文件我們查看數據庫中的數據,做一下添加刪除的操作。
三、交叉編譯OpenCV
同樣現在官網下載號源碼包,放再共享文件夾下
解壓
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../
然后執行下面兩句
make-j8 makeinstall
最后結果:
先進入到build目錄下的lib目錄下,你會看到很多動態庫,
對其打包:
zip-rarm_opencv_lib.ziplib*
將文件拷貝至/home/zhiguoxin/linux/nfs//共享文件夾
cp-rfarm_opencv_lib.zip/home/zhiguoxin/linux/nfs/
四、移植rknn動態庫
把sdk里面的rknn動態庫移植到nfs目錄下,這是我放sdk的路徑:
將這個文件拷貝到/home/zhiguoxin/linux/nfs目錄下,用啥方式都可以,只要拷貝過去就可以了。
五、RV1126人臉識別工程交叉編譯
首先下載人臉識別源碼,我下載后之后放在這里
在編譯之前,我們要修改一下Makefile:
vimMakefile
這里修改成你的sdk交叉編譯工具鏈的路徑
然后make就看可以了
make
5.1 移植人臉識別數據模型
將人臉識別數據模型拷貝至/home/zhiguoxin/linux/nfs/
cd/home/zhiguoxin/myproject/rockx_face_recognize_project_rtsp cprockx_data/-rf/home/zhiguoxin/linux/nfs/
5.2 移植人臉識別可執行程序
將人臉識別編譯出來的可執行程序拷貝至/home/zhiguoxin/linux/nfs/
5.3 移植人臉識別插入人臉數據可執行程序
將人臉識別編譯出來的插入人臉數據庫可執行程序拷貝至/home/zhiguoxin/linux/nfs/
5.4 移植人臉識別數據庫
將數據庫文件face.db文件拷貝至/home/zhiguoxin/linux/nfs/
六、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是板子的掛載目錄
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
6.4執行程序
./rkmedia_rockx_face_rga_rtsp_main
ffplay–x800–y400rtsp://192.168.100.75/live/main_stream
或者使用vlc拉流
審核編輯:湯梓紅
-
Linux
+關注
關注
87文章
11123瀏覽量
207885 -
瑞芯微
+關注
關注
23文章
377瀏覽量
51061 -
人臉識別
+關注
關注
76文章
3998瀏覽量
81346 -
核心板
+關注
關注
5文章
924瀏覽量
29519 -
rv1126
+關注
關注
0文章
30瀏覽量
2622
原文標題:單片機可以人臉識別嗎?不行,是Linux
文章出處:【微信號:果果小師弟,微信公眾號:果果小師弟】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論