职责
我的主要工作是在不同的硬件上部署深度学习网络模型,比如Nvidia GPU和地平线J3板子。为了使得推理软件兼容不同平台,首先用UML设计抽象接口,在开发工程中应用到一些设计模板。结合中间件,推理得到的结果会被传给下游模块。同时为了加速预处理和后处理,也会用到多线程库,比如openMP,CUDA和NEON。
业绩
搭建起模型推理软件框架,应用到不同的项目中,节省了开发成本。重构代码,使得原本只兼容arm 的代码,也兼容x86平台,使得在PC上调试成为可能,加快软件开发速度。多次帮助团队定位代码bug,并且解决bug。
项目
1. 应用于城区自动驾驶的感知软件开发
软件环境: Linux
硬件环境: Nvidia GPU
开发工具: VSCode, git, gitlab, CMake, C++, CUDA, tensorrt, openMP
项目描述: 探索最前沿的技术,并且把最新的模型应用到于城区自动驾驶,以更好感知障碍物和车道线。
责任描述: 部署最前沿的模型,比如3DOD和BEV Lane模型用于障碍物和车道线识别。用tensorrt加载,量化onnx 模型,编写模型推理模块,使得模型能够在Nvidia GPU上运行,把推理得到的3D 障碍物信息和车道线信息传给下游。
2. 应用于商用车ADAS感知软件开发
软件环境: Linux
硬件环境: 地平线J3
开发工具: VS Code, git, gitlab, CMake, C++
项目描述: 这个项目的目标是实现高速路场景下的道路居中和变道辅助。深度学习神经网络被部署到地平线J3板子上用来感知障碍物和做车道分割。推理得到的感知将结果会被传给下游继续做些后处理,比如说目标跟中和线拟合。
责任描述: 重构代码,使得代码兼容x86和arm平台。不同的模型被部署在地平线J3硬件上用于障碍物识别,障碍物分类和车道线分割。搭建模型推理软件模块,接口中间件,把推理结果传给下游继续做后处理。因为硬件算力有限,大模型被分为几个小模型,分别跑在不同的硬件单元上做推理以提高速度。