本章主要介绍训练好的模型如何部署到CARLA中。这里模型的训练代码用python写的,部署的代码是C++,所以需要用到tensorRT将pytorch的.onnx模型转为.engine模型。具体过程下面将介绍。
(1)tensorRT请不要用xyx文件夹下的那个,我重新上传了百度网盘,请从百度网盘上下载,连接如下:
https://pan.baidu.com/s/1nDXrkxmn8R8lM8kGBLseLQ?pwd=96kj
提取码: 96kj
无需安装,把该文件夹下载到自己电脑即可。该文件缺少lib和bin两个文件夹,从下面连接下载这两个文件夹文件:
https://pan.baidu.com/s/1aEXQb9qdXWIG8cI0Px4RkQ
提取码: zp76
解压后将bin和lib这两个文件夹复制到/TensorRT-7.0.0.11.Ubuntu-18.04.x86_64-gnu.cuda-10.0.cudnn7.6/TensorRT-7.0.0.11
目录下。
(2)cudnn安装。下载连接如下
https://pan.baidu.com/s/1cTF6Rkm66KtgySbDqZ8KTA
提取码: scrg
下载后用以下命令解压:
tar -xvf cudnn-10.0-linux-x64-v7.6.4.38.tgz
解压后生成一个cuda文件夹,将cuda/lib64
文件夹下的所有文件复制到tensorRT目录的lib文件夹下,文件夹地址如下所示:/TensorRT-7.0.0.11.Ubuntu-18.04.x86_64-gnu.cuda-10.0.cudnn7.6/TensorRT-7.0.0.11/lib
。将cuda/include
文件夹下的所有文件复制到tensorRT目录的include目录下,文件夹地址如下所示:/TensorRT-7.0.0.11.Ubuntu-18.04.x86_64-gnu.cuda-10.0.cudnn7.6/TensorRT-7.0.0.11/include
.onnx模型都在/xyx/Waypoints_predict_carla_online_carla/onnx
这个文件夹下面,转换后的.engine模型请放到文件夹/xyx/Waypoints_predict_carla_online_carla/engine
下。
(1)首先删除/xyx/Waypoints_predict_carla_online_carla/engine
文件夹下的所有模型文件(因为这些文件是我电脑用tensorRT转的,不适用于其他电脑),.engine模型必须由本电脑用tensorRT将.onnx模型转换才能使用。
(2)用tensorRT将.onnx转为.engine。
在路径/TensorRT-7.0.0.11.Ubuntu-18.04.x86_64-gnu.cuda-10.0.cudnn7.6/TensorRT-7.0.0.11/bin
下打开终端,输入如下的转换指令:
./trtexec --onnx=/home/swc/Desktop/owx/carla/Waypoints_predict_carla_online_carla_junctions/onnx/res18_cnn4_carla_1.onnx --shapes=input1:3x288x128,input2:3x128x128 --explicitBatch=1 --saveEngine=/home/swc/Desktop/owx/carla/Waypoints_predict_carla_online_carla_junctions/onnx/res18_cnn4_carla_1.engine --workspace=3200 --fp16
其中–onnx=/home/swc/Desktop/owx/carla/Waypoints_predict_carla_online_carla_junctions/onnx/res18_cnn4_carla_1.onnx
是要转换的.onnx模型,--shapes=input1:3x288x128,input2:3x128x128
是模型的两个输入图像的尺寸。--explicitBatch=1
是batchsize为1,–saveEngine=/home/swc/Desktop/owx/carla/Waypoints_predict_carla_online_carla_junctions/onnx/res18_cnn4_carla_1.engine
为保存的.engine文件。这两个路径改成自己文件对应的路径。效果如下图:如果没有报错则可以。
注意注意!!!在这里补充一下更换CARLA服务器地图的操作。下面分别是老版本启动carla方法和新版本启动carla方法,老版本就是前面讲的,新版本里会有更换地图。
(1)老版本启动carla过程:
第一步:运行carla.sh
./carla.sh
第二步:运行vehicle.sh
./vehicle.sh
(2)新版本启动carla过程:
第一步:运行carla.sh
./carla.sh
第二步:修改城镇地图。方法就是修改/CARLA_0.9.10.1/PythonAPI/examples/manual_control.py
这个python文件的代码,改完后运行该程序。修改如下:
1.更改地图。代码第1045行,修改括号中的’Town07’换成自己想要的地图。
world = client.load_world('Town07')
修改后运行(可以不在py27这个环境下运行),运行过程中如果缺少哪个库就pip install 那个库。点击运行,第一遍一般会出现闪退,如果闪退则继续点击运行,第二遍就不会闪退了。运行成功效果如下:
第三步:运行vehicle.sh
./vehicle.sh
这样服务器的地图就会变成自己想要的地图了。
程序为C++工程,路径为:/xyx/Waypoints_predict_carla_online_carla
,用qt打开,并修.pro
文件。
有tensorRT的地方都换成自己的路径。
img_deal.cpp文件的第35,36行修改地图和.engine模型路径,换成自己的路径。
map_path = "./map/tpTown02.jpg";
engine_path = "./engine/res18_cnn4.engine";
第48行,为城镇的序号,请和所选地图对应:
town_num = 2;
“goal_map”图上的蓝色点表示车的位置,在“map”路线图上鼠标左键点击出自己想要的全局路径,点击好路径后按下键盘的"s"键发布全局路径,“globamap”图中则会出现红色的全局路径。
则会看到如下截取的地图。
发布完全局路径后开启手机APP的“自主模式”即可让车辆按照指定的路线行驶。
以上便是模型的部署,后期会继续更新如何采集数据、训练模型。在开始进行数据采集和模型训练前请认真看完徐锦江(毕业的师兄)的毕业论文,了解整个工程的过程。