本文的参考博客:
https://adamshan.blog.csdn.net/article/details/90578382
ros源代码:
https://github.com/AbangLZU/LaneNetRos
原博客分享的模型权重下架了,故又在网上找到了个模型权重分享下:
在github上找到的:
https://github.com/MaybeShewill-CV/lanenet-lane-detection
模型下载地址:
https://www.dropbox.com/sh/0b6r0ljqi76kyg9/AADedYWO3bnx4PhK1BmbJkJKa?dl=0
讲模型权重放在model/new_model
文件夹下面:
在lanenet.launch
文件中查看加载模型的位置是否需要更改:
<launch>
<arg name="image_topic" default="/kitti/camera_color_left/image_raw"/>
<arg name="output_image" default="/lane_images"/>
<arg name="output_lane" default="/Lane"/>
<!-- <arg name="weight_path" default="$(find lane_detector)/model/tusimple_lanenet/tusimple_lanenet_vgg_2018-10-19-13-33-56.ckpt-200000"/> -->
<arg name="weight_path" default="$(find lane_detector)/model/new_model/tusimple_lanenet_vgg.ckpt"/>
<arg name="use_gpu" default="1"/>
<arg name="lane_image_topic" default="/lane_image"/>
<node pkg="lane_detector" type="lanenet_node.py" name="lanenet_node" output="screen">
<param name="image_topic" value="$(arg image_topic)" />
<param name="output_image" value="$(arg output_image)" />
<param name="output_lane" value="$(arg output_lane)" />
<param name="weight_path" value="$(arg weight_path)" />
<param name="use_gpu" value="$(arg use_gpu)" />
<param name="lane_image_topic" value="$(arg lane_image_topic)" />
</node>
</launch>
一定要注意launch中加载的模型权重文件名的格式
编译和运行
在进行完上面的步骤应该是可以编译成功的,但是python中用到了tensorflow,所以需要进行tensorflow相关的配置,均在Python2.7下使用pip进行安装。
>>> import tensorflow as tf
>>> tf.__version__
'1.10.0'
>>> import pandas
>>> pandas.__version__
u'0.22.0'
>>> import numpy as np
>>> np.__version__anz
'1.14.3'
easydict == 1.6
opencv_python == 3.4.1.15
glog == 0.3.1
matplotlib == 2.0.2
scikit_learn == 0.19.1
装完之后,发现还是运行不了
https://github.com/AbangLZU/LaneNetRos/issues/9
更改文件
LaneNetRos/scripts/semantic_segmentation_zoo/vgg16_based_fcn.py
将下面的93~133进行更改:
找到源文件
https://github.com/MaybeShewill-CV/lanenet-lane-detection/blob/master/semantic_segmentation_zoo/vgg16_based_fcn.py
更改为:
deconv_weights_stddev = tf.sqrt(
tf.divide(tf.constant(2.0, tf.float32),
tf.multiply(tf.cast(previous_kernel_size * previous_kernel_size, tf.float32),
tf.cast(tf.shape(input_tensor)[3], tf.float32)))
)
deconv_weights_init = tf.truncated_normal_initializer(
mean=0.0, stddev=deconv_weights_stddev)
deconv = self.deconv2d(
inputdata=input_tensor, out_channel=out_channels_nums, kernel_size=kernel_size,
stride=stride, use_bias=use_bias, w_init=deconv_weights_init,
name='deconv'
)
deconv = self.layerbn(inputdata=deconv, is_training=self._is_training, name='deconv_bn')
deconv = self.relu(inputdata=deconv, name='deconv_relu')
fuse_feats = tf.add(
previous_feats_tensor, deconv, name='fuse_feats'
)
这样,就可以成功运行roslaunch了!!!
安装kitti2bag
这个不太难,主要是pandas要和上面安装的版本一致!!!
下载kitti数据集
http://www.cvlibs.net/datasets/kitti/raw_data.php
将kitti数据集转为bag包:
tang@ubuntu:~/kitti_ws$ kitti2bag -t 2011_09_26 -r 0057 raw_synced .
查看效果
rqt
然后,查看相关话题就可以了!!!