Jetson 共用资料

语义分割

2023-07-25 admin 163

语义分割

1.语义分割介绍

我们将在本教程中介绍的下一个深度学习功能是语义分割。语义分割是基于图像识别的,除了分类发生在像素级别,而不是整个图像。这是通过对预先训练的图像识别主干进行卷积来实现的,该主干将模型转换为能够按像素标记的全卷积网络(FCN)。分割对于环境感知特别有用,它为每个场景产生了许多不同潜在对象的密集的每像素分类,包括场景前景和背景。

 

segNet接受2D图像作为输入,并输出具有每像素分类掩模覆盖的第二图像。遮罩的每个像素对应于已分类的对象类别。segNet可以从Python和C++中使用。

下载其他得模型

Jetson上具有实时性能的FCN-ResNet18网络的各种预训练分割模型。下面是可供使用的预训练语义分割模型的表,以及用于加载它们的segnet的相关--network参数。它们基于21类FCN-ResNet18网络,使用PyTorch在各种数据集和分辨率上进行了训练,并导出为ONNX格式以加载TensorRT。

 

这里大家可以根据自己想要得模型来下载网址是 https://github.com/dusty-nv/jetson-inference

2.图片语义分割

以下是一个使用城市景观模型分割城市街道场景的示例:

构建项目后,请确保您的终端位于aarch64/bin目录中:

cd jetson-inference/build/aarch64/bin

下面是使用fcn-resnet18-cityscapes模型的一些示例:

--network= 这里面可以放自己下载的模型文件进去。例如我这里的是fcn-resnet18-cityscapes

# C++

$ ./segnet --network=fcn-resnet18-cityscapes images/city_0.jpg images/test/output.jpg

# Python

$ ./segnet.py --network=fcn-resnet18-cityscapes images/city_0.jpg images/test/output.jpg

 

下面例子是DeepScene数据集由越野森林小径和植被组成,有助于户外机器人的路径跟踪。

C++

$ ./segnet --network=fcn-resnet18-deepscene images/trail_0.jpg images/test/output_overlay.jpg                         # overlay

$ ./segnet --network=fcn-resnet18-deepscene --visualize=mask images/trail_0.jpg images/test/output_mask.jpg                # mask

python

$ ./segnet.py --network=fcn-resnet18-deepscene images/trail_0.jpg images/test/output_overlay.jpg                         # overlay

$ ./segnet.py --network=fcn-resnet18-deepscene --visualize=mask images/trail_0.jpg images/test/output_mask.jpg # mask

 

3.运行实时摄像机分割演示

我们之前使用的segnet.cpp/segnet.py样本也可以用于实时相机流。支持的摄像机类型包括:

MIPI CSI cameras ( csi://0 )

V4L2 cameras ( /dev/video0 )

RTP/RTSP streams ( rtsp://username:password@ip:port )

以下是启动该程序的一些典型场景-有关可用的模型

C++

$ ./segnet --network=<model> csi://0                    # MIPI CSI camera

$ ./segnet --network=<model> /dev/video0                # V4L2 camera

$ ./segnet --network=<model> /dev/video0 output.mp4     # save to video file

python

$ ./segnet.py --network=<model> csi://0                 # MIPI CSI camera

$ ./segnet.py --network=<model> /dev/video0             # V4L2 camera

$ ./segnet.py --network=<model> /dev/video0 output.mp4  # save to video file

其中model是我们可以选择的,我这里使用的模型是fcn-resnet18-deepscene。

OpenGL窗口中显示的是叠加了分割输出的实时摄像机流,以及为了清晰起见的实心分割遮罩。以下是一些与不同型号一起使用的示例,可供尝试:

# C++

$ ./segnet --network=fcn-resnet18-deepscene csi://0

# Python

$ ./segnet.py --network=fcn-resnet18-deepscene csi://0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


首页
产品
案例
联系