Download as pdf or txt
Download as pdf or txt
You are on page 1of 28

AI识别测距

主讲人:涂安旭
DoubleQ工作室
2023.5.15
目录
c o n t e n t s

01 赛道介绍

02 开发板使用

03 AI开发部署

04 双目测距
PART
01
赛道介绍
1.1 检测测距

比赛任务 01
根据主办方提供的AI开发板、双目摄像头和软件开发包及手册,完成对机器人的识别并测
量距离,考验设计者对AI识别技术以及双目摄像头测距算法在基于T710芯片的Bu99
Linux开发板上的理解和运用。

比赛要求 02
◆ 完成机器人的目标检测模型训练,并在个人电脑上完成测试
◆ 将AI模型通过模型转换后部署到T710 Linux开发板上,通过读取摄像头完成AI推理,并
将机器人在图像中框出并显示置信度
◆ 利用双目相机,完成双目标定并通过双目测距算法计算出深度图
◆ 结合(2)和(3)的结果,融合结果计算出机器人与相机的距离并输出,最终仅可选取并输出
一个距离

比赛进阶要求 03
(1)识别距离与真实距离误差小于3cm(比赛现场测量)
双臂机器人
(2)整体系统具有更高的帧率,至少10Fps+
(3)针对小车各视角和高度均可实现准确的距离测量
1.2 评比方式

现场验收,要求启动双目相机,AI算法以及测距算法,动态移动机器人的位置,完
成机器人的识别和距离估计并输出,评委现场针对不同距离进行测试并打分,测试主要
考察AI识别准确性和稳定性,距离精度,帧率。

标准距离参照由主办方提供ToF测距模块或其他更准确的测量方式。
效 果 演 示
PART
开发板的使用 02
2.1 认识开发板
2.2 开机与连接

开机
插入电源之后长按 开机键,看到绿灯闪烁之后松开。绿灯闪烁表示正在开
机,绿灯常亮表示开机完成。

连接:

1.显示屏连接开发板HDMI口、鼠标键盘连接USB操作

2.远程连接:(WCN ANT 连接天线 或 网口连接得到ip地址)


(1)Putty远程连接,pscp远程传文件, MobaXterm
(2)Adb远程连接
3.串口连接:
(1)micro USB口连接PC后,打开串口工具控制
2.3 初始化使用

登录
用户名:unisoc
密码: unisoc

Wifi连接
参考命令:
wifi建立:
sudo nmcli device wifi connect WIFI_NAME
password PASSWORD
wifi关闭
nmcli con del WIFI_NAME
PART
AI开发部署 03
3.1 开发流程

开发流程概括(训练->转换->部署)

环境 开发流程 作用

PC 模型训练 达到预测目的

量化成整形以及统一
PC 模型转换 模型格式,方便开发
板NPU等硬件加速

在板子上运行,得到
开发板 模型部署
推理结果
3.2 模型训练

1.数据集
这次比赛需要识别我们工作室的机器人,所以需要选手自己来进行数据集的采
集和标注。

2.模型训练
使用pytorch,tensorflow,paddle等框架进行训练。目标检测使用yolov3,yolov5,
yolox,yolov8。
模型训练 可以加个数据扩增,图像翻转、亮度增强或减弱(工具:imgaug)

3.模型导出
可以参考“code/yolov5”等

训练得到的模型为适配开发板部署需要经过导出onnx模型才能进行后面的转换和部
署。
3.2.1 模型转换

1.环境
实验室电脑
里面有模型转换的环境img_ndk,直接用就好
虚拟机 用户名:doubleq 密码:doubleq
2.模型转换使用
转换文件 :
模型文件(tf的pb、yolo的导出的onnx)
IO.json(模型结构)
test_file.json(数据集处理)
图片集(直方图分析,后缀统为.jpg、.png等)

文件参考:101169_UDS710ImaginationAINDK2.6环境简介V1.3.pdf
3.2.2 模型转换命令参考

脚本使用示例: (doubleq@ubuntu:)
${NNA_ROOT}/scripts/onnx_model_compile.sh –m model_path –b 8(16) –h 50 //转换 8bit 模
型,直方图分析用 50 张图片
其他命令依此类推,具体可以参考文件

模型转换输出为 model.mbs.bin 文件:


Tensorflow 输出在:主目录
/img_nna_2_6/model_compile/2nx/tf/model.mbs.bin
ONNX 输出在:主目录/img_nna_2_6/model_compile/2nx/
onnx/model.mbs.bin

模型转换的时候注意看损失,如weight->pb、ckpt->pb、pb->16b、
pb->8b等,选择适合的模型

文件参考:101169_UDS710ImaginationAINDK2.6环境简介V1.3.pdf
3.2.3 模型转换小提示

1.模型的结构可以直接用软件netron也可以网上看https://netron.app/
以此获得模型的输入节点名,输出节点结构

2.test_file.json
里面的部分参数遵循以下公式来进行的归一化:
processed_input = (raw_scale * input - mean) * input_scale.

3.注意模型训练的时候不要一张张图片的不同处理。如果根据图片获得RGB均值
减,这样模型转换的时候就不能很好的量化,这个是针对全数据集的均值进行的
归一化

4.认真训练前,先训练一个epoch得到初始模型部署到板子看看通路是否打通,否
则后面训练好了,因为算子限制等原因,模型部署不上去,这就白费劲了!
深度学习中Epoch、Batch以及Batch size的设定 - 知乎 (zhihu.com)

