创建语义标签

了解如何定义语义分割的自定义标签。这些还可以添加到carla.CityObjectLabel 以过滤 carla.World 检索的边界框。


创建新的语义标签

1. 创建标签 ID

打开 LibCarla/source/carla/rpc 中的 ObjectLabel.h 。使用与其余标签相同的格式在枚举末尾添加新标签。

object_label_h

笔记

标签不必按顺序出现。但是,按顺序列出它们是一个很好的做法。

2. 创建资产的虚幻引擎文件夹

打开虚幻引擎编辑器 并转到 Carla/Static。创建一个名为您的标签的新文件夹。

ue_folder

笔记

虚幻编辑器文件夹和标签不必命名相同。然而,这样做是一个很好的做法。

3. 创建虚幻引擎与代码标签的双向对应关系

3.1. 打开Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Game中的 Tagger.cpp 。转到 GetLabelByFolderName 列表末尾添加您的标签。被比较的字符串是 2. 中使用的虚幻引擎文件夹的名称,因此这里使用完全相同的名称。

tagger_cpp

3.2. 在相同的 Tagger.cpp 转到 GetTagAsString 。 在开关末尾添加新标签。

tagger_cpp_02

4. 定义颜色代码

LibCarla/source/carla/image 中打开 CityScapesPalette.h 。在数组末尾添加新标签的颜色代码。

city_scapes_palette_h

笔记

数组中的位置必须与标签 ID 相对应,在本例中为 23u.

5. 添加标记网格

新的语义标签已可供使用。只有存储在标签的虚幻引擎文件夹内的网格才会被标记为此类。将相应的网格移动或导入到新文件夹中,以便正确标记。


将标签添加到 carla.CityObjectLabel

这一步与语义分割没有直接关系。但是,这些标签可用于过滤carla.World 中的边界框查询。为此,必须将标签添加到PythonAPI 中的 carla.CityObjectLabel 枚举中。

carla/PythonAPI/carla/source/libcarla 中打开 World.cpp 并在枚举末尾添加新标签。

city_object_label


如果有任何问题、疑问或建议,请阅读 常见问题解答 页面或在 Carla 论坛 中发帖。