• Ubuntu18.04 lite.ai.toolkit配置、编译、测试


    简介

    推荐 GitHub 上一款开箱即用的 C++ AI 模型工具箱:Lite.AI.ToolKit,涵盖目标检测、人脸检测、人脸识别、语义分割、抠图等领域。

     

    里面包括了 70+ 流行开源模型,如最新的 RVM、YOLOX、YoloV5、DeepLabV3、ArcFace 等模型,对用户友好,简单易用。

    GitHub:github.com/DefTruth/lite.ai.toolkit

    环境

    WSL2 Ubuntu18.04

    配置

    配置预编译库:

    1. 下载预编译好的库

    2 . 配置

    通过命令 vim ~/.bashrc 打开.bashrc,然后添加

    1. export LD_LIBRARY_PATH=YOUR-PATH-TO/lite.ai.toolkit/lib:$LD_LIBRARY_PATH
    2. export LIBRARY_PATH=YOUR-PATH-TO/lite.ai.toolkit/lib:$LIBRARY_PATH

    执行 source ~/.bashrc

    注意事项:

    lite.ai.toolkit/lib 里面库之间的软连接失效,需要重新创建软连接,否则编译时会报错;

    主要修改一下浅蓝色的库:

    编译

    查看build.sh

    1. #!/bin/bash
    2. BUILD_DIR=build
    3. if [ ! -d "${BUILD_DIR}" ]; then
    4. mkdir "${BUILD_DIR}"
    5. echo "creating build dir: ${BUILD_DIR} ..."
    6. else
    7. echo "build dir: ${BUILD_DIR} directory exist! ..."
    8. fi
    9. cd "${BUILD_DIR}" && pwd && cmake .. \
    10. -DCMAKE_BUILD_TYPE=MinSizeRel \
    11. -DINCLUDE_OPENCV=ON \
    12. -DENABLE_MNN=ON \
    13. -DENABLE_NCNN=OFF \
    14. -DENABLE_TNN=OFF &&
    15. make -j8

    设置了-DENABLE_MNN=ON,因为需要配置MNN库和头文件,将MNN-2.0.0/build/install 下面的库和头文件,放置到上面步骤的lite.ai.toolkit文件夹下面的库、头文件目录下即可;

    执行编译:

    1. cd lite.ai.toolkit-main
    2. ./build.sh

    编译完成后,可执行程序在 lite.ai.toolkit-main/build/lite.ai.toolkit/bin;

    头文件:lite.ai.toolkit-main/build/lite.ai.toolkit/include

    库:lite.ai.toolkit-main/build/lite.ai.toolkit/lib

    测试:

    1. root@DL3H:/home/XX/test_net/lite.ai.toolkit-main/build/lite.ai.toolkit/bin# ./lite_yolov5
    2. LITEORT_DEBUG LogId: ../../../hub/onnx/cv/yolov5s.onnx
    3. =============== Input-Dims ==============
    4. input_node_dims: 1
    5. input_node_dims: 3
    6. input_node_dims: 640
    7. input_node_dims: 640
    8. =============== Output-Dims ==============
    9. Output: 0 Name: pred Dim: 0 :1
    10. Output: 0 Name: pred Dim: 1 :25200
    11. Output: 0 Name: pred Dim: 2 :85
    12. Output: 1 Name: output2 Dim: 0 :1
    13. Output: 1 Name: output2 Dim: 1 :3
    14. Output: 1 Name: output2 Dim: 2 :80
    15. Output: 1 Name: output2 Dim: 3 :80
    16. Output: 1 Name: output2 Dim: 4 :85
    17. Output: 2 Name: output3 Dim: 0 :1
    18. Output: 2 Name: output3 Dim: 1 :3
    19. Output: 2 Name: output3 Dim: 2 :40
    20. Output: 2 Name: output3 Dim: 3 :40
    21. Output: 2 Name: output3 Dim: 4 :85
    22. Output: 3 Name: output4 Dim: 0 :1
    23. Output: 3 Name: output4 Dim: 1 :3
    24. Output: 3 Name: output4 Dim: 2 :20
    25. Output: 3 Name: output4 Dim: 3 :20
    26. Output: 3 Name: output4 Dim: 4 :85
    27. ========================================
    28. detected num_anchors: 25200
    29. generate_bboxes num: 48
    30. 时间消耗: 237ms
    31. Default Version Detected Boxes Num: 5
    32. LITEORT_DEBUG LogId: ../../../hub/onnx/cv/yolov5s.onnx
    33. =============== Input-Dims ==============
    34. input_node_dims: 1
    35. input_node_dims: 3
    36. input_node_dims: 640
    37. input_node_dims: 640
    38. =============== Output-Dims ==============
    39. Output: 0 Name: pred Dim: 0 :1
    40. Output: 0 Name: pred Dim: 1 :25200
    41. Output: 0 Name: pred Dim: 2 :85
    42. Output: 1 Name: output2 Dim: 0 :1
    43. Output: 1 Name: output2 Dim: 1 :3
    44. Output: 1 Name: output2 Dim: 2 :80
    45. Output: 1 Name: output2 Dim: 3 :80
    46. Output: 1 Name: output2 Dim: 4 :85
    47. Output: 2 Name: output3 Dim: 0 :1
    48. Output: 2 Name: output3 Dim: 1 :3
    49. Output: 2 Name: output3 Dim: 2 :40
    50. Output: 2 Name: output3 Dim: 3 :40
    51. Output: 2 Name: output3 Dim: 4 :85
    52. Output: 3 Name: output4 Dim: 0 :1
    53. Output: 3 Name: output4 Dim: 1 :3
    54. Output: 3 Name: output4 Dim: 2 :20
    55. Output: 3 Name: output4 Dim: 3 :20
    56. Output: 3 Name: output4 Dim: 4 :85
    57. ========================================
    58. detected num_anchors: 25200
    59. generate_bboxes num: 39
    60. ONNXRuntime Version Detected Boxes Num: 4
    61. LITEMNN_DEBUG LogId: ../../../hub/mnn/cv/yolov5s.mnn
    62. =============== Input-Dims ==============
    63. **Tensor shape**: 1, 3, 640, 640,
    64. Dimension Type: (CAFFE/PyTorch/ONNX)NCHW
    65. =============== Output-Dims ==============
    66. getSessionOutputAll done!
    67. Output: output2: **Tensor shape**: 1, 3, 80, 80, 85,
    68. Output: output3: **Tensor shape**: 1, 3, 40, 40, 85,
    69. Output: output4: **Tensor shape**: 1, 3, 20, 20, 85,
    70. Output: pred: **Tensor shape**: 1, 25200, 85,
    71. ========================================
    72. detected num_anchors: 25200
    73. generate_bboxes num: 39
    74. 时间消耗: 253ms
    75. MNN Version Detected Boxes Num: 4

     

  • 相关阅读:
    CAN总线入门必看:如何运用虚拟驱动编写测试脚本
    React Native 入门(三)——js与native互相通信
    MySQL基础篇【聚合函数】
    postgrest API CURD数据库
    Matlab图像处理-读入图像
    CentOS在应用程序菜单中创建快捷方式
    go mod tidy总是安装最新依赖,如何查找哪个模块导致某个包安装最新依赖,提供一个小工具...
    Flink的状态一致性
    备战数学建模1——MATLAB矩阵相关
    软件架构设计(业务架构、应用架构、数据架构、技术架构)
  • 原文地址:https://blog.csdn.net/zfjBIT/article/details/126117690