BiseNet训练后的模型,转成C++,转成tensorRT模型,并封装到ROS中。


参考方法github:
https://github.com/CoinCheung/BiSeNet/tree/master/tensorrt

  • Export model to onnx;
  • Build with source code;
  • Convert onnx to tensorrt model.

创建conda的环境:
conda create -n vvv python=3.6

1. 安装ros

conda deactivate 退出conda ;
按照ros官网方法安装ros: http://wiki.ros.org/melodic/Installation/Ubuntu

问题1:
Ubuntu18.04安装ROS后初始化sudo rosdep init时出错pkg_resources.DistributionNotFound: The ‘rosdep==0.20.0‘

解决方法:更换默认的python
https://blog.csdn.net/moX980/article/details/110316752

问题2:ERROR: cannot download default sources list from:
https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
Website may be down.

解决方法:切换手机热点。

2. 在conda环境中安装TensorRT 7.1

参考:https://zhuanlan.zhihu.com/p/181274475?utm_source=wechat_session
https://blog.csdn.net/zong596568821xp/article/details/86077553

  1. 建议按照官网方法做:
    官网https://developer.nvidia.com/tensorrt下载对应版本的TensorRT 的tar文件。注意版本和cuda cudnn匹配。
    解压: tar -xvzf TensorRT-7.1.3.4.Ubuntu-18.04.x86_64-gnu.cuda-10.2.cudnn8.0.tar.gz

    定义TensorRT SDK所在的位置,方便后面的操作
    export TRT_RELEASE=~/…/TensorRT-7.1.3.4
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:…/lib
    环境配置,注意:
    为了避免其它软件找不到tensorrt的库,建议把tensorrt的库和头文件添加到系统路经下:
    https://blog.csdn.net/zong596568821xp/article/details/86077553