文件参考:101169_UDS710ImaginationAINDK2.6环境简介V1.3.pdf
3.3.1 模型部署

1.环境

T710板子

2. aisdk使用 要先对C++代码进行编译

准备文件
模型转换后的二进制文件bin
aisdk编译后的可执行文件
label文件
测试图片或视频

文件参考:AISDK demo流程及使用说明_V1.0.pdf
UNISOC_AISDK用户手册V1.0.pdf
3 . 3 . 1 运 行 命 令

例:code/yolov3/model_deploy:
(视频检测,aisdk的mainvideo.c可供参考)
sudo ./aisdk_demo -m models/yolov3All.bin -l labels/yolov3_label.txt 0.jpg

提示:
Aisdk 的 nms iou_thresh、score_thresh、以及不同类是否需要
nms。
PART
双目测距 04
4.1 双目测距原理

双目测距的基本原理主要是三角测量原理,即通过对两幅图像视差的
计算,直接对前方景物(图像所拍摄到的范围)进行距离测量(双目交汇)。 B
受光影响较大,强光或弱光检测不出,玻璃等反射率较高的材料检测
不出,并且无纹理物体检测不出,如光滑墙壁。

𝑋𝐿 𝑋𝑅

𝑂𝐿 𝑂𝑅
基线B(相机间真实距离)
4.1 双目测距原理
理想双目
P
P点投影到左相机中 根据相似三角形:
心机OL,右相机中 𝐵 𝐵−𝐷
心OR =
𝑍 𝑍−𝑓
XL是左相机最左到 Z 𝐵∗𝑓
pl点 𝑍=
𝐷
XR是右相机最左到
pr点
XL pl XR pr
成像平面 基线距离 焦距
因为深度和视差是 f f
反比例函数,所以
深 𝐵∙f
太近或太远测不准, OL
B基线距离(相机间真实距离)
OR Z=
变化太大
视差D=XL-XR 度 𝐷
f:焦距 视差

参考视频:双目相机原理揭秘--双目立体视觉原理搞懂很简单_哔哩哔哩_bilibili
4.1 双目测距原理

视差图

视差 d = 𝑋𝐿 − 𝑋𝑅
目的:建立视差与真实深度的映射关系
4.1 双目测距实现基本步骤

分三步
第一步:相机标定(双目标定),进行畸变矫正。
第二步:双目校正。因为双目相机中心不一致,双目标定的作用是使左
右视图的成像坐标一致。
第三步:双目匹配,把同一场景在左右视图上对应的像点匹配起来。

1、相机标定:
光线经过相机的光学系统往往不能按照理想的情况投射到传感器上,也
就是会产生所谓的畸变。双目标定的目标是获取左右两个相机的内参、外参和畸
变系数,其中内参包括左右相机的fx,fy,cx,cy,外参包括左相机相对于右相
机的旋转矩阵和平移向量,畸变系数包括径向畸变系数(k1, k2,k3)和切向
畸变系数(p1,p2)以及其他一些畸变类型,通过这些参数来进行畸变矫正。参
数获得可以通过matlab等软件。
4.1 双目测距实现基本步骤
2、双目校正
极线校正的目的是将拍摄于同一场景的左右两个视图进行数学上的投影变换,使得两
个图像平面共面且平行于基线,简称共面行对准。经过这样的校正过程之后,两幅图中的极线
就会完全水平,从而导致空间中的同一个点在左右两幅图中的像素位置位于同一行。在达到共
面行对准以后就可以应用三角原理计算距离。

3、双目匹配
立体匹配的目的是为左图中的每一个像素点在右图中找到其对应点(世界中相同的物
理点),这样就可以计算出视差,有了视差就可以通过相似三角形来计算距离了。BM、SGBM
算法等。
匹配算法如sgbm就是设置一个a x a的滑动窗口,在极限上滑动,直到代价小到某个阈
值则为匹配点,而代价函数定义有梯度等算子。
全图得到视差后,经过一致性检查,也就是横向和纵向的平滑等操作去噪。
4.1 双目测距实现基本步骤

4、AI加测距 AI:↓ 深度图:↓


4.1 双目测距实现基本步骤

4、AI加测距
AI识别+双目测距整体流程 Pytorch,
tensorflow, onnx,pb
工作室PC模型
转换;在线模
paddle等训练 模型 型转换工具
框架

AI NDK模型
标注 训练 模型导出
转换
目标检测:
yolov3,yolov5,
yolox,yolov8
目标分割算法:
yolact

畸变矫正 匹配模型输入
C/C++调用NPU
基线矫正 标准化/归一化
硬件AI加速
裁剪出左右相机的共视画面

图像为匹配
双目预处理 左目图 识别机器人并
的AI模型输 模型部署、推理
(矫正) 像 框出机器人
入的预处理
达到目标:1、框出检测目标
2、标记选取的深度距离点
Bm、sgbm算法 根据视差转深 (根据算法选取最合适的坐
标定 左、右 等 度公式 标点)
参数 目图像
3、显示目标距离
读取图像
双目(立体) 得出深度图 显示实时检
匹配 (视差图) 测结果
双目标定 考虑多个像

𝐵∗𝑓 素坐标是否
一致,否则
𝑍= 会出现融合
𝐷 错误
THE END
感谢

You might also like