具体教程:
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
使用连接的视频源的适当名称更新标志。