# TensorRT路径下
sudo cp -r ./lib/* /usr/lib
sudo cp -r ./include/* /usr/include
 后续操作按照官网即可。    

3. 卸载tensorRT

要使用未解压缩的文件卸载TensorRT,只需删除tar文件;
并重置LD_LIBRARY_PATH 还原为原始值。

4. Export model to onnx

https://github.com/CoinCheung/BiSeNet/tree/master/tensorrt

python -m ipdb ./tools/export_onnx.py --model bisenetv2 --weight-path ./res/model_final.pth --outpath ./model.onnx

修改输入的尺寸大小。

5. Build with source code

https://github.com/CoinCheung/BiSeNet/tree/master/tensorrt

mkdir -p tensorrt/build
cd tensorrt/build
cmake ..
make

问题1:
/usr/bin/ld: cannot find -lnvinfer
/usr/bin/ld: cannot find -lnvinfer_plugin
/usr/bin/ld: cannot find -lnvparsers
/usr/bin/ld: cannot find -lnvonnxparser
collect2: error: ld returned 1 exit status

解决方法:环境配置。为了避免其它软件找不到tensorrt的库,建议把tensorrt的库和头文件添加到系统路经下:
https://blog.csdn.net/zong596568821xp/article/details/86077553

# TensorRT路径下
sudo cp -r ./lib/* /usr/lib
sudo cp -r ./include/* /usr/include

6. Convert onnx to tensorrt model

https://github.com/CoinCheung/BiSeNet/tree/master/tensorrt
./segment compile /path/to/onnx.model /path/to/saved_model.trt
./segment compile /path/to/onnx.model /path/to/saved_model.trt --fp16

7. Infer with one single image

https://github.com/CoinCheung/BiSeNet/tree/master/tensorrt
./segment run /path/to/saved_model.trt /path/to/input/image.jpg /path/to/saved_img.jpg

8. Test speed

https://github.com/CoinCheung/BiSeNet/tree/master/tensorrt
./segment test /path/to/saved_model.trt

9. 封装到ros中

写图像读取节点1;
图像处理节点2;
通信节点3.

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要使用 BiSeNet 训练自己的数据集,首先需要进行以下几个步骤: 1. 数据准备:将自己的数据集准备好并标注。确定数据集需要进行语义分割的对象类别,并为每个对象类别提供相应的标注。确保数据集的质量和完整性,以提高训练的效果。 2. 数据预处理:对数据集进行预处理,以符合 BiSeNet 的输入要求。这包括对图像进行大小调整、裁剪、旋转等操作,以及对标注进行相应的预处理。 3. 构建训练集和验证集:从整个数据集划分出一部分作为训练集,另一部分作为验证集。训练集用于模型训练过程,验证集用于评估模型的性能。 4. 模型配置:根据自己的数据集和任务需求,配置 BiSeNet 模型的相关参数,包括输入图像的大小、类别数、学习率、批次大小等。可以根据实际情况进行调整和优化。 5. 模型训练:使用准备好的数据集和配置好的模型,在训练集上进行模型训练。在训练过程,需要注意调整学习率、添加正则化等操作,以防止过拟合。 6. 模型评估:使用验证集对训练得到的模型进行性能评估。可以计算模型的准确率、召回率、F1 分数等指标,用于评估模型在语义分割上的效果。 7. 模型优化:根据模型评估的结果,对模型进行优化调整。可以尝试调整模型的结构、损失函数、学习率等参数,以进一步提高模型的性能。 8. 模型应用:经过训练和优化,得到的模型可以用于对新的图像进行语义分割。将图像输入到训练好的模型,可以得到相应的分割结果,对图像的对象进行识别和定位。 通过以上步骤,可以使用 BiSeNet 训练自己的数据集,并得到适用于自己任务需求的语义分割模型。 ### 回答2: BiSeNet是一种高效的用于实时语义分割任务的深度学习模型。要训练自己的数据集,我们可以按照以下步骤进行: 1. 数据集准备:收集与你任务相关的图像数据,并根据图像标签进行语义分割标注。确保标注的质量和准确性,并将数据集划分为训练集和验证集。 2. 数据预处理:对数据进行必要的预处理,如图像大小调整、归一化等。可考虑使用数据增强技术,如平移、旋转、翻转等增加数据样本,从而提高模型的泛化能力。 3. 模型配置:下载BiSeNet的源代码,并进行相应的配置以适应你的数据集。这包括设置模型的输入大小、类别数等参数,并根据数据集的特点进行调整。 4. 模型训练:使用准备好的训练集和验证集,通过迭代训练的方式来优化模型。设置训练的超参数,如学习率、批次大小等,并使用优化算法(如随机梯度下降)来最小化损失函数。 5. 模型评估:在训练过程,可以定期使用验证集来评估模型的性能。这可以通过计算各种评估指标(如IOU、准确率等)来实现。根据评估结果和需要,可以调整模型训练策略。 6. 模型使用:在模型训练达到满意的性能后,我们可以将模型应用于自己的数据集进行语义分割任务。在进行预测时,将待分割的图像输入模型,即可得到预测的分割结果。 需要注意的是,训练自己的数据集可能需要较长的时间和大量的计算资源。同时,还要保证数据集的多样性和充分性,以提高模型的泛化能力。此外,还可以探索其他技术来进一步提升模型的性能,如迁移学习、模型融合等。 ### 回答3: Bisenet是一种深度学习模型,可用于图像语义分割任务。训练自己的数据集意味着使用Bisenet模型来对自己的图像数据进行训练,并且将分割结果应用于该数据集。 要训练自己的数据集,首先需要准备好数据集。这包括收集和标记足够的图像数据,确保每个图像都有对应的标签,用于指示每个像素的语义类别。标签可以是像素级标注的掩码,确保每个像素都被指定了正确的语义类别。 接下来,需要将数据集分成训练集和验证集。训练集用于训练Bisenet模型,验证集用于评估模型性能和调整超参数。可以使用交叉验证等技术来更好地评估模型。 在数据准备完成后,可以使用Bisenet的开源代码库或自行实现Bisenet模型。这个模型通常使用神经网络和卷积层来实现。然后,可以使用训练集对模型进行训练训练过程通常包括将图像数据输入模型,计算损失或目标函数,并使用反向传播算法进行优化,以减小损失并更新模型参数。 训练过程可以重复多个epoch,每个epoch是对整个训练集进行一次完整的迭代。在每个epoch结束时,可以使用验证集来评估模型的性能。根据验证集上的性能表现,可以调整超参数(如学习率、正则化系数等)以改善模型训练。 当模型训练完成后,可以使用该模型对新的图像进行分割。将图像输入模型,通过前向传播计算每个像素的语义类别概率分布,然后根据这些概率分布生成分割结果。最后,可以根据需要对分割结果进行后处理或可视化。 总结而言,Bisenet训练自己的数据集涉及数据准备、模型选择与实现、训练与调参等步骤。通过这些步骤,可以根据自己的数据集训练出一个适用于图像语义分割任务的自定义Bisenet模型
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值