标题:深度神经网络之BiseNet
1.模型介绍
BiseNet是一种用于实时语义分割的神经网络模型,由华为公司提出。它结合了全卷积网络和空间金字塔池化模块的优点,可以同时实现高效率和高精度的语义分割。
BiseNet的核心思想是将图像分为两个部分:全局信息和局部信息。全局信息通过全卷积网络提取,可以捕捉到图像的整体特征。而局部信息则通过空间金字塔池化模块提取,可以捕捉到图像中不同尺度的细节特征。
通过辅助损失函数监督模型的训练,通过主损失函数监督整个 BiSeNet 的输出。另外,还通过添加两个特殊的辅助损失函数监督 Context Path 的输出,就像多层监督一样。上述所有损失函数都是 Softmax。最后借助参数 α 以平衡主损失函数与辅助损失函数的权重。
优势在哪呢?
2.主要任务梳理
数据集的处理:数据集的处理方式决定了模型的上限
A.图像裁剪:Cityscapes数据集中的图像分辨率较高,可以通过裁剪来减小图像尺寸,加快训练速度。
B.数据标准化:将图像像素值标准化到0到1之间,可以提高模型的训练效果。
C.数据增强:可以通过旋转、翻转、缩放等方式增加训练数据量,提高模型的泛化能力。
D.随机裁剪:随机裁剪可以增加训练数据量,并且可以避免模型过度拟合。在裁剪时,可以随机选择裁剪区域的大小和位置。
E.随机翻转:随机翻转可以增加训练数据量,并且可以使模型更好地学习不同方向的特征。可以随机选择水平或垂直方向翻转。
模型构建:采用多模块分层设计,尤其是对于损失函数的融合叠加比较关键
模型训练:采用Intel提供的深度学习计算平台计算,同时利用Intel加速计算架构加速
模型训练:
运行
$ export CUDA_VISIBLE_DEVICES=0,1
$ torchrun --nproc_per_node=2 tools/train_amp.py --finetune-from ./res/model_final.pth --config ./configs/bisenetv2_city.py # or bisenetv1
开始训练
运行
$ python tools/evaluate.py --config configs/bisenetv1_city.py --weight-path /path/to/your/weight.pth
开始评估
测试
3.模型测试效果
从图可以看出模型对于图像分割的效果是相当的不错,很清晰的能够看出物体的轮廓和边缘。
4.具体收获
1.掌握了BiseNet网络:
在语义分割任务中具有高效率和高精度:BiseNet结合了全卷积网络和空间金字塔池化模块的优点,可以同时实现高效率和高精度的语义分割。
2.掌握了Intel One APi:
提高编程效率:Intel OneAPI提供了统一的编程接口和工具链,可以帮助开发者快速构建高性能应用,并且可以在不同的硬件平台上运行。
提高应用性能:Intel OneAPI提供了针对不同硬件平台的优化库和工具,可以帮助开发者充分发挥硬件性能,提高应用性能。
3.数据集的处理更加得心应手:
能够对特定的数据集进行处理和分析,对于相关的特征处理也更加的得当。