美女小姐姐在Jetson Xavier NX上实现车道线检测

2021-02-05 11:36:12 浏览数 (1)

本教程来自一位美女小姐姐的blog——

具体教程:

https://esthermakes.tech/blog/2021/01/09/lanenet-on-nvidia-jetson/

介绍:

LaneNet是用于车道检测的实时深度神经网络模型。这个GitHub存储库提供了TensorFlow的非官方实现,该实现在PC上运行得很好。但是,我想让它在NVIDIA Jetson平台上运行,该平台是专为低功耗Edge AI开发的一系列产品。我首先瞄准了Xavier NX,它比入门级Nano拥有更多的计算能力和强大功能,因为这是一项非常艰巨的任务。

从TensorFlow到TensorRT

不幸的是,在Xavier NX上运行TensorFlow模型会导致内存和性能问题。NVIDIA提供了TensorRT来加速他们平台上的推理,因此下一个主要步骤是将TensorFlow模型移植到TensorRT。这个forked repo包含额外的文件,以及一个Dockerfile,该Dockerfile包含在Xavier NX上运行此操作所需的所有依赖项。

从TensorRT 7.0开始,首选方法是使用ONNX工作流,其中TensorFlow模型转换为ONNX格式,然后用于构建TensorRT引擎。还支持其他框架,例如PyTorch、Keras和Caffe。

冻结TensorFlow图

第一步需要冻结TensorFlow图。可在以下位置找到执行此操作的Python脚本tensorrt/freeze_graph.py。

运行它:

代码语言:javascript复制
python tensorrt/freeze_graph.py --weights_path model/tusimple_lanenet/tusimple_lanenet.ckpt --save_path model/lanenet.pb

(左右滑动)

这将创建一个冻结的图形,称为model/lanenet.pb. 下一步是使用tf2onnx Python包将其转换为ONNX:

代码语言:javascript复制
python -m tf2onnx.convert 
    --input ./model/lanenet.pb 
    --output ./model/lanenet.onnx 
    --inputs lanenet/input_tensor:0 
    --outputs lanenet/final_binary_output:0,lanenet/final_pixel_embedding_output:0

这将获取.pb文件并将其转换为ONNX模型,并另存为model/lanenet.onnx

使用TensorRT运行推理

使用ONNX模型,我们现在可以进行推理!可以在找到Python脚本tensorrt/trt_inference.py

要将其与示例视频文件一起运行:

代码语言:javascript复制
python tensorrt/trt_inference.py 
    --onnx_file ./model/lanenet.onnx 
    --video_src ./data/tusimple_test_video/0.mp4 
    --engine_file ./tensorrt/pc.engine

如果将网络摄像头或摄像机连接到Xavier NX,它也可以与实时视频流一起运行。只需--video_src使用连接的视频源的适当名称更新标志。

0 人点赞