智能机器人与机器学习是紧密相连的,机器学习又可以分成数据采集、标注、训练、推理等环节,其中数据的训练需要消耗大量算力,适合在服务器或者云端进行,不过训练好的模型可是要部署到机器人端进行推理运算的,所以模型推理的效率如何,直接决定了机器人视觉处理的效率,这刚好是TogetherROS所擅长的地方。

Hobot DNN模型推理库

TogetherROS集成了Hobot DNN模型推理库,集成了众多开源模型,借助底层芯片中的AI引擎BPU,提供充足的算力保障,开发者实际使用中,就不用花费很多时间在模型的调教和数据的训练上,基于这套系统,很快就可以部署人工智能应用啦。

image-20220614162316324

hobot_dnn是在地平线X3开发板上利用BPU处理器实现AI推理功能,基于地平线EasyDNN和ROS2 Node进行二次开发,为应用开发提供更简单易用的模型集成开发接口,包括模型管理、基于模型描述的输入处理及结果解析,以及模型输出内存分配管理等功能。

image-20220614162337563

关于hobot_dnn的使用逻辑流程如这张图所示,供大家参考,我们后续也会通过具体的案例解释代码的实现过程。

算法与应用库

image-20220614162356367

在Hobot DNN模型推理库的基础上,地平线还提供了一套基于TogetherROS系统的AI算法包,称为BOXs,这样我们就不需要从零构建算法,基于这些标准而高效的算法,可以更关注应用层面的APP开发。

从这张图中我们可以看到,这套AI算法包中包含两大块,一个是基础算法,一个是应用算法。

基础算法中主要是图像分类、语义分割和目标检测这些常用的算法,应用层面就会基于这些算法和某些场景,动态实现更为复杂的人体识别、骨骼点识别、手势识别等具体的功能,这些模块就可以和机器人运功功能直接结合,节省了我们开发AI视觉部分的时间。

模型推理测试

这套模型推理和算法库的效果如何呢?

image-20220614162426877

我们先来体验一个TogetherROS自带的案例,识别这张图片中的人,以及每个人的骨骼关键点。

# 配置TogetherROS环境
$ source /opt/tros/setup.bash  

# 从tros的安装路径中拷贝出运行示例需要的配置文件。config中为example使用的模型,回灌使用的本地图片 
$ cp -r /opt/tros/lib/dnn_node_example/config/ .  

# 使用本地jpg格式图片通过同步模式进行回环预测,并存储渲染后的图片 
$ ros2 launch dnn_node_example hobot_dnn_node_example_feedback.launch.py

image-20220614162433116

图片1