Cchen-yanan233 add:file
e5f92660创建于 24 天前历史提交
文件最后提交记录最后更新时间
24 天前
24 天前
24 天前
24 天前
24 天前
24 天前
24 天前
24 天前
24 天前
24 天前
24 天前
README

基于LRStereo-B网络实现双目深度

概述

LRStereo-B是一个轻量的双目立体匹配模型。它在开源模型(Raft-Stereo)的基础上做了大量的模型结构改进和重训。具体功能为输入标定好的左右目图像以及相关的相机参数,获得左目图像对应的深度图。

本案例采用Hi3519DV500主芯片,板端运行Linux,通过双目相机同步采集左右视角图像,结合AI深度模型与NPU加速推理,实时输出640×480的RGB图和深度图。

关于本案例有其他任何疑问欢迎到论坛发帖提问。

如有合作需求,点击主页“合作咨询”联系。

输入输出数据

  • 输入数据

    输入数据 数据类型 大小 数据排布格式
    image RGB_FP32 1 x 3 x 480 x 1280 NCHW
  • 输出数据

    输出数据 数据类型 大小
    0 FP32 480 x 640

目录结构

样例代码结构如下所示。

├── data
│   ├── ...            //测试数据

├── script
│   ├── evaluate.py    //python执行脚本

├── src
│   ├── acl.json         //系统初始化的配置文件
│   ├── CMakeLists.txt         //编译脚本
│   ├── main.cpp     //资源初始化/销毁相关函数的实现文件

├── process
│   ├── lrstereo_process.cpp     //模型前后处理
│   ├── lrstereo_process.h     //模型前后处理头文件

├── data
│   ├── cfg.txt     //模型配置参数

├── model
│   ├── ...	//模型文件

├── CMakeLists.txt    //编译脚本,调用src目录下CMakeLists文件
├── *.json			//模型信息
├── LICENSE			//模型LICENSE

推理环境准备

芯片与硬件平台

Hi3519DV500是一款面向视觉行业的超高清智能SoC,最高支持四路Sensor输入,支持主/被动双目视觉3D,集成神经网络推理引擎并支持业界主流的神经网络框架。

开发环境配置

  1. 2、该模型需要以下环境

    表 1 版本配套表

    芯片型号 算力引擎 soc_version 环境准备指导 CANN包版本 编译工具链 板端OS SDK
    Hi3519DV500 SVP_NNN \ 推理环境准备 SVP_NNN_PC_V1.0.6.0 aarch64-mix210-linux-gcc Linux Hi3519DV500R001C01SPC020

模型推理

快速开始

获取本仓源码

备注:以下所有命令均在模型目录下执行

获取om模型文件

网站上提供转化成功的om模型文件,可以从网站上进行下载。(此处下载的模型为海思开源模型,仅供参考)

创建model文件夹,并将om模型文件移动到./model目录下。

mkdir -p model

备注:本案例未提供产品实际om模型文件。

编译代码和运行应用

编译代码

  1. 切换到样例目录,创建目录用于存放编译文件,例如,本文中,创建的目录为build。

    mkdir -p build
    
  2. 切换到build目录,执行cmake生成编译文件。

    当开发环境与运行环境操作系统架构不同时,执行以下命令进行交叉编译。

    “../src“表示CMakeLists.txt文件所在的目录,请根据实际目录层级修改。

    例如,开发环境为X86架构、运行环境为ARM架构时,执行以下命令进行交叉编译。本案例板端系统为Linux,请使用与Hi3519DV500 SDK匹配的工具链配置文件。SOC_VERSION需填写当前工程对目标平台定义的值,不能直接沿用原Hi3403V100样例的SS928V100,也不能仅凭芯片名称推定。

    执行前,将toolchain和soc_version分别设置为实际工具链文件路径和工程支持的目标平台值。

    cd build
    cmake ../src -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE="${toolchain.cmake}" -DSOC_VERSION="${soc_version}"
    
  3. 执行make命令,生成的可执行文件main在“./out“目录下。

运行应用

  1. 将modelzoo代码上传到板端运行环境。

  2. 以运行用户登录板端运行环境。

  3. 切换到可执行文件main所在的目录,给该目录下的main文件加执行权限。

    chmod +x main
    
  4. 切换到可执行文件main所在的目录,运行可执行文件。测试图片上模型推理命令参考:

    ./main --acl ../src/acl.json --model ../model/LRStereo-B_480x640_release.om --input ../data/file_list_1.json
    

    备注:若需要在数据集上进行精度评估,需要参考安装依赖、准备数据集和精度&性能评估章节。

