注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
brack的个人空间 https://home.eeworld.com.cn/space-uid-1389687.html [收藏] [复制] [分享] [RSS]
日志

嵌入式AI人脸识别之---- insightface 之移植到 Luckfox Pico Max上

已有 53 次阅读2024-12-23 15:19 |个人分类:经验记录

上次验证了Luckfox Pico Max SDK的编译,这次来移植一下insightface,继续向目标进发...

说起移植过程,并非一帆风顺,困难之一是github的源码下载,有了之一也就有了之二的版本混乱(手动现在造成版本混乱,兼容性问题不断),还好,最后在各位网友大咖的帮助下还是弄到了源码,闲话少说,来说说我的移植历程:

一,源码的下载

     为了节省流量(不要问为什么,问了就是money太少,哈哈),咱直接下载InsightFace中的InspireFace部分:

     git clone javascript:;
     cd InspireFace

    # 下载第三方库 3rdparty

      git clone --recurse-submodules javascript:; 3rdparty

二,修改编译CMake

    1. 修改InspireFace 目录下的CMakeLists

       1.1 把工程名字写在编译条件之下,大咖的做法,懒人就照搬了,嘿嘿

        

      1.2  修改把 RK Device Type 由 “RV1109RV126” 变为“RV1106”

               1.3,添加opencv预编译库,在3rdparty、inspireface/precompile-lite 建立opencv/4.10.0文件夹,放入下载的opencv-mobile-4.10.0-luckfox-pico.zip

               unzip opencv-mobile-4.10.0-luckfox-pico.zip

             # 在CMakeLists中跳入opencv选项

              if (ISF_RK_DEVICE_TYPE STREQUAL "RV1109RV1126" AND ISF_ENABLE_RKNN)
                # In special cases, specialize for that version
                message("The OpenCV that builds the RV1109RV1126 version depends on is specialized!")
                set(OpenCV_DIR ${ISF_THIRD_PARTY_DIR}/inspireface-precompile/opencv/3.4.5/opencv-linux-armhf/share/OpenCV)
                set(OpenCV_STATIC_INCLUDE_DIR ${PATH_3RDPARTY}/inspireface-precompile/opencv/3.4.5/opencv-linux-armhf/include/)
                set(PLAT linux-arm7)
            elseif (ISF_RK_DEVICE_TYPE STREQUAL "RV1106" AND ISF_ENABLE_RKNN)
                # In special cases, specialize for that version
                message("The OpenCV that builds the RV1106 version depends on is specialized!")
                set(OpenCV_DIR ${ISF_THIRD_PARTY_DIR}/inspireface-precompile-lite/opencv/4.10.0/opencv-mobile-4.10.0-luckfox-pico/lib/cmake/opencv4)
                set(OpenCV_STATIC_INCLUDE_DIR ${PATH_3RDPARTY}/inspireface-precompile-lite/opencv/4.10.0/opencv-mobile-4.10.0-luckfox-pico/include/)
                set(PLAT linux-arm7)
            else()

              

三,为RV1106修改合适的编译配置项

    首先,为了偷懒,复制build_cross_rv1109rv1126_armhf.sh 为build_cross_rv1106_uclibcgnueabihf.sh

    cp command/build_cross_rv1109rv1126_armhf.sh command/build_cross_rv1106_uclibcgnueabihf.sh

    其次,同步修改输出目录

         交叉编译工具链和编译条件

      四,修改RKNN的相关参数

           由于版本不同,rknn_init函数的参数不同,需要修改一下,把原来四个参数的地方都修改为五个参数,如下:

            

           其他的如果遇到ssize_t undefined的提示,可以在相应的地方修改 typedef  ssize_t  xxx (xxx 根据target修改,r1106我就改成了 int32_t)

五,编译

    在InspireFace 目录下执行

    command/build_cross_rv1106_uclibcgnueabihf.sh (如果无法执行,可能需要chmod a+x command/* 一下)

     等在编译,更具host性能不同,耗时也不同,成功后,会在InspireFace 目录下生成库和sample实例:

     

 

六,验证编程成果:

        通过adb push 把sample 文件夹推到target board上

       adb push  sample   /

       从github(javascript:;)下载Pikachu模型 并推到target board上

       adb push Pikachu  /sample

      然后adb shell 进入到 target board,执行FaceCompare ,

    adb shell

      

   如上图,初步运行成功,通过观察发现仅使用cpu,未启动NPU

 

  后续要做的是训练自己的模型,然后转换成RKNN for RV1106,启动NPU进行人脸推理识别验证

 自己记录一下

本文来自论坛,点击查看完整帖子内容。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章