- 2025-01-07
-
发表了主题帖:
嵌入式工程师AI挑战营(进阶):RV1106人脸检测初探
本帖最后由 _shenlan_ 于 2025-1-7 14:03 编辑
嵌入式工程师AI挑战营(进阶):RV1106人脸检测初探
编译镜像
使用以下命令下载SDK
sudo git clone https://github.com/LuckfoxTECH/luckfox-pico.git
其目录结构如下所示:
我们查看以下板级配置文件目录:
打开BoardConfig-SPI_NAND-Buildroot-RV1106_Luckfox_Pico_Max-IPC配置文件,输入命令
less ./project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1106_Luckfox_Pico_Max-IPC.mk
我们可以看到如下内容。
#!/bin/bash
#################################################
# Board Config
#################################################
export LF_ORIGIN_BOARD_CONFIG=BoardConfig-SPI_NAND-Buildroot-RV1106_Luckfox_Pico_Max-IPC.mk
# Target CHIP
export RK_CHIP=rv1106
# app config
export RK_APP_TYPE=RKIPC_RV1106
# Config CMA size in environment
export RK_BOOTARGS_CMA_SIZE="66M"
# Kernel dts
export RK_KERNEL_DTS=rv1106g-luckfox-pico-max.dts
#################################################
# BOOT_MEDIUM
#################################################
# Target boot medium: emmc/spi_nor/spi_nand
export RK_BOOT_MEDIUM=spi_nand
# Uboot defconfig fragment
export RK_UBOOT_DEFCONFIG_FRAGMENT=rk-sfc.config
# specify post.sh for delete/overlay files
# export RK_PRE_BUILD_OEM_SCRIPT=rv1103-spi_nor-post.sh
# config partition in environment
# RK_PARTITION_CMD_IN_ENV format:
# <partdef>[,<partdef>]
# <partdef> := <size>[@<offset>](part-name)
# Note:
# If the first partition offset is not 0x0, it must be added. Otherwise, it needn't adding.
export RK_PARTITION_CMD_IN_ENV="256K(env),256K@256K(idblock),512K(uboot),4M(boot),30M(oem),10M(userdata),210M(rootfs)"
# config partition's filesystem type (squashfs is readonly)
# emmc: squashfs/ext4
# nand: squashfs/ubifs
# spi nor: squashfs/jffs2
# RK_PARTITION_FS_TYPE_CFG format:
# AAAA:/BBBB/CCCC@ext4
# AAAA ----------> partition name
# /BBBB/CCCC ----> partition mount point
# ext4 ----------> partition filesystem type
export RK_PARTITION_FS_TYPE_CFG=rootfs@IGNORE@ubifs,oem@/oem@ubifs,userdata@/userdata@ubifs
# config filesystem compress (Just for squashfs or ubifs)
# squashfs: lz4/lzo/lzma/xz/gzip, default xz
# ubifs: lzo/zlib, default lzo
# export RK_SQUASHFS_COMP=xz
# export RK_UBIFS_COMP=lzo
#################################################
# TARGET_ROOTFS
#################################################
# Target rootfs : ubuntu(only emmc)/buildroot/busybox
export LF_TARGET_ROOTFS=buildroot
# Buildroot defconfig
export RK_BUILDROOT_DEFCONFIG=luckfox_pico_defconfig
#################################################
# Defconfig
#################################################
# Target arch
export RK_ARCH=arm
# Target Toolchain Cross Compile
export RK_TOOLCHAIN_CROSS=arm-rockchip830-linux-uclibcgnueabihf
#misc image
export RK_MISC=wipe_all-misc.img
# Uboot defconfig
export RK_UBOOT_DEFCONFIG=luckfox_rv1106_uboot_defconfig
# Kernel defconfig
export RK_KERNEL_DEFCONFIG=luckfox_rv1106_linux_defconfig
# Config sensor IQ files
# RK_CAMERA_SENSOR_IQFILES format:
# "iqfile1 iqfile2 iqfile3 ..."
# ./build.sh media and copy <SDK root dir>/output/out/media_out/isp_iqfiles/$RK_CAMERA_SENSOR_IQFILES
export RK_CAMERA_SENSOR_IQFILES="sc4336_OT01_40IRC_F16.json sc3336_CMK-OT2119-PC1_30IRC-F16.json"
#export RK_CAMERA_SENSOR_IQFILES="sc4336_OT01_40IRC_F16.json sc3336_CMK-OT2119-PC1_30IRC-F16.json sc530ai_CMK-OT2115-PC1_30IRC-F16.json"
# Config sensor lens CAC calibrattion bin files
export RK_CAMERA_SENSOR_CAC_BIN="CAC_sc4336_OT01_40IRC_F16"
#export RK_CAMERA_SENSOR_CAC_BIN="CAC_sc4336_OT01_40IRC_F16 CAC_sc530ai_CMK-OT2115-PC1_30IRC-F16"
# build ipc web backend
#export RK_APP_IPCWEB_BACKEND=y
# enable install app to oem partition
export RK_BUILD_APP_TO_OEM_PARTITION=y
# enable rockchip test
export RK_ENABLE_ROCKCHIP_TEST=y
#################################################
# PRE and POST
#################################################
# specify pre.sh for delete/overlay files
export RK_PRE_BUILD_OEM_SCRIPT=luckfox-buildroot-oem-pre.sh
export RK_POST_OVERLAY="overlay-luckfox-config overlay-luckfox-buildroot-init overlay-luckfox-buildroot-shadow"
切换到ai/luckfox-pico文件夹,本人使用的是ubuntu22.04版本,不用额外的环境配置,执行./build.sh就可以编译生成镜像。
./build.sh
如果环境没有问题,就会得到成功的提示。
我们需要的镜像文件在下面的文件夹中,
烧录镜像
将镜像文件拷贝到win10,打开socToolKit_v1.98,设备上电前摁住boot键,上电后松开。烧录软件步骤如下
有如上图提示,说明完成烧录设备镜像。
测试例程
程序地址:http://github.com/LuckfoxTECH/luckfox_pico_rkmpi_example
编译项目: luckfox_pico_rkmpi_example 项目中的 luckfox_pico_rtsp_retinaface_osd 。
首先使用命令克隆项目到本地。使用git clone 命令可以将项目从GitHub仓库克隆下来。
git clone http://github.com/LuckfoxTECH/luckfox_pico_rkmpi_example.git
或者使用下载工具下载压缩包。并解压,
接下来,进入项目目录并选择相应的示例进行编译。编译时使用root权限,否则会报错。
完成后,如下所示
使用ssh 命令将编译好的应用程序和 retinaface.rknn 模型文件发到设备的 /root 目录。
scp -r install/luckfox_pico_rtsp_retinaface_osd_demo root@192.168.9.23:/root
其中luckfox_pico_rtsp_retinaface_osd_demo为复制到设备根目录下的程序;root@192.168.9.23指root账户登陆192.168.9.23,该ip是接入局域网的设备ip。复制成功如下图
最后,在设备上运行应用程序,并通过VLC播放器连接到RTSP流地址,本人的RTSP流地址为rtsp://192.168.9.23/live/0即可查看人脸识别效果。
- 2025-01-02
-
回复了主题帖:
Luckfox Pico Max 从开箱速通到自带的人脸识别例程
用了两个系统,就是看不出,哪个是windows哪个是Ubuntu系统。
- 2024-11-21
-
回复了主题帖:
入围名单公布:嵌入式工程师AI挑战营(进阶)的挑战者们,领取板卡啦
个人信息已确认,领取板卡,可继续完成任务
- 2024-11-15
-
回复了主题帖:
嵌入式工程师AI挑战营(进阶):在RV1106部署InsightFace算法的多人实时人脸识别实战
申请理由:
InsightFace以其高效的算法实现和对训练及部署的优化而广收粉丝喜爱。它支持2D和3D人脸分析,并且在多个基准测试中达到了最先进的性能。InsightFace使用5个特征点进行人脸检测,这使得它在资源消耗上相对较低,适合在嵌入式系统上部署。
在RV1106上部署InsightFace算法
1. 确保RV1106开发板运行的是支持的Linux操作系统,并且已经安装了必要的依赖。
2. 使用RKNNLite工具包将InsightFace的Pytorch或MXNet模型转换为RKNN模型,以便在RV1106上运行。
3. 根据RV1106的开发文档,配置开发板以支持InsightFace算法的运行,包括内存分配、内核设备树配置等。
4. 将转换后的RKNN模型部署到RV1106开发板上,并编写相应的代码来加载模型并进行推理。
使用以下方法实现多人实时人脸识别
1. 使用OpenCV等库从RV1106开发板的摄像头获取实时视频流。
2. 利用InsightFace的人脸检测算法检测视频流中的所有人脸。
3. 对检测到的人脸进行对齐,以确保人脸特征点的正确性。
4. 对对齐后的人脸进行特征提取,生成可用于识别的人脸特征向量。
5. 将提取的特征向量与数据库中的特征向量进行比对,实现实时人脸识别。
6. 结合人脸检测和人脸识别的结果,使用如DeepSORT等算法进行多人实时轨迹追踪。
7. 将识别结果和轨迹追踪信息实时展示在界面上,或者通过其他方式输出。