安装依赖

# 建议使用python 3.9.11版本
pip install -r requirements.txt

准备数据集

  1. 获取原始数据集。(解压命令参考tar –xvf *.tar与 unzip *.zip)

    本模型使用KITTI15验证集进行推理测试 ,用户自行获取数据集后,将文件解压并上传到当前路径的datasets路径下。数据集目录结构如下所示:

    datasets/
    |-- kitti15
    |   |-- testing
    |   |-- training
    |   |   |-- image_2
    |   |   |   |-- 000000_10.png
    |   |   |   |-- ...
    |   |   |-- image_3
    |   |   |   |-- 000000_10.png
    |   |   |   |-- ...
    |   |   |-- disp_noc_0
    |   |   |   |-- 000000_10.png
    |   |   |   |-- ...
    |   ...
    ...
    
  2. 数据预处理,将原始数据集转换为模型的输入数据。

    执行下面命令获取输入数据列表。

    python ./script/generate_file_list.py datasets/kitti15
    

精度&性能评估

  1. 登录到板端运行环境,切换到可执行文件main所在的目录,执行数据集上推理命令。

    如果想要跑LRStereo-B_480x640_release.om,需要同步修改./data/cfg.txt文件里面的默认尺寸和视差转距离模型路径名称。

    ./main --model ../model/LRStereo-B_480x640_release.om --input ../data/file_list.json
    
  2. 精度验证。

    调用脚本与数据集标签比对,可以获得Accuracy数据。

    python ./script/evaluate.py
    

    参数说明:

    • --output:推理结果所在路径,默认为./out/result/bin/

    例如: python ./script/evaluate.py --output ./out/result/bin/

    官方样例在Hi3403V100 SVP_NNN平台上的精度结果如下,仅作历史参考:

    accuray epe_meam:  1.4939332485198975  dl_mean:  8.239584974646569
    
  3. 验证om模型的性能,参考命令如下:

    执行./main --acl ../src/acl.json --model ../model/LRStereo-B_480x640_release.om --input ../data/file_list_1.json
    

    注意:需要将cfg.txt中的type设置为0,测试性能的时候不需要视差转距离 参数说明:(此模式下,输入路径为一张图片)

    • --acl: ACL 配置文件路径

    • --model: 指定待验证性能的 OM 模型文件路径。

    • --input: 指定输入数据的列表文件路径(此场景下为单图片路径的配置文件,注意:循环次数通过修改该文件中的loop变量即可)。

    官方样例在Hi3403V100 SVP_NNN平台上的性能输出如下,仅作历史参考:

    execution time: 43.46ms, frame rate: 23.01fps
    

模型推理性能&精度

调用ACL接口推理计算,性能和精度参考下列数据。(仅提供官方案例Hi3403V100 SVP_NNN平台上的数据)

芯片型号 Batch Size 数据集 精度指标D1 性能(fps)
Hi3519DV500 \ \ \ \
Hi3403V100 SVP_NNN 1 KITTI15 8.239 23.01

免责声明

致ModelZoo使用者

  • HiSpark ModelZoo提供的模型仅供您用于非商业目的。
  • HiSpark ModelZoo仅提供公共数据集下载、模型下载和预处理脚本。这些数据集和模型不属于ModelZoo,ModelZoo也不对其质量或维护负责。请确保您具有这些数据集和模型的使用许可,如您因使用数据集和模型产生侵权纠纷,海思不承担任何责任。
  • 如您在使用ModelZoo模型过程中,发现任何问题(包括但不限于功能问题、合规问题),请在gitcode提交issue,我们将及时审视并解决。

致数据集、模型所有者

如果您不希望您的数据集、模型公布在ModelZoo上或希望更新ModelZoo中属于您的数据集、模型,请在gitcode提交issue,我们将根据您的issue删除或更新您的数据集、模型。衷心感谢您对ModelZoo的理解和贡献。

License声明

HiSpark ModelZoo提供的模型,如模型目录下存在License的,以该License为准。如模型目录下不存在License的,以Apache 2.0许可证许可,对应许可证文本可查阅HiSpark ModelZoo根目录。